def _publish_article(slug, article): article.set_spam_status('clean') from my_django.db import transaction if transaction.is_managed(): transaction.commit() article.ping_external_links() caching.invalidate_by_article(slug, article.topic_id)
def _publish_article(slug, article): article.set_spam_status('clean') from django.db import transaction if transaction.is_managed(): transaction.commit() article.ping_external_urls() caching.invalidate_by_article(slug, article.topic_id)
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(): 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 redirect(spam_queue)
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 redirect(topic, article.topic.forum.slug, article.topic.id) else: article.topic.deleted = datetime.now() article.topic.save() return redirect(forum, article.topic.forum.slug)
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('Нет прав редактировать топик') form_class = forms.TopicEditModeratorForm if request.user.cicero_profile.moderator else forms.TopicEditForm form = form_class(request.POST or None, instance=t) if form.is_valid(): form.save() caching.invalidate_by_article(t.forum.slug, t.id) return redirect(topic, t.forum.slug, t.id) return response(request, 'cicero/topic_edit.html', { 'form': form, 'topic': t, })
def article_undelete(request, id): try: article = Article.deleted_objects.get(pk=id) except Article.DoesNotExist: raise Http404 if not request.user.cicero_profile.can_change_article(article): return HttpResponseForbidden('Нет прав для восстановления') Article.deleted_objects.filter(pk=id).update(deleted=None) try: article_topic = Topic.deleted_objects.get(pk=article.topic_id) Topic.deleted_objects.filter(pk=article.topic_id).update(deleted=None) except Topic.DoesNotExist: article_topic = article.topic caching.invalidate_by_article(article_topic.forum.slug, article_topic.id) return redirect(topic, article_topic.forum.slug, article_topic.id)
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(): 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 redirect(topic, slug, topic_id) else: return redirect(forum, 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 redirect(url) else: form = forms.ArticleEditForm(instance=article) return response(request, 'cicero/article_edit.html', { 'form': form, 'article': article, })
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 article_edit(request, id): article = get_object_or_404(Article.objects.select_related(depth=2), 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 redirect(url) else: form = forms.ArticleEditForm(instance=article) return response(request, 'cicero/article_edit.html', { 'form': form, 'article': article, 'topic': article.topic, 'forum': article.topic.forum, })
def article_vote(request, id): article = get_object_or_404(Article, pk=id) value = request.POST.get('vote', '') vote, created = article.vote_set.get_or_create( profile = request.user.cicero_profile, defaults = {'value': value}, ) if not created: vote.value = value vote.save() caching.invalidate_by_article(article.topic.forum.slug, article.topic.id) if request.is_ajax(): article = Article.objects.get(pk=article.id) request.user.cicero_profile.set_votes([article]) return response(request, 'cicero/article_votes.html', { 'article': article, }) else: url = '%s#%s' % (reverse(topic, args=(article.topic.forum.slug, article.topic.id)), article.id) return redirect(url)