From 62371401c5812351a7b89e88ae8f72f1b173ac1d Mon Sep 17 00:00:00 2001 From: Phuoc CAO Date: Wed, 18 May 2022 14:38:30 +0200 Subject: [PATCH] added status to blog post --- .../alembic/versions/20220518_6da5ee6785ff.py | 26 +++++++++++++++++ cao_blogr/forms.py | 3 +- cao_blogr/models/blog_record.py | 1 + cao_blogr/services/blog_record.py | 8 +++++- cao_blogr/templates/blog_edit.jinja2 | 5 ++++ cao_blogr/templates/home.jinja2 | 28 +++++++++++-------- cao_blogr/templates/settings.jinja2 | 27 ++++++++++++------ cao_blogr/templates/topic.jinja2 | 1 - cao_blogr/views/blog.py | 14 ++++++---- 9 files changed, 85 insertions(+), 28 deletions(-) create mode 100644 cao_blogr/alembic/versions/20220518_6da5ee6785ff.py 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 %} + + + + + {% if entry.status == 'brouillon' %} + + {% else %} + + {% endif %} + + + {% endfor %} +
+ {{ entry.title }} + {{ entry.author }}{{ entry.created.strftime("%d-%m-%Y") }}{{ entry.status }}
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 entry in items %} + + + + + + {% if entry.status == 'brouillon' %} + + {% else %} + td> + {% endif %} + + + {% endfor %} +
{{ entry.tag }} + {{ entry.title }} + {{ entry.author }}{{ entry.created.strftime("%d-%m-%Y") }}{{ entry.status }}
{% 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 += '