def numStudentOfSemester():
    '''
    PROCEDURE NumStudentOfSemester(
        @semesterId AS varchar(10),
        @departmentId AS varchar(10)
    )
    '''

    '''Define Schema'''
    schema = request_schema.numStudentOfSemester
    req_data = request.get_json()
    token = req_data['token']
    route_role = request.url_rule.rule.split('/')[1]
    user_info = decode_auth_token(token)
    if not validate_request(req_data, token, route_role, user_info, schema, required_data=True):
        return Response(
            response="Bad Request",
            status=400
        )

    '''Get request data'''
    params = list(req_data.values())[1:]
    did = execute_sp(engine, stored_procedure.getDId, user_info['sub'], True)
    if did['payload']:
        params += [did['payload'][0]['dId']]
    else:
        return Response(
            response="Invalid Token",
            status=400
        )

    '''Execute Stored Procedure'''
    res = execute_sp(
        engine, stored_procedure.numStudentOfSemester, params, True)
    '''IF SP FAILED'''
    if res['status'] == 'ERROR':
        return Response(
            response=json.dumps(res['error']),
            status=500,
            mimetype='application/json'
        )
    if not res['payload']:
        return Response(
            response=json.dumps({'res': []}),
            status=200,
            mimetype='application/json'
        )
    else:
        return Response(
            response=json.dumps({'res': res['payload']}),
            status=200,
            mimetype='application/json'
        )
Exemplo n.º 2
0
def addRegister():
    '''PROCEDURE addRegister(
            @newStudentId AS varchar(10),
            @newClassId AS varchar(10),
            @newSemesterId AS varchar(10),
            @newSubjectId AS varchar(10)
        )'''
    '''Define Schema'''
    schema = request_schema.addRegister
    req_data = request.get_json()
    print(req_data)
    token = req_data['token']
    route_role = request.url_rule.rule.split('/')[1]
    user_info = decode_auth_token(token)

    if not validate_request(
            req_data, token, route_role, user_info, schema,
            required_data=True):
        return Response(response="Bad Request", status=400)
    '''Get request data'''
    newStudentId, newClassId, newSemesterId, newSubjectId = list(
        req_data.values())[1:]
    '''Execute Stored Procedure'''
    params = [newStudentId, newClassId, newSemesterId, newSubjectId]
    res = execute_sp(engine, stored_procedure.addRegister, params, False)
    '''IF SP FAILED'''
    if res['status'] == 'ERROR':
        return Response(response=json.dumps(res['error']),
                        status=500,
                        mimetype='application/json')
    else:
        return Response(response=json.dumps('OK'),
                        status=200,
                        mimetype='application/json')
Exemplo n.º 3
0
def numOfStudents_sub_dep():
    '''PROCEDURE numOfStudents_sub_dep()'''
    '''Define Schema'''
    schema = request_schema.numOfStudents_sub_dep
    req_data = request.get_json()
    token = req_data['token']
    route_role = request.url_rule.rule.split('/')[1]
    user_info = decode_auth_token(token)

    if not validate_request(
            req_data, token, route_role, user_info, schema,
            required_data=False):
        return Response(response="Bad Request", status=400)
    '''Get request data'''
    '''Execute Stored Procedure'''
    params = []
    res = execute_sp(engine, stored_procedure.numOfStudents_sub_dep, params)
    '''IF SP FAILED'''
    if res['status'] == 'ERROR':
        return Response(response=json.dumps('INTERNAL SERVER ERROR'),
                        status=500,
                        mimetype='application/json')

    if not res['payload']:
        return Response(response=json.dumps({'res': []}),
                        status=400,
                        mimetype='application/json')
    else:
        return Response(response=json.dumps({'res': res['payload']}),
                        status=200,
                        mimetype='application/json')
Exemplo n.º 4
0
def classOfSubject():
    '''
    PROCEDURE ClassOfSubject(
        @studentId AS VARCHAR(10),
        @semesterId AS VARCHAR(10)
    )
    '''

    '''Define Schema'''
    schema = request_schema.classOfSubject
    req_data = request.get_json()
    token = req_data['token']
    route_role = request.url_rule.rule.split('/')[1]
    user_info = decode_auth_token(token)

    if not validate_request(req_data, token, route_role, user_info, schema, required_data=True):
        return Response(
            response="Bad Request",
            status=400
        )

    '''Get request data'''
    studentId = user_info['sub']
    # semesterId = req_data['semesterId']

    '''Execute Stored Procedure'''
    # params = [studentId, semesterId]
    params = [studentId]
    res = execute_sp(engine, stored_procedure.classOfSubject, params)

    '''IF SP FAILED'''
    if res['status'] == 'ERROR':
        return Response(
            response=json.dumps('INTERNAL SERVER ERROR'),
            status=500,
            mimetype='application/json'
        )

    if not res['payload']:
        return Response(
            response=json.dumps({'res': []}),
            status=400,
            mimetype='application/json'
        )
    else:
        return Response(
            response=json.dumps({'res': res['payload']}),
            status=200,
            mimetype='application/json'
        )
Exemplo n.º 5
0
def login():
    '''Define Schema'''
    schema = request_schema.login
    req_data = request.get_json()

    '''Validate Request'''
    if not validate_request_public(req_data, schema):
        return Response(
            response="Bad Request",
            status=400
        )

    '''Get Request Data'''
    username = req_data['username']
    password = req_data['password']
    role = req_data['role']

    '''Execute Stored Procedure'''
    params = [username, role]
    res = execute_sp(engine, stored_procedure.login, params)

    '''IF SP FAILED'''
    if res['status'] == 'ERROR':
        return Response(
            response=json.dumps('INTERNAL SERVER ERROR'),
            status=500,
            mimetype='application/json'
        )

    if not res['payload']:  # User does not exist
        return Response(
            response=json.dumps('User does not exist'),
            status=400,
            mimetype='application/json'
        )
    else:
        user = res['payload'][0]
        if check_password(user['password'], password):
            token = encode_auth_token(username, role).decode("utf-8")
            return Response(
                response=json.dumps({'token': token}),
                status=200,
                mimetype='application/json'
            )
        else:
            return Response(
                response=json.dumps('Wrong password'),
                status=400,
                mimetype='application/json'
            )
Exemplo n.º 6
0
def sumCredit():
    '''
    PROCEDURE SumCredit(
        @studentId AS VARCHAR(10),
        @semesterId AS VARCHAR(10)
    )
    '''

    '''Define Schema'''
    schema = request_schema.sumCredit
    req_data = request.get_json()
    token = req_data['token']
    route_role = request.url_rule.rule.split('/')[1]
    user_info = decode_auth_token(token)

    if not validate_request(req_data, token, route_role, user_info, schema, required_data=True):
        return Response(
            response="Bad Request",
            status=400
        )

    '''Get request data'''
    params = [user_info['sub']] + list(req_data.values())[1:]
    '''Execute Stored Procedure'''
    res = execute_sp(engine, stored_procedure.sumCredit,
                     params, getResult=True)

    '''IF SP FAILED'''
    if res['status'] == 'ERROR':
        return Response(
            response=json.dumps('INTERNAL SERVER ERROR'),  # (res['error'])
            status=500,
            mimetype='application/json'
        )
    elif not res['payload']:
        return Response(
            response=json.dumps({'res': []}),
            status=200,
            mimetype='application/json'
        )
    else:
        return Response(
            response=json.dumps({'res': res['payload']}),
            status=200,
            mimetype='application/json'
        )
def classOfTeacher():
    '''
    PROCEDURE ClassOfTeacher(
        @teacherSsn AS VARCHAR(10),
        @semesterId AS varchar(10)
    )
    '''
    '''Define Schema'''
    schema = request_schema.classOfTeacher
    req_data = request.get_json()
    token = req_data['token']
    route_role = request.url_rule.rule.split('/')[1]
    user_info = decode_auth_token(token)

    if not validate_request(req_data, token, route_role, user_info, schema, required_data=True):
        return Response(
            response="Bad Request",
            status=400
        )

    '''Get request data'''
    params = list(req_data.values())[1:]

    '''Execute Stored Procedure'''
    res = execute_sp(engine, stored_procedure.classOfTeacher, params, True)
    '''IF SP FAILED'''
    if res['status'] == 'ERROR':
        return Response(
            response=json.dumps(res['error']),
            status=500,
            mimetype='application/json'
        )
    if not res['payload']:
        return Response(
            response=json.dumps({'res': []}),
            status=200,
            mimetype='application/json'
        )
    else:
        return Response(
            response=json.dumps({'res': res['payload']}),
            status=200,
            mimetype='application/json'
        )
def removeTeacherOfClass():
    '''
    PROCEDURE removeTeacherOfClass(
        @teacherSsn AS varchar(10),
        @classId AS VARCHAR(10),
        @subjectId AS VARCHAR(10),
        @semesterId AS VARCHAR(10),
        @weekId AS VARCHAR(10)
    )
    '''
    '''Define Schema'''
    schema = request_schema.removeTeacherOfClass
    req_data = request.get_json()
    # print(req_data)
    token = req_data['token']
    route_role = request.url_rule.rule.split('/')[1]
    user_info = decode_auth_token(token)

    if not validate_request(req_data, token, route_role, user_info, schema, required_data=True):
        return Response(
            response="Bad Request",
            status=400
        )

    '''Get request data'''
    params = list(req_data.values())[1:]
    # print(params)
    '''Execute Stored Procedure'''
    res = execute_sp(
        engine, stored_procedure.removeTeacherOfClass, params, False)
    '''IF SP FAILED'''
    if res['status'] == 'ERROR':
        return Response(
            response=json.dumps(res['error']),
            status=500,
            mimetype='application/json'
        )
    else:
        return Response(
            response=json.dumps('OK'),
            status=200,
            mimetype='application/json'
        )
Exemplo n.º 9
0
def updateReferenceBook():
    '''
    PROCEDURE updateReferenceBook(
        @teacherSsn AS varchar(10),
        @subjectId AS varchar(10),
        @semesterId AS varchar(10),
        @classId AS varchar(10)
        @oldBookId AS varchar(10),
        @newBookId AS varchar(10)
        )
    '''
    '''Define Schema'''
    schema = request_schema.updateReferenceBook
    req_data = request.get_json()
    token = req_data['token']
    route_role = request.url_rule.rule.split('/')[1]
    user_info = decode_auth_token(token)

    if not validate_request(
            req_data, token, route_role, user_info, schema,
            required_data=True):
        return Response(response="Bad Request", status=400)
    '''Get request data'''
    params = [user_info['sub']] + list(req_data.values())[1:]
    '''Execute Stored Procedure'''
    res = execute_sp(engine,
                     stored_procedure.updateReferenceBook,
                     params,
                     getResult=False)
    '''IF SP FAILED'''
    if res['status'] == 'ERROR':
        return Response(
            response=json.dumps('INTERNAL SERVER ERROR'),  # (res['error'])
            status=500,
            mimetype='application/json')
    else:
        return Response(response=json.dumps('OK'),
                        status=200,
                        mimetype='application/json')
Exemplo n.º 10
0
def register():
    '''Define request schema'''
    schema = request_schema.register
    req_data = request.get_json()

    '''Validate Request'''
    if not validate_request_public(req_data, schema):
        return Response(
            response="Bad Request",
            status=400
        )

    '''Get Request Data'''
    username = req_data['username']
    password = hash_password(req_data['password'])
    role = req_data['role']

    '''Execute Stored Procedure'''
    params = [username, password, role]
    res = execute_sp(engine, stored_procedure.register,
                     params, getResult=False)

    '''IF SP FAILED'''
    if res['status'] == 'ERROR':
        print(res)
        return Response(
            response=json.dumps(res['error']),#'Registration Failed'),
            status=500,
            mimetype='application/json'
        )

    return Response(
        response=json.dumps('Your account is ready'),
        status=200,
        mimetype='application/json'
    )