Beispiel #1
0
def lecture_vtimetable_search():
    try:
        year = int(request.args.get('year'))
        term = Lecture.term_str_to_int(request.args.get('term'))
        query = request.args.get('q', '')
    except TypeError:
        return jsonify({'error': {'code': 'type_error'}}), 400

    results = Lecture.search(request.campus.id, query=query, page=1, size=8, year=year, term=term)

    for lecture in results:
        lecture['timetable'] = []
        try:
            lecture_data = Lecture.get_lecture(int(lecture['year']), lecture['term_str'], lecture['code'])
            for time in lecture_data.timetable:
                lecture['timetable'].append({
                    'place': time.place,
                    'room': time.room,
                    'start_time': time.start_time,
                    'end_time': time.end_time
                })
        except:
            pass

    return jsonify({
        'data': results
    })
Beispiel #2
0
def lecture_students(campus_id, year, term, code):
    try:
        lecture = Lecture.objects(campus_id=campus_id,
                                  year=year, term=Lecture.term_str_to_int(term), code=code).get()
    except Lecture.DoesNotExist:
        return jsonify({
            'error': {
                'code': 'lecture_not_exist'
            }
        }), 404

    request_data = request.get_json()
    student_id = request_data.get('student_id')

    # TODO
    """
    from opencampus.module.account.models import Account
    try:
        account = Account.objects(campus_id=request.campus.id, student_id=student_id).get()
    except Account.DoesNotExist:
        return jsonify({
            'error': {
                'code': 'account_not_found'
            }
        }), 404
    """

    #if account.id not in lecture.students:
    Lecture.objects(id=lecture.id).update_one(push__students=student_id)

    return jsonify({})
Beispiel #3
0
def lecture_create(campus_id):
    try:
        request_data = request.get_json()
        year = request_data.get('year')
        term = Lecture.term_str_to_int(request_data.get('term'))
        code = request_data.get('code')
        if not (year and term and code):
            raise ValueError
    except TypeError or ValueError:
        return jsonify({'error': {'code': 'invalid_request'}})

    lecture = Lecture(
        campus_id=campus_id,
        year=year,
        term=term,
        code=code
    )
    try:
        lecture.save()
    except NotUniqueError:
        return jsonify({'error': {'code': 'lecture_exist'}}), 400
    return jsonify({
        'id': str(lecture.id),
        'year': year,
        'term': Lecture.term_int_to_str(lecture.term),
        'code': lecture.code
    })
Beispiel #4
0
def lecture_sync(campus_id, year, term, code):
    try:
        lecture = Lecture.objects(campus_id=campus_id,
                                  year=year, term=Lecture.term_str_to_int(term), code=code).get()
    except Lecture.DoesNotExist:
        return jsonify({
            'error': {
                'code': 'lecture_not_exist'
            }
        }), 404

    campus = Campus.objects(id=campus_id).get()
    campus.get_gateway().sync_lecture(
        year=lecture.year,
        term=lecture.term_int_to_str(lecture.term),
        code=lecture.code
    )

    return jsonify({})
Beispiel #5
0
def lecture_update(campus_id, year, term, code):
    try:
        lecture = Lecture.objects(campus_id=campus_id,
                                  year=year, term=Lecture.term_str_to_int(term), code=code).get()
    except Lecture.DoesNotExist:
        return jsonify({
            'error': {
                'code': 'lecture_not_exist'
            }
        }), 404
    request_data = request.get_json()

    lecture.type = request_data.get('type', lecture.type)
    lecture.subject_code = request_data.get('subject_code', lecture.subject_code)
    lecture.subject_name = request_data.get('subject_name', lecture.subject_name)
    lecture.credit = int(request_data.get('credit', lecture.credit))
    lecture.grade = int(request_data.get('grade', lecture.grade))
    lecture.departments = request_data.get('departments', lecture.departments)
    lecture.professors = request_data.get('professors', lecture.professors)
    lecture.tags = request_data.get('tags', lecture.tags)
    lecture.timetable_text = request_data.get('timetable_text', lecture.timetable_text)
    if request_data.get('timetable'):
        lecture.timetable = []
        for time in request_data.get('timetable'):
            lecture_time = LectureTime()
            if time.get('time'):
                lecture_time.start_time = time.get('time').get('start')
                lecture_time.end_time = time.get('time').get('end')
            if time.get('place'):
                lecture_time.place = time.get('place').get('name')
                lecture_time.room = time.get('place').get('room')

            lecture.timetable.append(lecture_time)

    lecture.email = request_data.get('email', lecture.email)
    lecture.phone = request_data.get('phone', lecture.phone)

    lecture.save()
    return jsonify({})