def userInfo():
    userName = request.args.get('userName')
    type = request.args.get('type')
    if type == 'stu':
        res = session.query(Student).filter(Student.userName == userName).all()
        stu = res[0]
        return json.dumps(stu, cls=MyJSONEncoder, indent=2, ensure_ascii=False)
    elif type == 'ins':
        res = session.query(Teacher).filter(Teacher.userName == userName).all()
        ins = res[0]
        return json.dumps(ins, cls=MyJSONEncoder, indent=2, ensure_ascii=False)
    elif type == 'ta':
        res = session.query(TA).filter(TA.userName == userName).all()
        ta = res[0]
        return json.dumps(ta, cls=MyJSONEncoder, indent=2, ensure_ascii=False)
    else:
        return json.dumps({'state': 404}, indent=2, ensure_ascii=False)
def fetchFile():
    type = request.args.get('type')
    if type == '1':
        userName = request.args.get('userName')
        append = session.query(
            PUser.portrait).filter(PUser.userName == userName).all()[0][0]
        return json.dumps({'url': filePath + '/' + userName + '.' + append},
                          indent=2,
                          ensure_ascii=False)
    elif type == '2':
        courseDescriptor = request.args.get('courseDescriptor')
        append = session.query(Course.Image).filter(
            Course.courseDescriptor == courseDescriptor).all()[0][0]
        return json.dumps(
            {'url': filePath + '/' + courseDescriptor + '.' + append},
            indent=2,
            ensure_ascii=False)
    elif type == '3':
        file = request.args.get('file')
        append = session.query(HandInHomework.fileName).filter(
            HandInHomework.file == file).all()[0][0]
        return json.dumps(
            {'url': filePath + r'/' + file + '.' + append.split('.')[1]},
            indent=2,
            ensure_ascii=False)
    elif type == '4':
        file = request.args.get('file')
        append = session.query(
            Reference.referenceName).filter(Reference.file == file).all()[0][0]
        return json.dumps(
            {'url': filePath + r'/' + file + '.' + append.split('.')[1]},
            indent=2,
            ensure_ascii=False)
    else:
        # unexpected type
        pass
    return json.dumps({'state': 404})
def courseReference():
    courseDescriptor = request.args.get('courseDescriptor')
    res = session.query(
        Reference.referenceName, Reference.downloadable,
        Reference.upLoadTime).filter(
            Reference.courseDescriptor == courseDescriptor).all()
    res_list = [{
        'referenceName': i[0],
        'downloadable': i[1],
        'upLoadTime': i[2]
    } for i in res]
    return json.dumps(res_list,
                      cls=MyJSONEncoder,
                      indent=2,
                      ensure_ascii=False)
def homeworkList():
    courseDescriptor = request.args.get('courseDescriptor')
    res = session.query(
        Homework.homeworkTitle, Homework.homeworkContent, Homework.startTime,
        Homework.endTime).filter(
            Homework.courseDescriptor == courseDescriptor).all()
    res_list = [{
        'homeworkTitle': i[0],
        'homeworkContent': i[1],
        'startTime': i[2],
        'endTime': i[3]
    } for i in res]
    return json.dumps(res_list,
                      cls=MyJSONEncoder,
                      indent=2,
                      ensure_ascii=False)
def handinList():
    courseDescriptor = request.args.get('courseDescriptor')
    hwName = request.args.get('homeworkName')
    res = session.query(HandInHomework.file, HandInHomework.fileName,
                        HandInHomework.handInTime,
                        HandInHomework.submitUserName).filter(
                            HandInHomework.courseDescriptor == courseDescriptor
                            and HandInHomework.homeworkTitle == hwName).all()
    res_list = [{
        'file': i[0],
        'fileName': i[1],
        'handInTime': i[2],
        'submitUserName': i[3]
    } for i in res]
    return json.dumps(res_list,
                      cls=MyJSONEncoder,
                      indent=2,
                      ensure_ascii=False)
def userPortrait():
    userName = request.args.get('userName')
    url = userName + '.' + session.query(
        PUser.portrait).filter(PUser.userName == userName).all()[0][0]
    return json.dumps({'url': url})