예제 #1
0
    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
예제 #2
0
    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'],
                    }))
예제 #3
0
    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
예제 #4
0
    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"],
                },
            ))
예제 #5
0
    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
예제 #6
0
    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"],
                },
            )
        )