def addemployee(): """Adds a new Employee to the data base under the same organization id as the logged in user who is adding the new user. Also allows the new user to be selected as manager or employee""" title = "Add employee to Shifter" formEmployee = EmployeeForm() formLogout = LogoutForm() if formLogout.Logout.data and formLogout.is_submitted(): return redirect(url_for('logout')) if (formEmployee.validate_on_submit()): user = Employee.query.filter_by(email=formEmployee.email.data).first() user1 = Employee.query.filter_by( phone_number=formEmployee.phone_number.data).first() if user is not None: flash( 'There is already an account registered under this email address.' ) return redirect(url_for('addemployee')) elif user1 is not None: flash( 'There is already an account registered under this phone number.' ) return redirect(url_for('addemployee')) else: firstn = formEmployee.first_name.data employee = Employee(fname=formEmployee.first_name.data, lname=formEmployee.last_name.data, email=formEmployee.email.data, phone_number=formEmployee.phone_number.data, organization_id=current_user.organization_id, firsttimelogin=True) employee.setManager(formEmployee.manager.data) employee.set_password(formEmployee.phone_number.data) db.session.add(employee) db.session.commit() flash(firstn + ' has been added to the company') return redirect(url_for('login')) return render_template("addemployee.html", title=title, formEmployee=formEmployee, formLogout=formLogout)
def addemployee(): title = "Add employee to Shifter" formEmployee = EmployeeForm() formLogout = LogoutForm() if formLogout.Logout.data and formLogout.is_submitted(): flash('Logged out') return redirect(url_for('logout')) if (formEmployee.validate_on_submit()): user = Employee.query.filter_by(email=formEmployee.email.data).first() user1 = Employee.query.filter_by( phone_number=formEmployee.phone_number.data).first() if user is not None: flash( 'There is already an account registered under this email address.' ) return redirect(url_for('addemployee')) elif user1 is not None: flash( 'There is already an account registered under this phone number.' ) return redirect(url_for('addemployee')) else: employee = Employee(fname=formEmployee.first_name.data, lname=formEmployee.last_name.data, email=formEmployee.email.data, phone_number=formEmployee.phone_number.data, organization_id=current_user.organization_id, firsttimelogin=True) employee.setManager(formEmployee.manager.data) employee.set_password(formEmployee.phone_number.data) db.session.add(employee) db.session.commit() return redirect(url_for('login')) return render_template("addemployee.html", title=title, formEmployee=formEmployee, formLogout=formLogout)
def test_add_employee_to_db(db): emp1 = Employee(fname='Testy', lname='McTest', email='*****@*****.**', phone_number='9998887777', organization_id='1', firsttimelogin=True) emp1.setManager( 'Employee') # 'Employee' arg sets to False, 'Manager' arg sets to True emp1.set_password(emp1.phone_number) db.session.add(emp1) assert len(Employee.query.all()) == 1 emp_from_db = Employee.query.get(1) assert emp_from_db.fname == emp1.fname assert emp_from_db.lname == emp1.lname assert emp_from_db.email == emp1.email assert emp_from_db.phone_number == emp1.phone_number assert emp_from_db.organization_id == emp1.organization_id assert emp_from_db.firsttimelogin == emp1.firsttimelogin assert emp_from_db.manager == False # An employee's password should be their phone number by default, but the password # in the database should be hashed. assert emp_from_db.password_hash != emp1.phone_number emp2 = Employee(fname='Sam', lname='TheManager', email='*****@*****.**', phone_number='8372934823', organization_id='1', firsttimelogin=True) emp2.setManager('Manager') emp2.set_password(emp2.phone_number) db.session.add(emp2) assert len(Employee.query.all()) == 2 manager_from_db = Employee.query.get(2) assert manager_from_db.manager == True