def flatpage(request, url): """ Public interface to the flat page view. Models: `flatpages.flatpages` Templates: Uses the template defined by the ``template_name`` field, or `flatpages/default.html` if template_name is not defined. Context: flatpage `flatpages.flatpages` object """ if not url.startswith('/'): url = '/' + url try: f = get_object_or_404(FlatPage, url__exact=url, sites__id__exact=settings.SITE_ID) except Http404: if not url.endswith('/') and settings.APPEND_SLASH: url += '/' f = get_object_or_404(FlatPage, url__exact=url, sites__id__exact=settings.SITE_ID) return HttpResponsePermanentRedirect('%s/' % request.path) else: raise return render_flatpage(request, f)
def delete(request, comment_id, next=None): """ Deletes a comment. Confirmation on GET, action on POST. Requires the "can moderate comments" permission. Templates: `comments/delete.html`, Context: comment the flagged `comments.comment` object """ comment = get_object_or_404(comments.get_model(), pk=comment_id, site__pk=settings.SITE_ID) # Delete on POST if request.method == 'POST': # Flag the comment as deleted instead of actually deleting it. perform_delete(request, comment) return next_redirect(request.POST.copy(), next, delete_done, c=comment.pk) # Render a form on GET else: return render_to_response('comments/delete.html', { 'comment': comment, "next": next }, template.RequestContext(request))
def flag(request, comment_id, next=None): """ Flags a comment. Confirmation on GET, action on POST. Templates: `comments/flag.html`, Context: comment the flagged `comments.comment` object """ comment = get_object_or_404(comments.get_model(), pk=comment_id, site__pk=settings.SITE_ID) # Flag on POST if request.method == 'POST': perform_flag(request, comment) return next_redirect(request.POST.copy(), next, flag_done, c=comment.pk) # Render a form on GET else: return render_to_response('comments/flag.html', { 'comment': comment, "next": next }, template.RequestContext(request))
def approve(request, comment_id, next=None): """ Approve a comment (that is, mark it as public and non-removed). Confirmation on GET, action on POST. Requires the "can moderate comments" permission. Templates: `comments/approve.html`, Context: comment the `comments.comment` object for approval """ comment = get_object_or_404(comments.get_model(), pk=comment_id, site__pk=settings.SITE_ID) # Delete on POST if request.method == 'POST': # Flag the comment as approved. perform_approve(request, comment) return next_redirect(request.POST.copy(), next, approve_done, c=comment.pk) # Render a form on GET else: return render_to_response('comments/approve.html', { 'comment': comment, "next": next }, template.RequestContext(request))
def forum(request, slug, **kwargs): forum = get_object_or_404(Forum, slug=slug) if request.method == 'POST' and is_user_can_add_topic_or_article(request): form = forms.TopicForm(forum, request.user, request.META.get('REMOTE_ADDR'), request.POST) if form.is_valid(): article = form.save() inc_article_cntr(request) return _process_new_article(request, article, True, True) else: form = forms.TopicForm(forum, request.user, request.META.get('REMOTE_ADDR')) kwargs['queryset'] = forum.topic_set.filter( spam_status='clean', is_forum=True).select_related('forum') kwargs['extra_context'] = { 'forum': forum, 'form': form, 'page_id': 'forum', 'groups': _get_left_side_cont(), 'summary': _get_summary_cont(request), 'is_user_can_add_topic_or_article': is_user_can_add_topic_or_article(request) } return object_list(request, **kwargs)
def user_topics(request, id): profile = get_object_or_404(Profile, pk=id) return object_list(request, queryset=profile.topics(), allow_empty=True, paginate_by=settings.CICERO_PAGINATE_BY, template_name='cicero/user_topics.html', extra_context={ 'author_profile': profile, })
def article_delete(request, id): article = get_object_or_404(Article, pk=id) if not request.user.cicero_profile.can_change_article(article): return HttpResponseForbidden('Нет прав для удаления') article.deleted = datetime.now() article.save() caching.invalidate_by_article(article.topic.forum.slug, article.topic.id) if article.topic.article_set.count(): return HttpResponseRedirect( reverse(topic, args=(article.topic.forum.slug, article.topic.id))) else: article.topic.deleted = datetime.now() article.topic.save() return HttpResponseRedirect( reverse(forum, args=(article.topic.forum.slug, )))
def topic_to_article(request, article_id): if not request.user.cicero_profile.moderator: return HttpResponseForbidden('Нет прав отщеплять топики') article = get_object_or_404(Article, pk=article_id) if request.method == 'POST': form = forms.ToArticleForm(article, request.POST) if form.is_valid(): new_topic = form.save() return HttpResponseRedirect( reverse(topic, args=(new_topic.forum.slug, new_topic.id))) else: form = forms.ToArticleForm(article) return render_to_response(request, 'cicero/topic_to_article.html', { 'form': form, 'article': article, })
def article_publish(request, id): if not request.user.cicero_profile.moderator: return HttpResponseForbidden('Нет прав публиковать спам') article = get_object_or_404(Article, pk=id) #antispam.conveyor.submit_ham(article.spam_status, article=article) article.set_spam_status('clean') if not article.from_guest(): pass # scipio_profile = article.author.user.scipio_profile # if scipio_profile.spamer is None: # scipio_profile.spamer = False # scipio_profile.save() caching.invalidate_by_article(article.topic.forum.slug, article.topic.id) return HttpResponseRedirect(reverse(spam_queue))
def topic_edit(request, topic_id): t = get_object_or_404(Topic, pk=topic_id) if not request.user.cicero_profile.can_change_topic(t): return HttpResponseForbidden('Нет прав редактировать топик') if request.method == 'POST': form = forms.TopicEditForm(request.POST, instance=t) if form.is_valid(): form.save() caching.invalidate_by_article(t.forum.slug, t.id) return HttpResponseRedirect( reverse(topic, args=[t.forum.slug, t.id])) else: form = forms.TopicEditForm(instance=t) return render_to_response(request, 'cicero/topic_edit.html', { 'form': form, 'topic': t, })
def __get_repo(request, name, rev): """ this private function gets the repository object from the database and returns the context view of the repository """ repo = get_object_or_404(HgRepository, name=name) try: repo.set_context(HgContext(repo, rev)) repo.absolute_url = ''.join([ 'http', ('', 's')[request.is_secure()], '://', request.META['HTTP_HOST'], repo.get_absolute_url() ]) except RepoError: raise Http404 return repo
def topic(request, slug, id, **kwargs): topic = get_object_or_404(Topic, forum__slug=slug, pk=id) if request.method == 'POST' and is_user_can_add_topic_or_article(request): form = forms.ArticleForm(topic, request.user, request.META.get('REMOTE_ADDR'), request.POST) if form.is_valid(): article = form.save() inc_article_cntr(request) r = _process_new_article(request, article, False, True) return r else: form = forms.ArticleForm(topic, request.user, request.META.get('REMOTE_ADDR')) if request.user.is_authenticated(): profile = request.user.cicero_profile is_can_change_carmas = profile.today_change_carmas < profile.max_change_carmas changed = profile.add_read_articles(topic.article_set.all()) if changed: profile.save() caching.invalidate_by_user(request) else: is_can_change_carmas = False kwargs['queryset'] = topic.article_set.filter( spam_status='clean', is_forum=True).select_related() kwargs['extra_context'] = { 'topic': topic, 'form': form, 'page_id': 'topic', 'show_last_link': True, 'groups': _get_left_side_cont(), 'summary': _get_summary_cont(request), 'is_user_can_add_topic_or_article': is_user_can_add_topic_or_article(request), 'is_can_change_carmas': is_can_change_carmas } return object_list(request, **kwargs)
def article_spam(request, id): if not request.user.cicero_profile.moderator: return HttpResponseForbidden('Нет прав определять спам') article = get_object_or_404(Article, pk=id) if not article.from_guest(): pass # scipio_profile = article.author.user.scipio_profile # if scipio_profile.spamer is None: # scipio_profile.spamer = True # scipio_profile.save() #antispam.conveyor.submit_spam(article=article) slug, topic_id = article.topic.forum.slug, article.topic.id article.delete() caching.invalidate_by_article(slug, topic_id) if Topic.objects.filter(pk=topic_id).count(): return HttpResponseRedirect(reverse(topic, args=(slug, topic_id))) else: return HttpResponseRedirect(reverse(forum, args=(slug, )))
def article_edit(request, id): article = get_object_or_404(Article, pk=id) if not request.user.cicero_profile.can_change_article(article): return HttpResponseForbidden('Нет прав для редактирования') if request.method == 'POST': form = forms.ArticleEditForm(request.POST, instance=article) if form.is_valid(): form.save() caching.invalidate_by_article(article.topic.forum.slug, article.topic.id) url = '%s#%s' % (reverse( topic, args=(article.topic.forum.slug, article.topic.id)), article.id) return HttpResponseRedirect(url) else: form = forms.ArticleEditForm(instance=article) return render_to_response(request, 'cicero/article_edit.html', { 'form': form, 'article': article, })
def user_change_password(self, request, id, form_url=''): if not self.has_change_permission(request): raise PermissionDenied user = get_object_or_404(self.queryset(request), pk=id) if request.method == 'POST': form = self.change_password_form(user, request.POST) if form.is_valid(): form.save() msg = ugettext('Password changed successfully.') messages.success(request, msg) return HttpResponseRedirect('..') else: form = self.change_password_form(user) fieldsets = [(None, {'fields': form.base_fields.keys()})] adminForm = admin.helpers.AdminForm(form, fieldsets, {}) context = { 'title': _('Change password: %s') % escape(user.username), 'adminForm': adminForm, 'form_url': mark_safe(form_url), 'form': form, 'is_popup': '_popup' in request.REQUEST, 'add': True, 'change': False, 'has_delete_permission': False, 'has_change_permission': True, 'has_absolute_url': False, 'opts': self.model._meta, 'original': user, 'save_as': False, 'show_save': True, } return TemplateResponse(request, [ self.change_user_password_template or 'admin/auth/user/change_password.html' ], context, current_app=self.admin_site.name)
def search(request, slug): forum = get_object_or_404(Forum, slug=slug) try: try: from sphinxapi import SphinxClient, SPH_MATCH_EXTENDED, SPH_SORT_RELEVANCE except ImportError: raise SearchUnavailable() term = request.GET.get('term', '').encode('utf-8') if term: sphinx = SphinxClient() sphinx.SetServer(settings.CICERO_SPHINX_SERVER, settings.CICERO_SPHINX_PORT) sphinx.SetMatchMode(SPH_MATCH_EXTENDED) sphinx.SetSortMode(SPH_SORT_RELEVANCE) sphinx.SetFilter('gid', [forum.id]) paginator = Paginator(SphinxObjectList(sphinx, term), settings.CICERO_PAGINATE_BY) try: page = paginator.page(request.GET.get('page', '1')) except InvalidPage: raise Http404 else: paginator = Paginator([], 1) page = paginator.page(1) return render_to_response( request, 'cicero/search.html', { 'page_id': 'search', 'forum': forum, 'term': term, 'paginator': paginator, 'page_obj': page, 'query_dict': request.GET, }) except SearchUnavailable: raise return render_to_response(request, 'cicero/search_unavailable.html', {})
def __get_repo(request, name): """ this private function get the repository object from the database and returns the context view of the repository """ return get_object_or_404(HgRepository, name=name) #HgRepository.objects.get(name=name)