Esempio n. 1
0
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)
Esempio n. 2
0
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)
Esempio n. 3
0
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)
Esempio n. 4
0
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)
Esempio n. 5
0
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)
Esempio n. 6
0
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)
Esempio n. 7
0
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,
    })
Esempio n. 8
0
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,
    })
Esempio n. 9
0
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)
Esempio n. 10
0
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)
Esempio n. 11
0
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)
Esempio n. 12
0
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,
    })
Esempio n. 13
0
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)
Esempio n. 14
0
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,
    })
Esempio n. 15
0
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,
    })
Esempio n. 16
0
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)
Esempio n. 17
0
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)