Example #1
0
def add_article(request,blogslug):
    blog = get_object_or_404(Blog, slug=blogslug, user=request.user)
    if request.method == 'POST':
        form = ArticleForm(request.POST)
        if request.FILES.get('featured_image',''):
            format = request.FILES.get('featured_image','').name.split('.')[-1]
            if format.lower().strip() not in (u'jpg',u'png',u'gif'):
                form.add_error('featured_image',_('Invalid image format. Please, change the format!'))
        if form.is_valid():
            article = form.save(commit=False)
            if not Article.objects.filter(slug=slugify(article.title)).exists():
                article.slug = slugify(article.title)
            else:
                article.slug = slugify(article.title)+"-"+time_slug_string()
            if request.FILES.get('featured_image',''):
                article.featured_image = handle_uploaded_file(request.FILES['featured_image'], request.user)
            article.author = request.user
            article.blog = blog
            article.save()
            form.save_m2m()
            if form.cleaned_data['send_notification']:
                send_mail(_('New article to publish'), _('%s wants to publish this article: http://%s%s') % (article.blog.user.get_fullname(), Site.objects.get_current().domain, article.get_absolute_url()), settings.DEFAULT_FROM_EMAIL, [settings.BITAKORA_SEND_MAIL], fail_silently=False)
            return HttpResponseRedirect(reverse('article', kwargs={'blogslug': blogslug,'slug': article.slug}))
    else:
        form = ArticleForm()
    return render_to_response('base/add_article.html', locals(), context_instance=RequestContext(request))
Example #2
0
def edit_article(request,blogslug,slug):
    article = get_object_or_404(Article, blog__slug=blogslug,slug=slug,blog__user=request.user)
    blog = article.blog
    if request.method == 'POST':
        form = ArticleForm(request.POST,instance=article)
        if request.FILES.get('featured_image',''):
            format = request.FILES.get('featured_image','').name.split('.')[-1]
            if format.lower().strip() not in (u'jpg',u'png',u'gif'):
                form.add_error('featured_image',_('Invalid image format. Please, change the format!'))
        if form.is_valid():
            article = form.save(commit=False)
            if request.FILES and request.FILES.get('featured_image',''):
                article.featured_image = handle_uploaded_file(request.FILES['featured_image'], request.user)
            article.save()
            form.save_m2m()
            if form.cleaned_data['send_notification']:
                send_mail(_('New article to publish'), _('%s wants to publish this article: http://%s%s') % (article.blog.user.get_fullname(), Site.objects.get_current().domain, article.get_absolute_url()), settings.DEFAULT_FROM_EMAIL, [settings.BITAKORA_SEND_MAIL], fail_silently=False)
            return HttpResponseRedirect(reverse('article', kwargs={'blogslug': blogslug,'slug': article.slug}))
        else:
            form.fields['categories'].widget.choices = [(c.id,c.title) for c in Category.objects.filter(id__in=form.cleaned_data['categories'])]
            form.fields['related_posts'].widget.choices = [(r.id,r.title) for r in Article.objects.filter(id__in=form.cleaned_data['related_posts'])]
    else:
        form = ArticleForm(cat=article.categories.all(),rel=article.related_posts.all(),instance=article)
    return render_to_response('base/edit_article.html', locals(), context_instance=RequestContext(request))