Beispiel #1
0
def adduserView(request):
    if request.method == 'POST': 
        form =userForm(request.POST) 
        if form.is_valid(): 
            username=form.cleaned_data['name']
            password=form.cleaned_data['password']
            user(name=username,password=password).save()
            return HttpResponseRedirect('/adduserView')
    else:
        form = userForm()
    return render_to_response('message.html', {'form':form},context_instance=RequestContext(request))
Beispiel #2
0
def render_booking_done():
    form = userForm()
    name = form.name.data
    phone = form.phone.data
    day = form.day.data
    time = form.time.data
    teacher_id = form.teacher_id.data
    teacher_name = form.teacher_name.data
    timetable_id = form.timetable_id.data

    print(50 * '*')
    print(form.timetable_id.data)

    student = Student.query.filter(Student.phone == phone).first()

    if not student:
        student = Student(name=name, phone=phone)
        db.session.add(student)
        db.session.commit()

    booking = Booking(student_id=student.id,
                      teacher_id=teacher_id,
                      timetable_id=timetable_id)

    db.session.add(booking)
    db.session.commit()

    return render_template('booking_done.html',
                           name=name,
                           phone=phone,
                           time=time,
                           day=day)
Beispiel #3
0
def user():
    form = userForm()

    if request.method == "GET":
        form.username.data = flask_login.current_user.id
        return render_template("user.html", form=form)

    elif request.method == "POST":
        if form.validate():
            username = form.username.data
            password = form.password.data
            new_password = form.new_password.data
            if user_change_credentials(username, password, new_password):
                flash(
                    "Your user information has been successfully changed. Please login with the new credentials.",
                    "success")
                return redirect(url_for("login"))
            else:
                flash(
                    "Invalid current username or password. Please try again.",
                    "error")
                return render_template("user.html", form=form)

        else:
            flash_form_errors(form)
            return render_template("user.html", form=form)
Beispiel #4
0
def userEdit(request):
    userId = request.GET.get('id')
    user = get_object_or_404(myUser, id=userId)
    data = userForm(instance=user)
    chkApiAuth = ApiKey.objects.filter(user=user)
    if request.method == 'POST':
        post = request.POST
        data = userForm(post, instance=user)
        if post.get('apiAuth') and not chkApiAuth:
            ApiKey(user=user).save()
            sendApiPswMail(user)
        elif not post.get('apiAuth') and chkApiAuth:
            chkApiAuth.delete()
        if data.is_valid():
            data.save()
            return HttpResponseRedirect('/accounts/userList')
    return render_to_response('accounts/userEdit.html',locals(),context_instance=RequestContext(request))
Beispiel #5
0
def userAdd(request):
    listOrAddTag = ['user','accounts', 'userAdd']
    data = userForm()
    if request.method == 'POST':
        post = request.POST
        data = userForm(post)
        username = post.get('username')
        if data.is_valid():
            data.save()
            if post.get('apiAuth'):
                user = myUser.objects.get(username=username,availabity__lte=1)
                ApiKey(user=user).save()
                if not sendApiPswMail(user):
                    emg = u'api密码发送失败。'
            if post.get('EMAIL_PUSH'):
                user = myUser.objects.get(username=username,availabity=1)
                sendInitMail(request.get_host(),user)
            smg = u'用户%s添加成功!' % username
    return render_to_response('accounts/userAdd.html',locals(),context_instance=RequestContext(request))
Beispiel #6
0
def booking(id, day, time):
    profile_data = Teacher.query.get(id)

    timetable = Timetable.query.filter(
        db.and_(Timetable.teacher_id == id, Timetable.weekday == day,
                Timetable.time == '{}:00:00.000000'.format(time))).first()

    print(50 * '*')
    print(timetable.id)

    day = DAYS[day]

    form = userForm()
    return render_template('booking.html',
                           profile_data=profile_data,
                           profile_id=id,
                           day=day,
                           time=time,
                           form=form,
                           timetable_id=timetable.id)
def user():
    form = userForm()
    
    if(request.method == "GET"):
        form.username.data = flask_login.current_user.id
        return render_template("user.html", form=form)
    
    elif(request.method == "POST"):
        if(form.validate()):
            username = form.username.data
            password = form.password.data
            new_password = form.new_password.data
            if(user_change_credentials(username, password, new_password)):
                flash("Your user information has been successfully changed. Please login with the new credentials.", "success")
                return redirect(url_for("login"))
            else:
                flash("Invalid current username or password. Please try again.", "error")
                return render_template("user.html", form=form)

        else:
            flash_form_errors(form)
            return render_template("user.html", form=form)
Beispiel #8
0
def add_user():
    form = forms.userForm()
    db = dbConnect()
    cursor = db.cursor()

    if form.validate_on_submit():
        print('validated')
        sql = 'INSERT INTO users (username,password,isadmin,name,address,town,phonenumber,usercode) VALUES(%s,%s,%s,%s,%s,%s,%s,%s)'
        generate_password_hash
        values = (form.username.data,
                  generate_password_hash(form.password.data, method='sha256'),
                  0, form.name.data, form.address.data, form.town.data,
                  form.phone.data, form.code.data)
        cursor.execute(sql, values)
        sql = 'SELECT studentid FROM students WHERE(parentemail = "%s")' % (
            form.username.data)
        cursor.execute(sql)
        students = cursor.fetchall()
        if (students):
            sql = 'SELECT userid FROM users WHERE(username = "******")' % (
                form.username.data)
            cursor.execute(sql)
            user = cursor.fetchone()
            sql = 'INSERT INTO pickup (userid,studentid) VALUES(%s,%s) ON DUPLICATE KEY UPDATE userid = %s'
            sqlparents = 'INSERT INTO parents (userid,studentid) VALUES(%s,%s) ON DUPLICATE KEY UPDATE userid = %s'
            for student in students:
                values = (user[0], student[0], user[0])
                cursor.execute(sql, values)
                cursor.execute(sqlparents, values)
                db.commit()
        db.commit()
        flask.redirect(url_for('add_user'))
    cursor.execute('SELECT * FROM users')
    desc = cursor.description
    columns = [col[0] for col in desc]
    users = [dict(zip(columns, row)) for row in cursor]
    db.disconnect()
    return render_template('add_user.html', form=form, users=users)
Beispiel #9
0
def userView(uuid=None, function=None):
    # universal variables
    form = userForm()
    kwargs = {'contentTitle': 'Users', 'width': '', 'formWidth': '400'}

    # Get users
    if function == None:
        kwargs['tableColumns'] = ['User name', 'Email', 'Roles', 'Groups']
        kwargs['tableData'] = usersTable()
        return render_template('listView.html', **kwargs)

    elif function == 'delete':
        delUsr = deleteUser(uuid)
        if 'error' in delUsr:
            errorMessage(delUsr['error'])
        print delUsr
        return redirect(url_for('userBP.userView'))

    else:
        if function == 'update':
            usr = getUser(uuid=uuid,
                          includes=['includeRoles', 'includeGroups'])['user']
            kwargs['contentTitle'] = 'Update user'
            role = 'User'
            for r in usr['roles']:
                if r['title'] == 'Administrator':
                    role = 'Administrator'
                elif r['title'] == 'Superuser':
                    role = 'Superuser'
            grpForm = groupForm()
            usrForm = userForm(
                userName=usr['name'],
                userEmail=usr['email'],
                userPhone=usr['phone'],
                userGroups=[str(r['uuid']) for r in usr['groups']],
                userRole=role)

            # Get all groups
            usrForm.userGroups.choices = [(str(r['uuid']), r['name'])
                                          for r in getGroups()['groups']]
            if g.sijax.is_sijax_request:
                g.sijax.register_object(SijaxHandler)
                return g.sijax.process_request()

            if usrForm.validate_on_submit():
                dataDict = {
                    'name': usrForm.userName.data,
                    'email': usrForm.userEmail.data,
                    'phone': usrForm.userPhone.data,
                    'roles': [usrForm.userRole.data],
                    'groups': [usrForm.userGroups.data]
                }

                updateUser = putUser(dataDict=dataDict, uuid=uuid)
                if not 'error' in updateUser:
                    apiMessage(updateUser)
                    return redirect(url_for('userBP.userView'))
                else:
                    return unicode(updateUser)
            return render_template('user/userForm.html',
                                   usrForm=usrForm,
                                   grpForm=grpForm,
                                   **kwargs)

        elif function == 'new':
            usrForm = userForm(userRole='User')
            grpForm = groupForm()
            grpForm.groupUsers.choices = [(str(r['uuid']), r['email'])
                                          for r in getUsers()['users']]
            kwargs['contentTitle'] = 'New user'
            groups = [(str(r['uuid']), r['name'])
                      for r in getGroups()['groups']]
            usrForm.userGroups.choices = groups

            if g.sijax.is_sijax_request:
                g.sijax.register_object(SijaxHandler)
                return g.sijax.process_request()

            if usrForm.validate_on_submit():
                dataDict = {
                    'name': usrForm.userName.data,
                    'email': usrForm.userEmail.data,
                    'phone': usrForm.userPhone.data
                }

                roles = ['User']
                if usrForm.userRole.data == 'Superuser':
                    roles.append('Superuser')
                elif usrForm.userRole.data == 'Administrator':
                    roles.append('Superuser')
                    roles.append('Administrator')

                dataDict['roles'] = roles
                dataDict['groups'] = usrForm.userGroups.data
                newUser = postUser(dataDict)
                if 'success' in newUser:
                    successMessage('The user has been created')
                    subject = u'Confirm signup'
                    confirm_url = url_for('authBP.confirmEmailView',
                                          token=newUser['token'],
                                          _external=True)
                    html = render_template('email/verify.html',
                                           confirm_url=confirm_url)

                    sendMail(subject=subject,
                             sender='Henrik Poulsen',
                             recipients=[usrForm.userEmail.data],
                             html_body=html,
                             text_body=None)

                    return redirect(url_for('userBP.userView'))
                else:
                    apiMessage(newUser)
            return render_template('user/userForm.html',
                                   usrForm=usrForm,
                                   grpForm=grpForm,
                                   **kwargs)
Beispiel #10
0
def userView(function=None, uuid=None):
    # Universal vars
    viewName = 'User'
    viewURL = 'userBP.userView'
    listColumns = [
        'Initials', 'User name', 'Email', 'Roles', 'Groups', 'Locked?',
        'Contact?', 'Active?', 'Confirmed?'
    ]
    templateView = 'user/user.html'

    # View kwargs
    kwargs = {
        'title': viewName + ' list',
        'details': False,
        'activateButton': True,
        'activeIndex': 8,
        'lockButton': True,
        'lockIndex': 6
    }

    # Cruds
    listCrud = userCrud.userListData
    getCrud = userCrud.getUser
    postCrud = userCrud.postUser
    putCrud = userCrud.putUser
    deactivateCrud = userCrud.deactivateUser
    activateCrud = userCrud.activateUser
    deleteCrud = userCrud.deleteUser
    lockCrud = userCrud.lockUser
    unlockCrud = userCrud.unlockUser

    postForm = userForm(role='User', locked='Locked', active='Active')
    postData = {
        'initials': postForm.initials.data,
        'name': postForm.name.data,
        'email': postForm.email.data,
        'phone': postForm.phone.data,
        'role': postForm.role.data,
        'groups': postForm.groups.data,
        'contact': False
    }

    putForm = userForm()
    putData = {
        'initials': putForm.initials.data,
        'name': putForm.name.data,
        'email': putForm.email.data,
        'phone': putForm.phone.data,
        'groups': putForm.groups.data
    }

    # put variables
    putExecs = [
        'data = userCrud.getUser(uuid)', 'role = getRole(data.role)',
        'groups = [r.uuid for r in data.groups]',
        'putForm = userForm(name=data.name,initials=data.initials,email=data.email,phone=data.phone,role=data.role,groups=groups, locked="Locked", active="Active")',
        'groups = groupCrud.groupSelectData()',
        'putForm.groups.choices = groups'
    ]

    # Post variables
    postExecs = [
        'groups = groupCrud.groupSelectData()',
        'postForm.groups.choices = groups'
    ]

    # --------------------------------------------------------------------------------------------
    # CRUD Views (Do not touch!)
    # Build list of all rows
    if function == None:
        kwargs['listColumns'] = listColumns
        kwargs['listData'] = listCrud()
        return render_template('dataTable.html', **kwargs)

    # Create new row
    elif function == 'new':
        # Function kwargs
        kwargs = {
            'contentTitle': 'Add new {}'.format(viewName),
            'submitStay': True
        }

        for r in postExecs:
            exec(r)

        if postForm.validate_on_submit():
            req = postCrud(data=postData)

            if 'success' in req:
                successMessage(req['success'])
                if not postForm.submitStay.data:
                    return redirect(url_for(viewURL))
                else:
                    return redirect(url_for(viewURL) + '/new')
            elif 'error' in req:
                errorMessage(req['error'])
        return render_template(templateView, form=postForm, **kwargs)

    # View single row details
    elif function == 'details' and uuid != None:
        # Function kwargs
        data = getCrud(uuid)
        kwargs = {
            'contentTitle': '{} details'.format(viewName),
            'details': True,
            'detailsData': data,
            'submitStay': False,
            'modifiedUser': getUser(data.modifiedBy),
            'createdUser': getUser(data.createdBy)
        }

        return render_template(templateView, **kwargs)

    elif function == 'deactivate' and uuid != None:
        data = userCrud.getUser(uuid)
        if data.role == 'Administrator':
            errorMessage(
                'You cannot change the active status of Administrators')
            return redirect(url_for('userBP.userView'))
        # Function kwargs
        req = deactivateCrud(uuid=uuid)
        if 'success' in req:
            successMessage(req['success'])
            return redirect(url_for(viewURL))
        elif 'error' in req:
            errorMessage(req['error'])

    elif function == 'activate' and uuid != None:
        data = userCrud.getUser(uuid)
        if data.role == 'Administrator':
            errorMessage(
                'You cannot change the active status of Administrators')
            return redirect(url_for('userBP.userView'))
        # Function kwargs
        req = activateCrud(uuid=uuid)
        if 'success' in req:
            successMessage(req['success'])
            return redirect(url_for(viewURL))
        elif 'error' in req:
            errorMessage(req['error'])

    elif function == 'lock' and uuid != None:
        data = userCrud.getUser(uuid)
        if data.role == 'Administrator':
            errorMessage('You cannot lock out Administrators')
            return redirect(url_for('userBP.userView'))
        # Function kwargs
        req = lockCrud(uuid=uuid)
        if 'success' in req:
            successMessage(req['success'])
            return redirect(url_for(viewURL))
        elif 'error' in req:
            errorMessage(req['error'])

    elif function == 'unlock' and uuid != None:
        # Function kwargs
        req = unlockCrud(uuid=uuid)
        if 'success' in req:
            successMessage(req['success'])
            return redirect(url_for(viewURL))
        elif 'error' in req:
            errorMessage(req['error'])

    elif function == 'delete' and uuid != None:
        # Function kwargs
        req = deleteCrud(uuid=uuid)
        if 'success' in req:
            successMessage(req['success'])
            return redirect(url_for(viewURL))
        elif 'error' in req:
            errorMessage(req['error'])

    # Edit single row
    elif function == 'edit' and uuid != None:
        # Function kwargs
        kwargs = {
            'contentTitle': 'Edit {}'.format(viewName),
            'submitStay': False
        }

        for r in putExecs:
            exec(r)

            if session['user_uuid'] == uuid:
                kwargs['noLocked'] = True

        if not 'Administrator' in session['roles']:
            if data.role == 'Administrator':
                errorMessage(
                    'You must have Administrator rights in order to edit another admin'
                )
                return redirect(url_for('userBP.userView'))

        if putForm.validate_on_submit():
            if putForm.role.data != data.role:
                if data.contact == True:
                    errorMessage('You cannot change contact person roles')
                    return render_template(templateView,
                                           form=putForm,
                                           **kwargs)
                else:
                    putData['role'] = putForm.role.data
            else:
                putData['role'] = putForm.role.data

            req = putCrud(data=putData, uuid=uuid)
            if 'success' in req:
                successMessage(req['success'])
                return redirect(url_for(viewURL))
            elif 'error' in req:
                errorMessage(req['error'])

        return render_template(templateView, form=putForm, **kwargs)
Beispiel #11
0
def userView(lang=None, id=None, function=None):
    # universal variables

    g.lang = lang
    form = userForm()
    kwargs = {
        'title': messageText('usersTitle'),
        'width': '',
        'formWidth': '400',
        'breadcrumbs': breadCrumbs('userBP.userView')
    }

    # Get users
    if function == None:
        users = getUsers()
        kwargs['tableColumns'] = columns(['userNameCol', 'emailCol'])
        kwargs['tableData'] = [[r['id'], r['name'], r['email']] for r in users]

        return render_template(lang + '/listView.html', **kwargs)
    elif function == 'delete':
        delUsr = deleteUser(id)

        if 'error' in delUsr:
            errorFlash(delUsr['error'])
        elif 'success' in delUsr:
            flashMessage('userDeleted')

        return redirect(url_for('userBP.userView', lang=lang))
    else:
        if function == 'update':
            # Get single user
            usr = getUser(id, includes=['includeRoles', 'includeGroups'])

            form = userForm(name=usr['name'],
                            email=usr['email'],
                            phone=usr['phone'],
                            groups=[str(r['id']) for r in usr['groups']])

            if 'roles' in usr:
                for r in usr['roles']:
                    if r['title'] == 'Administrator':
                        form.isAdmin.checked = True
                    if r['title'] == 'Superuser':
                        form.isSuperuser.checked = True
#
# Get all groups
            form.groups.choices = [(str(r['id']), r['name'])
                                   for r in getGroups()]

            if form.validate_on_submit():
                dataDict = {
                    'name': form.name.data,
                    'email': form.email.data,
                    'phone': form.phone.data
                }

                roles = []
                if form.isAdmin.data:
                    roles.append('Administrator')
                if form.isSuperuser.data:
                    roles.append('Superuser')
                dataDict['roles'] = roles
                dataDict['groups'] = form.groups.data
                updateUser = putUser(dataDict=dataDict, id=id)
                if 'error' in updateUser:
                    errorFlash(updateUser['error'])
                elif 'success' in updateUser:
                    flashMessage('userUpdated')

                return redirect(url_for('userBP.userView', lang=lang))

            return render_template(lang + '/user/userForm.html',
                                   form=form,
                                   **kwargs)
        elif function == 'new':
            form = userForm()
            groups = [(str(r['id']), r['name']) for r in getGroups()]
            form.groups.choices = groups

            if form.validate_on_submit():
                dataDict = {
                    'name': form.name.data,
                    'email': form.email.data,
                    'phone': form.phone.data
                }
                roles = []
                if form.isAdmin.data:
                    roles.append('Administrator')
                if form.isSuperuser.data:
                    roles.append('Superuser')
                dataDict['roles'] = roles
                dataDict['groups'] = form.groups.data
                newUser = postUser(dataDict)
                if 'error' in newUser:
                    if newUser['error'] == 'User already exist':
                        flashMessage('userExists')
                    else:
                        errorFlash(newUser['error'])
                elif 'success' in newUser:
                    flashMessage('userCreated')

                return redirect(url_for('userBP.userView', lang=lang))
            return render_template(lang + '/user/userForm.html',
                                   form=form,
                                   **kwargs)

    return render_template(lang + '/listView.html', **kwargs)