コード例 #1
0
ファイル: views.py プロジェクト: feirlau/pybbm
 def get_context_data(self, **kwargs):
     ctx = super(PostEditMixin, self).get_context_data(**kwargs)
     if perms.may_attach_files(self.request.user) and (not 'aformset' in kwargs):
         ctx['aformset'] = AttachmentFormSet(instance=self.object if getattr(self, 'object') else None)
     if perms.may_create_poll(self.request.user) and ('pollformset' not in kwargs):
         ctx['pollformset'] = PollAnswerFormSet(instance=self.object.topic if getattr(self, 'object') else None)
     return ctx
コード例 #2
0
ファイル: views.py プロジェクト: davoshack/hub_health
 def get_form_kwargs(self):
     ip = self.request.META.get("REMOTE_ADDR", "")
     form_kwargs = super(AddPostView, self).get_form_kwargs()
     form_kwargs.update(dict(topic=self.topic, forum=self.forum, user=self.user, ip=ip, initial={}))
     if getattr(self, "quote", None):
         form_kwargs["initial"]["body"] = self.quote
     if perms.may_post_as_admin(self.user):
         form_kwargs["initial"]["login"] = getattr(self.user, username_field)
     form_kwargs["may_create_poll"] = perms.may_create_poll(self.user)
     return form_kwargs
コード例 #3
0
ファイル: views.py プロジェクト: fizista/pybbm
    def form_valid(self, form):
        success = True
        save_attachments = False
        save_poll_answers = False
        self.object, topic = form.save(commit=False)

        if perms.may_attach_files(self.request.user):
            aformset = self.get_attachment_formset_class()(
                self.request.POST, self.request.FILES, instance=self.object
            )
            if aformset.is_valid():
                save_attachments = True
            else:
                success = False
        else:
            aformset = None

        if perms.may_create_poll(self.request.user):
            pollformset = self.get_poll_answer_formset_class()()
            if getattr(self, 'forum', None) or topic.head == self.object:
                if topic.poll_type != Topic.POLL_TYPE_NONE:
                    pollformset = self.get_poll_answer_formset_class()(
                        self.request.POST, instance=topic
                    )
                    if pollformset.is_valid():
                        save_poll_answers = True
                    else:
                        success = False
                else:
                    topic.poll_question = None
                    topic.poll_answers.all().delete()
        else:
            pollformset = None

        if success:
            try:
                topic.save()
            except ValidationError as e:
                success = False
                errors = form._errors.setdefault('name', ErrorList())
                errors += e.error_list
            else:
                self.object.topic = topic
                self.object.save()
                if save_attachments:
                    aformset.save()
                    if self.object.attachments.count():
                        # re-parse the body to replace attachment's references by URLs
                        self.object.save()
                if save_poll_answers:
                    pollformset.save()
                return HttpResponseRedirect(self.get_success_url())
        return self.render_to_response(self.get_context_data(form=form,
                                                             aformset=aformset,
                                                             pollformset=pollformset))
コード例 #4
0
ファイル: views.py プロジェクト: pbiogy/pybbm
 def get_form_kwargs(self):
     ip = self.request.META.get('REMOTE_ADDR', '')
     form_kwargs = super(AddPostView, self).get_form_kwargs()
     form_kwargs.update(dict(topic=self.topic, forum=self.forum, user=self.user,
                        ip=ip, initial={}))
     if getattr(self, 'quote', None):
         form_kwargs['initial']['body'] = self.quote
     if perms.may_post_as_admin(self.user):
         form_kwargs['initial']['login'] = getattr(self.user, username_field)
     form_kwargs['may_create_poll'] = perms.may_create_poll(self.user)
     return form_kwargs
コード例 #5
0
ファイル: views.py プロジェクト: JTLX/pybbm
    def get_context_data(self, **kwargs):

        ctx = super(PostEditMixin, self).get_context_data(**kwargs)

        if perms.may_attach_files(self.request.user) and "aformset" not in kwargs:
            ctx["aformset"] = self.get_attachment_formset_class()(instance=getattr(self, "object", None))

        if perms.may_create_poll(self.request.user) and "pollformset" not in kwargs:
            ctx["pollformset"] = self.get_poll_answer_formset_class()(
                instance=self.object.topic if getattr(self, "object", None) else None
            )

        return ctx
コード例 #6
0
ファイル: views.py プロジェクト: pybest/pybbm
    def get_context_data(self, **kwargs):

        ctx = super(PostEditMixin, self).get_context_data(**kwargs)

        if perms.may_attach_files(
                self.request.user) and 'aformset' not in kwargs:
            ctx['aformset'] = self.get_attachment_formset_class()(
                instance=getattr(self, 'object', None))

        if perms.may_create_poll(
                self.request.user) and 'pollformset' not in kwargs:
            ctx['pollformset'] = self.get_poll_answer_formset_class()(
                instance=self.object.topic if getattr(self, 'object', None
                                                      ) else None)

        return ctx
コード例 #7
0
 def get_form_kwargs(self):
     ip = self.request.META.get('REMOTE_ADDR', '')
     form_kwargs = super(AddPostView, self).get_form_kwargs()
     form_kwargs.update(
         dict(topic=self.topic,
              forum=self.forum,
              user=self.user,
              ip=ip,
              initial={}))
     if getattr(self, 'quote', None):
         form_kwargs['initial']['body'] = self.quote
     if perms.may_post_as_admin(self.user):
         form_kwargs['initial']['login'] = getattr(self.user,
                                                   username_field)
     form_kwargs['may_create_poll'] = perms.may_create_poll(self.user)
     return form_kwargs
コード例 #8
0
    def form_valid(self, form):
        success = True
        save_attachments = False
        save_poll_answers = False
        self.object = form.save(commit=False)

        if perms.may_attach_files(self.request.user):
            aformset = self.get_attachment_formset_class()(
                self.request.POST, self.request.FILES, instance=self.object)
            if aformset.is_valid():
                save_attachments = True
            else:
                success = False
        else:
            aformset = None

        if perms.may_create_poll(self.request.user):
            pollformset = self.get_poll_answer_formset_class()()
            if getattr(self, 'forum',
                       None) or self.object.topic.head == self.object:
                if self.object.topic.poll_type != Topic.POLL_TYPE_NONE:
                    pollformset = self.get_poll_answer_formset_class()(
                        self.request.POST, instance=self.object.topic)
                    if pollformset.is_valid():
                        save_poll_answers = True
                    else:
                        success = False
                else:
                    self.object.topic.poll_question = None
                    self.object.topic.poll_answers.all().delete()
        else:
            pollformset = None

        if success:
            self.object.topic.save()
            self.object.topic = self.object.topic
            self.object.save()
            if save_attachments:
                aformset.save()
            if save_poll_answers:
                pollformset.save()
            return HttpResponseRedirect(self.get_success_url())
        else:
            return self.render_to_response(
                self.get_context_data(form=form,
                                      aformset=aformset,
                                      pollformset=pollformset))
コード例 #9
0
ファイル: views.py プロジェクト: Maplecroft/pybbm
    def form_valid(self, form):
        success = True
        save_attachments = False
        save_poll_answers = False
        self.object = form.save(commit=False)

        if perms.may_attach_files(self.request.user):
            aformset = AttachmentFormSet(
                self.request.POST, self.request.FILES, instance=self.object)
            if aformset.is_valid():
                save_attachments = True
            else:
                success = False
        else:
            aformset = None

        if perms.may_create_poll(self.request.user):
            pollformset = PollAnswerFormSet()
            if getattr(self, 'forum', None) or \
                    self.object.topic.head == self.object:
                if self.object.topic.poll_type != Topic.POLL_TYPE_NONE:
                    pollformset = PollAnswerFormSet(
                        self.request.POST, instance=self.object.topic)
                    if pollformset.is_valid():
                        save_poll_answers = True
                    else:
                        success = False
                else:
                    self.object.topic.poll_question = None
                    self.object.topic.poll_answers.all().delete()
        else:
            pollformset = None

        if success:
            self.object.topic.save()
            self.object.topic = self.object.topic
            self.object.save()
            if save_attachments:
                aformset.save()
            if save_poll_answers:
                pollformset.save()
            return super(ModelFormMixin, self).form_valid(form)
        else:
            return self.render_to_response(self.get_context_data(
                form=form, aformset=aformset, pollformset=pollformset))
コード例 #10
0
ファイル: views.py プロジェクト: davoshack/hub_health
    def form_valid(self, form):
        success = True
        save_attachments = False
        save_poll_answers = False
        self.object = form.save(commit=False)

        if perms.may_attach_files(self.request.user):
            aformset = self.get_attachment_formset_class()(self.request.POST, self.request.FILES, instance=self.object)
            if aformset.is_valid():
                save_attachments = True
            else:
                success = False
        else:
            aformset = None

        if perms.may_create_poll(self.request.user):
            pollformset = self.get_poll_answer_formset_class()()
            if getattr(self, "forum", None) or self.object.topic.head == self.object:
                if self.object.topic.poll_type != Topic.POLL_TYPE_NONE:
                    pollformset = self.get_poll_answer_formset_class()(self.request.POST, instance=self.object.topic)
                    if pollformset.is_valid():
                        save_poll_answers = True
                    else:
                        success = False
                else:
                    self.object.topic.poll_question = None
                    self.object.topic.poll_answers.all().delete()
        else:
            pollformset = None

        if success:
            self.object.topic.save()
            self.object.topic = self.object.topic
            self.object.save()
            if save_attachments:
                aformset.save()
            if save_poll_answers:
                pollformset.save()
            return HttpResponseRedirect(self.get_success_url())
        else:
            return self.render_to_response(self.get_context_data(form=form, aformset=aformset, pollformset=pollformset))
コード例 #11
0
ファイル: views.py プロジェクト: pbiogy/pybbm
 def get_form_kwargs(self):
     form_kwargs = super(EditPostView, self).get_form_kwargs()
     form_kwargs['may_create_poll'] = perms.may_create_poll(self.request.user)
     return form_kwargs
コード例 #12
0
ファイル: views.py プロジェクト: pybest/pybbm
 def get_form_kwargs(self):
     form_kwargs = super(EditPostView, self).get_form_kwargs()
     form_kwargs['may_create_poll'] = perms.may_create_poll(
         self.request.user)
     return form_kwargs