def edit_fees_schedule(request , fee_schedule_id): ''' edit fees schedule ''' errors = {} ins_obj = None try: ins_id = request.session['ins_id'] ins_obj = Institution.objects.get(pk=ins_id) except Exception: return HttpResponse('<html><body><h3>Broken Session</h3></body></html' '>') record_updated = False try: instance = Fees_schedule.objects.get(pk=fee_schedule_id) except Exception: errors['object_does_not_exists'] = 'Object Does Not Exist' return render(request, 'add_edit_fees_schedule.html', locals()) if request.method == 'POST': form = FeeScheduleForm(request.POST, instance=instance) sh_amount = int(request.POST.get('fees_amount')) amount = instance.fee.amount s_date = request.POST.get('start_date') from django.forms.fields import DateField d = DateField() start_date = d.to_python(request.POST.get('start_date')) end_date = d.to_python(request.POST.get('end_date')) fee_obj = instance.fee results = get_date_for_edit(fee_schedule_id, fee_obj, start_date, end_date) amount = get_basic_amount_edit(fee_schedule_id, fee_obj) if results == 'start_date': errors['start_date_greater'] = \ 'Start date should not be greater than previous '\ 'installment\'s end date' return render(request, 'add_edit_fees_schedule.html', locals()) if results == 'end_date': errors['end_date_greater'] = \ 'end date should not be greater than next installment\'s '\ 'start date' return render(request, 'add_edit_fees_schedule.html', locals()) if sh_amount > amount: errors['amount_greater_than_basic_amount'] = \ ('Fees Amount should not be greater than ' + str(amount) + '(basic amount)') return render(request, 'add_edit_fees_schedule.html', locals()) else: if form.is_valid(): form1 = form.save(commit = False) form1.institution = ins_obj form1.save() # [2nd]===if u want to specify which fields to save use: # instance.save(update_fields=['name']) record_updated = True else: form = FeeScheduleForm(request.GET, instance=instance) form = FeeScheduleForm(instance=instance) return render(request , 'add_edit_fees_schedule.html', locals())
def test_insert_master_data(self): department = Department.objects.create(name="agriculture") designation = Designation.objects.create(name="jr_teacher") skill_type = Skill_Type.objects.create(name = "teaching") position_type = Position_Type.objects.create(name = "senior") salutions = Salutations.objects.create(name = "Dr") maritial_status = Maritial_Status.objects.create(name = "married") skill = Skills.objects.create(skill_type = skill_type, name="botany") staff_type = Staff_Type.objects.create(name="Worker") person = Person.objects.create(position_type=position_type, prefix = salutions, first_name = 'harish',farmer_id = '123',gender = 'male',maritial_status= maritial_status, uuid = 'sdf45') d = DateField() joining_date = d.to_python('2014-02-02') staff = Staff.objects.create(staff_type=staff_type, personal_info=person, date_of_joining=joining_date, work_experience=2)
def manage_staff(request, task=None): """ Staff record management funtions """ response = {} success = False msg = '' if task == "add": form = add_staff_form() if request.method == "POST": form = add_staff_form(request.POST) from farmer.models import Position_Type if form.is_valid(): from farmer.models import Maritial_Status maritial_status_obj = Maritial_Status.objects.get(id=int(request.POST.get('maritial_status'))) user_obj = None from farmer.models import Salutations prefix_obj = Salutations.objects.get(id=int(request.POST.get('prefix'))) birth_date = ""; leaving_date = "" d = DateField() joining_date = None;leaving_date = None;birth_date = None if request.POST.get('date_of_joining'): joining_date = d.to_python(request.POST.get('date_of_joining','')) if request.POST.get('date_of_leaving'): leaving_date = d.to_python(request.POST.get('date_of_leaving','')) if request.POST.get('dob'): birth_date = d.to_python(request.POST.get('dob','')) from uuid import uuid4 uuid = uuid4().hex # generates unique ID person_obj = Person.objects.create(first_name=request.POST.get('first_name'),middle_name=request.POST.get('middle_name'),Last_name=request.POST.get('Last_name'),\ prefix=prefix_obj, farmer_id=request.POST.get('farmer_id'),gender=request.POST.get('gender'),\ dob= birth_date, maritial_status=maritial_status_obj, uuid=uuid, added_by=request.user) from django.template.defaultfilters import slugify slug = slugify(str(person_obj.id)+str(person_obj.first_name)) person_obj.slug = slug person_obj.save() staff_type_obj = Staff_Type.objects.get(id=int(request.POST.get('staff_type'))) department_obj = None;designation_obj = None if request.POST.get('department'): department_obj = Department.objects.get(id=int(request.POST.get('department'))) if request.POST.get('designation'): designation_obj = Designation.objects.get(id=int(request.POST.get('designation'))) staff_obj = Staff.objects.create(staff_type = staff_type_obj, personal_info = person_obj, \ department = department_obj, designation=designation_obj, \ date_of_joining = joining_date, date_of_leaving = leaving_date, \ photo = request.POST.get('photo',''),work_experience = request.POST.get('work_experience','') ) if request.POST.getlist('skills'): sk_list = [int(i) for i in request.POST.getlist('skills')] for i in sk_list: sk_obj = Skills.objects.get(id= i) staff_obj.skills.add(sk_obj) staff_obj.save() from farmer.models import Educational_Qualification if request.POST.getlist('qualification'): sk_list = [int(i) for i in request.POST.getlist('qualification')] for i in sk_list: sk_obj = Educational_Qualification.objects.get(id= i) staff_obj.qualification.add(sk_obj) staff_obj.save() request.session['staff_id'] = staff_obj.id form = add_staff_address_form(staff_obj.id) added = True msg = "Staff added successfully" success = True #return HttpResponseRedirect('/hr/Staff-Address/add/') #return render(request, 'hrmanagement/add_edit_staff_address.html', locals()) else: msg = "Error Occurred" response = {'msg':msg, 'success':success} return HttpResponse(json.dumps(response), mimetype = "application/json") elif task =="edit": id_edit = request.GET.get('id_edit') staff_obj = Staff.objects.get(id=int(id_edit)) person_obj = Person.objects.get(id = staff_obj.personal_info.id) form = add_staff_form(initial = {'prefix':person_obj.prefix, 'first_name':person_obj.first_name, \ 'middle_name':person_obj.middle_name, 'Last_name':person_obj.Last_name, \ 'farmer_id':person_obj.farmer_id, \ 'gender':person_obj.gender, 'dob':person_obj.dob, 'maritial_status':person_obj.maritial_status, 'designation':staff_obj.designation, \ 'staff_type':staff_obj.staff_type, 'personal_info':staff_obj.personal_info, 'skills':staff_obj.skills.all(), 'department':staff_obj.department, \ 'qualification':staff_obj.qualification.all(), 'date_of_joining':staff_obj.date_of_joining, 'date_of_leaving':staff_obj.date_of_leaving, \ 'photo':staff_obj.photo, 'work_experience':staff_obj.work_experience}) if request.method == 'POST': form = add_staff_form(request.POST, request.FILES) if form.is_valid(): from farmer.models import Position_Type, Maritial_Status, Educational_Qualification, Salutations maritial_status_obj = Maritial_Status.objects.get(id=int(request.POST.get('maritial_status'))) prefix_obj = Salutations.objects.get(id=int(request.POST.get('prefix'))) d = DateField() person_obj.prefix = prefix_obj;person_obj.first_name = request.POST.get('first_name','') person_obj.middle_name = request.POST.get('middle_name','');person_obj.Last_name = request.POST.get('Last_name','') person_obj.farmer_id = request.POST.get('farmer_id','') person_obj.gender = request.POST.get('gender','') if request.POST.get('dob'): birth_date = d.to_python(request.POST.get('dob','')) person_obj.dob = birth_date person_obj.maritial_status = maritial_status_obj;person_obj.uuid = request.POST.get('uuid','') if request.POST.get('added_by'): user_obj = User.objects.get(id=int(request.POST.get('added_by'))) person_obj.added_by = user_obj person_obj.save() staff_type_obj = Staff_Type.objects.get(id=int(request.POST.get('staff_type'))) department_obj = None;designation_obj = None if request.POST.get('department'): department_obj = Department.objects.get(id=int(request.POST.get('department'))) if request.POST.get('designation'): designation_obj = Designation.objects.get(id=int(request.POST.get('designation'))) staff_obj.staff_type = staff_type_obj;staff_obj.personal_info = person_obj staff_obj.department = department_obj staff_obj.designation = designation_obj if request.POST.get('date_of_joining'): joining_date = d.to_python(request.POST.get('date_of_joining','')) staff_obj.date_of_joining = joining_date if request.POST.get('date_of_leaving'): leaving_date = d.to_python(request.POST.get('date_of_leaving','')) staff_obj.date_of_leaving = leaving_date staff_obj.photo = request.POST.get('photo','') staff_obj.work_experience = request.POST.get('work_experience','') staff_obj.save() if request.POST.getlist('skills'): sk_list = [int(i) for i in request.POST.getlist('skills')] for i in sk_list: sk_obj = Skills.objects.get(id= i) staff_obj.skills.add(sk_obj) staff_obj.save() if request.POST.getlist('qualification'): sk_list = [int(i) for i in request.POST.getlist('qualification')] for i in sk_list: sk_obj = Educational_Qualification.objects.get(id= i) staff_obj.qualification.add(sk_obj) staff_obj.save() edit_done = True msg = "Staff edited successfully" success = True else: msg = "Invalid Form" response = {'msg':msg, 'success':success} return HttpResponse(json.dumps(response), mimetype = "application/json") elif task =="delete": id_del = request.GET.get('id_del') staff = Staff.objects.get(id = id_del) staff.active = 0 staff.save() msg = "Staff deactivated successfully" success = True response = {'msg':msg, 'success':success} return HttpResponse(json.dumps(response), mimetype = "application/json") elif task == "active": active = request.GET.get('active') staff = Staff.objects.get(id = active) staff.active = 2 staff.save() msg = "Staff activated successfully" success = True response = {'msg':msg, 'success':success} return HttpResponse(json.dumps(response), mimetype = "application/json") return render_to_response('hrmanagement/add_edit_staff.html', locals(), context_instance = RequestContext(request))
def add_fees_schedule(request, fee_id): ''' add a arecord for fee schedule ''' form = FeeScheduleForm() ins_obj = None try: ins_id = request.session['ins_id'] ins_obj = Institution.objects.get(pk = ins_id) # put this in try...catch except Exception: return HttpResponse('<html><body><h3>Broken Session</h3></body></html' '>') fee_obj = Fee.objects.get(id=fee_id) record_added = False errors = {} if request.method == 'POST': form = FeeScheduleForm(request.POST) if form.is_valid(): sh_amount = int(request.POST.get('fees_amount')) fee_amount = fee_obj.amount s_date = request.POST.get('start_date') from django.forms.fields import DateField date1 = DateField() start_date = date1.to_python(s_date) fee_obj = Fee.objects.get(id = fee_id) max_date = get_date_for_add(fee_obj) amount = get_basic_amount(fee_obj) if max_date: if max_date >= start_date: errors['start_date_greater'] = \ ('Start date should not be greater than previous ' 'installment\'s end date(' + str(max_date) + ') ') return render(request, 'add_edit_fees_schedule.html', locals()) if sh_amount > amount: errors['amount_greater_than_basic_amount'] = \ ('Fees Amount should not be greater than ' + str(amount) + '(basic_amount - installment_amount)') return render(request, 'add_edit_fees_schedule.html', locals()) else: form1 = form.save(commit = False) form1.fee = fee_obj form1.created_by = request.user form1.institution = ins_obj form1.save() record_added = True return render(request, 'add_edit_fees_schedule.html', locals()) else: errors['invalid_datails'] = 'Please enter valid data' return render(request, 'add_edit_fees_schedule.html', locals()) else: form = FeeScheduleForm() fee_sh_list = Fees_schedule.objects.filter(fee = fee_obj , is_active = True) if fee_obj.payment_type == "recursive": remaining_installments = fee_obj.installments - fee_sh_list.count() if remaining_installments == 1: amount = 0 for i in fee_sh_list: amount = amount + i.fees_amount remaining_amount = fee_obj.amount - amount if remaining_installments == fee_obj.installments: installment_no = 1 return render(request, 'add_edit_fees_schedule.html', locals())