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('"', "'"), }, )
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)
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)))
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)) )
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('"', "'"), })
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)
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)), )
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())
def render(self, context): language = context.get('language') if self.alternative: language = utils.altlanguage(language) return utils.iurl(self.urlnode.render(context), language)
def get_feed_url(self, language=None): return utils.iurl('%sfeed/' % self.get_absolute_url(), language)
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
def get_absolute_url(self, language=None): return utils.iurl(reverse('marcus-category', args=[self.slug]), language)