-
- def test_quote(request):
- form_class = forms.HouseholdForm
- form = form_class()
- person_forms = forms.PersonInlineFormSet(
- queryset=models.Person.objects.none()
- )
-
- if request.method == 'POST':
- form = form_class(request.POST)
- person_forms = forms.PersonInlineFormSet(
- request.POST,
- queryset=models.Person.objects.none()
- )
- if form.is_valid() and person_forms.is_valid():
- household = form.save(commit=False)
- household.save()
- persons = person_forms.save(commit=False)
- for person in persons:
- person.household = household
- person.save()
-
- def person_plans(person):
- # filters the correct rates for each person
- rates = models.Rate.objects.filter(age=person.age, area=person.household.area())
- # create a dict like this for each person {'Plan name': 212.02}
- plans_rates_dict = {str(rate.plan): float(rate.premium) for rate in rates}
- return(plans_rates_dict)
- # make a list of the dicts
- rate_list = [(person_plans(person)) for person in persons]
- # sum the value (rate) in each dict and return one dict with the summed values
- family_rates = {k: round(sum(d[k] for d in rate_list), 2) for k in rate_list[0]}
- # sort based on premium, low to high
- sorted_family_rates = sorted(family_rates.items(), key = lambda plan:plan[1])
- return render(request, 'quotes/plan_list.html', {
- 'sorted_family_rates': sorted_family_rates,
- })
-
- return render(request, 'quotes/quote_form.html', {
- 'form': form,
- 'formset': person_forms
- })
-