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))
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))