Example #1
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", "")
    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():
            guest_name = request.POST.get("name", "")
            request.session["guest_name"] = guest_name
            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,
            "retweet_url": retweet_url,
            "meta_keywords": ", ".join(keywords),
            "meta_description": (obj.intro(language) or "").replace('"', "'"),
        },
    )
Example #2
0
class Comment(CommentFeed, ContentFeed):
    def get_object(self, request, language):
        translation.activate(language or 'ru')
        return None, language

    def link(self, (obj, language)):
        return utils.iurl(reverse('marcus-index'), language)
Example #3
0
 def _pingback(self):
     if settings.DEBUG:
         return None
     language = 'en' if self.text_en else None
     pingdjack.ping_external_urls(
         utils.absolute_url(self.get_absolute_url(language)),
         self.html(language),
         utils.absolute_url(utils.iurl(reverse('marcus-index'), language)))
Example #4
0
 def _pingback(self):
     if settings.DEBUG:
         return None
     language = 'en' if self.text_en else None
     pingdjack.ping_external_urls(
         utils.absolute_url(self.get_absolute_url(language)),
         self.html(language),
         utils.absolute_url(utils.iurl(reverse('marcus-index'), language))
     )
Example #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('"', "'"),
    })
Example #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('"', "'"),
    })
Example #7
0
 def get_absolute_url(self, language=None):
     if self.published:
         url = reverse('marcus-article',
                       args=[
                           '%04d' % self.published.year,
                           '%02d' % self.published.month,
                           '%02d' % self.published.day, self.slug
                       ])
     else:
         url = reverse('marcus-draft', args=[self.pk])
     return utils.iurl(url, language)
Example #8
0
 def get_absolute_url(self, language=None):
     if self.published:
         url = reverse('marcus-article', args=[
             '%04d' % self.published.year,
             '%02d' % self.published.month,
             '%02d' % self.published.day,
             self.slug
         ])
     else:
         url = reverse('marcus-draft', args=[self.pk])
     return utils.iurl(url, language)
Example #9
0
    def _notify_hub(self):
        def languages():
            if self.text_ru:
                yield 'ru'
            if self.text_en:
                yield 'en'
            if self.text_ru and self.text_en:
                yield None

        for language in languages():
            topics = [utils.iurl(reverse('marcus-feed'), language)] + \
                     [c.get_feed_url(language) for c in self.categories.all()]
            subhub.publish(
                [utils.absolute_url(t) for t in topics],
                utils.absolute_url(self.get_absolute_url(language)),
            )
Example #10
0
    def _notify_hub(self):
        def languages():
            if self.text_ru:
                yield 'ru'
            if self.text_en:
                yield 'en'
            if self.text_ru and self.text_en:
                yield None

        for language in languages():
            topics = [utils.iurl(reverse('marcus-feed'), language)] + \
                     [c.get_feed_url(language) for c in self.categories.all()]
            subhub.publish(
                [utils.absolute_url(t) for t in topics],
                utils.absolute_url(self.get_absolute_url(language)),
            )
Example #11
0
    def get_queryset(self, obj, language):
        return models.Article.public.language(language)


class Category(ArticleFeed, ContentFeed):
    def get_object(self, request, slug, language):
        translation.activate(language or 'ru')
        category = get_object_or_404(models.Category, slug=slug)
        return category, language

    def title(self, (category, language)):
        category = models.Translation(category, language)
        return u'%s » %s' % (settings.MARCUS_TITLE, category.title())

    def link(self, (category, language)):
        return utils.iurl(reverse('marcus-category', args=[category.slug]), language)

    def get_queryset(self, category, language):
        return models.Article.public.language(language).filter(categories=category)


class Tag(ArticleFeed, ContentFeed):
    def get_object(self, request, slug, language):
        translation.activate(language or 'ru')
        tag = get_object_or_404(models.Tag, slug=slug)
        return tag, language

    def title(self, (tag, language)):
        tag = models.Translation(tag, language)
        return u'%s » %s' % (settings.MARCUS_TITLE, tag.title())
Example #12
0
 def render(self, context):
     language = context.get('language')
     if self.alternative:
         language = utils.altlanguage(language)
     return utils.iurl(self.urlnode.render(context), language)
Example #13
0
 def get_feed_url(self, language=None):
     return utils.iurl('%sfeed/' % self.get_absolute_url(), language)
Example #14
0
 def render(self, context):
     language = context.get('language')
     if self.alternative:
         language = utils.altlanguage(language)
     return utils.iurl(self.urlnode.render(context), language)
Example #15
0
    def get_query_set(self, obj, language):
        return models.Article.public.language(language)


class Category(ArticleFeed, ContentFeed):
    def get_object(self, request, slug, language):
        translation.activate(language or 'ru')
        category = get_object_or_404(models.Category, slug=slug)
        return category, language

    def title(self, (category, language)):
        category = models.Translation(category, language)
        return u'%s » %s' % (settings.MARCUS_TITLE, category.title())

    def link(self, (category, language)):
        return utils.iurl(reverse('marcus-category', args=[category.slug]),
                          language)

    def hub_link(self, obj):
        return reverse('subhub-hub')

    def get_query_set(self, category, language):
        return models.Article.public.language(language).filter(
            categories=category)


class Tag(ArticleFeed, ContentFeed):
    def get_object(self, request, slug, language):
        translation.activate(language or 'ru')
        tag = get_object_or_404(models.Tag, slug=slug)
        return tag, language
Example #16
0
 def get_feed_url(self, language=None):
     return utils.iurl('%sfeed/' % self.get_absolute_url(), language)
Example #17
0
 def get_absolute_url(self, language=None):
     return utils.iurl(reverse('marcus-category', args=[self.slug]),
                       language)
Example #18
0
 def get_absolute_url(self, language=None):
     return utils.iurl(reverse('marcus-category', args=[self.slug]), language)