commit 47ffa10a23017c01626a2ba4bf0cefd2c15295aa
parent 753d3bf4b039f150f82bda5468d2e26758f43f5f
Author: Brennen T. Mazur <brennen@madis.cool>
Date: Thu, 23 Feb 2023 00:07:05 -0700
plumbing for creating new users
Diffstat:
4 files changed, 50 insertions(+), 17 deletions(-)
diff --git a/app/forms.py b/app/forms.py
@@ -13,19 +13,21 @@ class LoginForm(FlaskForm):
login = SubmitField('Login')
class NewUserForm(FlaskForm):
- fname = StringField('First Name', validators=[DataRequired()])
- mname = StringField('Middle Initial', validators=[DataRequired(),length(max=1)])
- lname = StringField('Last Name', validators=[DataRequired()])
- birthday = DateField('Birthday',validators=[DataRequired()])# Ought to change this to some validation for age range accepted
- role = SelectField('Role',validators=[DataRequired()])
- address = StringField('Address',validators=[DataRequired()])# Require some sort of validator for check...
- branch = SelectField('Branch',validators=[DataRequired(),length(max=200)])
- phonenumber = TelField('Phonenumber',validators=[DataRequired(),length(max=12)])# Require some sort of validator for check...
- email = EmailField('Email',validators=[DataRequired()])# Require some sort of validator for check...
- payPeriod = StringField('Pay Period Override',validators=[optional()])# May not need this at all?
- payValue = FloatField('Pay Value Override',validators=[optional()])# Require some sort of validator for check...
- setActive = BooleanField('Active',default="checked")# Require some sort of validator for check...
- createNewUser = SubmitField('Create New User')
+ branches=['Dillon','Salmon']
+ roles=['Crew','Assistant Crew Lead','Crew Lead','Project Manager','Accounting']
+ fname = StringField('First Name', validators=[DataRequired()])
+ mname = StringField('Middle Initial', validators=[DataRequired(),length(max=1)])
+ lname = StringField('Last Name', validators=[DataRequired()])
+ birthday = DateField('Birthday',validators=[DataRequired()])# Ought to change this to some validation for age range accepted
+ role = SelectField('Role',validators=[DataRequired()],choices=roles)
+ address = StringField('Address',validators=[DataRequired()])# Require some sort of validator for check...
+ branch = SelectField('Branch',validators=[DataRequired(),length(max=200)],choices=branches)
+ phonenumber = TelField('Phone Number',validators=[DataRequired(),length(max=12)])# Require some sort of validator for check...
+ email = EmailField('Email',validators=[DataRequired()])# Require some sort of validator for check...
+ payPeriod = StringField('Pay Period Override',validators=[optional()])# May not need this at all?
+ payValue = FloatField('Pay Value Override',validators=[optional()])# Require some sort of validator for check...
+ setActive = BooleanField('Active',default="checked")# Require some sort of validator for check...
+ createNewUser = SubmitField('Create New User')
class PunchclockWidget(FlaskForm):
projectsSel = SelectField('Project', validators=[DataRequired()])
diff --git a/app/routes.py b/app/routes.py
@@ -1,4 +1,5 @@
import datetime
+import random, string
from app import app
from flask_pymongo import PyMongo
from flask_login import LoginManager
@@ -141,10 +142,32 @@ def roles():
dashform = DashPermissionsForm()
return render_template('admin/roles/updateroles.html',dashform=dashform,admnform=admnform,ORGNAME=OrganizationName)
-@app.route("/admin/newuser")
-#@login_required
+@app.route("/admin/newuser", methods=["GET","POST"])
+@login_required
def newuser():
form = NewUserForm()
+
+ if form.validate_on_submit():
+ genpasswd = ''.join(random.choice(string.ascii_letters) for _ in range(14))
+ mongo.db.user_collection.insert_one({
+ 'fname':form.fname.data,
+ 'mname':form.mname.data,
+ 'lname':form.lname.data,
+ 'username':form.fname.data.lower()+form.mname.data.lower()+form.lname.data.lower(),
+ 'birthday':form.birthday.data.strftime('%Y-%m-%d'),
+ 'password_hash':generate_password_hash(genpasswd),
+ 'role':form.role.data,
+ 'branch':form.branch.data,
+ 'phonenumber':form.phonenumber.data,
+ 'address':form.address.data,
+ 'email':form.email.data,
+ 'pay_period':form.payPeriod.data,
+ 'pay_value':form.payValue.data,
+ 'is_active':form.setActive.data
+ })
+ flash("New user for {} {} added with a password of {}".format(form.fname.data, form.lname.data, genpasswd)) #Will need to sendmail password to form.email.data later
+ return redirect(url_for('newuser'))
+
return render_template('admin/users/newuser.html',form=form,ORGNAME=OrganizationName)
@app.route("/admin/agreement")
diff --git a/app/templates/admin/users/newuser.html b/app/templates/admin/users/newuser.html
@@ -6,8 +6,8 @@
{% block content %}
<section class="new-user-grid">
- <h3>Add a new Employee</h3>
- <form action="" method="post" novalidate>
+ <h3>Add New Employee</h3>
+ <form action="" method="POST" novalidate>
{{ form.hidden_tag() }}
{% for error in form.errors %}
<span style="color:red;">[{{ error }}]</span>
@@ -26,5 +26,12 @@
{{ form.setActive() }}{{ form.setActive.label }}<br>
{{ form.createNewUser() }}
</form>
+ {% with messages = get_flashed_messages() %}
+ {% if messages %}
+ {% for message in messages %}
+ <p>{{ message }}</p>
+ {% endfor %}
+ {% endif %}
+ {% endwith %}
</section>
{% endblock %}
diff --git a/seeds.py b/seeds.py
@@ -63,6 +63,7 @@ user2 = {
'pay_value': 43000,
'is_active':True
}
+#added usr nad has password of [eYMvPaQFGCihlq]
# Time documents
time1 = {