Example #1
0
def user_a():
    ''' to add a user '''
    form = UserForm()

    if form.validate_on_submit():
        if data.User.query.filter_by(name=form.name.data).first() is not None:
            flash('Error: user name already exists, choose another name',
                  'danger')
            return redirect(url_for('administrate.user_a'))

        db.session.add(
            data.User(form.name.data, form.password.data, form.role.data))
        db.session.commit()

        if form.role.data == 3:
            db.session.add(
                data.Operators(
                    data.User.query.filter_by(name=form.name.data).first().id,
                    form.offices.data))
            db.session.commit()

        flash('Notice: user has been added .', 'info')
        return redirect(url_for('administrate.users'))

    return render_template('user_add.html',
                           form=form,
                           navbar='#snb3',
                           page_title='Add user',
                           offices_count=data.Office.query.count())
Example #2
0
def user_u(u_id):
    ''' to update user '''
    form = forms.User_a(session.get('lang'))
    user = data.User.query.filter_by(id=u_id).first()

    if user is None:
        flash('Error: user selected does not exist, something wrong !',
              'danger')
        return redirect(url_for('core.root'))

    if user.id == 1:
        return reject_god(lambda: None)()

    if form.validate_on_submit():
        user.name = form.name.data
        user.password = form.password.data
        user.role_id = form.role.data

        # Remove operator if role has changed
        if form.role.data == 3:
            if not data.Office.get(id=form.offices.data):
                flash('Error: Office selected does not exist!', 'danger')
                return redirect(url_for('core.root'))

            operator = data.Operators.get(user.id)

            if not operator:
                db.session.add(data.Operators(user.id, form.offices.data))
            else:
                operator.office_id = form.offices.data
        else:
            to_delete = data.Operators.get(user.id)

            if to_delete is not None:
                db.session.delete(to_delete)

        db.session.commit()
        flash('Notice: user is updated . ', 'info')
        return redirect(url_for('administrate.users'))

    if not form.errors:
        form.name.data = user.name
        form.role.data = user.role_id

        if user.role_id == 3:
            form.offices.data = data.Operators.get(user.id).office_id

    return render_template('user_add.html',
                           form=form,
                           navbar='#snb3',
                           page_title='Update user : ' + user.name,
                           u=user,
                           update=True,
                           offices_count=data.Office.query.count())