def get_context_data(self, **kwargs): ctx = super(TopicView, self).get_context_data(**kwargs) if self.request.user.is_authenticated(): self.request.user.is_moderator = perms.may_moderate_topic(self.request.user, self.topic) self.request.user.is_subscribed = self.request.user in self.topic.subscribers.all() if perms.may_post_as_admin(self.request.user): ctx["form"] = self.get_admin_post_form_class()( initial={"login": getattr(self.request.user, username_field)}, topic=self.topic ) else: ctx["form"] = self.get_post_form_class()(topic=self.topic) self.mark_read(self.request.user, self.topic) elif defaults.PYBB_ENABLE_ANONYMOUS_POST: ctx["form"] = self.get_post_form_class()(topic=self.topic) else: ctx["form"] = None ctx["next"] = self.get_login_redirect_url() if perms.may_attach_files(self.request.user): aformset = self.get_attachment_formset_class()() ctx["aformset"] = aformset if defaults.PYBB_FREEZE_FIRST_POST: ctx["first_post"] = self.topic.head else: ctx["first_post"] = None ctx["topic"] = self.topic if perms.may_vote_in_topic(self.request.user, self.topic) and pybb_topic_poll_not_voted( self.topic, self.request.user ): ctx["poll_form"] = self.get_poll_form_class()(self.topic) return ctx
def get_context_data(self, **kwargs): ctx = super(TopicView, self).get_context_data(**kwargs) if self.request.user.is_authenticated(): self.request.user.is_moderator = perms.may_moderate_topic(self.request.user, self.topic) self.request.user.is_subscribed = self.request.user in self.topic.subscribers.all() if perms.may_post_as_admin(self.request.user): ctx['form'] = self.get_admin_post_form_class()( initial={'login': getattr(self.request.user, username_field)}, topic=self.topic) else: ctx['form'] = self.get_post_form_class()(topic=self.topic) self.mark_read(self.request.user, self.topic) elif defaults.PYBB_ENABLE_ANONYMOUS_POST: ctx['form'] = self.get_post_form_class()(topic=self.topic) else: ctx['form'] = None ctx['next'] = self.get_login_redirect_url() if perms.may_attach_files(self.request.user): aformset = self.get_attachment_formset_class()() ctx['aformset'] = aformset if defaults.PYBB_FREEZE_FIRST_POST: ctx['first_post'] = self.topic.head else: ctx['first_post'] = None ctx['topic'] = self.topic if perms.may_vote_in_topic(self.request.user, self.topic) and \ pybb_topic_poll_not_voted(self.topic, self.request.user): ctx['poll_form'] = self.get_poll_form_class()(self.topic) return ctx
def get_context_data(self, **kwargs): ctx = super(TopicView, self).get_context_data(**kwargs) if self.request.user.is_authenticated(): self.request.user.is_moderator = perms.may_moderate_topic(self.request.user, self.topic) self.request.user.is_subscribed = self.request.user in self.topic.subscribers.all() if defaults.PYBB_ENABLE_ADMIN_POST_FORM and \ perms.may_post_as_admin(self.request.user): ctx['form'] = self.get_admin_post_form_class()( initial={'login': getattr(self.request.user, username_field)}, topic=self.topic) else: ctx['form'] = self.get_post_form_class()(topic=self.topic) self.mark_read(self.request.user, self.topic) elif defaults.PYBB_ENABLE_ANONYMOUS_POST: ctx['form'] = self.get_post_form_class()(topic=self.topic) else: ctx['form'] = None ctx['next'] = self.get_login_redirect_url() if perms.may_attach_files(self.request.user): aformset = self.get_attachment_formset_class()() ctx['aformset'] = aformset ctx['attachment_max_size'] = defaults.PYBB_ATTACHMENT_SIZE_LIMIT if defaults.PYBB_FREEZE_FIRST_POST: ctx['first_post'] = self.topic.head else: ctx['first_post'] = None ctx['topic'] = self.topic if perms.may_vote_in_topic(self.request.user, self.topic) and \ pybb_topic_poll_not_voted(self.topic, self.request.user): ctx['poll_form'] = self.get_poll_form_class()(self.topic) return ctx
def form_valid(self, form): # already voted if not perms.may_vote_in_topic(self.request.user, self.object) or \ not pybb_topic_poll_not_voted(self.object, self.request.user): return HttpResponseForbidden() answers = form.cleaned_data['answers'] for answer in answers: # poll answer from another topic if answer.topic != self.object: return HttpResponseBadRequest() PollAnswerUser.objects.create(poll_answer=answer, user=self.request.user) return super(ModelFormMixin, self).form_valid(form)