def get_context_data(self, **kwargs): ret = super(CatalogPricingGroup, self).get_context_data(**kwargs) try: group = PricingGroup.objects.get( name=self.group_name, date=self.date, ) except PricingGroup.DoesNotExist: group = None else: variables = group.pricingvariable_set.order_by('name') if self.variables_formset is None: self.variables_formset = PricingVariableFormSet( queryset=variables, prefix='variables', ) if self.device_form is None: self.device_form = PricingDeviceForm() if self.devices is None: self.devices = self.get_devices(group, variables) if self.formulas_formset is None: self.formulas_formset = PricingFormulaFormSet( group, queryset=group.pricingformula_set.all(), prefix='formulas', ) ret.update({ 'devices': self.devices, 'variablesformset': self.variables_formset, 'deviceform': self.device_form, 'formulasformset': self.formulas_formset, 'group': group, }) return ret
def handle_formulas_form(self, *args, **kwargs): self.parse_args() group = get_object_or_404( PricingGroup, name=self.group_name, date=self.date, ) self.formulas_formset = PricingFormulaFormSet( group, self.request.POST, queryset=group.pricingformula_set.all(), prefix='formulas', ) if not self.formulas_formset.is_valid(): messages.error(self.request, "Errors in the formulas form.") return self.get(*args, **kwargs) for form in self.formulas_formset.extra_forms: if form.has_changed(): form.instance.group = group self.formulas_formset.save() messages.success(self.request, "Group %s saved." % group.name) return HttpResponseRedirect(self.request.path)