Esempio n. 1
0
def admin(username=None, action=None):
    if not g.user.admin:
        return redirect(url_for('index'))

    msg = ""

    # Make a little list of major keys for reference
    majors = []
    for major in Major.objects.all():
        majors.append(major.key)
    majors = ', '.join(majors)

    # Handle the logic of doing mass imports
    iform = ImportForm()
    test_table = None
    if request.method == "POST":
        tp = request.form['_arg_form']
        if tp == "import":
            success = iform.validate(request.form)
            data = iform.data_by_attr()
            if success:
                if not data['go']:
                    test_table = iform.body.valid_data
                else:
                    for user in iform.body.valid_data:
                        try:
                            team = Team.objects.get_or_create(text=user.team_txt)
                            delattr(user, 'team_txt')
                            user.team = team[0]
                            user.password = user.username
                            user.active = True
                            user.save()
                            iform.start.add_error(
                                {'message': 'Inserted user ' + user.username, 'type': 'success'})
                        except mongoengine.errors.NotUniqueError:
                            iform.start.add_error(
                                {'message': 'User ' + user.username + ' already exists'})


    # Handle logic of approving or denying user accounts
    if username is not None:
        if action == "approve":
            user = User.objects.get(username=username)
            user.active = True
            user.save()
            msg = user.username + " has been activated"
    users = User.objects(active=False).all()

    return render_template('admin.html',
                           iform=iform.render(),
                           test_table=test_table,
                           majors=majors,
                           users=users,
                           msg=msg,
                           msg_type="success")