def delete_person(request): """ Delete a person by his or her student_number Http form MUST includes `student_number` :param request: httpRequest :return: status (success or fail), err_info and err_code doesn't exist 0 """ if request.method == 'POST' and token_check(request): try: person_info = json.loads(request.body.decode('utf-8'))['person'] target_person = Person.objects.filter( student_number=person_info['student_number']) if not target_person.exists(): return JsonResponse({ 'status': 'fail', 'err_code': 404, 'err_info': 'no object has student_number = ' + person_info['student_number'] }) target_person.delete() return JsonResponse({'status': 'success'}) except DatabaseError as e: return JsonResponse({ 'status': 'fail', 'err_code': e.args[0], 'err_info': e.args[1], })
def add_activity(request): """ Add new person into MySQL databases Http form MUST includes `name`, `date` and `time` :param request: httpRequest :return: status (success or fail), err_info and err_code """ if request.method == 'POST' and token_check(request): try: activity_info = json.loads( request.body.decode('utf-8'))['activity'] new_activity = Activity( name=activity_info['name'], date=activity_info['date'], time=activity_info['time'], place=activity_info['place'] if 'place' in activity_info.keys() else '', participation=activity_info['participation'] if 'participation' in activity_info.keys() else 0, participator=activity_info['participator'] if 'participator' in activity_info.keys() else '', content=activity_info['content'] if 'content' in activity_info.keys() else '', images=activity_info['images'] if 'images' in activity_info.keys() else '') participators = new_activity.participator.split(',') for stu_num in participators: person = Person.objects.get(student_number=stu_num) person.participation += int(new_activity.participation) person.save() new_activity.save() return JsonResponse({'status': 'success'}) except DatabaseError as e: return JsonResponse({ 'status': 'fail', 'err_code': e.args[0], 'err_info': e.args[1], })
def delete_activity(request): """ Delete an activity by primary-key `id` Http form MUST includes `id` :param request: httpRequest :return: status (success or fail), err_info and err_code doesn't exist 0 """ if request.method == 'POST' and token_check(request): try: activity_info = json.loads( request.body.decode('utf-8'))['activity'] target_activity = Activity.objects.filter(id=activity_info['id']) if not target_activity.exists(): return JsonResponse({ 'status': 'fail', 'err_code': 404, 'err_info': 'no object has id = ' + activity_info['id'] }) participators = target_activity.first().participator.split(',') if participators[0] != '': for stu_num in participators: person = Person.objects.get(student_number=stu_num) person.participation -= int( target_activity.first().participation) person.save() target_activity.delete() return JsonResponse({'status': 'success'}) except DatabaseError as e: return JsonResponse({ 'status': 'fail', 'err_code': e.args[0], 'err_info': e.args[1], })
def get_upload_token(request): """ Get Upload token for Qiniu Storage :param request: Http-Post including args: filename :return: upload_token: Upload Token for upload `filename` on Qiniu """ if request.method == 'POST': if token_check(request): request_body = json.loads(request.body.decode('utf-8')) if 'filename' in request_body: filename = request_body['filename'] # Generate Qiniu Authorization q = Auth(key.ACCESS_KEY, key.SECRET_KEY) # Generate Upload Token token = q.upload_token(key.BUCKET_NAME, filename, 3600) return JsonResponse({ 'status': 'success', 'file_key': filename, 'upload_token': token, }) else: return JsonResponse({ 'status': 'fail', 'err_code': 400, 'err_info': 'argument `filename` missing' }) else: return JsonResponse({ 'status': 'fail', 'err_code': 400, 'err_info': 'token check error' }) else: return JsonResponse({ 'status': 'fail', 'err_code': 400, 'err_info': 'unacceptable request method' })
def update_person(request): """ Update a person in databases :param request: HttpRequest :return: status (success or fail), err_info and err_code doesn't exist 0 """ if request.method == 'POST' and token_check(request): try: target_student_number = json.loads( request.body.decode('utf-8'))['target_student_number'] person_info = json.loads(request.body.decode('utf-8'))['person'] target_person = Person.objects.get( student_number=target_student_number) if not target_person: return JsonResponse({ 'status': 'fail', 'err_code': 404, 'err_info': 'no object has student_number = ' + target_student_number }) for key in person_info: exec('target_person.' + key + '=' + str(repr(person_info[key]))) target_person.save() return JsonResponse({'status': 'success'}) except DatabaseError as e: return JsonResponse({ 'status': 'fail', 'err_code': e.args[0], 'err_info': e.args[1], })
def add_person(request): """ Add new person into MySQL databases Http form MUST includes `student_number`, `name`, `pinyin` and `gender` :param request: httpRequest :return: status (success or fail), err_info and err_code """ if request.method == 'POST' and token_check(request): try: person_info = json.loads(request.body.decode('utf-8'))['person'] new_person = Person( student_number=person_info['student_number'], name=person_info['name'], pinyin=person_info['pinyin'], gender=person_info['gender'], native_province=person_info['native_province'] if 'native_province' in person_info.keys() else '', dormitory=person_info['dormitory'] if 'dormitory' in person_info.keys() else '', birthday=person_info['birthday'] if 'birthday' in person_info.keys() else '2000-01-01', phone_number=person_info['phone_number'] if 'phone_number' in person_info.keys() else '', position=person_info['position'] if 'position' in person_info.keys() else '', participation=person_info['participation'] if 'participation' in person_info.keys() else 0) new_person.save() return JsonResponse({'status': 'success'}) except DatabaseError as e: return JsonResponse({ 'status': 'fail', 'err_code': e.args[0], 'err_info': e.args[1], })
def update_activity(request): """ Update an activity in databases :param request: HttpRequest :return: status (success or fail), err_info and err_code doesn't exist 0 """ if request.method == 'POST' and token_check(request): try: target_id = json.loads(request.body.decode('utf-8'))['target_id'] activity_info = json.loads( request.body.decode('utf-8'))['activity'] target_activity = Activity.objects.get(id=target_id) if not target_activity: return JsonResponse({ 'status': 'fail', 'err_code': 404, 'err_info': 'no object has id = ' + target_id }) original_participation = int(target_activity.participation) current_participation = int( activity_info['participation'] if 'participation' in activity_info.keys() else original_participation) original_participators = set( filter(None, target_activity.participator.split(','))) current_participators = set( filter(None, activity_info['participator'].split(',') ) if 'participator' in activity_info.keys() else original_participators) added_participators = current_participators - original_participators removed_participators = original_participators - current_participators if not current_participation == original_participation: for stu_num in original_participators: person = Person.objects.get(student_number=stu_num) person.participation += current_participation - original_participation person.save() for stu_num in added_participators: person = Person.objects.get(student_number=stu_num) person.participation += current_participation person.save() for stu_num in removed_participators: person = Person.objects.get(student_number=stu_num) person.participation -= current_participation person.save() for key in activity_info.keys(): if not key == 'id': exec('target_activity.' + key + '=' + str(repr(activity_info[key]))) target_activity.save() return JsonResponse({'status': 'success'}) except DatabaseError as e: return JsonResponse({ 'status': 'fail', 'err_code': e.args[0], 'err_info': e.args[1], })