'Prepare all values to display the blog.
:return dict values: values for the templates, containing
- \'blog_post\': browse of the current post
- \'blog\': browse of the current blog
- \'blogs\': list of browse records of blogs
- \'tag\': current tag, if tag_id in parameters
- \'tags\': all tags, for tag-based navigation
- \'pager\': a pager on the comments
- \'nav_list\': a dict [year][month] for archives navigation
- \'next_post\': next blog post, to direct the user towards the next interesting post'

@http.route(['/blog/<model("blog.blog"):blog>/post/<model("blog.post",    "[(\'blog_id\',\'=\',blog[0])]"):blog_post>'], type='http', auth='public', website=True)
def blog_post(self, blog, blog_post, tag_id=None, page=1, enable_editor=None, **post):

    BlogPost = request.env['blog.post']
    (date_begin, date_end) = (post.get('date_begin'), post.get('date_end'))
    pager_url = ('/blogpost/%s' % blog_post.id)
    pager = request.website.pager(url=pager_url, total=len(blog_post.website_message_ids), page=page, step=self._post_comment_per_page, scope=7)
    pager_begin = ((page - 1) * self._post_comment_per_page)
    pager_end = (page * self._post_comment_per_page)
    comments = blog_post.website_message_ids[pager_begin:pager_end]
    tag = None
    if tag_id:
        tag = request.env['blog.tag'].browse(int(tag_id))
    blog_url = QueryURL('', ['blog', 'tag'], blog=blog_post.blog_id, tag=tag, date_begin=date_begin, date_end=date_end)
    if (not (blog_post.blog_id.id == blog.id)):
        return request.redirect(('/blog/%s/post/%s' % (slug(blog_post.blog_id), slug(blog_post))))
    tags = request.env['blog.tag'].search([])
    all_post = BlogPost.search([('blog_id', '=', blog.id)])
    if (not request.env.user.has_group('website.group_website_designer')):
        all_post = all_post.filtered((lambda r: (r.post_date <= fields.Datetime.now())))
    if (blog_post not in all_post):
        return request.redirect(('/blog/%s' % slug(blog_post.blog_id)))
    all_post_ids = all_post.ids
    current_blog_post_index = all_post_ids.index(blog_post.id)
    nb_posts = len(all_post_ids)
    next_post_id = (all_post_ids[((current_blog_post_index + 1) % nb_posts)] if (nb_posts > 1) else None)
    next_post = ((next_post_id and BlogPost.browse(next_post_id)) or False)
    values = {'tags': tags, 'tag': tag, 'blog': blog, 'blog_post': blog_post, 'blog_post_cover_properties': json.loads(blog_post.cover_properties), 'main_object': blog_post, 'nav_list': self.nav_list(blog), 'enable_editor': enable_editor, 'next_post': next_post, 'next_post_cover_properties': (json.loads(next_post.cover_properties) if next_post else {}), 'date': date_begin, 'blog_url': blog_url, 'pager': pager, 'comments': comments}
    response = request.render('website_blog.blog_post_complete', values)
    request.session[request.session.sid] = request.session.get(request.session.sid, [])
    if (not (blog_post.id in request.session[request.session.sid])):
        request.session[request.session.sid].append(blog_post.id)
        blog_post.sudo().write({'visits': (blog_post.visits + 1)})
    return response
