예제 #1
0
 def post(self):
     # get the post data
     data = request.get_json(force=True)
     data['user_id'] = session.get('user_id')
     data['user'] = User(data).filter_by_email()
     # check if user already exists
     errors = validate_user_details(data)
     if len(errors) > 0:
         response_object = {'errors': errors}
         return make_response(jsonify(response_object)), 404
     try:
         user = User(data).save()
         auth_token = encode_auth_token(user.get('user_id'),
                                        user.get('username')).decode()
         response_object = {
             'message': 'Successfully registered.',
             'auth_token': auth_token
         }
         return make_response(jsonify(response_object)), 201
     except Exception as e:
         print(e)
         response_object = {
             'error': 'Some error occurred. Please try again.'
         }
         return make_response(jsonify(response_object)), 401
예제 #2
0
def view(lessonid):
    """Route to display all users and their options"""
    try:
        lesson = Lesson.get(Lesson.id == lessonid)
    except:
        flash('Id not found', 'error')
        return redirect(url_for('auth_bp.profile'))

    # Get all users in lesson
    query = LessonStudent.select().where(LessonStudent.lesson_id == lesson.id)
    data = []

    semsters = set()
    for ls in query:
        user_options = UserOption.select().where((UserOption.user == ls.student_id.user_id) & (UserOption.agreed == True))
        user_options_list = [uo.option.name for uo in user_options if uo.option.lesson.id == lesson.id]
        if len(user_options_list) < 1:
            continue
        user = User.get(User.user_id == ls.student_id.user_id)
        data.append({'name': user.first_name + " " + user.last_name,
                     'email': user.email,
                     'options': user_options_list,
                     'semester': ls.semester,
                     'year': ls.year})
        semsters.add((ls.year, ls.semester))
    print(sorted(semsters))
    return render_template('search/listing.html', lesson=lesson, users=data, semesters=sorted(semsters))
예제 #3
0
def view_team(team_id):
    team = Team.get(team_id)
    users_by_team = Membership.get_users_by_team(team_id)

    team_members = []
    authorized = False
    role = False
    for membership in users_by_team:
        membership_data = membership.val()
        user = User.get(membership_data['user_id'])

        member = {
            "id": user.id,
            "name": user.name,
            "role": membership_data['role'],
            "membership_id": membership.key()
        }
        team_members.append(member)

        if current_user.id == user.id:
            authorized = True
            role = membership_data['role']

    if not authorized:
        abort(401, "You don't have access to that team")

    title = 'View Team {}'.format(team.name)

    return render_template('teams/view_team.html',
                           title=title,
                           team=team,
                           team_members=team_members,
                           role=role)
예제 #4
0
def test_edit_profile(user):
    user.edit('tester 2', '*****@*****.**', 'QA Tester')

    user = User.get(user.id)
    meta = user.get_meta()

    assert user.name == 'tester 2'
    assert user.email == '*****@*****.**'
    assert meta.get('job_title') == 'QA Tester'
예제 #5
0
 def attend(cls, user_id, lesson_ids):
     """Class method to create LessonStudent objects for every lesson a user wants to attend"""
     users_school = User.get(User.user_id == user_id).school_id
     for lesson_id in lesson_ids:
         lesson = Lesson.get(Lesson.id == lesson_id)
         if lesson.school_id != users_school:
             raise ValueError(
                 "Lesson id {} does not corrospond to the same school as the user"
                 .format(lesson.school_id))
     for lesson_id in lesson_ids:
         semester = Semester.current_semester()
         LessonStudent.create(student_id=user_id,
                              lesson_id=lesson_id,
                              semester=semester.value,
                              year=datetime.now().year)
예제 #6
0
    def test_user_get_function(self):
        test_list = [
            dict(
                username='******',
                password='******',
                email='*****@*****.**',
                name='TaeminKim',
            ),
            dict(
                username='******',
                password='******',
                email='*****@*****.**',
                name='Kevin',
            ),
            dict(
                username='******',
                password='******',
                email='*****@*****.**',
                name='Min',
            ),
            dict(
                username='******',
                password='******',
                email='*****@*****.**',
                name='Le',
            ),
            dict(
                username='******',
                password='******',
                email='*****@*****.**',
                name='flatcoke',
            ),
        ]
        for i in test_list:
            user = User(i['username'], i['name'], i['email'], i['password'])
            db.session.add(user)
            db.session.commit()

            result = User.get(user.id)
            self.assertIsInstance(result, User)
            self.assertEqual(result.username, i['username'])
            self.assertEqual(result.name, i['name'])
            self.assertNotEqual(result.password, i['password'])
예제 #7
0
from app.auth.models import School, Permission, UserPermission, User

schools = School.select()

for school in schools:
    Permission.get_or_create(name='lecture_admin',
                             description="Can create lectures",
                             school=school.school_id)
    Permission.get_or_create(name='discussion_admin',
                             description="Can create discussions",
                             school=school.school_id)
    su, created = Permission.get_or_create(name='super_user',
                                           description="Is a superuser",
                                           school=school.school_id)
    Permission.get_or_create(name='lesson_admin',
                             description="Can crate lessons",
                             school=school.school_id)

    has_superuser = False

    if UserPermission.select().where(
            UserPermission.permission == su.id).exists():
        has_superuser = True

    if not has_superuser:
        try:
            u = User.get(school_id=school.school_id)
            UserPermission.create(user=u.user_id, permission=su.id)
        except Exception as e:
            print(school.name)
            print(e)
예제 #8
0
def load_user(user_id):
    return User.get(user_id)
예제 #9
0
def load_user(user_id):
    """Returns a User matching the supplied user_id or None for Flask-Login"""
    try:
        return User.get(User.user_id == user_id)
    except DoesNotExist:
        return None