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)
Beispiel #2
0
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