def edit_user_info(request): token = get_token_from_request(request) user = get_user_from_token(token) code = request.data.get("code") avatar = request.data.get("avatar") phone_number = request.data.get("phone_number") gender = request.data.get("gender") unit = request.data.get("unit") address = request.data.get("address") birthday = dateutil.parser.parse(request.data.get("birthday")) first_name = request.data.get("first_name") last_name = request.data.get("last_name") username = request.data.get("username") try: user.code = code user.avatar = avatar user.phone_number = phone_number user.gender = gender user.unit = unit user.address = address user.birthday = birthday user.first_name = first_name user.last_name = last_name user.username = username user.save() except: data = {"success": False, "message": "Can't edit info"} return Response(data) else: data = {"success": True, "message": "Edited"}
def change_password(request): # try : # user = User.objects.get(pk=id) # except User.DoesNotExist: # data = { # "success" : False, # "errors" : "User is invalid" # } # return Response(data) # else: token = get_token_from_request(request) user = get_user_from_token(token) old_password = request.data.get("old_password") validated = authenticate(username=user.username, password=old_password) if validated: new_password = request.data.get("new_password") if user is not None: user.set_password(str(new_password)) user.save() data = {"success": True, "message": "Done!"} return Response(data) else: data = {"success": False, "message": "User is invalid"} return Response(data) else: data = {"success": False, "message": "Current Password is invalid"} return Response(data)
def get_user_detail_view(request): token = get_token_from_request(request) view_user = get_user_from_token(token) id = request.data.get('profile_id') try: user = User.objects.get(pk=id) except User.DoesNotExist: data = {"success": False, "errors": "User is invalid"} return Response(data) else: if view_user is not None: result = user.parse_data() return Response({"success": True, "profile": result})
def get_class_of_user(request): token = get_token_from_request(request) user = get_user_from_token(token) now = datetime.datetime.now(tz=timezone.utc) if user is not None: if user.is_student(): all_class = ClassStudent.objects.filter( student__id=user.id).exclude(own_class__time_start__gte=now) data = {"success": True, "data": len(all_class)} return Response(data) elif user.is_lecturer(): all_class = ClassLecturer.objects.filter( lecturer__id=user.id).exclude(own_class__time_start__gte=now) data = {"success": True, "data": len(all_class)} return Response(data) else: data = {"success": False, "data": "User is invalid"} return Response(data)
def check_validate(request): # print(json.loads(request.body.decode('utf-8'))) time_start = dateutil.parser.parse(request.data.get('time_start')) time_end = dateutil.parser.parse(request.data.get('time_end')) session_start = request.data.get('session_start') session_end = request.data.get('session_end') day_of_week = request.data.get('day_of_week') subject = Subject.objects.get(pk=request.data.get('subject')) description = request.data.get('description') if time_start > time_end: data = { "success": False, "errors": "Time start cannot greater than time end!" } return Response(data) if session_start > session_end: data = { "success": False, "errors": "Session start cannot greater than session end!" } return Response(data) token = get_token_from_request(request) user = get_user_from_token(token) if user is not None: now = datetime.datetime.now(tz=timezone.utc) # comment 2 line after when read data from post method # time_end = now # time_start = now all_class = [] if user.is_lecturer(): # class_lecturers = ClassLecturer.objects.filter(lecturer__id= id).select_related('own_class').filter(own_class__time_start__lte= now,own_class__time_end__gte=now) class_lecturers = ClassLecturer.objects.filter( lecturer__id=user.id).select_related('own_class').exclude( Q(own_class__time_start__gte=time_end) | Q(own_class__time_end__lte=time_start)) # if len(class_lecturers) == 0: # data = { # "success": False, # "errors": "Class is invalid" # } # return Response(data) # else: all_class = [ item.own_class for item in class_lecturers if item.own_class is not None ] # if len(all_class) == 0: # data = { # "success": False, # "errors": "Class is invalid" # } # return Response(data) schedules = [] info_all_schedule = ClassSession() for item in all_class: rs = Schedule.objects.filter(own_class__id=item.id, day_of_week=day_of_week) for rs_item in rs: info_all_schedule.add(int(rs_item.session_start), int(rs_item.session_end)) if info_all_schedule.add(session_start, session_end) == False: data = {"success": False, "errors": "Session is coincided!"} return Response(data) # print(schedules) new_class = Class.objects.create(description=description, time_start=time_start, time_end=time_end, subject=subject) new_class.save() new_class_lecturer = ClassLecturer.objects.create( own_class=new_class, lecturer=user) new_class_lecturer.save() new_schedule = Schedule.objects.create(own_class=new_class, day_of_week=day_of_week, session_start=session_start, session_end=session_end) new_schedule.save() data = { "success": True, "message": "Class" + new_class.name + "have been created successfully", "class_id": new_class.id } return Response(data) elif user.is_student(): # data = { # "success" : False, # "errors" : "Access denied!" # } # return Response(data) class_students = ClassStudent.objects.filter( student__id=user.id).select_related('own_class').exclude( Q(own_class__time_start__gte=time_end) | Q(own_class__time_end__lte=time_start)) if len(class_students) == 0: data = {"success": False, "errors": "Class is invalid"} return Response(data) else: all_class = [ item.own_class for item in class_students if item.own_class is not None ] if len(all_class) == 0: data = {"success": False, "errors": "Class is invalid"} return Response(data) schedules = [] info_all_schedule = ClassSession() for item in all_class: rs = Schedule.objects.filter(own_class__id=item.id, day_of_week=day_of_week) for rs_item in rs: info_all_schedule.add(int(rs_item.session_start), int(rs_item.session_end)) if info_all_schedule.add(session_start, session_end) == False: data = { "success": False, "code": "coincided", "errors": "Session is coincided!" } return Response(data) # print(schedules) data = {"success": True, "message": "You can enroll this class"} return Response(data)
def get_schedule(request): # id = request.user.id # try : # user = User.objects.get(pk = id) # except User.DoesNotExist : # data = { # "success" : False, # "errors" : "User is invalid" # } # return Response(data) # else : token = get_token_from_request(request) user = get_user_from_token(token) if user is not None: now = datetime.datetime.now(tz=timezone.utc) all_class = [] if user.is_lecturer(): class_lecturers = ClassLecturer.objects.filter( lecturer__id=user.id).select_related('own_class').filter( own_class__time_start__lte=now, own_class__time_end__gte=now) if len(class_lecturers) == 0: data = {"success": False, "errors": "Class is invalid"} return Response(data) else: all_class = [ item.own_class for item in class_lecturers if item.own_class is not None ] if len(all_class) == 0: data = {"success": False, "errors": "Class is invalid"} return Response(data) elif user.is_student(): class_students = ClassStudent.objects.filter( student__id=user.id).select_related('own_class').filter( own_class__time_start__lte=now, own_class__time_end__gte=now) if len(class_students) == 0: data = {"success": False, "errors": "Class is invalid"} return Response(data) else: all_class = [ item.own_class for item in class_students if item.own_class is not None ] if len(all_class) == 0: data = {"success": False, "errors": "Class is invalid"} return Response(data) schedules = [] for item in all_class: rs = Schedule.objects.filter(own_class__id=item.id) schedules.append( {item.code: [schedule.parse_data() for schedule in rs]}) if len(schedules) == 0: data = {"success": False, "errors": "Schedules is invalid"} return Response(data) else: return JsonResponse({"data": schedules}) else: return Response({"invalid": "User is invalid"})
def get_future_class(request): # id = request.user.id # try : # user = User.objects.get(pk = id) # except User.DoesNotExist : # data = { # "success" : False, # "errors" : "User is invalid" # } # return Response(data) # else : token = get_token_from_request(request) user = get_user_from_token(token) if user is not None: now = datetime.datetime.now(tz=timezone.utc) if user.is_lecturer(): class_lecturers = ClassLecturer.objects.filter( lecturer__id=user.id).select_related('own_class').filter( own_class__time_start__gte=now) if len(class_lecturers) == 0: data = {"empty": True, "message": "ClassList is empty"} return Response(data) else: all_class = [ item.own_class for item in class_lecturers if item.own_class is not None ] if len(all_class) == 0: data = {"success": False, "errors": "Class is invalid"} return Response(data) else: data = [] for class_queryset in all_class: data.append(class_queryset.parse_info_and_username()) return Response(data) # serializers = ClassSerializer(all_class, many=True) # return Response(serializers.data) elif user.is_student(): class_students = ClassStudent.objects.filter( student__id=user.id).select_related('own_class').filter( own_class__time_start__gte=now) if len(class_students) == 0: data = {"empty": True, "message": "ClassList is empty"} return Response(data) else: all_class = [ item.own_class for item in class_students if item.own_class is not None ] if len(all_class) == 0: data = {"success": False, "errors": "Class is invalid"} return Response(data) else: data = [] for class_queryset in all_class: data.append(class_queryset.parse_info_and_username()) return Response(data) # serializers = ClassSerializer(all_class, many=True) # return Response(serializers.data) else: return Response({"admin": "User is admin"}) else: return Response({"invalid": "User is invalid"})