from pyramid.view import view_config from pyramid.httpexceptions import HTTPNotFound, HTTPFound from ..models.blog_record import BlogRecord from ..services.blog_record import BlogRecordService from ..forms import BlogCreateForm, BlogUpdateForm, BlogSearchForm @view_config(route_name='blog', renderer='cao_blogr:templates/blog.jinja2') def blog(request): # get post id from request blog_id = request.matchdict['id'] entry = BlogRecordService.by_id(request, blog_id) if not entry: request.session.flash(u"Page non trouvée : %s" % blog_id, 'warning') return HTTPFound(location=request.route_url('home')) # just created ? convert body to html if entry.body_html == '': BlogRecordService.proc_after_create(request, blog_id) return { 'page_title': entry.title, 'entry': entry } @view_config(route_name='blog_edit', renderer='cao_blogr:templates/blog_edit.jinja2', permission='view') def blog_edit(request): # get post id from request blog_id = request.matchdict['id'] url = request.route_url('blog_edit',id=blog_id) if blog_id == '0': # create a new post entry = BlogRecord() # set default values entry.tag = 'pyramid' entry.topic = 'blog' form = BlogCreateForm(request.POST, entry) form.tag.choices = [(row.tag, row.title) for row in BlogRecordService.tags] else: # modify post entry = BlogRecordService.by_id(request, blog_id) if not entry: request.session.flash(u"Page non trouvée : %s" % blog_id, 'warning') return HTTPFound(location=request.route_url('home')) form = BlogUpdateForm(request.POST, entry) if 'form.submitted' in request.params and form.validate(): if blog_id == '0': form.populate_obj(entry) entry.title_url = entry.slug request.dbsession.add(entry) return HTTPFound(location=request.route_url('home')) else: del form.id # SECURITY: prevent overwriting of primary key form.populate_obj(entry) # after update procedure BlogRecordService.proc_after_update(request, blog_id) return HTTPFound(location=request.route_url('blog', id=entry.id, slug=entry.slug)) return { 'page_title': entry.title, 'url': url, 'form': form, 'entry': entry, } @view_config(route_name='blog_search', renderer='cao_blogr:templates/blog_search.jinja2') def blog_search(request): criteria = '' form = BlogSearchForm(request.POST) items = [] if 'form.submitted' in request.params and form.validate(): criteria = request.params['criteria'] # si afficher tous les fiches ? items = BlogRecordService.by_criteria(request, criteria) return { 'page_title': "Rechercher", 'form': form, 'items': items, 'criteria': criteria, } @view_config(route_name='topic', renderer='cao_blogr:templates/topic.jinja2') def topic(request): topic = request.matchdict['topic'] # get the topic_name topic_name = BlogRecordService.get_topic_name(request, topic) # lire toutes les docs du topic items = BlogRecordService.by_topic(request, topic) return { 'page_title': topic_name, 'topic': topic, 'items': items, }