def record_bill_unequal_split(request): userprofile_object = UserProfile.objects.get(user=request.user) my_friends = UserFriend.objects.filter(user_profile=userprofile_object) number_of_friends = my_friends.count() if request.method == 'POST': bill_form = PartialBillForm(request.POST) if bill_form.is_valid(): overall_bill_id = create_overall_bill_id() lender = userprofile_object bill = Bill(overall_bill_id=overall_bill_id, lender=lender, date=bill_form.cleaned_data['date'], description=bill_form.cleaned_data['description'], amount=bill_form.cleaned_data['amount']) bill.save() # To count total people involved friends_total = 0 for i in range(0, number_of_friends): if request.POST['borrower_'+str(i)] != '': friends_total += 1 new_friends_total = len(request.POST.getlist('people_new')) total_people = friends_total + new_friends_total # For existing friends for i in range(0, number_of_friends): borrower_counter = 'borrower_' + str(i) number_of_people_counter = 'number_of_people_' + str(i) borrower_amount_counter = 'borrower_amount_' + str(i) try: if request.POST[borrower_counter] != '': billdetail_id = create_billdetail_id() if request.POST[borrower_counter] != userprofile_object.user.email: borrower = UserFriend.objects.get(user_profile=userprofile_object, friend_email=request.POST[borrower_counter]) bill_detail = BillDetails(billdetail_id=billdetail_id, bill=bill, borrower=borrower, individual_amount=float(request.POST[borrower_amount_counter]), bill_cleared='N') bill_detail.save() # Send Email Start context = Context({ 'userprofile_object': userprofile_object, 'bill': bill, 'bill_detail': bill_detail }) subject = 'New Bill Recorded: ' + bill.description bill_creation_txt_content = bill_creation_txt.render(context) bill_creation_html_content = bill_creation_html.render(context) send_html_mail(subject, bill_creation_txt_content, bill_creation_html_content, settings.DEFAULT_FROM_EMAIL, [ request.POST[borrower_counter] ]) # Send Email End else: borrower = UserFriend.objects.get(user_profile=userprofile_object, friend_email=userprofile_object.user.email) bill_detail = BillDetails(billdetail_id=billdetail_id, bill=bill, borrower=borrower, individual_amount=float(request.POST[borrower_amount_counter]), bill_cleared='Y') bill_detail.save() else: continue except: continue # For new friends if request.POST.getlist('people_new'): for borrower in request.POST.getlist('people_new'): i = borrower[13:] friend_name = request.POST['x_name_'+str(i)] friend_email = request.POST['x_email_'+str(i)] number_of_people = request.POST['x_number_of_people_'+str(i)] borrower_amount = request.POST['x_borrower_amount_'+str(i)] if friend_name and friend_email and number_of_people and borrower_amount: try: user_friend = UserFriend.objects.get(user_profile=userprofile_object, friend_email=friend_email) except: userfriend_id = create_userfriend_id() user_friend = UserFriend(userfriend_id=userfriend_id, user_profile=userprofile_object, friend_name=friend_name, friend_email=friend_email) user_friend.save() borrower_object = user_friend billdetail_id = create_billdetail_id() bill_detail = BillDetails(billdetail_id=billdetail_id, bill=bill, borrower=borrower_object, individual_amount=borrower_amount, bill_cleared='N') bill_detail.save() # Send Email Start context = Context({ 'userprofile_object': userprofile_object, 'bill': bill, 'bill_detail': bill_detail }) subject = 'New Bill Recorded: ' + bill.description bill_creation_txt_content = bill_creation_txt.render(context) bill_creation_html_content = bill_creation_html.render(context) send_html_mail(subject, bill_creation_txt_content, bill_creation_html_content, settings.DEFAULT_FROM_EMAIL, [ friend_email ]) # Send Email End return HttpResponseRedirect('/who-owes-me/') else: bill_form = PartialBillForm() return render_to_response('record-bill-unequal-split.html', { 'my_friends': my_friends, 'bill_form': bill_form, 'userprofile_object': userprofile_object, 'request': request }, context_instance=RequestContext(request))
def record_bill_equal_split(request): userprofile_object = UserProfile.objects.get(user=request.user) if request.method == 'POST': bill_form = PartialBillForm(request.POST) if bill_form.is_valid(): overall_bill_id = create_overall_bill_id() lender = userprofile_object bill = Bill(overall_bill_id=overall_bill_id, lender=lender, date=bill_form.cleaned_data['date'], description=bill_form.cleaned_data['description'], amount=bill_form.cleaned_data['amount']) bill.save() number_of_borrowers = len(request.POST.getlist('people')) + len(request.POST.getlist('people_new')) individual_amount = float(bill_form.cleaned_data['amount']/number_of_borrowers) # For already existing friends if request.POST.getlist('people'): for borrower in request.POST.getlist('people'): billdetail_id = create_billdetail_id() if borrower != userprofile_object.user.email: borrower_object = UserFriend.objects.get(user_profile=userprofile_object, friend_email=borrower) bill_detail = BillDetails(billdetail_id=billdetail_id, bill=bill, borrower=borrower_object, individual_amount=individual_amount, bill_cleared='N') bill_detail.save() # Send Email Start context = Context({ 'userprofile_object': userprofile_object, 'bill': bill, 'bill_detail': bill_detail }) subject = 'New Bill Recorded: ' + bill.description bill_creation_txt_content = bill_creation_txt.render(context) bill_creation_html_content = bill_creation_html.render(context) send_html_mail(subject, bill_creation_txt_content, bill_creation_html_content, settings.DEFAULT_FROM_EMAIL, [ borrower ]) # Send Email End else: borrower_object = UserFriend.objects.get(user_profile=userprofile_object, friend_email=userprofile_object.user.email) bill_detail = BillDetails(billdetail_id=billdetail_id, bill=bill, borrower=borrower_object, individual_amount=individual_amount, bill_cleared='Y') bill_detail.save() # For new friends if request.POST.getlist('people_new'): for borrower in request.POST.getlist('people_new'): i = borrower[11:] friend_name = request.POST['name_'+str(i)] friend_email = request.POST['email_'+str(i)] try: user_friend = UserFriend.objects.get(user_profile=userprofile_object, friend_email=friend_email) except: userfriend_id = create_userfriend_id() user_friend = UserFriend(userfriend_id=userfriend_id, user_profile=userprofile_object, friend_name=friend_name, friend_email=friend_email) user_friend.save() borrower_object = user_friend billdetail_id = create_billdetail_id() bill_detail = BillDetails(billdetail_id=billdetail_id, bill=bill, borrower=borrower_object, individual_amount=individual_amount, bill_cleared='N') bill_detail.save() # Send Email Start context = Context({ 'userprofile_object': userprofile_object, 'bill': bill, 'bill_detail': bill_detail }) subject = 'New Bill Recorded: ' + bill.description bill_creation_txt_content = bill_creation_txt.render(context) bill_creation_html_content = bill_creation_html.render(context) send_html_mail(subject, bill_creation_txt_content, bill_creation_html_content, settings.DEFAULT_FROM_EMAIL, [ friend_email ]) # Send Email End return HttpResponseRedirect('/who-owes-me/') else: my_friends = UserFriend.objects.filter(user_profile=userprofile_object) bill_form = PartialBillForm() return render_to_response('record-bill-equal-split.html', { 'my_friends': my_friends, 'bill_form': bill_form, 'userprofile_object': userprofile_object, 'request': request }, context_instance=RequestContext(request))