def delete_application(request): if request.method == 'POST': userprofile = UserProfile.objects.get(user=request.user) application_id = request.POST.get('id') application = Application.objects.get(pk=application_id) if application.employee.dept == userprofile.dept and application.status == 1: application.status = 0 #Think , Think , Think :P if not application.is_new: application.original.original = None application.original.save() # Because now, no Cancel requests going on for that particular application application.save() activity = "Application deleted by " + userprofile.get_user_type_display( ) log_entry = ApplicationLog(application=application, time=datetime.now(), activity=activity) log_entry.save() messages.success(request, 'Application Deleted.') else: messages.error( request, 'Some error occured: Could not delete application.') return redirect(reverse('details', args=(application.pk, ))) else: raise PermissionDenied
def start_processing(request): if (request.method == 'POST'): userprofile = UserProfile.objects.get(user=request.user) user_type = userprofile.user_type application_id = request.POST.get('id') application = Application.objects.get(pk=application_id) to_json = {} notes = request.POST.get('notes', "") if application.status == 1 and isClerk(request.user): application.status = 2 application.save() activity = "Processing started " log_entry = ApplicationLog(application=application, time=datetime.now(), activity=activity, notes=notes) log_entry.save() to_json['result'] = 1 to_json['message'] = 'Application marked as processing' messages.success(request, 'Application marked as processing') else: to_json['result'] = 0 to_json['message'] = 'error' messages.error(request, 'Error: Could not change status. Try again.') return HttpResponse(json.dumps(to_json)) else: raise PermissionDenied
def start_processing(request): if(request.method=='POST'): userprofile=UserProfile.objects.get(user=request.user) user_type=userprofile.user_type application_id=request.POST.get('id') application=Application.objects.get(pk=application_id) to_json={} notes=request.POST.get('notes',"") if application.status==1 and isClerk(request.user): application.status=2 application.save() activity="Processing started " log_entry=ApplicationLog(application=application,time=datetime.now(),activity=activity,notes=notes) log_entry.save() to_json['result']=1 to_json['message']='Application marked as processing' messages.success(request, 'Application marked as processing') else: to_json['result']=0 to_json['message']='error' messages.error(request,'Error: Could not change status. Try again.') return HttpResponse(json.dumps(to_json)) else: raise PermissionDenied
def delete_application(request): if request.method == 'POST': userprofile = UserProfile.objects.get(user=request.get) application_id = request.POST.get('id') application = Application.objects.get(pk=application_id) if application.employee.dept == userprofile.dept and application.status == 1: application.status = 0 if not application.is_new: application.original = None application.original.save() application.save() activity = "Application Deleted by" + userprofile.get_user_type_display( ) log_entry = ApplicationLog(application=application, time=datetime.now, activity=activity) log_entry.save() messages.success(request, "Application Deleted") else: messages.error("Some error occured,Cannot delete application") return redirect(reverse(details, args=(application.pk, ))) else: raise PermissionDenied
def delete_application(request): if request.method=='POST': userprofile=UserProfile.objects.get(user=request.user) application_id=request.POST.get('id') application=Application.objects.get(pk=application_id) if application.employee.dept==userprofile.dept and application.status==1: application.status=0 #Think , Think , Think :P if not application.is_new: application.original.original=None application.original.save() # Because now, no Cancel requests going on for that particular application application.save() activity="Application deleted by "+userprofile.get_user_type_display() log_entry=ApplicationLog(application=application,time=datetime.now(),activity=activity) log_entry.save() messages.success(request, 'Application Deleted.') else: messages.error(request, 'Some error occured: Could not delete application.') return redirect(reverse('details', args=(application.pk,))) else: raise PermissionDenied
def cancel(request, id): userprofile = UserProfile.objects.get(user=request.user) try: application = Application.objects.get(pk=id) except Application.DoesNotExist: raise Http404 if application.employee.dept != userprofile.dept: raise PermissionDenied if not application.is_new: return HttpResponse("Cancel requests can't be cancelled!") if application.is_credit: return HttpResponse("Credit requests can't be cancelled!") if application.status != 3: return HttpResponse( "This application is now " + application.get_status_display() + ", Cancellation request can be initiated only for APPROVED applications " ) if application.original: messages.error( request, "There already exists a cancel request for this application ") return redirect(reverse('details', args=(application.original.pk, ))) new_form = CancelForm() context = { 'user_type': userprofile.user_type, 'form': new_form, 'application': application, } if request.method == 'POST': form = CancelForm(request.POST, request.FILES) if form.is_valid(): reason = form.cleaned_data['reason'] att1 = form.cleaned_data['attachment1'] att2 = form.cleaned_data['attachment2'] att3 = form.cleaned_data['attachment3'] cancel_application = application.CancelRequest( reason, att1, att2, att3) activity = "Application generated by " + userprofile.get_user_type_display( ) log_entry = ApplicationLog(application=cancel_application, time=datetime.now(), activity=activity) log_entry.save() messages.success(request, "Cancellation request created") return redirect(reverse('details', args=(cancel_application.pk, ))) else: context['form'] = form return render(request, 'leave/cancel.html', context)
def new_application(request, type): #Information specific to the user userprofile = UserProfile.objects.get(user=request.user) context = { 'name': request.user.username, 'dept': userprofile.dept.name, 'user_type': userprofile.user_type, 'is_credit': isCredit(type) } if (request.method == 'POST'): if isCredit(type): form = CreditApplicationForm(userprofile.dept, request.POST, request.FILES) else: form = ApplicationForm(userprofile.dept, request.POST, request.FILES) if (form.is_valid()): new_application = form.save() if not isCredit(type): new_application.new_date_from = new_application.date_from new_application.new_date_to = new_application.date_to new_application.save() #These three lines shouldn't be here activity = "Application generated by " + userprofile.get_user_type_display( ) log_entry = ApplicationLog(application=new_application, time=datetime.now(), activity=activity) log_entry.save() messages.success(request, 'Application added successfully') return redirect(reverse('details', args=(new_application.pk, ))) else: context['form'] = form return render(request, 'leave/new_application.html', context) else: if isCredit(type): form = CreditApplicationForm(userprofile.dept) else: form = ApplicationForm(userprofile.dept) context['form'] = form return render(request, 'leave/new_application.html', context)
def cancel(request,id): userprofile=UserProfile.objects.get(user=request.user) try: application=Application.objects.get(pk=id) except Application.DoesNotExist: raise Http404 if application.employee.dept!=userprofile.dept: raise PermissionDenied if not application.is_new: return HttpResponse("Cancel requests can't be cancelled!") if application.is_credit: return HttpResponse("Credit requests can't be cancelled!") if application.status!=3: return HttpResponse("This application is now "+application.get_status_display()+ ", Cancellation request can be initiated only for APPROVED applications ") if application.original: messages.error(request,"There already exists a cancel request for this application ") return redirect(reverse('details',args=(application.original.pk,))) new_form=CancelForm() context={ 'user_type':userprofile.user_type, 'form':new_form, 'application':application, } if request.method=='POST': form=CancelForm(request.POST,request.FILES) if form.is_valid(): reason=form.cleaned_data['reason'] att1=form.cleaned_data['attachment1'] att2=form.cleaned_data['attachment2'] att3=form.cleaned_data['attachment3'] cancel_application=application.CancelRequest(reason,att1,att2,att3) activity="Application generated by "+userprofile.get_user_type_display() log_entry=ApplicationLog(application=cancel_application,time=datetime.now(),activity=activity) log_entry.save() messages.success(request,"Cancellation request created") return redirect(reverse('details',args=(cancel_application.pk,))); else: context['form']=form return render(request,'leave/cancel.html',context)
def new_application(request,type): #Information specific to the user userprofile=UserProfile.objects.get(user=request.user) context= { 'name': request.user.username, 'dept': userprofile.dept.name, 'user_type': userprofile.user_type, 'is_credit':isCredit(type) } if(request.method=='POST'): if isCredit(type): form=CreditApplicationForm(userprofile.dept,request.POST,request.FILES) else: form = ApplicationForm(userprofile.dept,request.POST,request.FILES) if(form.is_valid()): new_application=form.save() if not isCredit(type): new_application.new_date_from=new_application.date_from new_application.new_date_to=new_application.date_to new_application.save() #These three lines shouldn't be here activity="Application generated by "+userprofile.get_user_type_display() log_entry=ApplicationLog(application=new_application,time=datetime.now(),activity=activity) log_entry.save() messages.success(request, 'Application added successfully') return redirect(reverse('details', args=(new_application.pk,))) else: context['form']=form return render(request,'leave/new_application.html',context) else: if isCredit(type): form=CreditApplicationForm(userprofile.dept) else: form=ApplicationForm(userprofile.dept) context['form']=form return render(request,'leave/new_application.html',context)
def new_application(request, type): #information particular to each user userprofile = UserProfile.objects.get(user=request.user) context = { 'name': request.user.username, 'dept': userprofile.dept.name, 'user_type': userprofile.user_type, 'is_credit': isCredit(type) } if request.method == 'POST': if isCredit(type): form = CreditApplicationForm(userprofile.dept, request.POST, request.FILES) else: form = ApplicationForm(userprofile.dept, request.POST, request.FILES) if form.is_valid(): new_application = form.save() if not isCredit(type): new_application.new_date_from = new_application.date_from new_application.new_date_to = new_application.date_to new_application.save() activity = "Application generated by" + userprofile.get_user_type_display( ) log_entry = ApplicationLog(Application=Application, time=datetime.now, activity=activity) log_entry.save() messages.success(request, 'Application') return redirect(reverse(details, args=(new_application.pk, ))) else: context['form'] = form else: if isCredit(type): form = CreditApplicationForm(userprofile.dept) else: form = ApplicationForm(userprofile.dept) context['form'] = form return render(request, 'leave/new_application.html', context)
def details(request, id): userprofile = UserProfile.objects.get(user=request.user) try: application = Application.objects.get(pk=id) except Application.DoesNotExist: raise Http404 if isDept(request.user) and application.employee.dept != userprofile.dept: raise PermissionDenied if isClerk(request.user) and not application.time_received: application.time_received = datetime.now() application.save() activity = "Application Received at Est.Office" log_entry = ApplicationLog(application=application, time=datetime.now(), activity=activity) log_entry.save() application_log = ApplicationLog.objects.filter( application=application).order_by("time") approved_days_count = None if application.is_credit: days_count = application.days approved_days_count = application.days else: days_count = (application.date_to - application.date_from).days + 1 approved_days_count = (application.new_date_to - application.new_date_from).days + 1 context = { 'name': request.user.username, 'application': application, 'days_count': days_count, 'user_type': userprofile.user_type, 'approved_days_count': approved_days_count, 'user_display_name': userprofile.get_user_type_display, #'dept': userprofile.dept.name, 'application_log': application_log } return render(request, 'leave/application.html', context)
def details(request,id): userprofile=UserProfile.objects.get(user=request.user) try: application=Application.objects.get(pk=id) except Application.DoesNotExist: raise Http404 if isDept(request.user) and application.employee.dept!=userprofile.dept: raise PermissionDenied if isClerk(request.user) and not application.time_received: application.time_received=datetime.now() application.save() activity="Application Received at Est.Office" log_entry=ApplicationLog(application=application,time=datetime.now(),activity=activity) log_entry.save() application_log=ApplicationLog.objects.filter(application=application).order_by("time") approved_days_count=None if application.is_credit: days_count=application.days approved_days_count=application.days else: days_count=(application.date_to-application.date_from).days+1 approved_days_count=(application.new_date_to-application.new_date_from).days+1 context= { 'name':request.user.username, 'application':application, 'days_count':days_count, 'user_type':userprofile.user_type, 'approved_days_count':approved_days_count, 'user_display_name':userprofile.get_user_type_display, #'dept': userprofile.dept.name, 'application_log':application_log } return render(request,'leave/application.html',context)
def complete(request): if (request.method == 'POST'): userprofile = UserProfile.objects.get(user=request.user) application_id = request.POST.get('id') status = request.POST.get('status') status = int(status) date_from = request.POST.get('date_from', "") date_to = request.POST.get('date_to', "") notes = request.POST.get('notes', "") application = Application.objects.get(pk=application_id) employee = application.employee to_json = {} valid = True if not application.is_credit: if not application.is_new: date_to = application.new_date_to date_from = application.new_date_from else: try: date_to = datetime.strptime(date_to, "%m/%d/%Y").date() date_from = datetime.strptime(date_from, "%m/%d/%Y").date() except ValueError: valid = False to_json['message'] = 'Invalid dates entered.' else: if date_from > date_to or date_to > application.new_date_to or date_from < application.new_date_from: valid = False to_json[ 'message'] = 'Selected dates out of range. Please select valid dates.' if not valid: to_json['result'] = 0 messages.error(request, to_json['message']) return HttpResponse(json.dumps(to_json)) days = (date_to - date_from).days + 1 else: days = application.days if application.status == 2 and 3 <= status <= 4: if application.is_credit or ( not application.is_new ) or status == 4 or employee.isLeaveLeft(days, application.leave_type): application.status = status application.time_approved = datetime.now() if status == 3 and not application.is_credit: if (application.new_date_from != date_from or application.new_date_to != date_to): if notes and notes != "": notes += '\n' notes += userprofile.get_user_type_display( ) + " updated date : " + str( date_from) + " to " + str(date_to) application.new_date_from = date_from application.new_date_to = date_to else: if not application.is_new: application.original.original = None application.original.save() #IMPORTANT Set original to Null in case of rejecting Cancel Application application.save() if application.status == 3: if application.is_credit: if application.is_new: action_type = 1 else: action_type = -1 else: if application.is_new: action_type = -1 else: action_type = 1 employee.approveTransaction(days, application.leave_type, action_type) TransactionLog().ApplicationTransaction( employee, application) #Danger! activity = "Application " + application.get_status_display() log_entry = ApplicationLog(application=application, time=datetime.now(), activity=activity, notes=notes) log_entry.save() messages.success( request, 'Application ' + application.get_status_display() + ' successfully') to_json['result'] = 1 to_json[ 'message'] = 'Application ' + application.get_status_display( ) + ' successfully' else: to_json['result'] = 0 to_json['message'] = "Insufficient number of leaves left!" messages.error(request, 'Insufficient number of leaves left!') else: to_json['result'] = 0 to_json['message'] = 'Some error occured. Please try again' return HttpResponse(json.dumps(to_json)) else: raise PermissionDenied
def complete(request): if(request.method=='POST'): userprofile=UserProfile.objects.get(user=request.user) application_id=request.POST.get('id') status=request.POST.get('status') status=int(status) date_from=request.POST.get('date_from',"") date_to=request.POST.get('date_to',"") notes=request.POST.get('notes',"") application=Application.objects.get(pk=application_id) employee=application.employee to_json = {} valid=True if not application.is_credit: if not application.is_new: date_to=application.new_date_to date_from=application.new_date_from else: try: date_to=datetime.strptime(date_to, "%m/%d/%Y").date() date_from=datetime.strptime(date_from, "%m/%d/%Y").date() except ValueError: valid=False to_json['message']='Invalid dates entered.' else: if date_from>date_to or date_to>application.new_date_to or date_from<application.new_date_from: valid=False to_json['message']='Selected dates out of range. Please select valid dates.' if not valid: to_json['result']=0 messages.error(request, to_json['message']) return HttpResponse(json.dumps(to_json)) days=(date_to-date_from).days+1 else: days=application.days if application.status== 2 and 3 <= status <= 4: if application.is_credit or (not application.is_new) or status==4 or employee.isLeaveLeft(days,application.leave_type): application.status=status application.time_approved=datetime.now() if status==3 and not application.is_credit: if (application.new_date_from!=date_from or application.new_date_to!=date_to): if notes and notes!="": notes+='\n' notes+=userprofile.get_user_type_display()+" updated date : "+str(date_from)+" to "+str(date_to) application.new_date_from=date_from application.new_date_to=date_to else: if not application.is_new: application.original.original=None application.original.save() #IMPORTANT Set original to Null in case of rejecting Cancel Application application.save() if application.status==3: if application.is_credit: if application.is_new: action_type=1 else : action_type=-1 else: if application.is_new: action_type=-1 else : action_type=1 employee.approveTransaction(days,application.leave_type,action_type) TransactionLog().ApplicationTransaction(employee,application) #Danger! activity="Application "+application.get_status_display() log_entry=ApplicationLog(application=application,time=datetime.now(),activity=activity,notes=notes) log_entry.save() messages.success(request, 'Application '+application.get_status_display()+' successfully') to_json['result']=1 to_json['message']='Application '+application.get_status_display()+' successfully' else: to_json['result']=0 to_json['message']="Insufficient number of leaves left!" messages.error(request, 'Insufficient number of leaves left!') else: to_json['result']=0 to_json['message']='Some error occured. Please try again' return HttpResponse(json.dumps(to_json)) else: raise PermissionDenied