stc

a simple time card webapp
git clone _git@git.brennen.work:stc.git
Log | Files | Refs | README

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:
Mapp/forms.py | 28+++++++++++++++-------------
Mapp/routes.py | 27+++++++++++++++++++++++++--
Mapp/templates/admin/users/newuser.html | 11+++++++++--
Mseeds.py | 1+
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 = {