Exemplo n.º 1
0
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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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')
Exemplo n.º 5
0
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
Exemplo n.º 6
0
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)
Exemplo n.º 7
0
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