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() 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(request, 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), }), 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));