diff --git a/cao_blogr.sqlite b/cao_blogr.sqlite
index 753f26b..32dddfe 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 51926ef..a834436 100644
--- a/cao_blogr/forms.py
+++ b/cao_blogr/forms.py
@@ -11,6 +11,8 @@ class BlogCreateForm(Form):
body = TextAreaField('Corps du texte', validators=[InputRequired(), Length(min=1)],
filters=[strip_filter])
tag = SelectField('Sous-rubrique')
+ author = StringField('Auteur', validators=[InputRequired(), Length(min=1, max=50)],
+ filters=[strip_filter])
class BlogUpdateForm(BlogCreateForm):
@@ -42,3 +44,10 @@ class TopicForm(Form):
filters=[strip_filter])
+class TagForm(Form):
+ id = IntegerField(widget=HiddenInput())
+
+ tag = StringField('Sous-rubrique', validators=[InputRequired(), Length(min=1, max=25)],
+ filters=[strip_filter])
+ tag_name = StringField('Intitulé', validators=[InputRequired(), Length(min=1, max=25)],
+ filters=[strip_filter])
diff --git a/cao_blogr/routes.py b/cao_blogr/routes.py
index 67e63a0..b27ece8 100644
--- a/cao_blogr/routes.py
+++ b/cao_blogr/routes.py
@@ -8,6 +8,7 @@ def includeme(config):
config.add_route('login', '/login')
config.add_route('logout', '/logout')
config.add_route('settings', '/settings')
+ config.add_route('tag_edit', '/tag_edit/{topic}/{id}')
config.add_route('topic', '/topic/{topic}')
config.add_route('topic_edit', '/topic_edit/{topic}')
config.add_route('topics', '/topics')
diff --git a/cao_blogr/services/blog_record.py b/cao_blogr/services/blog_record.py
index 7aa54e7..395a138 100644
--- a/cao_blogr/services/blog_record.py
+++ b/cao_blogr/services/blog_record.py
@@ -32,7 +32,7 @@ class BlogRecordService(object):
def get_last_five(cls, request):
# gest the last 5 items modified
query = request.dbsession.query(BlogRecord).filter(BlogRecord.topic_id != 'ADM')
- query = query.order_by(sa.desc(BlogRecord.edited)).limit(5).all()
+ query = query.order_by(sa.desc(BlogRecord.created)).limit(5).all()
return query
@classmethod
@@ -42,6 +42,12 @@ class BlogRecordService(object):
query = query.order_by(Tags.tag_name).all()
return query
+ @classmethod
+ def get_tags_byId(cls, request, id):
+ # gest the last 5 items modified
+ query = request.dbsession.query(Tags).filter(Tags.id == id).first()
+ return query
+
@classmethod
def get_topic_byTopic(cls, request, id):
# get the name of a given topic
@@ -59,3 +65,12 @@ class BlogRecordService(object):
request.dbsession.query(BlogRecord).filter(BlogRecord.id == id).delete(synchronize_session=False)
return
+ @classmethod
+ def tag_delete(cls, request, id):
+ request.dbsession.query(Tags).filter(Tags.id == id).delete(synchronize_session=False)
+ return
+
+ @classmethod
+ def topic_delete(cls, request, id):
+ request.dbsession.query(Topics).filter(Topics.topic == id).delete(synchronize_session=False)
+ return
diff --git a/cao_blogr/templates/blog.jinja2 b/cao_blogr/templates/blog.jinja2
index 90f9bc0..02c5261 100644
--- a/cao_blogr/templates/blog.jinja2
+++ b/cao_blogr/templates/blog.jinja2
@@ -16,7 +16,8 @@
{{ body_html | safe }}
- Publié le : {{ entry.edited.strftime("%d-%m-%Y - %H:%M") }}
+ Auteur : {{ entry.author }}
+ Publié le : {{ entry.created.strftime("%d-%m-%Y - %H:%M") }}
{% endblock %}
diff --git a/cao_blogr/templates/blog_edit.jinja2 b/cao_blogr/templates/blog_edit.jinja2
index 3dd172e..d770198 100644
--- a/cao_blogr/templates/blog_edit.jinja2
+++ b/cao_blogr/templates/blog_edit.jinja2
@@ -25,6 +25,11 @@
{{ form.tag(class_='form-control') }}
+
+
+ {{ form.author(class_='form-control') }}
+
+
Topic : {{ entry.topic_id }}
{% if blog_id != '0' %}
diff --git a/cao_blogr/templates/home.jinja2 b/cao_blogr/templates/home.jinja2
index cda50cd..d6d1b6f 100644
--- a/cao_blogr/templates/home.jinja2
+++ b/cao_blogr/templates/home.jinja2
@@ -150,10 +150,10 @@
{% for entry in last_five %}
-
- {{ entry.edited.strftime("%d-%m-%Y") }}
- {{ entry.title }}
+ {{ entry.title }}
+ — {{ entry.author }}, {{ entry.created.strftime("%d-%m-%Y") }}
{% endfor %}
diff --git a/cao_blogr/templates/tag_edit.jinja2 b/cao_blogr/templates/tag_edit.jinja2
new file mode 100644
index 0000000..ce3affc
--- /dev/null
+++ b/cao_blogr/templates/tag_edit.jinja2
@@ -0,0 +1,64 @@
+{% extends "cao_blogr:templates/layout.jinja2" %}
+
+{% block content %}
+
+
+
+
+
+
+
+
+
+
+
Etes-vous certain(e) de vouloir supprimer la sous-rubrique {{ form.tag_name.data }} ?
+
+
+
+
+
+
+{% endblock %}
diff --git a/cao_blogr/templates/topic_edit.jinja2 b/cao_blogr/templates/topic_edit.jinja2
index 42ce499..50c25f1 100644
--- a/cao_blogr/templates/topic_edit.jinja2
+++ b/cao_blogr/templates/topic_edit.jinja2
@@ -35,9 +35,62 @@
Retour
+ {% if form.topic.data %}
+
+ {% endif %}
+ Sous-rubriques
+
+ Nouveau
+
+
+
+
+
+ | Sous-rubrique |
+ Intitulé |
+
+
+ {% for entry in tags %}
+
+ | {{ entry.tag }} |
+
+
+ {{ entry.tag_name }}
+
+ |
+
+ {% endfor %}
+
+
+
+
+
+
+
+
+
+
Etes-vous certain(e) de vouloir supprimer la rubrique {{ form.topic_name.data }} ?
+
+
+
+
+
+
{% endblock %}
diff --git a/cao_blogr/templates/topics.jinja2 b/cao_blogr/templates/topics.jinja2
index 528581f..6527062 100644
--- a/cao_blogr/templates/topics.jinja2
+++ b/cao_blogr/templates/topics.jinja2
@@ -4,8 +4,8 @@
Retour
-
- Nouvel utilisateur
+
+ Nouvelle rubrique
diff --git a/cao_blogr/views/blog.py b/cao_blogr/views/blog.py
index 1eb2d14..650e0b6 100644
--- a/cao_blogr/views/blog.py
+++ b/cao_blogr/views/blog.py
@@ -131,9 +131,9 @@ def topic(request):
if items:
liste += ''
for item in items:
- liste += '- {1} — {2}
'.format(
- request.route_url('blog', id=item.id, slug=item.slug), item.title,
- item.edited.strftime("%d-%m-%Y"))
+ liste += '- {1} — {2}, {3}
'.format(
+ request.route_url('blog', id=item.id, slug=item.slug), item.title, item.author,
+ item.created.strftime("%d-%m-%Y"))
liste += '
'
else:
liste += ''
diff --git a/cao_blogr/views/default.py b/cao_blogr/views/default.py
index 2b0d800..344dcbe 100644
--- a/cao_blogr/views/default.py
+++ b/cao_blogr/views/default.py
@@ -9,9 +9,9 @@ from pyramid_mailer.message import Message
from ..services.user import UserService
from ..services.blog_record import BlogRecordService
-from ..forms import UserCreateForm, TopicForm
+from ..forms import UserCreateForm, TopicForm, TagForm
from ..models.user import User
-from ..models.blog_record import Topics
+from ..models.blog_record import Topics, Tags
@view_config(route_name='home',
@@ -196,7 +196,7 @@ def topics(request):
# get all topics
topics = BlogRecordService.get_topics(request)
return {
- 'page_title': "Liste des topics",
+ 'page_title': "Liste des rubriques",
'topics': topics
}
@@ -230,14 +230,66 @@ def topic_edit(request):
form.populate_obj(entry)
request.dbsession.add(entry)
- return HTTPFound(location=request.route_url('topic', topic=topic))
+ return HTTPFound(location=request.route_url('topics'))
else:
del form.topic # SECURITY: prevent overwriting of primary key
form.populate_obj(entry)
return HTTPFound(location=request.route_url('topics'))
+ if 'form.deleted' in request.params:
+ BlogRecordService.topic_delete(request, entry.topic)
+ request.session.flash("La fiche a été supprimée avec succès.", 'success')
+ return HTTPFound(location=request.route_url('topics'))
+
return {
'page_title': page_title,
'url': url,
'form': form,
+ 'tags': tags,
+ }
+
+@view_config(route_name='tag_edit',
+ renderer='cao_blogr:templates/tag_edit.jinja2', permission='manage')
+def tag_edit(request):
+ # get tag parameters from request
+ topic = request.matchdict['topic']
+ tag_id = request.matchdict['id']
+ url = request.route_url('tag_edit', topic=topic, id=tag_id)
+
+ if tag_id == '0':
+ # create a new tag
+ entry = Tags()
+ form = TagForm(request.POST, entry)
+ page_title = "Nouvelle sous-rubrique"
+
+ else:
+ # modify post
+ entry = BlogRecordService.get_tags_byId(request, tag_id)
+ if not entry:
+ request.session.flash(u"Tag non trouvé : %s" % tag_id, 'warning')
+ return HTTPFound(location=request.route_url('topic_edit', topic=topic))
+ form = TagForm(request.POST, entry)
+ page_title = entry.tag_name
+
+ if 'form.submitted' in request.params and form.validate():
+ if tag_id == '0':
+ form.populate_obj(entry)
+ entry.topic = topic
+ request.dbsession.add(entry)
+ return HTTPFound(location=request.route_url('topic_edit', topic=topic))
+ else:
+ del form.id # SECURITY: prevent overwriting of primary key
+ form.populate_obj(entry)
+ return HTTPFound(location=request.route_url('topic_edit', topic=topic))
+
+ if 'form.deleted' in request.params:
+ BlogRecordService.tag_delete(request, entry.id)
+ request.session.flash("La fiche a été supprimée avec succès.", 'success')
+ return HTTPFound(location=request.route_url('topic_edit', topic=topic))
+
+ return {
+ 'page_title': page_title,
+ 'url': url,
+ 'form': form,
+ 'topic': topic,
}