Пример #1
0
def draft(request, pk, language):
    translation.activate(language or 'ru')
    obj = get_object_or_404(models.Article, pk=pk)
    return render(request, 'marcus/article.html', {
        'article': models.Translation(obj, language),
        'categories': (models.Translation(c, language) for c in obj.categories.all()),
        'language': language,
    })
Пример #2
0
def draft(request, pk, language):
    translation.activate(language or 'ru')
    obj = get_object_or_404(models.Article, pk=pk)
    return render(request, 'marcus/article.html', {
        'article': models.Translation(obj, language),
        'categories': (models.Translation(c, language) for c in obj.categories.all()),
        'language': language,
    })
Пример #3
0
def spam_comment(request, id):
    comment = get_object_or_404(models.Comment, pk=id)
    if not comment.by_guest():
        scipio_profile = comment.author.scipio_profile
        if scipio_profile.spamer is None:
            scipio_profile.spamer = True
            scipio_profile.save()
    antispam.conveyor.submit_spam(comment=comment)
    comment.delete()
    return redirect(comment.article)
Пример #4
0
def spam_comment(request, id):
    comment = get_object_or_404(models.Comment, pk=id)
    if not comment.by_guest():
        scipio_profile = comment.author.scipio_profile
        if scipio_profile.spamer is None:
            scipio_profile.spamer = True
            scipio_profile.save()
    antispam.conveyor.submit_spam(comment=comment)
    comment.delete()
    return redirect(comment.article)
Пример #5
0
def article(request, year, month, day, slug, language):
    obj = get_object_or_404(
        models.Article, published__year=year, published__month=month, published__day=day, slug=slug
    )
    guest_name = request.session.get('guest_name', '')
    guest_email = request.session.get('guest_email', '')
    translation.activate(language or obj.only_language() or 'ru')
    if request.method == 'POST':
        form = forms.CommentForm(request.user, get_ip(request), obj, language, request.POST)
        if form.is_valid():
            request.session['guest_name'] = form.cleaned_data.get('name', '')
            request.session['guest_email'] = form.cleaned_data.get('xemail', '')
            form.cleaned_data['text'] = form.cleaned_data['text'].replace('script', u'sсript')
            comment = form.save()
            return _process_new_comment(request, comment, language, True)
    else:
        form = forms.CommentForm(article=obj, language=language)

    comments = models.Comment.common.language(language)\
        .select_related('author', 'author__scipio_profile', 'article')\
        .filter(article=obj, type="comment")\
        .filter(Q(guest_name=guest_name) | ~Q(approved=None))\
        .order_by('created', 'approved')

    unapproved = False
    try:
        unapproved_pk = request.session.get('unapproved')
        if unapproved_pk:
            unapproved = models.Comment.objects.get(pk=unapproved_pk, approved=None)
    except models.Comment.DoesNotExist:
        if 'unapproved' in request.session:
            del request.session['unapproved']

    retweet_url = u'http://twitter.com/home/?status={title}%20{url}%20{suffix}'.format(
        title=obj.title(),
        url=utils.absolute_url(utils.iurl(reverse('marcus-article-short', args=[obj.published.year, obj.slug, ]), language)),
        suffix=settings.MARCUS_RETWEET_SUFFIX.replace('@', '%40')
    )

    keywords = [tag.title(language) for tag in obj.tags.all()] +\
        [category.title(language) for category in obj.categories.all()]

    return render(request, 'marcus/article.html', {
        'article': models.Translation(obj, language),
        'comments': comments,
        # 'noteworthy_count': comments.filter(noteworthy=True).count(),
        'form': not obj.comments_hidden and form,
        'unapproved': unapproved,
        'language': language,
        'guest_name': guest_name,
        'guest_email': guest_email,
        'retweet_url': retweet_url,
        'meta_keywords': ", ".join(keywords),
        'meta_description': (obj.intro(language) or "").replace('"', "'"),
    })
Пример #6
0
def article(request, year, month, day, slug, language):
    obj = get_object_or_404(
        models.Article, published__year=year, published__month=month, published__day=day, slug=slug
    )
    guest_name = request.session.get('guest_name', '')
    guest_email = request.session.get('guest_email', '')
    translation.activate(language or obj.only_language() or 'ru')
    if request.method == 'POST':
        form = forms.CommentForm(request.user, get_ip(request), obj, language, request.POST)
        if form.is_valid():
            request.session['guest_name'] = form.cleaned_data.get('name', '')
            request.session['guest_email'] = form.cleaned_data.get('xemail', '')
            form.cleaned_data['text'] = form.cleaned_data['text'].replace('script', u'sсript')
            comment = form.save()
            return _process_new_comment(request, comment, language, True)
    else:
        form = forms.CommentForm(article=obj, language=language)

    comments = models.Comment.common.language(language)\
        .select_related('author', 'author__scipio_profile', 'article')\
        .filter(article=obj, type="comment")\
        .filter(Q(guest_name=guest_name) | ~Q(approved=None))\
        .order_by('created', 'approved')

    unapproved = False
    try:
        unapproved_pk = request.session.get('unapproved')
        if unapproved_pk:
            unapproved = models.Comment.objects.get(pk=unapproved_pk, approved=None)
    except models.Comment.DoesNotExist:
        if 'unapproved' in request.session:
            del request.session['unapproved']

    retweet_url = u'http://twitter.com/home/?status={title}%20{url}%20{suffix}'.format(
        title=obj.title(),
        url=utils.absolute_url(utils.iurl(reverse('marcus-article-short', args=[obj.published.year, obj.slug, ]), language)),
        suffix=settings.MARCUS_RETWEET_SUFFIX.replace('@', '%40')
    )

    keywords = [tag.title(language) for tag in obj.tags.all()] +\
        [category.title(language) for category in obj.categories.all()]

    return render(request, 'marcus/article.html', {
        'article': models.Translation(obj, language),
        'comments': comments,
        # 'noteworthy_count': comments.filter(noteworthy=True).count(),
        'form': not obj.comments_hidden and form,
        'unapproved': unapproved,
        'language': language,
        'guest_name': guest_name,
        'guest_email': guest_email,
        'retweet_url': retweet_url,
        'meta_keywords': ", ".join(keywords),
        'meta_description': (obj.intro(language) or "").replace('"', "'"),
    })
Пример #7
0
def approve_comment(request, id):
    comment = get_object_or_404(models.Comment, pk=id)
    antispam.conveyor.submit_ham(comment.spam_status, comment=comment)
    comment.approved = timezone.now()
    comment.save()
    if not comment.by_guest():
        scipio_profile = comment.author.scipio_profile
        if scipio_profile.spamer is None:
            scipio_profile.spamer = False
            scipio_profile.save()
    return redirect(spam_queue)
Пример #8
0
def approve_comment(request, id):
    comment = get_object_or_404(models.Comment, pk=id)
    antispam.conveyor.submit_ham(comment.spam_status, comment=comment)
    comment.approved = timezone.now()
    comment.save()
    if not comment.by_guest():
        scipio_profile = comment.author.scipio_profile
        if scipio_profile.spamer is None:
            scipio_profile.spamer = False
            scipio_profile.save()
    return redirect(spam_queue)
Пример #9
0
def category(request, slug, language):
    translation.activate(language or 'ru')
    category = get_object_or_404(models.Category, slug=slug)
    return object_list(
        request,
        models.Article.public.language(language).filter(categories=category),
        'marcus/category.html',
        {
            'category': models.Translation(category, language),
            'language': language,
        },
    )
Пример #10
0
def tag(request, slug, language):
    translation.activate(language or 'ru')
    tag = get_object_or_404(models.Tag, slug=slug)
    return object_list(
        request,
        models.Article.public.language(language).filter(tags=tag),
        'marcus/tag.html',
        {
            'tag': models.Translation(tag, language),
            'language': language,
        },
    )
Пример #11
0
def category(request, slug, language):
    translation.activate(language or 'ru')
    category = get_object_or_404(models.Category, slug=slug)
    return object_list(
        request,
        models.Article.public.language(language).filter(categories=category),
        'marcus/category.html',
        {
            'category': models.Translation(category, language),
            'language': language,
        },
    )
Пример #12
0
def tag(request, slug, language):
    translation.activate(language or 'ru')
    tag = get_object_or_404(models.Tag, slug=slug)
    return object_list(
        request,
        models.Article.public.language(language).filter(tags=tag),
        'marcus/tag.html',
        {
            'tag': models.Translation(tag, language),
            'language': language,
        },
    )
Пример #13
0
def article_upload_image_preview(request, object_id):
    max_width = 300
    image_path = get_object_or_404(models.ArticleUpload, pk=object_id).upload.path

    import StringIO
    try:
        from PIL import Image
    except ImportError:
        import Image
    try:
        image = Image.open(image_path.encode('utf-8'))
    except Exception:
        return http.HttpResponse("Not a image", content_type="text/html")

    buffer = StringIO.StringIO()
    max_width = max_width if max_width < image.size[0] else image.size[0]
    height = int((float(image.size[1]) * float(max_width / float(image.size[0]))))
    image.resize((max_width, height), Image.ANTIALIAS).save(buffer, "PNG")
    return http.HttpResponse(buffer.getvalue(), content_type="image/png")
Пример #14
0
def article_upload_image_preview(request, object_id):
    max_width = 300
    image_path = get_object_or_404(models.ArticleUpload, pk=object_id).upload.path

    import StringIO
    try:
        from PIL import Image
    except ImportError:
        import Image
    try:
        image = Image.open(image_path.encode('utf-8'))
    except:
        return http.HttpResponse("Not a image", mimetype="text/html")

    buffer = StringIO.StringIO()
    max_width = max_width if max_width < image.size[0] else image.size[0]
    height = int((float(image.size[1]) * float(max_width / float(image.size[0]))))
    image.resize((max_width, height), Image.ANTIALIAS).save(buffer, "PNG")
    return http.HttpResponse(buffer.getvalue(), mimetype="image/png")
Пример #15
0
def article_comments_unsubscribe(request, article_id, token, language):
    language = language or translation.get_language()
    translation.activate(language)

    article = get_object_or_404(models.Article, pk=article_id)
    comments = article.comments.filter(followup=True)
    for comment in comments:
        if comment.make_token() == token:
            found_comment = comment
            comments\
                .filter(guest_email=comment.guest_email)\
                .update(followup=False)
            break
    else:
        return http.HttpResponseForbidden(
            'Token is failed or expired!', content_type='text/plain')

    return render(request, 'marcus/unsubscribe.html', {
        'article_link': mark_safe(article.link(language)),
        'guest_name': found_comment.guest_name or found_comment.guest_email,
    })
Пример #16
0
def article_comments_unsubscribe(request, article_id, token, language):
    language = language or translation.get_language()
    translation.activate(language)

    article = get_object_or_404(models.Article, pk=article_id)
    comments = article.comments.filter(followup=True)
    for comment in comments:
        if comment.make_token() == token:
            found_comment = comment
            comments\
                .filter(guest_email=comment.guest_email)\
                .update(followup=False)
            break
    else:
        return http.HttpResponseForbidden(
            'Token is failed or expired!', mimetype='text/plain')

    return render(request, 'marcus/unsubscribe.html', {
        'article_link': mark_safe(article.link(language)),
        'guest_name': found_comment.guest_name or found_comment.guest_email,
    })
Пример #17
0
def article_short(request, year, slug, language):
    obj = get_object_or_404(models.Article, published__year=year, slug=slug)
    args = [i for i in year, obj.published.month, obj.published.day, slug, language if i]
    url = reverse('marcus-article', args=args)
    return redirect(url)
Пример #18
0
def article_short(request, year, slug, language):
    obj = get_object_or_404(models.Article, published__year=year, slug=slug)
    args = [i for i in year, obj.published.month, obj.published.day, slug, language if i]
    url = reverse('marcus-article', args=args)
    return redirect(url)