def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['election_obj'] = self.get_election() context['party'] = self.get_party() context['form'] = kwargs.get('form', forms.AddByPartyForm(self.request.POST)) posts = [] qs = self.get_pee_qs(context['election_obj']) for pee in qs: existing = Membership.objects.filter( post_election__election=pee.election, post=pee.postextra.base, on_behalf_of=context['party'], ) extra_forms = pee.winner_count or WINNER_COUNT_IF_NONE factory = django_forms.formset_factory( forms.NameOnlyPersonForm, extra=extra_forms - existing.count(), formset=forms.BulkAddByPartyFormset) if self.request.POST: formset = factory(self.request.POST, prefix=pee.pk) else: formset = factory(prefix=pee.pk) post_info = {'pee': pee, 'existing': existing, 'formset': formset} posts.append(post_info) context['posts'] = posts return context
def post(self, *args, **kwargs): qs = self.get_pee_qs(self.get_election()) form = forms.AddByPartyForm(self.request.POST) has_some_data = any( [v for k, v in self.request.POST.items() if k.endswith('-name')]) if not has_some_data: form.add_error(None, "Please enter at least one name") if not has_some_data or not form.is_valid(): return self.render_to_response(self.get_context_data(form=form)) session_data = {'source': form.cleaned_data['source'], 'post_data': []} for pee in qs: factory = django_forms.formset_factory( forms.NameOnlyPersonForm, extra=pee.winner_count or WINNER_COUNT_IF_NONE, formset=forms.BulkAddByPartyFormset) formset = factory(self.request.POST, prefix=pee.pk) session_data['post_data'].append({ 'pee_pk': pee.pk, 'data': formset.cleaned_data, }) self.request.session['bulk_add_by_party_data'] = session_data self.request.session.save() return HttpResponseRedirect( reverse('bulk_add_by_party_review', kwargs={ 'election': self.kwargs['election'], 'party_id': self.kwargs['party_id'], }))
def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context["election_obj"] = self.get_election() context["party"] = self.get_party() context["form"] = kwargs.get( "form", forms.AddByPartyForm(self.request.POST) ) posts = [] qs = self.get_pee_qs(context["election_obj"]) for pee in qs: existing = Membership.objects.filter( post_election__election=pee.election, post=pee.post, party=context["party"], ) extra_forms = pee.winner_count or WINNER_COUNT_IF_NONE factory = django_forms.formset_factory( forms.NameOnlyPersonForm, extra=extra_forms - existing.count(), formset=forms.BulkAddByPartyFormset, ) if self.request.POST: formset = factory(self.request.POST, prefix=pee.pk) else: formset = factory(prefix=pee.pk) post_info = {"pee": pee, "existing": existing, "formset": formset} posts.append(post_info) context["posts"] = posts return context
def post(self, *args, **kwargs): qs = self.get_pee_qs(self.get_election()) form = forms.AddByPartyForm(self.request.POST) has_some_data = any( [v for k, v in self.request.POST.items() if k.endswith("-name")]) if not has_some_data: form.add_error(None, "Please enter at least one name") if not has_some_data or not form.is_valid(): return self.render_to_response(self.get_context_data(form=form)) session_data = {"source": form.cleaned_data["source"], "post_data": []} for pee in qs: form_kwargs = {"ballot": pee} formset = forms.BulkAddByPartyFormset(self.request.POST, **form_kwargs) session_data["post_data"].append({ "pee_pk": pee.pk, "data": formset.cleaned_data }) self.request.session["bulk_add_by_party_data"] = session_data self.request.session.save() return HttpResponseRedirect( reverse( "bulk_add_by_party_review", kwargs={ "election": self.kwargs["election"], "party_id": self.kwargs["party_id"], }, ))
def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context["election_obj"] = self.get_election() context["party"] = self.get_party() context["form"] = kwargs.get("form", forms.AddByPartyForm(self.request.POST)) posts = [] qs = self.get_pee_qs(context["election_obj"]) for pee in qs: existing = Membership.objects.filter( post_election__election=pee.election, post=pee.post, party=context["party"], ) extra_forms = pee.winner_count or WINNER_COUNT_IF_NONE form_kwargs = {"ballot": pee} if self.request.POST: formset = forms.BulkAddByPartyFormset(self.request.POST, **form_kwargs) else: formset = forms.BulkAddByPartyFormset(**form_kwargs) post_info = {"pee": pee, "existing": existing, "formset": formset} posts.append(post_info) context["posts"] = posts return context
def post(self, *args, **kwargs): qs = self.get_pee_qs(self.get_election()) form = forms.AddByPartyForm(self.request.POST) has_some_data = any( [v for k, v in self.request.POST.items() if k.endswith("-name")] ) if not has_some_data: form.add_error(None, "Please enter at least one name") if not has_some_data or not form.is_valid(): return self.render_to_response(self.get_context_data(form=form)) session_data = {"source": form.cleaned_data["source"], "post_data": []} for pee in qs: factory = django_forms.formset_factory( forms.NameOnlyPersonForm, extra=pee.winner_count or WINNER_COUNT_IF_NONE, formset=forms.BulkAddByPartyFormset, ) formset = factory(self.request.POST, prefix=pee.pk) session_data["post_data"].append( {"pee_pk": pee.pk, "data": formset.cleaned_data} ) self.request.session["bulk_add_by_party_data"] = session_data self.request.session.save() return HttpResponseRedirect( reverse( "bulk_add_by_party_review", kwargs={ "election": self.kwargs["election"], "party_id": self.kwargs["party_id"], }, ) )