diff --git a/cao_blogr.sqlite b/cao_blogr.sqlite index 41b02ab..ba07d9f 100644 Binary files a/cao_blogr.sqlite and b/cao_blogr.sqlite differ diff --git a/cao_blogr/routes.py b/cao_blogr/routes.py index 54f34cc..1a665f3 100644 --- a/cao_blogr/routes.py +++ b/cao_blogr/routes.py @@ -3,6 +3,7 @@ def includeme(config): config.add_route('home', '/') config.add_route('apropos', '/apropos') config.add_route('blog', '/blog/{id:\d+}/{slug}') + config.add_route('blog_bytag', '/blog_bytag/{tag}/{retour}') config.add_route('blog_edit', '/blog_edit/{id}') config.add_route('blog_search', '/blog_search') config.add_route('login', '/login') diff --git a/cao_blogr/services/blog_record.py b/cao_blogr/services/blog_record.py index 46283f2..337c464 100644 --- a/cao_blogr/services/blog_record.py +++ b/cao_blogr/services/blog_record.py @@ -12,18 +12,26 @@ class BlogRecordService(object): def by_criteria(cls, request, criteria): search = "%{}%".format(criteria) query = request.dbsession.query(BlogRecord) + query = query.filter(or_(BlogRecord.title.like(search), BlogRecord.body.like(search))) if request.authenticated_userid == None: # if user is anonym, display only published posts query = query.filter(BlogRecord.status == 'publié') - query = query.filter(or_(BlogRecord.title.like(search), - BlogRecord.body.like(search))).all() - return query + return query.all() @classmethod def by_id(cls, request, _id): query = request.dbsession.query(BlogRecord) return query.get(_id) + @classmethod + def by_tag(cls, request, tag): + query = request.dbsession.query(BlogRecord) + query = query.filter(BlogRecord.tag == tag) + if request.authenticated_userid == None: + # if user is anonym, display only published posts + query = query.filter(BlogRecord.status == 'publié') + return query.order_by(sa.desc(BlogRecord.created)).all() + @classmethod def get_last_created(cls, request): # gest the 10 last created posts @@ -31,7 +39,7 @@ class BlogRecordService(object): if request.authenticated_userid == None: # if user is anonym, display only published posts query = query.filter(BlogRecord.status == 'publié') - query = query.order_by(sa.desc(BlogRecord.created)).limit(10).all() + query = query.order_by(sa.desc(BlogRecord.created)).limit(15).all() return query @classmethod diff --git a/cao_blogr/static/theme.css b/cao_blogr/static/theme.css index d3aa86c..6ecf29d 100644 --- a/cao_blogr/static/theme.css +++ b/cao_blogr/static/theme.css @@ -37,7 +37,6 @@ h3, h4 { } @media (min-width: 1200px) { .container{ - padding: 70px 0 0 0; max-width: 950px; } } @@ -115,6 +114,12 @@ h3, h4 { .navbar-default .navbar-toggle { border-color: transparent; } +.navbar-brand { + /* centrer le logo */ + transform: translateX(-50%); + left: 50%; + position: absolute; +} footer { background-color: #bc2131; color: #f5f5f5; diff --git a/cao_blogr/templates/blog_bytag.jinja2 b/cao_blogr/templates/blog_bytag.jinja2 new file mode 100644 index 0000000..ce1e06a --- /dev/null +++ b/cao_blogr/templates/blog_bytag.jinja2 @@ -0,0 +1,26 @@ +{% extends "layout.jinja2" %} + +{% block content %} + +

[ retour ]

+ + + {% for entry in items %} + + + + {% if entry.status != 'publié' %} + + {% else %} + + {% endif%} + + {% else %} +

Aucun post trouvé !

+ {% endfor %} +
{{ entry.created.strftime("%d %b %y") }} + {{ entry.title }} + {{ entry.status }} 
+

[ {{nb_items}} billets ]

+ +{% endblock %} diff --git a/cao_blogr/templates/blog_search.jinja2 b/cao_blogr/templates/blog_search.jinja2 index 7fca9af..a823f07 100644 --- a/cao_blogr/templates/blog_search.jinja2 +++ b/cao_blogr/templates/blog_search.jinja2 @@ -46,6 +46,12 @@ {% endif %}
-
- +

Index

+

+ |  + {% for tag in tags %} + {{ tag.tag }} | + {% endfor %} +

+ {% endblock %} diff --git a/cao_blogr/templates/home.jinja2 b/cao_blogr/templates/home.jinja2 index d65cd44..990f383 100644 --- a/cao_blogr/templates/home.jinja2 +++ b/cao_blogr/templates/home.jinja2 @@ -10,11 +10,13 @@ {% for entry in last_ten %} - + - + {% if entry.status != 'publié' %} {% else %} @@ -25,5 +27,5 @@

Aucun post trouvé

{% endfor %}
{{ entry.created.strftime("%d.%m.%Y") }}{{ entry.created.strftime("%d %b %y") }} {{ entry.title }} {{ entry.tag }} + [ {{ entry.tag }} ] + {{ entry.status }}
- + {% endblock %} diff --git a/cao_blogr/templates/layout.jinja2 b/cao_blogr/templates/layout.jinja2 index 027dcca..93c28e8 100644 --- a/cao_blogr/templates/layout.jinja2 +++ b/cao_blogr/templates/layout.jinja2 @@ -29,7 +29,7 @@ - CAO Blogr + CAOTEK -{% if request.path == '/' %} - {# -- display carousel -- #} - {% block carousel %} - {% endblock carousel %} -{% endif %} -
+
+
{% if page_title %}

{{ page_title }}

diff --git a/cao_blogr/views/blog.py b/cao_blogr/views/blog.py index 22ef063..9864f5a 100644 --- a/cao_blogr/views/blog.py +++ b/cao_blogr/views/blog.py @@ -92,12 +92,32 @@ def blog_edit(request): 'blog_id': blog_id, 'entry': entry, } +@view_config(route_name='blog_bytag', renderer='cao_blogr:templates/blog_bytag.jinja2') +def blog_bytag(request): + # get tag parameters from request + tag = request.matchdict['tag'] + retour = request.matchdict['retour'] + url_retour = request.route_url(retour) -@view_config(route_name='blog_search', - renderer='cao_blogr:templates/blog_search.jinja2') + # get the posts by tag + items = BlogRecordService.by_tag(request, tag) + nb_items = len(items) + + return { + 'page_title': "Billets avec tag : " + tag, + 'items': items, + 'nb_items': nb_items, + 'url_retour': url_retour, + } + + +@view_config(route_name='blog_search', renderer='cao_blogr:templates/blog_search.jinja2') def blog_search(request): criteria = '' + # get the list of tags + tags = BlogRecordService.get_tags(request) + form = BlogSearchForm(request.POST) items = [] if 'form.submitted' in request.params and form.validate(): @@ -110,12 +130,13 @@ def blog_search(request): 'form': form, 'items': items, 'criteria': criteria, + 'tags': tags, } @view_config(route_name='tags', renderer='cao_blogr:templates/tags.jinja2', permission='view') def tags(request): - # get the list of tags of this topic + # get the list of tags tags = BlogRecordService.get_tags(request) return {