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 })
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({})
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 })
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({})
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({})