def handle_rebate_response(request): """ This function is to respond to rebate requests @variables: id: id of the rebate request leaves: Object corresponding to the id of the rebate request @return: data: returns the status of the application """ id = request.POST.get('id_rebate') leaves = Rebate.objects.get(pk=id) # receiver = ExtraInfo. date_format = "%Y-%m-%d" message = '' b = datetime.strptime(str(leaves.start_date), date_format) d = datetime.strptime(str(leaves.end_date), date_format) rebate_count = abs((d - b).days) + 1 receiver = leaves.student_id.id.user action = request.POST["status"] leaves.status = action leaves.save() if action == '2': message = ' accepted between dates ' + str(b) + ' and ' + str(d) else: message = ' rejected between dates ' + str(b) + ' and ' + str(d) central_mess_notif(request.user, receiver, 'leave_request', message) data = {'message': 'You responded to request !'} return data
def handle_vacation_food_request(request, ap_id): """ This function records the response to vacation food requests :param request: user: Current user :param ap_id: :variables: holds_designations: Designation of the current user applications: Object of application with the given id :return: """ applications = Vacation_food.objects.get(pk=ap_id) student = applications.student_id.id.user if request.POST.get('submit') == 'approve': applications.status = '2' central_mess_notif(request.user, student, 'vacation_request_accepted') elif request.POST.get('submit') == 'reject': applications.status = '0' else: applications.status = '1' applications.save() data = {'status': 1} return data
def add_mess_committee(request, roll_number): print("\n\n\\n\n\n\n\n") print(roll_number) mess = Messinfo.objects.get(student_id__id=roll_number) print(mess) if mess.mess_option == 'mess1': designation = Designation.objects.get(name='mess_committee_mess1') else: designation = Designation.objects.get(name='mess_committee_mess2') # designation = Designation.objects.get(name='mess_committee') # add_obj = HoldsDesignation.objects.filter(Q(user__username=roll_number) & Q(designation=designation)) check_obj = HoldsDesignation.objects.filter(Q(user__username=roll_number) & (Q(designation__name__contains='mess_committee') | Q(designation__name__contains='mess_convener'))) if check_obj: data = { 'status': 2, 'message': roll_number + " is already a part of mess committee" } return data else: add_user = User.objects.get(username=roll_number) designation_object = HoldsDesignation(user=add_user, working=add_user, designation=designation) designation_object.save() central_mess_notif(request.user, add_user, 'added_committee', '') data = { 'status': 1, 'message': roll_number + " is added to Mess Committee" } return data
def add_leave_manager(request): flag = 1 start_date = request.POST.get('l_startd') end_date = request.POST.get('l_endd') roll_number = request.POST.get('l_rollno') type = request.POST.get('l_type') purpose = request.POST.get('l_purpose') student = Student.objects.select_related( 'id', 'id__user', 'id__department').get(id__id=roll_number) add_obj = Rebate(student_id=student, start_date=start_date, end_date=end_date, purpose=purpose, status='2', leave_type=type) if (end_date < start_date): data = {'status': 3, 'message': "Please check the dates"} flag = 0 return HttpResponse('Check the dates') date_format = "%Y-%m-%d" b = datetime.strptime(str(start_date), date_format) d = datetime.strptime(str(end_date), date_format) rebates = Rebate.objects.select_related( 'student_id', 'student_id__id', 'student_id__id__user', 'student_id__id__department').filter(student_id=student) rebate_check = rebates.filter(status='2') for r in rebate_check: a = datetime.strptime(str(r.start_date), date_format) c = datetime.strptime(str(r.end_date), date_format) if ((b <= a and (d >= a and d <= c)) or (b >= a and (d >= a and d <= c)) or (b <= a and (d >= c)) or ((b >= a and b <= c) and (d >= c))): flag = 0 data = { 'status': 3, 'message': "Already applied for these dates", } return HttpResponse( 'You are seeing this page : As the leave has been applied for these days already' ) if flag == 1: message = 'Your leave request has been accepted between dates ' + str( b.date()) + ' and ' + str(d.date()) central_mess_notif(request.user, student.id.user, 'leave_request', message) add_obj.save() return HttpResponseRedirect('/mess')
def handle_special_request(request): """ This function is to respond to special request for food submitted by students @variables: special_request: data corresponding to id of the special request being accepted or rejected """ special_request = Special_request.objects.get(pk=request.POST["id"]) receiver = special_request.student_id.id.user action = request.POST["status"] message = '' special_request.status = action special_request.save() if action == '2': message = "accepted" central_mess_notif(request.user, receiver, 'leave_request', message) data = {'message': 'You responded to the request !'} return data
def submit_mess_feedback(request): """ This function is to record the feedback submitted :param request: user: Current logged in user :variable: extra_info: Extra information of the user :return: data: to record success or any errors """ user = request.user extra_info = ExtraInfo.objects.get(user=user) student = Student.objects.get(id=extra_info) if extra_info.user_type == 'student': data = add_mess_feedback(request, student) central_mess_notif(request.user, request.user, 'feedback_submitted') return JsonResponse(data)
def add_mess_meeting_invitation(request): """ This function is to schedule a mess committee meeting @request: date: Date of the meeting venue: Venue of the meeting time: Time of the meeting agenda: Agenda of the meeting @variables: invitation_obj: Object of Mess_meeting with current values of date, venue, agenda, meeting time """ date = request.POST['date'] venue = request.POST['venue'] agenda = request.POST['agenda'] time = request.POST['time'] members_mess = HoldsDesignation.objects.filter( Q(designation__name__contains='mess_convener') | Q(designation__name__contains='mess_committee') | Q(designation__name='mess_manager') | Q(designation__name='mess_warden')) date_today = str(today_g.date()) if date <= date_today: data = { 'status': 2, 'message': "Cannot place invitation for a date that already passed" } return data invitation_obj = Mess_meeting(meet_date=date, agenda=agenda, venue=venue, meeting_time=time) invitation_obj.save() message = "Mess Committee meeting on " + date_today + " at " + time + ".\n Venue: " + venue + ".\n Agenda: " + agenda for invi in members_mess: central_mess_notif(request.user, invi.user, 'meeting_invitation', message) data = { 'status': 1, 'message': "Meeting Details recorded", 'date': date, 'time': time, } return data