spacepaste

  1.  
  2. def test_quote(request):
  3. form_class = forms.HouseholdForm
  4. form = form_class()
  5. person_forms = forms.PersonInlineFormSet(
  6. queryset=models.Person.objects.none()
  7. )
  8. if request.method == 'POST':
  9. form = form_class(request.POST)
  10. person_forms = forms.PersonInlineFormSet(
  11. request.POST,
  12. queryset=models.Person.objects.none()
  13. )
  14. if form.is_valid() and person_forms.is_valid():
  15. household = form.save(commit=False)
  16. household.save()
  17. persons = person_forms.save(commit=False)
  18. for person in persons:
  19. person.household = household
  20. person.save()
  21. def person_plans(person):
  22. # filters the correct rates for each person
  23. rates = models.Rate.objects.filter(age=person.age, area=person.household.area())
  24. # create a dict like this for each person {'Plan name': 212.02}
  25. plans_rates_dict = {str(rate.plan): float(rate.premium) for rate in rates}
  26. return(plans_rates_dict)
  27. # make a list of the dicts
  28. rate_list = [(person_plans(person)) for person in persons]
  29. # sum the value (rate) in each dict and return one dict with the summed values
  30. family_rates = {k: round(sum(d[k] for d in rate_list), 2) for k in rate_list[0]}
  31. # sort based on premium, low to high
  32. sorted_family_rates = sorted(family_rates.items(), key = lambda plan:plan[1])
  33. return render(request, 'quotes/plan_list.html', {
  34. 'sorted_family_rates': sorted_family_rates,
  35. })
  36. return render(request, 'quotes/quote_form.html', {
  37. 'form': form,
  38. 'formset': person_forms
  39. })
  40.