Пример #1
0
def auth(username, pwd):
    tab = getTable(TABLE_NAME)
    pwd = hash_sha256(pwd)
    r = tab.find_one({'user': username, 'pwd': pwd})
    if r:
        return str(r['_id'])
    return None
Пример #2
0
def getGradesByStudentId(student_id):
    sch = schedule.getSchedule()
    sch = [s for s in sch]
    ret = []
    tab = getTable(TABLE_NAME)
    for s in sch:
        g = tab.find_one(
            {
                'grade_list.student_id': str(student_id),
                'class_id': s['class_id'],
                'date.week': s['date']['week'],
                'date.cod': s['date']['cod'],
                'date.dow': s['date']['dow'],
                'teacher': s['teacher']
            }, {'grade_list.$': 1})
        if g:
            grade = g['grade_list'][0]['grade']
            teacher_name = teacher.getTeacherById(s['teacher'])['name']
            ret.append({
                'date': s['date'],
                'teacher': teacher_name,
                'content': (s['content'] if ('content' in s) else ''),
                'grade': grade
            })
    return ret
Пример #3
0
def genReport(class_id):
    sch = schedule.getScheduleByClass(class_id)
    sch = [s for s in sch]
    schedule.sortByDate(sch)
    stu = students.getStudents(class_id)[0]['students']
    stu = [s for s in stu]
    sid2idx = {s['student_id']: idx for idx, s in enumerate(stu)}

    grades = []
    tab = getTable(TABLE_NAME)
    for s in sch:
        glist = tab.find_one(
            {
                'class_id': s['class_id'],
                'date.week': s['date']['week'],
                'date.cod': s['date']['cod'],
                'date.dow': s['date']['dow'],
                'teacher': s['teacher']
            }, {'grade_list': 1})
        target = [None] * len(stu)
        if glist:
            for g in glist['grade_list']:
                if g['student_id'] in sid2idx:
                    target[sid2idx[g['student_id']]] = g['grade']
                else:
                    print "{} not in class {}".format(g['student_id'],
                                                      class_id)
        grades.append({
            'content': s['content'],
            'grades': target,
            'date': s['date'],
        })
    return {'s': stu, 'g': grades}
Пример #4
0
def getClassList():
    tab = getTable(TABLE_NAME)
    class_list = list()
    result = tab.find({}, ['name'])
    for mClass in result:
        class_list.append({'_id': str(mClass['_id']), 'name': mClass['name']})
    return class_list
Пример #5
0
def bulkUpdate():
    tab = getTable(TABLE_NAME)
    post = request.get_json()
    sch = schedule.getOneSchedule(post['schedule_id'])
    assert sch['teacher'] == ObjectId(session['teacher_id'])
    stu = students.getStudentIds(sch['class_id'])
    glist = []
    for item in post['data']:
        sid = str(item['student_id'])
        assert sid in stu
        assert not (item['grade'] is None)
        v = float(item['grade'])
        assert v >= 0 and v <= 100
        glist.append({'student_id': sid, 'grade': v})
    tab.update(
        {
            'class_id': sch['class_id'],
            'date.week': sch['date']['week'],
            'date.cod': sch['date']['cod'],
            'date.dow': sch['date']['dow'],
            'teacher': sch['teacher']
        }, {'$set': {
            'grade_list': glist
        }},
        upsert=True)
Пример #6
0
def getClassList():
    tab = getTable(TABLE_NAME)
    class_list = set()
    result = tab.find()
    for mClass in result:
        class_list.add(mClass['class_id'])
    class_list = list(class_list)
    return class_list
Пример #7
0
def getTeachers():
    tab = getTable(TABLE_NAME)
    teacherList = []
    for i in tab.find({}, ['user', 'name']):
        teacherList.append({
            '_id': str(i['_id']),
            'name': i['name'],
            'user': i['user']
        })
    return teacherList
Пример #8
0
def bulkUpdate():
    errorNum = 0
    succeNum = 0
    tab = getTable(TABLE_NAME)
    post = request.get_json()
    classes = {}

    class_id = ObjectId(post['class_id'])

    #put students with the same <class_id> into the same list
    for student in post['data']:
        student.pop('$$hashKey', None)
        assert (student['student_id'])
        assert (student['student_name'])
        student['student_id'] = str(student['student_id'])

    tab.update({'_id': class_id}, {"$set": {'students': post['data']}})
Пример #9
0
def bulkUpdate():
    errorNum = 0
    succeNum = 0
    tab = getTable(TABLE_NAME)
    post = request.get_json()
    l = []
    for s in post:
        l.append({
            'teacher': ObjectId(s['teacher']),
            'date': s['date'],
            'class_id': ObjectId(s['class_id']),
            'content': s['content'] if ('content' in s) else ''
        })
    ret = tab.insert_many(l)
    assert ret.acknowledged
    tab.remove()
    ret = tab.insert_many(l)
    assert ret.acknowledged
Пример #10
0
def update():
    try:
        op = request.form['op']
        tab = getTable(TABLE_NAME)
        if op == 'add':
            tab.insert({
                'name': request.form['name'],
                'user': request.form['user'],
                'pwd': hash_sha256(request.form['pwd']),
            })
        elif op == 'del':
            tab.remove({'_id': ObjectId(request.form['id'])})
        elif op == 'pwd':
            tab.update({'_id': ObjectId(request.form['id'])},
                       {'$set': {
                           'pwd': hash_sha256(request.form['pwd'])
                       }})
    except Exception, e:
        logging.exception(e)
Пример #11
0
def getGradesByScheduleId(schedule_id):
    tab = getTable(TABLE_NAME)
    sch = schedule.getOneSchedule(schedule_id)
    assert sch['teacher'] == ObjectId(session['teacher_id'])
    slist = []
    for i in students.getStudents(sch['class_id'])[0]['students']:
        slist.append({
            'student_name': i['student_name'],
            'student_id': i['student_id']
        })
    g = tab.find_one({
        'class_id': sch['class_id'],
        'date.week': sch['date']['week'],
        'date.cod': sch['date']['cod'],
        'date.dow': sch['date']['dow'],
        'teacher': sch['teacher']
    })
    if g:
        for item in g['grade_list']:
            sid = item['student_id']
            for j in range(len(slist)):
                if slist[j]['student_id'] == sid:
                    slist[j]['grade'] = item['grade']
    return slist
Пример #12
0
def getSchedule():
    tab = getTable(TABLE_NAME)
    return tab.find()
Пример #13
0
def getScheduleByClass(class_id):
    tab = getTable(TABLE_NAME)
    return tab.find({'class_id': ObjectId(class_id)})
Пример #14
0
def getOneSchedule(schedule_id):
    tab = getTable(TABLE_NAME)
    return tab.find_one({'_id': ObjectId(schedule_id)})
Пример #15
0
def removeSchByClassId(cid):
    tab = getTable(TABLE_NAME)
    tab.remove({'class_id': ObjectId(cid)})
Пример #16
0
def getStudents(class_id):
    tab = getTable(TABLE_NAME)
    return tab.find({'_id': ObjectId(class_id)})
Пример #17
0
def getTeacherById(teacher_id):
    tab = getTable(TABLE_NAME)

    return tab.find_one({'_id': ObjectId(teacher_id)}, ['user', 'name'])
Пример #18
0
def getAllstudents():
    tab = getTable(TABLE_NAME)
    return tab.find()
Пример #19
0
def getScheduleForTeacher(teacher_id):
    tab = getTable(TABLE_NAME)
    return tab.find({'teacher': ObjectId(teacher_id)})
Пример #20
0
def del_class():
    cid = request.form['id']
    assert len(cid) > 0
    schedule.removeSchByClassId(cid)
    tab = getTable(TABLE_NAME)
    tab.remove({'_id': ObjectId(cid)})
Пример #21
0
def new():
    name = request.form['name']
    assert len(name) > 0
    tab = getTable(TABLE_NAME)
    tab.insert({'name': name, 'students': []})
Пример #22
0
def getStudentIds(class_id):
    tab = getTable(TABLE_NAME)
    l = []
    for i in tab.find_one({'_id': ObjectId(class_id)})['students']:
        l.append(i['student_id'])
    return l