diff --git a/cao_blogr.sqlite b/cao_blogr.sqlite index 4b6dea8..a8312d9 100644 Binary files a/cao_blogr.sqlite and b/cao_blogr.sqlite differ diff --git a/cao_blogr/forms.py b/cao_blogr/forms.py index bda9f69..dff66ba 100644 --- a/cao_blogr/forms.py +++ b/cao_blogr/forms.py @@ -1,6 +1,6 @@ from wtforms import Form, StringField, TextAreaField, SelectField from wtforms import IntegerField, PasswordField -from wtforms.validators import InputRequired, DataRequired, Length +from wtforms.validators import InputRequired, Length from wtforms.widgets import HiddenInput strip_filter = lambda x: x.strip() if x else None @@ -10,7 +10,7 @@ class BlogCreateForm(Form): filters=[strip_filter]) body = TextAreaField('Corps du texte', validators=[InputRequired(), Length(min=1)], filters=[strip_filter]) - tag = SelectField('Tag', validators=[DataRequired()], id='select_tag') + tag = SelectField('Sous-rubrique') class BlogUpdateForm(BlogCreateForm): diff --git a/cao_blogr/routes.py b/cao_blogr/routes.py index c1cce48..cd82953 100644 --- a/cao_blogr/routes.py +++ b/cao_blogr/routes.py @@ -1,9 +1,10 @@ def includeme(config): config.add_static_view('static', 'static', cache_max_age=3600) config.add_route('home', '/') + config.add_route('admin', '/admin') config.add_route('apropos', '/apropos') config.add_route('blog', '/blog/{id:\d+}/{slug}') - config.add_route('blog_edit', '/blog_edit/{id}') + config.add_route('blog_edit', '/blog_edit/{topic}/{id}') config.add_route('blog_search', '/blog_search') config.add_route('login', '/login') config.add_route('logout', '/logout') diff --git a/cao_blogr/services/blog_record.py b/cao_blogr/services/blog_record.py index 61818f5..ffb567a 100644 --- a/cao_blogr/services/blog_record.py +++ b/cao_blogr/services/blog_record.py @@ -10,9 +10,9 @@ from markdown2 import Markdown class BlogRecordService(object): @classmethod - def by_topic(cls, request, topic): + def by_topic(cls, request, topic, tag): # get posts by topic - query = request.dbsession.query(BlogRecord).filter(BlogRecord.topic_id == topic) + query = request.dbsession.query(BlogRecord).filter(BlogRecord.topic_id == topic, BlogRecord.tag == tag) query = query.order_by(BlogRecord.tag, BlogRecord.title).all() return query @@ -25,8 +25,8 @@ class BlogRecordService(object): @classmethod def by_id(cls, request, _id): - query = request.dbsession.query(BlogRecord) - return query.get(_id) + query = request.dbsession.query(BlogRecord).filter(BlogRecord.id == _id).first() + return query @classmethod def get_last_five(cls, request): @@ -39,12 +39,12 @@ class BlogRecordService(object): def get_tags_byTopic(cls, request, topic): # gest the last 5 items modified query = request.dbsession.query(Tags).filter(Tags.topic == topic) - query = query.order_by(Tags.tag).all() + query = query.order_by(Tags.tag_name).all() return query @classmethod def get_topic_name(cls, request, id): - # gest the last 5 items modified + # gest the name of a given topic query = request.dbsession.query(Topics).filter(Topics.topic == id).first() return query.topic_name.upper() diff --git a/cao_blogr/static/theme.css b/cao_blogr/static/theme.css index e601f8e..f8d8239 100644 --- a/cao_blogr/static/theme.css +++ b/cao_blogr/static/theme.css @@ -145,4 +145,9 @@ textarea { content: "*"; color: red; margin-left:2px; -} \ No newline at end of file +} + +.icone-big { + color: #f4511e; + font-size: 50px; +} diff --git a/cao_blogr/templates/admin.jinja2 b/cao_blogr/templates/admin.jinja2 new file mode 100644 index 0000000..9945ba9 --- /dev/null +++ b/cao_blogr/templates/admin.jinja2 @@ -0,0 +1,23 @@ +{% extends "cao_blogr:templates/layout.jinja2" %} + +{% block content %} + +
+ + +{% endblock %} diff --git a/cao_blogr/templates/blog.jinja2 b/cao_blogr/templates/blog.jinja2 index beab5f2..feee89b 100644 --- a/cao_blogr/templates/blog.jinja2 +++ b/cao_blogr/templates/blog.jinja2 @@ -4,8 +4,8 @@ {% if request.authenticated_userid %}- [ Retour ] - [ Modifier ] + [ Retour ] + [ Modifier ]
{% endif %} diff --git a/cao_blogr/templates/blog_edit.jinja2 b/cao_blogr/templates/blog_edit.jinja2 index 3a7cbf6..cc82354 100644 --- a/cao_blogr/templates/blog_edit.jinja2 +++ b/cao_blogr/templates/blog_edit.jinja2 @@ -20,37 +20,27 @@ {{ form.body(class_='form-control', cols="35", rows="20") }} - {% for error in form.topic.errors %} -- Topic : {{ entry.topic }} - | - Tag : {{ entry.tag }} - | - Créé le : {{ entry.created.strftime("%d-%m-%Y - %H:%M") }} - | - Modifié le : {{ entry.edited.strftime("%d-%m-%Y - %H:%M") }} +
+ Topic : {{ entry.topic_id }} + {% if blog_id != '0' %} + | + Créé le : {{ entry.created.strftime("%d-%m-%Y - %H:%M") }} + | + Modifié le : {{ entry.edited.strftime("%d-%m-%Y - %H:%M") }} + {% endif %}
Centre Méditation Sunyata Paris
+
Centre de Méditation Sunyata
116 bd Maréchal Foch
93160 NOISY LE GRAND
@@ -99,7 +99,7 @@  | Mentions légales {% if request.authenticated_userid == 'admin' %} -  | Utilisateurs +  | Admin {% endif %}
diff --git a/cao_blogr/templates/topic.jinja2 b/cao_blogr/templates/topic.jinja2 index 9cf7e1c..60a432d 100644 --- a/cao_blogr/templates/topic.jinja2 +++ b/cao_blogr/templates/topic.jinja2 @@ -3,21 +3,11 @@ {% block content %} {% if request.authenticated_userid %} -
+
{% endif%}
-
- {% for entry in items %}
-
-
+ {{ liste | safe }}
+
{% endblock %}
diff --git a/cao_blogr/views/blog.py b/cao_blogr/views/blog.py
index a854cf5..862f395 100644
--- a/cao_blogr/views/blog.py
+++ b/cao_blogr/views/blog.py
@@ -12,8 +12,8 @@ def blog(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'))
+ 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 == '':
@@ -29,18 +29,21 @@ def blog(request):
renderer='cao_blogr:templates/blog_edit.jinja2',
permission='view')
def blog_edit(request):
- # get post id from request
+ # get post parameters from request
+ topic = request.matchdict['topic']
blog_id = request.matchdict['id']
- url = request.route_url('blog_edit',id=blog_id)
+ url = request.route_url('blog_edit',topic=topic, id=blog_id)
+
+ # get the list of tags of this topic
+ tags = BlogRecordService.get_tags_byTopic(request, topic)
if blog_id == '0':
# create a new post
entry = BlogRecord()
- # set default values
- entry.tag = 'pyramid'
- entry.topic = 'blog'
+ entry.topic_id = topic
form = BlogCreateForm(request.POST, entry)
- form.tag.choices = [(row.tag, row.title) for row in BlogRecordService.tags]
+ form.tag.choices = [(row.tag, row.tag_name) for row in tags]
+
else:
# modify post
entry = BlogRecordService.by_id(request, blog_id)
@@ -48,15 +51,17 @@ def blog_edit(request):
request.session.flash(u"Page non trouvée : %s" % blog_id, 'warning')
return HTTPFound(location=request.route_url('home'))
form = BlogUpdateForm(request.POST, entry)
+ form.tag.choices = [(row.tag, row.tag_name) for row in tags]
if 'form.submitted' in request.params and form.validate():
if blog_id == '0':
form.populate_obj(entry)
entry.title_url = entry.slug
+ entry.topic_id = topic
request.dbsession.add(entry)
- return HTTPFound(location=request.route_url('home'))
+ return HTTPFound(location=request.route_url('topic', topic=topic))
else:
del form.id # SECURITY: prevent overwriting of primary key
form.populate_obj(entry)
@@ -69,7 +74,8 @@ def blog_edit(request):
return {
'page_title': entry.title,
'url': url,
- 'form': form,
+ 'form': form,
+ 'blog_id': blog_id,
'entry': entry,
}
@@ -101,12 +107,25 @@ def topic(request):
# get the topic_name
topic_name = BlogRecordService.get_topic_name(request, topic)
-
- # lire toutes les docs du topic
- items = BlogRecordService.by_topic(request, topic)
-
+ # get all the tags of this topic
+ tags = BlogRecordService.get_tags_byTopic(request, topic)
+
+ # generate the items list group by tag
+ liste = ''
+ for tag in tags:
+ liste += '' + tag.tag_name + '
'
+ # lire toutes les docs du topic
+ items = BlogRecordService.by_topic(request, topic, tag.tag)
+ if items:
+ liste += ''
+ for item in items:
+ liste += '
'
+ else:
+ liste += '
'
return {
'page_title': topic_name,
'topic': topic,
- 'items': items,
+ 'liste': liste,
}
diff --git a/cao_blogr/views/default.py b/cao_blogr/views/default.py
index d1cbdf2..0e540a5 100644
--- a/cao_blogr/views/default.py
+++ b/cao_blogr/views/default.py
@@ -33,6 +33,15 @@ def home(request):
}
+@view_config(route_name='admin',
+ renderer='cao_blogr:templates/admin.jinja2')
+def admin(request):
+
+ return {
+ 'page_title': "Admin",
+ }
+
+
@view_config(route_name='apropos',
renderer='cao_blogr:templates/apropos.jinja2')
def apropos(request):