Пример #1
0
def blog_edit(request):
    """
    View for editing an existing blog or creating a new blog 
    if user have not exceeded maximum allowed acount of blogs.
    """
    url_user = request.matchdict.get('user', None)
    blog_slug = request.matchdict.get('blog_slug', None)

    config = pluginapi.get_config('mediagoblin.media_types.blog')
    max_blog_count = config['max_blog_count']
    form = blog_forms.BlogEditForm(request.form)
    # creating a blog
    if not blog_slug:
        if Blog.query.filter_by(
                author=request.user.id).count() < max_blog_count:
            if request.method == 'GET':
                return render_to_response(
                    request, 'mediagoblin/blog/blog_edit_create.html', {
                        'form': form,
                        'user': request.user,
                        'app_config': mg_globals.app_config
                    })

            if request.method == 'POST' and form.validate():
                _log.info("Here")
                blog = request.db.Blog()
                blog.title = six.text_type(form.title.data)
                blog.description = six.text_type(
                    cleaned_markdown_conversion((form.description.data)))
                blog.author = request.user.id
                blog.generate_slug()

                blog.save()
                return redirect(
                    request,
                    "mediagoblin.media_types.blog.blog_admin_dashboard",
                    user=request.user.username)
        else:
            add_message(
                request, ERROR, "Welcome! You already have created \
                                                        maximum number of blogs."
            )
            return redirect(
                request,
                "mediagoblin.media_types.blog.blog_admin_dashboard",
                user=request.user.username)

    #Blog already exists.
    else:
        blog = get_blog_by_slug(request, blog_slug)
        if not blog:
            return render_404(request)
        if request.method == 'GET':
            defaults = dict(title=blog.title,
                            description=cleaned_markdown_conversion(
                                blog.description),
                            author=request.user.id)

            form = blog_forms.BlogEditForm(**defaults)

            return render_to_response(
                request, 'mediagoblin/blog/blog_edit_create.html', {
                    'form': form,
                    'user': request.user,
                    'app_config': mg_globals.app_config
                })
        else:
            if request.method == 'POST' and form.validate():
                blog.title = six.text_type(form.title.data)
                blog.description = six.text_type(
                    cleaned_markdown_conversion((form.description.data)))
                blog.author = request.user.id
                blog.generate_slug()

                blog.save()
                add_message(request, SUCCESS, "Your blog is updated.")
                return redirect(request,
                                "mediagoblin.media_types.blog.blog-dashboard",
                                user=request.user.username,
                                blog_slug=blog.slug)
Пример #2
0
def blog_edit(request):
    """
    View for editing the existing blog or automatically
    creating a new blog if user does not have any yet.
    """
    url_user = request.matchdict.get('user', None)
    blog_slug = request.matchdict.get('blog_slug', None)

    max_blog_count = 1
    form = blog_forms.BlogEditForm(request.form)
    # the blog doesn't exists yet
    if not blog_slug:
        if Blog.query.filter_by(
                author=request.user.id).count() < max_blog_count:
            if request.method == 'GET':
                return render_to_response(
                    request, 'mediagoblin/blog/blog_edit_create.html', {
                        'form': form,
                        'user': request.user,
                        'app_config': mg_globals.app_config
                    })

            if request.method == 'POST' and form.validate():
                _log.info("Here")
                blog = request.db.Blog()
                blog.title = unicode(form.title.data)
                blog.description = unicode(
                    cleaned_markdown_conversion((form.description.data)))
                blog.author = request.user.id
                blog.generate_slug()

                blog.save()
                return redirect(request,
                                "mediagoblin.media_types.blog.blog-dashboard",
                                user=request.user.username,
                                blog_slug=blog.slug)
        else:
            #the case when max blog count is one.
            blog = request.db.Blog.query.filter_by(
                author=request.user.id).first()
            add_message(request, ERROR,
                        "Welcome! You already have created a blog.")
            return redirect(request,
                            "mediagoblin.media_types.blog.blog-dashboard",
                            user=request.user.username,
                            blog_slug=blog.slug)

    #Blog already exists.
    else:
        blog = request.db.Blog.query.filter_by(slug=blog_slug).first()
        if request.method == 'GET':
            defaults = dict(title=blog.title,
                            description=cleaned_markdown_conversion(
                                blog.description),
                            author=request.user.id)

            form = blog_forms.BlogEditForm(**defaults)

            return render_to_response(
                request, 'mediagoblin/blog/blog_edit_create.html', {
                    'form': form,
                    'user': request.user,
                    'app_config': mg_globals.app_config
                })
        else:
            if request.method == 'POST' and form.validate():
                blog.title = unicode(form.title.data)
                blog.description = unicode(
                    cleaned_markdown_conversion((form.description.data)))
                blog.author = request.user.id
                blog.generate_slug()

                blog.save()
                add_message(request, SUCCESS, "Your blog is updated.")
                return redirect(request,
                                "mediagoblin.media_types.blog.blog-dashboard",
                                user=request.user.username,
                                blog_slug=blog.slug)