Exemple #1
0
def add_or_edit_article(request, article_id=None, action=None):
    mail_service = MailService()

    params = {}

    if request.user.is_authenticated():
        params['page'] = 'add_article'
        params['edit_allowed'] = True

        article = None
        if article_id:
            try:
                article = Article.objects.get(id=article_id)
                if article.author == request.user:
                    params['page'] = 'edit_article'
                else:
                    params['edit_allowed'] = False
            except Article.DoesNotExist:
                pass

        if request.method == 'POST':
            form = ArticleForm(request.POST, instance=article)
            if form.is_valid():
                # Process the data in form.cleaned_data
                article = form.save(commit=False)
                if 'is_public' in request.POST:
                    article.is_public = True
                    if not article.date:
                        article.date = datetime.now()
                else:
                    article.is_public = False
                article.author = request.user # Todo: remove this
                article.save()
                article.authors.add(request.user)
                
                tags = form.cleaned_data['tags']
                article.tags.clear()
                for tag in tags:
                   article.tags.add(tag)

                if article.is_public:
                    mail_service.send_mail_on_first_article_publish(article, request.user)
                return redirect('/articles/%s/' % article.id)
        else:
            form = ArticleForm(instance=article) # An unbound form
        params['form'] = form
    return direct_to_template(request, 'articles/add_or_edit_article.html', params)
def on_article_comment(request, comment, **kwargs):
    MailService.send_mail_on_article_comment(comment)
def on_user_activate(request, user, **kwargs):
    MailService.send_mail_on_user_activate(request, user)