Skip to content

Instantly share code, notes, and snippets.

@mekhami
Created October 22, 2015 16:06
Show Gist options
  • Select an option

  • Save mekhami/234b3a602b19a67c317e to your computer and use it in GitHub Desktop.

Select an option

Save mekhami/234b3a602b19a67c317e to your computer and use it in GitHub Desktop.
class ConfirmView(UpdateView):
template_name = 'rsvp/confirm.html'
success_url = reverse_lazy('rsvp:thanks')
form_class = InviteeForm
model = Invitee
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
obj = self.get_object()
num_current_extras = Extra.objects.filter(invitee=obj).count()
ExtraFormSet = modelformset_factory(Extra, ExtraForm, extra=obj.allowed_extras-num_current_extras)
context['extras_form'] = ExtraFormSet()
return context
def get_object(self, queryset=None):
return Invitee.objects.get(code=self.request.session['code'])
def post(self, request, *args, **kwargs):
self.object = self.get_object()
form = self.get_form()
ExtraFormSet = modelformset_factory(Extra, ExtraForm, extra=self.object.allowed_extras)
extra_formset = ExtraFormSet(self.request.POST)
if form.is_valid() and extra_formset.is_valid():
extras = extra_formset.save(commit=False)
for extra in extras:
extra.invitee = self.object
extra.save()
self.object = form.save()
return HttpResponseRedirect(self.get_success_url())
elif not extra_formset.is_valid():
return self.form_invalid(extra_formset)
else:
return self.form_invalid(form)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment