def __call__(self, request, **kwargs): self.request = request self.kwargs = kwargs self.parents = [] self.ignored = False self.watcher = False self.message = request.messages.get_message("threads") try: self._type_available() self.fetch_thread() self.check_forum_type() self._check_permissions() response = self.fetch_posts() if response: return response self.make_thread_form() if self.thread_form: response = self.handle_thread_form() if response: return response self.make_posts_form() if self.posts_form: response = self.handle_posts_form() if response: return response except (Forum.DoesNotExist, Thread.DoesNotExist): return error404(request) except ACLError403 as e: return error403(request, unicode(e)) except ACLError404 as e: return error404(request, unicode(e)) # Merge proxy into forum self.forum.closed = self.proxy.closed return render_to_response( "%ss/thread.html" % self.type_prefix, self._template_vars( { "message": self.message, "forum": self.forum, "parents": self.parents, "thread": self.thread, "is_read": self.tracker.is_read(self.thread), "count": self.count, "posts": self.posts, "ignored_posts": self.ignored, "watcher": self.watcher, "pagination": self.pagination, "emojis": emojis(), "quick_reply": QuickReplyForm(request=request), "thread_form": self.thread_form or None, "posts_form": self.posts_form or None, } ), context_instance=RequestContext(request), )
def __call__(self, request, **kwargs): self.request = request self.kwargs = kwargs self.parents = [] self.ignored = False self.watcher = False self.message = request.messages.get_message('threads') try: self._type_available() self.fetch_thread() self.check_forum_type() self._check_permissions() response = self.fetch_posts() if response: return response self.make_thread_form() if self.thread_form: response = self.handle_thread_form() if response: return response self.make_posts_form() if self.posts_form: response = self.handle_posts_form() if response: return response except (Forum.DoesNotExist, Thread.DoesNotExist): return error404(request) except ACLError403 as e: return error403(request, unicode(e)) except ACLError404 as e: return error404(request, unicode(e)) # Merge proxy into forum self.forum.closed = self.proxy.closed return request.theme.render_to_response('%ss/thread.html' % self.type_prefix, self.template_vars({ 'type_prefix': self.type_prefix, 'message': self.message, 'forum': self.forum, 'parents': self.parents, 'thread': self.thread, 'is_read': self.tracker.is_read(self.thread), 'count': self.count, 'posts': self.posts, 'ignored_posts': self.ignored, 'watcher': self.watcher, 'pagination': self.pagination, 'emojis': emojis(), 'quick_reply': FormFields(QuickReplyForm(request=request)).fields, 'thread_form': FormFields(self.thread_form).fields if self.thread_form else None, 'posts_form': FormFields(self.posts_form).fields if self.posts_form else None, }), context_instance=RequestContext(request));
def __call__(self, request, **kwargs): self.request = request self.kwargs = kwargs self.parents = [] self.ignored = False self.watcher = False self.message = request.messages.get_message('threads') try: self._type_available() self.fetch_thread() self.check_forum_type() self._check_permissions() response = self.fetch_posts() if response: return response self.make_thread_form() if self.thread_form: response = self.handle_thread_form() if response: return response self.make_posts_form() if self.posts_form: response = self.handle_posts_form() if response: return response except (Forum.DoesNotExist, Thread.DoesNotExist): return error404(request) except ACLError403 as e: return error403(request, unicode(e)) except ACLError404 as e: return error404(request, unicode(e)) # Merge proxy into forum self.forum.closed = self.proxy.closed return render_to_response('%ss/thread.html' % self.type_prefix, self._template_vars({ 'message': self.message, 'forum': self.forum, 'parents': self.parents, 'thread': self.thread, 'is_read': self.tracker.is_read(self.thread), 'count': self.count, 'posts': self.posts, 'ignored_posts': self.ignored, 'watcher': self.watcher, 'pagination': self.pagination, 'emojis': emojis(), 'quick_reply': QuickReplyForm(request=request), 'thread_form': self.thread_form or None, 'posts_form': self.posts_form or None, }), context_instance=RequestContext(request));
def __call__(self, request, **kwargs): self.request = request self.kwargs = kwargs self.forum = None self.thread = None self.quote = None self.post = None self.parents = [] self.message = request.messages.get_message('threads') post_preview = '' form = None try: self._type_available() self._set_context() self.check_forum_type() self._check_permissions() request.block_flood_requests = self.block_flood_requests if request.method == 'POST': # Create correct form instance if self.allow_quick_reply and 'quick_reply' in request.POST: form = QuickReplyForm(request.POST, request=request) if not form or 'preview' in request.POST or not form.is_valid( ): # Override "quick reply" form with full one try: form = self.form_type(request.POST, request.FILE, request=request, forum=self.forum, thread=self.thread) except AttributeError: form = self.form_type(request.POST, request=request, forum=self.forum, thread=self.thread) # Handle specific submit if 'preview' in request.POST: form.empty_errors() if form['post'].value(): md, post_preview = post_markdown(form['post'].value()) else: md, post_preview = None, None else: if form.is_valid(): self.post_form(form) self.watch_thread() self.after_form(form) self.notify_users() return self.response() else: self.message = Message(form.non_field_errors()[0], 'error') else: form = self.form_type(request=request, forum=self.forum, thread=self.thread, initial=self.form_initial_data()) except (Forum.DoesNotExist, Thread.DoesNotExist, Post.DoesNotExist): return error404(request) except ACLError403 as e: return error403(request, unicode(e)) except ACLError404 as e: return error404(request, unicode(e)) return request.theme.render_to_response( ('%ss/posting.html' % self.type_prefix), self.template_vars({ 'type_prefix': self.type_prefix, 'action': self.action, 'message': self.message, 'forum': self.forum, 'thread': self.thread, 'quote': self.quote, 'post': self.post, 'parents': self.parents, 'preview': post_preview, 'form': FormLayout(form), 'emojis': emojis(), }), context_instance=RequestContext(request))
def __call__(self, request, **kwargs): self.request = request self.kwargs = kwargs self.forum = None self.thread = None self.quote = None self.post = None self.parents = [] self.message = request.messages.get_message('threads') post_preview = '' form = None try: self._type_available() self._set_context() self.check_forum_type() self._check_permissions() request.block_flood_requests = self.block_flood_requests self.make_attachments_token() self.fetch_attachments() if request.method == 'POST': # Create correct form instance if self.allow_quick_reply and 'quick_reply' in request.POST: form = QuickReplyForm(request.POST, request=request) if not form or 'preview' in request.POST or not form.is_valid( ): # Override "quick reply" form with full one try: form = self.form_type(request.POST, request.FILES, request=request, forum=self.forum, thread=self.thread) except AttributeError: form = self.form_type(request.POST, request=request, forum=self.forum, thread=self.thread) # Handle specific submit if list( set(request.POST.keys()) & set(('preview', 'upload', 'remove_attachment', 'restore_attachment'))): form.empty_errors() if form['post'].value(): md, post_preview = post_markdown(form['post'].value()) else: md, post_preview = None, None if 'upload' in request.POST: try: uploaded_file = form['new_file'].value() except KeyError: uploaded_file = None self._upload_file(uploaded_file) if 'remove_attachment' in request.POST: try: self.remove_attachment( int(request.POST.get('remove_attachment'))) except ValueError: self.message = Message( _("Requested attachment could not be found."), messages.ERROR) if 'restore_attachment' in request.POST: try: self.restore_attachment( int(request.POST.get('restore_attachment'))) except ValueError: self.message = Message( _("Requested attachment could not be found."), messages.ERROR) else: if form.is_valid(): self.post_form(form) self.watch_thread() self.after_form(form) self.finalize_attachments() self.notify_users() return self.response() else: self.message = Message(form.non_field_errors()[0], messages.ERROR) else: form = self.form_type(request=request, forum=self.forum, thread=self.thread, initial=self.form_initial_data()) except (Forum.DoesNotExist, Thread.DoesNotExist, Post.DoesNotExist): return error404(request) except ACLError403 as e: return error403(request, unicode(e)) except ACLError404 as e: return error404(request, unicode(e)) return render_to_response('%ss/posting.html' % self.type_prefix, self._template_vars({ 'action': self.action, 'attachments': self.attachments, 'attachments_types': AttachmentType.objects.all_types(), 'attachments_removed': self.attachments_removed, 'attachments_number': self.user_attachments, 'message': self.message, 'forum': self.forum, 'thread': self.thread, 'quote': self.quote, 'post': self.post, 'parents': self.parents, 'preview': post_preview, 'form': form, 'emojis': emojis(), }), context_instance=RequestContext(request))
def __call__(self, request, **kwargs): self.request = request self.kwargs = kwargs self.forum = None self.thread = None self.quote = None self.post = None self.parents = [] self.message = request.messages.get_message('threads') post_preview = '' form = None try: self._type_available() self._set_context() self.check_forum_type() self._check_permissions() request.block_flood_requests = self.block_flood_requests self.make_attachments_token() self.fetch_attachments() if request.method == 'POST': # Create correct form instance if self.allow_quick_reply and 'quick_reply' in request.POST: form = QuickReplyForm(request.POST, request=request) if not form or 'preview' in request.POST or not form.is_valid(): # Override "quick reply" form with full one try: form = self.form_type(request.POST, request.FILES, request=request, forum=self.forum, thread=self.thread) except AttributeError: form = self.form_type(request.POST, request=request, forum=self.forum, thread=self.thread) # Handle specific submit if list(set(request.POST.keys()) & set(('preview', 'upload', 'remove_attachment', 'restore_attachment'))): form.empty_errors() if form['post'].value(): md, post_preview = post_markdown(form['post'].value()) else: md, post_preview = None, None if 'upload' in request.POST: try: uploaded_file = form['new_file'].value() except KeyError: uploaded_file = None self._upload_file(uploaded_file) if 'remove_attachment' in request.POST: try: self.remove_attachment(int(request.POST.get('remove_attachment'))) except ValueError: self.message = Message(_("Requested attachment could not be found."), messages.ERROR) if 'restore_attachment' in request.POST: try: self.restore_attachment(int(request.POST.get('restore_attachment'))) except ValueError: self.message = Message(_("Requested attachment could not be found."), messages.ERROR) else: if form.is_valid(): self.post_form(form) self.watch_thread() self.after_form(form) self.finalize_attachments() self.notify_users() return self.response() else: self.message = Message(form.non_field_errors()[0], messages.ERROR) else: form = self.form_type(request=request, forum=self.forum, thread=self.thread, initial=self.form_initial_data()) except (Forum.DoesNotExist, Thread.DoesNotExist, Post.DoesNotExist): return error404(request) except ACLError403 as e: return error403(request, unicode(e)) except ACLError404 as e: return error404(request, unicode(e)) return render_to_response('%ss/posting.html' % self.type_prefix, self._template_vars({ 'action': self.action, 'attachments': self.attachments, 'attachments_types': AttachmentType.objects.all_types(), 'attachments_removed': self.attachments_removed, 'attachments_number': self.user_attachments, 'message': self.message, 'forum': self.forum, 'thread': self.thread, 'quote': self.quote, 'post': self.post, 'parents': self.parents, 'preview': post_preview, 'form': form, 'emojis': emojis(), }), context_instance=RequestContext(request));
def __call__(self, request, **kwargs): self.request = request self.kwargs = kwargs self.forum = None self.thread = None self.quote = None self.post = None self.parents = [] self.message = request.messages.get_message('threads') post_preview = '' form = None try: self._type_available() self._set_context() self.check_forum_type() self._check_permissions() request.block_flood_requests = self.block_flood_requests if request.method == 'POST': # Create correct form instance if self.allow_quick_reply and 'quick_reply' in request.POST: form = QuickReplyForm(request.POST, request=request) if not form or 'preview' in request.POST or not form.is_valid(): # Override "quick reply" form with full one try: form = self.form_type(request.POST, request.FILE, request=request, forum=self.forum, thread=self.thread) except AttributeError: form = self.form_type(request.POST, request=request, forum=self.forum, thread=self.thread) # Handle specific submit if 'preview' in request.POST: form.empty_errors() if form['post'].value(): md, post_preview = post_markdown(form['post'].value()) else: md, post_preview = None, None else: if form.is_valid(): self.post_form(form) self.watch_thread() self.after_form(form) self.notify_users() return self.response() else: self.message = Message(form.non_field_errors()[0], 'error') else: form = self.form_type(request=request, forum=self.forum, thread=self.thread, initial=self.form_initial_data()) except (Forum.DoesNotExist, Thread.DoesNotExist, Post.DoesNotExist): return error404(request) except ACLError403 as e: return error403(request, unicode(e)) except ACLError404 as e: return error404(request, unicode(e)) return request.theme.render_to_response(('%ss/posting.html' % self.type_prefix), self.template_vars({ 'type_prefix': self.type_prefix, 'action': self.action, 'message': self.message, 'forum': self.forum, 'thread': self.thread, 'quote': self.quote, 'post': self.post, 'parents': self.parents, 'preview': post_preview, 'form': FormLayout(form), 'emojis': emojis(), }), context_instance=RequestContext(request));