Exemple #1
0
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
Exemple #2
0
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
Exemple #3
0
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
Exemple #4
0
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
Exemple #5
0
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
Exemple #6
0
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)
Exemple #7
0
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)
Exemple #8
0
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)
Exemple #9
0
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)
Exemple #10
0
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)
Exemple #11
0
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)
Exemple #12
0
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)
Exemple #13
0
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
Exemple #14
0
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