diff --git a/cao_blogr/alembic/versions/20220518_6da5ee6785ff.py b/cao_blogr/alembic/versions/20220518_6da5ee6785ff.py
new file mode 100644
index 0000000..c1ede17
--- /dev/null
+++ b/cao_blogr/alembic/versions/20220518_6da5ee6785ff.py
@@ -0,0 +1,26 @@
+"""init
+
+Revision ID: 6da5ee6785ff
+Revises: a35fa375a82f
+Create Date: 2022-05-18 10:33:38.599975
+
+"""
+from alembic import op
+import sqlalchemy as sa
+
+
+# revision identifiers, used by Alembic.
+revision = '6da5ee6785ff'
+down_revision = 'a35fa375a82f'
+branch_labels = None
+depends_on = None
+
+def upgrade():
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.add_column('entries', sa.Column('status', sa.Unicode(length=50), nullable=True))
+ # ### end Alembic commands ###
+
+def downgrade():
+ # ### commands auto generated by Alembic - please adjust! ###
+ op.drop_column('entries', 'status')
+ # ### end Alembic commands ###
diff --git a/cao_blogr/forms.py b/cao_blogr/forms.py
index a834436..64795ed 100644
--- a/cao_blogr/forms.py
+++ b/cao_blogr/forms.py
@@ -1,4 +1,4 @@
-from wtforms import Form, StringField, TextAreaField, SelectField
+from wtforms import Form, StringField, TextAreaField, SelectField, RadioField
from wtforms import IntegerField, PasswordField
from wtforms.validators import InputRequired, Length, Email
from wtforms.widgets import HiddenInput
@@ -13,6 +13,7 @@ class BlogCreateForm(Form):
tag = SelectField('Sous-rubrique')
author = StringField('Auteur', validators=[InputRequired(), Length(min=1, max=50)],
filters=[strip_filter])
+ status = SelectField('Statut', choices=[('brouillon','Brouillon'),('publié','Publié')])
class BlogUpdateForm(BlogCreateForm):
diff --git a/cao_blogr/models/blog_record.py b/cao_blogr/models/blog_record.py
index b9ba8b2..aab046f 100644
--- a/cao_blogr/models/blog_record.py
+++ b/cao_blogr/models/blog_record.py
@@ -26,6 +26,7 @@ class BlogRecord(Base):
topic = relationship('Topics', backref='topic_pages')
tag = Column(Unicode(25))
author = Column(Unicode(50), default='')
+ status = Column(Unicode(50), default='brouillon')
@property
def slug(self):
diff --git a/cao_blogr/services/blog_record.py b/cao_blogr/services/blog_record.py
index 3d6fc0a..3482766 100644
--- a/cao_blogr/services/blog_record.py
+++ b/cao_blogr/services/blog_record.py
@@ -11,6 +11,9 @@ class BlogRecordService(object):
def by_topic(cls, request, topic, tag):
# get posts by topic
query = request.dbsession.query(BlogRecord).filter(BlogRecord.topic_id == topic)
+ if request.authenticated_userid == None:
+ # if user is anonym, display only published posts
+ query = query.filter(BlogRecord.status == 'publié')
if tag != '':
query = query.filter(BlogRecord.tag == tag)
query = query.order_by(BlogRecord.tag, BlogRecord.title).all()
@@ -32,13 +35,16 @@ class BlogRecordService(object):
def get_last_created(cls, request):
# gest the last created posts
query = request.dbsession.query(BlogRecord).filter(BlogRecord.topic_id != 'ADM')
+ 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(5).all()
return query
@classmethod
def get_activities(cls, request):
# gest the Activities section
- query = request.dbsession.query(BlogRecord).filter(BlogRecord.topic_id != 'ADM' and BlogRecord.tag != 'Activities')
+ query = request.dbsession.query(BlogRecord).filter(BlogRecord.topic_id == 'ADM' and BlogRecord.tag == 'Activities')
query = query.order_by(sa.desc(BlogRecord.created)).first()
return query
diff --git a/cao_blogr/templates/blog_edit.jinja2 b/cao_blogr/templates/blog_edit.jinja2
index e9918d1..8918ac3 100644
--- a/cao_blogr/templates/blog_edit.jinja2
+++ b/cao_blogr/templates/blog_edit.jinja2
@@ -30,6 +30,11 @@
{{ form.author(class_='form-control') }}
+
+
+ {{ form.status(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 d391fb1..c053b13 100644
--- a/cao_blogr/templates/home.jinja2
+++ b/cao_blogr/templates/home.jinja2
@@ -111,17 +111,23 @@
DERNIERES PUBLICATIONS
-
- {% for entry in last_five %}
- -
-
- {{ entry.title }}
-
- — {{ entry.author }}, {{ entry.created.strftime("%d-%m-%Y") }}
-
-
- {% endfor %}
-
+
+ {% for entry in last_five %}
+
+ |
+ {{ entry.title }}
+ |
+ {{ entry.author }} |
+ {{ entry.created.strftime("%d-%m-%Y") }} |
+ {% if entry.status == 'brouillon' %}
+ {{ entry.status }} |
+ {% else %}
+ |
+ {% endif %}
+
+
+ {% endfor %}
+
diff --git a/cao_blogr/templates/settings.jinja2 b/cao_blogr/templates/settings.jinja2
index 7e340c1..bae12ac 100644
--- a/cao_blogr/templates/settings.jinja2
+++ b/cao_blogr/templates/settings.jinja2
@@ -27,15 +27,24 @@
{% endif%}
-
- {% for item in items %}
- -
- {{ item.edited.strftime("%d-%m-%Y") }}
-
- {{ item.title }}
-
- {% endfor %}
-
+
+ {% for entry in items %}
+
+ | {{ entry.tag }} |
+
+ {{ entry.title }}
+ |
+ {{ entry.author }} |
+ {{ entry.created.strftime("%d-%m-%Y") }} |
+ {% if entry.status == 'brouillon' %}
+ {{ entry.status }} |
+ {% else %}
+ td>
+ {% endif %}
+
+
+ {% endfor %}
+
{% endblock %}
diff --git a/cao_blogr/templates/topic.jinja2 b/cao_blogr/templates/topic.jinja2
index d39a173..6789407 100644
--- a/cao_blogr/templates/topic.jinja2
+++ b/cao_blogr/templates/topic.jinja2
@@ -11,7 +11,6 @@
{% endif%}
-
{{ liste | safe }}
{% endblock %}
diff --git a/cao_blogr/views/blog.py b/cao_blogr/views/blog.py
index a8d9cbe..4ab8c1a 100644
--- a/cao_blogr/views/blog.py
+++ b/cao_blogr/views/blog.py
@@ -150,12 +150,16 @@ def topic(request):
# lire toutes les docs du topic
items = BlogRecordService.by_topic(request, topic, tag.tag)
if items:
- liste += ''
+ liste += ''
for item in items:
- 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 += ''
+ liste += ''
+ liste += '| %s | ' % (request.route_url('blog', id=item.id, slug=item.slug), item.title)
+ liste += '%s | ' % item.author
+ liste += '%s | ' % item.created.strftime("%d-%m-%Y")
+ if item.status == 'brouillon':
+ liste += '%s | ' % item.status
+ liste += '
'
+ liste += '
'
else:
liste += ''
return {