Beispiel #1
0
    def get_form(self, form):
        form = super(BaseBmoCommandMixin, self).get_form(form)

        if self.request.method == 'POST':
            self.listener_formset = ListenerFormSet(self.request.POST)
        else:
            qs = self.object.listener_set.all() if self.object else Listener.objects.none()
            self.listener_formset = ListenerFormSet(queryset=qs)
            self.listener_formset.data.update(self.request.GET)

        if self.object:
            for f in self.listener_formset.forms:
                qs = f.fields['trigger_command'].queryset
                f.fields['trigger_command'].queryset = qs.exclude(id=self.object.id)

        return form
Beispiel #2
0
class BaseBmoCommandMixin(object):
    form_class = BmoCommandForm
    model = BmoCommand
    success_url = reverse_lazy('bmo_command_list')

    def get_form(self, form):
        form = super(BaseBmoCommandMixin, self).get_form(form)

        if self.request.method == 'POST':
            self.listener_formset = ListenerFormSet(self.request.POST)
        else:
            qs = self.object.listener_set.all() if self.object else Listener.objects.none()
            self.listener_formset = ListenerFormSet(queryset=qs)
            self.listener_formset.data.update(self.request.GET)

        if self.object:
            for f in self.listener_formset.forms:
                qs = f.fields['trigger_command'].queryset
                f.fields['trigger_command'].queryset = qs.exclude(id=self.object.id)

        return form

    def get_context_data(self, **kwargs):
        context_data = super(BaseBmoCommandMixin, self).get_context_data(**kwargs)
        context_data['listener_formset'] = self.listener_formset

        return context_data

    def form_valid(self, form):
        if self.listener_formset.is_valid():
            self.object = form.save()

            for f in self.listener_formset.forms:
                listener = f.save(commit=False)
                listener.command = self.object
                try:
                    listener.save()
                except ValidationError:
                    pass

        return super(BaseBmoCommandMixin, self).form_valid(form)