Example #1
0
def create_pupil_independent():
    """
    Create pupil account not connected to a class
    """
    email = request.json['email']
    password = request.json['password']
    firstname = request.json['firstname']
    surname = request.json['surname']
    
    # Check username and password etc.
    USER = mongo.load_by_arbitrary({'email':email}, 'users')
    if USER.exists():
        USER = {}
        return_data = {'message':'Username already taken'}
        return json.dumps({'status':0, 'data':return_data})
    
    else:
        # Create user
        mongo.create_user(
            username=email,
            firstname=firstname,
            surname=surname,
            password=password,
            display_name=None,
            is_teacher=False,
            email=email,
            confirmed=False)

        USER = mongo.load_by_arbitrary({'email':email}, 'users')
        session['user'] = USER.save_to_session()

        return_data = {}
        return json.dumps({'status':1, 'data':return_data})
Example #2
0
def create_teacher_attempt():
    email = request.json['email']
    password = request.json['password']
    firstname = request.json['firstname']
    surname = request.json['surname']
    display_name = request.json['display_name']

    # Check email does not exist in database
    if mongo.load_by_arbitrary({'email':email}, 'users').exists():
        return_data = {'message':'This email address is already registered.'}
        return json.dumps({'status':0, 'data':return_data})

    # Create user
    mongo.create_user(
        username=email,
        firstname=firstname,
        surname=surname,
        display_name=display_name,
        password=password,
        is_teacher=True,
        email=email,
        confirmed=False)

    USER = mongo.load_by_username(email)
    session['user'] = USER.save_to_session()

    return_data = {}
    return json.dumps({'status':1, 'data':return_data})
Example #3
0
def create_pupil_via_school():
    """
    Create pupil account given a valid entry code
    Add pupil to the class whilst creating their account
    """
    username = request.json['username']
    password = request.json['password']
    entry_code = request.json['entry_code']
    firstname = request.json['firstname']
    surname = request.json['surname']
    
    # Check username and password etc.
    USER = mongo.load_by_username(username)
    if USER.exists():
        USER = {}
        return_data = {'message':'Username already taken'}
        return json.dumps({'status':0, 'data':return_data})
    
    # Create user
    mongo.create_user(
        username=username,
        firstname=firstname,
        surname=surname,
        password=password,
        display_name=None,
        is_teacher=False,
        email=None,
        confirmed=False)
    USER = mongo.load_by_username(username)
    session['user'] = USER.save_to_session()

    # Add to class
    classroom = mongo.load_by_arbitrary({'entry_code':entry_code}, 'classrooms')
    mongo.pupil_joins_classroom(USER, classroom)

    # Create submission objects (should refactor all of this code a bit)
    pupil_id = USER.get_id()
    pupil_name = USER.get_display_name()
    for homework_id in classroom.get_homework_ids():
        homework_object = mongo.load_by_arbitrary({'_id':homework_id}, 'homeworks')
        mongo.create_submission(pupil_id, pupil_name, homework_object)

    return_data = {}
    return json.dumps({'status':1, 'data':return_data})
def register():
    if 'user' in session:
        flash(ALREADY_LOGGED_IN)
        return redirect(url_for('dashboard'))

    # Registration form submitted
    if request.method == 'POST':
        user = request.form['user']
        pwd = request.form['pwd']

        # Reigstration attempt
        result, passed = mongo.create_user(user, pwd)

        if result: #Success
            flash(passed)
            return redirect(url_for('login'))

        else: # Failure
            flash(passed)
            return redirect(url_for('register'))

    # Viewing registration page
    else:
        return render_template('register.html')