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, })
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)
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 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)
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, }, )
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, }, )
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")
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")
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, })
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, })
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)