From 0a307fc953cc85e1f42b27d515255caff38a5109 Mon Sep 17 00:00:00 2001 From: Phuoc CAO Date: Sun, 1 May 2022 09:51:03 +0200 Subject: [PATCH] added topic listing --- cao_blogr.sqlite | Bin 28672 -> 172032 bytes cao_blogr/alembic/env.py | 2 +- .../alembic/versions/20220430_85284752d1d5.py | 46 ++++ .../alembic/versions/20220501_de7d23a4b139.py | 32 +++ cao_blogr/forms.py | 10 +- cao_blogr/models/blog_record.py | 26 +- cao_blogr/routes.py | 1 + cao_blogr/services/blog_record.py | 30 +- cao_blogr/static/dao-trang.jpg | Bin 0 -> 55225 bytes cao_blogr/static/logo-zoom.jpg | Bin 0 -> 2423 bytes cao_blogr/static/theme.css | 11 +- cao_blogr/templates/404.jinja2 | 8 +- cao_blogr/templates/apropos.jinja2 | 3 +- cao_blogr/templates/blog.jinja2 | 21 +- cao_blogr/templates/blog_edit.jinja2 | 12 +- cao_blogr/templates/blog_search.jinja2 | 1 + cao_blogr/templates/home.jinja2 | 259 ++++++++++-------- cao_blogr/templates/layout.jinja2 | 20 +- cao_blogr/templates/login.jinja2 | 2 + cao_blogr/templates/topic.jinja2 | 25 ++ cao_blogr/templates/user_add.jinja2 | 2 + cao_blogr/templates/user_pwd.jinja2 | 3 +- cao_blogr/templates/users.jinja2 | 3 +- cao_blogr/views/blog.py | 22 +- cao_blogr/views/default.py | 5 +- tags.sql | 12 + topics.sql | 5 + 27 files changed, 386 insertions(+), 175 deletions(-) create mode 100644 cao_blogr/alembic/versions/20220430_85284752d1d5.py create mode 100644 cao_blogr/alembic/versions/20220501_de7d23a4b139.py create mode 100644 cao_blogr/static/dao-trang.jpg create mode 100644 cao_blogr/static/logo-zoom.jpg create mode 100644 cao_blogr/templates/topic.jinja2 create mode 100644 tags.sql create mode 100644 topics.sql diff --git a/cao_blogr.sqlite b/cao_blogr.sqlite index 4f6e422876b6264f85fa4bd72453d4a3835d9b22..220e314408d33613caf42ce08aecae509680f934 100644 GIT binary patch literal 172032 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%0Dx9XW4_>V4AKaXP#hh5#9t@k#B6^b? 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 diff --git a/cao_blogr/alembic/env.py b/cao_blogr/alembic/env.py index 9546957..cfbc519 100644 --- a/cao_blogr/alembic/env.py +++ b/cao_blogr/alembic/env.py @@ -3,7 +3,7 @@ from alembic import context from pyramid.paster import get_appsettings, setup_logging from sqlalchemy import engine_from_config -from pyramid_blogr.models.meta import Base +from cao_blogr.models.meta import Base config = context.config diff --git a/cao_blogr/alembic/versions/20220430_85284752d1d5.py b/cao_blogr/alembic/versions/20220430_85284752d1d5.py new file mode 100644 index 0000000..09bb2b7 --- /dev/null +++ b/cao_blogr/alembic/versions/20220430_85284752d1d5.py @@ -0,0 +1,46 @@ +"""init + +Revision ID: 85284752d1d5 +Revises: bbacde35234d +Create Date: 2022-04-30 14:21:08.576738 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '85284752d1d5' +down_revision = 'bbacde35234d' +branch_labels = None +depends_on = None + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('tags', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('topic', sa.Unicode(length=25), nullable=True), + sa.Column('tag', sa.Unicode(length=25), nullable=True), + sa.Column('title', sa.Unicode(length=25), nullable=False), + sa.PrimaryKeyConstraint('id', name=op.f('pk_tags')), + sa.UniqueConstraint('title', name=op.f('uq_tags_title')) + ) + op.create_index('topic_index', 'tags', ['topic', 'tag'], unique=False) + op.create_table('topics', + sa.Column('topic', sa.Unicode(length=25), nullable=False), + sa.Column('title', sa.Unicode(length=25), nullable=False), + sa.PrimaryKeyConstraint('topic', name=op.f('pk_topics')), + sa.UniqueConstraint('title', name=op.f('uq_topics_title')) + ) + op.create_index(op.f('ix_entries_tag'), 'entries', ['tag'], unique=False) + op.create_index(op.f('ix_entries_topic'), 'entries', ['topic'], unique=False) + # ### end Alembic commands ### + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_index(op.f('ix_entries_topic'), table_name='entries') + op.drop_index(op.f('ix_entries_tag'), table_name='entries') + op.drop_table('topics') + op.drop_index('topic_index', table_name='tags') + op.drop_table('tags') + # ### end Alembic commands ### diff --git a/cao_blogr/alembic/versions/20220501_de7d23a4b139.py b/cao_blogr/alembic/versions/20220501_de7d23a4b139.py new file mode 100644 index 0000000..a57afb6 --- /dev/null +++ b/cao_blogr/alembic/versions/20220501_de7d23a4b139.py @@ -0,0 +1,32 @@ +"""init + +Revision ID: de7d23a4b139 +Revises: 85284752d1d5 +Create Date: 2022-05-01 08:41:03.244262 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'de7d23a4b139' +down_revision = '85284752d1d5' +branch_labels = None +depends_on = None + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('tags', sa.Column('tag_name', sa.Unicode(length=25), nullable=False)) + op.create_unique_constraint(op.f('uq_tags_tag_name'), 'tags', ['tag_name']) + op.add_column('topics', sa.Column('topic_name', sa.Unicode(length=25), nullable=False)) + op.create_unique_constraint(op.f('uq_topics_topic_name'), 'topics', ['topic_name']) + # ### end Alembic commands ### + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_constraint(op.f('uq_topics_topic_name'), 'topics', type_='unique') + op.drop_column('topics', 'topic_name') + op.drop_constraint(op.f('uq_tags_tag_name'), 'tags', type_='unique') + op.drop_column('tags', 'tag_name') + # ### end Alembic commands ### diff --git a/cao_blogr/forms.py b/cao_blogr/forms.py index 8ad68ec..bda9f69 100644 --- a/cao_blogr/forms.py +++ b/cao_blogr/forms.py @@ -1,6 +1,6 @@ -from wtforms import Form, StringField, TextAreaField, validators +from wtforms import Form, StringField, TextAreaField, SelectField from wtforms import IntegerField, PasswordField -from wtforms.validators import InputRequired, Length +from wtforms.validators import InputRequired, DataRequired, Length from wtforms.widgets import HiddenInput strip_filter = lambda x: x.strip() if x else None @@ -10,10 +10,8 @@ class BlogCreateForm(Form): filters=[strip_filter]) body = TextAreaField('Corps du texte', validators=[InputRequired(), Length(min=1)], filters=[strip_filter]) - topic = StringField('Topic', validators=[InputRequired(), Length(min=1, max=255)], - filters=[strip_filter]) - tag = StringField('Tag', validators=[InputRequired(), Length(min=1, max=20)], - filters=[strip_filter]) + tag = SelectField('Tag', validators=[DataRequired()], id='select_tag') + class BlogUpdateForm(BlogCreateForm): id = IntegerField(widget=HiddenInput()) diff --git a/cao_blogr/models/blog_record.py b/cao_blogr/models/blog_record.py index 978306e..675ab1e 100644 --- a/cao_blogr/models/blog_record.py +++ b/cao_blogr/models/blog_record.py @@ -6,6 +6,7 @@ from sqlalchemy import ( Unicode, #<- will provide Unicode field UnicodeText, #<- will provide Unicode text field DateTime, #<- time abstraction field + Index, ) from webhelpers2.text import urlify #<- will generate slugs from webhelpers2.date import distance_of_time_in_words #<- human friendly dates @@ -15,10 +16,10 @@ class BlogRecord(Base): __tablename__ = 'entries' id = Column(Integer, primary_key=True) title = Column(Unicode(255), unique=True, nullable=False) - body = Column(UnicodeText, default=u'') - body_html = Column(UnicodeText, default=u'') - tag = Column(Unicode, default='pyramid') - topic = Column(Unicode, default='blog') + body = Column(UnicodeText, default='') + body_html = Column(UnicodeText, default='') + tag = Column(Unicode(25), index=True) + topic = Column(Unicode(25), index=True) created = Column(DateTime, default=datetime.datetime.utcnow) edited = Column(DateTime, default=datetime.datetime.utcnow) @@ -28,6 +29,19 @@ class BlogRecord(Base): @property def created_in_words(self): - return distance_of_time_in_words(self.created, - datetime.datetime.utcnow()) + return distance_of_time_in_words(self.created, datetime.datetime.utcnow()) + +class Topics(Base): + __tablename__ = 'topics' + topic = Column(Unicode(25), primary_key=True) + topic_name = Column(Unicode(25), nullable=False) + + +class Tags(Base): + __tablename__ = 'tags' + id = Column(Integer, primary_key=True) + topic = Column(Unicode(25)) + tag = Column(Unicode(25)) + tag_name = Column(Unicode(25), nullable=False) + __table_args__ = (Index('topic_index', "topic", "tag"), ) diff --git a/cao_blogr/routes.py b/cao_blogr/routes.py index 5515009..c1cce48 100644 --- a/cao_blogr/routes.py +++ b/cao_blogr/routes.py @@ -7,6 +7,7 @@ def includeme(config): config.add_route('blog_search', '/blog_search') config.add_route('login', '/login') config.add_route('logout', '/logout') + config.add_route('topic', '/topic/{topic}') config.add_route('users', '/users') config.add_route('user_add', '/user_add/{name}') config.add_route('user_pwd', '/user_pwd/{name}') diff --git a/cao_blogr/services/blog_record.py b/cao_blogr/services/blog_record.py index 4afc9d3..aa3423c 100644 --- a/cao_blogr/services/blog_record.py +++ b/cao_blogr/services/blog_record.py @@ -3,16 +3,18 @@ import datetime #<- will be used to set default dates on models from sqlalchemy import or_ from paginate_sqlalchemy import SqlalchemyOrmPage #<- provides pagination -from ..models.blog_record import BlogRecord +from ..models.blog_record import BlogRecord, Topics, Tags from markdown2 import Markdown class BlogRecordService(object): @classmethod - def all(cls, request): - query = request.dbsession.query(BlogRecord) - return query.order_by(sa.desc(BlogRecord.created)) + def by_topic(cls, request, topic): + query = request.dbsession.query(BlogRecord).join(Tags, Tags.topic == BlogRecord.topic, Tags.tag == BlogRecord.tag) + query = query.filter(BlogRecord.topic == topic) + query = query.order_by(BlogRecord.tag, BlogRecord.title).all() + return query @classmethod def by_criteria(cls, request, criteria): @@ -27,18 +29,18 @@ class BlogRecordService(object): return query.get(_id) @classmethod - def get_paginator(cls, request, page=1): + def get_last_five(cls, request): + # gest the last 5 items modified query = request.dbsession.query(BlogRecord) - query = query.order_by(sa.desc(BlogRecord.created)) - query_params = request.GET.mixed() + query = query.order_by(sa.desc(BlogRecord.edited)).limit(5).all() + return query - def url_maker(link_page): - # replace page param with values generated by paginator - query_params['page'] = link_page - return request.current_route_url(_query=query_params) - - return SqlalchemyOrmPage(query, page, items_per_page=5, - url_maker=url_maker) + @classmethod + 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() + return query @classmethod def proc_after_create(cls, request, _id): diff --git a/cao_blogr/static/dao-trang.jpg b/cao_blogr/static/dao-trang.jpg new file mode 100644 index 0000000000000000000000000000000000000000..50eb7cd2ff70412146a64e57d0f2f719ef8bfdbd GIT binary patch literal 55225 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

o}Buq{Ya>{_t{rs~1I>OMg44!k0ie#zz(G zbEMR7smP%&UTbJ{LvR^Wh8+$wS@*{6(UtDyE1lmd+J7;FO_Ge8i)8cGM;oSYcafGn zW3R6@elg`Dfx+lI)TLsMhC6`qu2A#XeBa?w+}sEQ%Q6TfMBL5nGI>6OHRPvrw!~6t z+6}Is_M5FT&7n6O&FUn7FOlJuNLDx@KjGf}^tTW62=ko}BVC^o0w@Kl?vxa7pJU1Nrt99MItzN8TgTgIY99UWKcv7EdY&*s)a#PtCM_GxV&_ z6kS}}+r-v!q^-MYR|Ji?KH|Emr}bNU{%0fpE~L5(G`5!Ikz-=2N+7^fjzArNsvaxE z*Re;O6k_220CeLS{E4k=BGW2GV4{212pa>WGlO22R(Xydmj0&n$pm# zvat-S$Z^JhTCMjZt7uoVk+*~;QzzyJ@vj+=!*`SFe`SYgR%Q{&DF_`w``GL0z|CAF zqqz<)TOP@087seV=Nt}yDzY#S%5mS;qoG#0$ZO~uSGjY`WqJB2{{R}$w6kBbL-)3_ z1|)lo*Cj1#$m^*2X~cK-bYJt((Op(YFFAp3mq32$jD2tyCa+pv+`%gEDK(#Z$dFh@V>a8Ra7~Wi5QCKPsre^ffAy_fewuIjPudQ+*lYi9lV%@HoLW zQ&)gqSzW^{22VQOqA{aw+zOGmJ+qU|c&bOH;Bx*fnm-WfUt_$1$0cNR##)@m!{-B2 zxGZ)ki1X>n{uSMcqVoP=#enPgswim$U2SD@BQaGg8mcC8JwWuRBmhU8E;^EX3e~by zO7`+3pi6AYBt)OyD~1QRYR&Nz7LqjGwMaQR!R?G!bhM+P#_5T1l{{Z#Z7Y~K+thKeC2Z&mUw_p>v zAwP63G3}i8%_gom%GXC=kcEt8ea{%E1klbH!0O>!YZYK{eK_w_N;u6~$<%HGbrP@` r^y&R8sfsTu!U$OW(Z;Kj>HrnXNBELwMQ?&AhhhH!XY-=E&SU@Cs~=$8 literal 0 HcmV?d00001 diff --git a/cao_blogr/static/logo-zoom.jpg b/cao_blogr/static/logo-zoom.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9ff4a22cbd11889f2ef23b6e97add97f974da379 GIT binary patch literal 2423 zcmchXcU)6h7RT>Pfh1%c14Iyn1nD3pR4JOVP!hzCp@%M~FWdg~mvU z6L=c|41&X92sjdnK!~$XiN^r~hm=+!?UIn89h2M|CToCK->Bo&H#9cgY;}erpfB$)U=9jr&-^?$(U0hmTS?7WP{5{r3vQM~hVlEg00Y^x#b3w2evBPl) zqzXwwdKXRdSeVRKqa>8Q&%KlaM!P0=%#s7!Eo4MA&ivOU3Q8q7i zR|M__iU6j)k`X!2RZGvb=pJ)Z5O`NqH`R^s4;WGEnX^~Ub+`hyZz}N1p9U}Y>h_n6 z`W5df&~6jhmnJw=`+XTf4}m8={>YtjM!?h1zP{ZXfsa-q7LWblS9MC^PM(s=yt|j z%-$c3((4M6)2{FSv!s^FXae=6-d$qQJsX(ai7?%bXRPzQZU14YSQEE2s$@;w&*5d= zHrpC`_|kw-ExiA)H%&eZpXNmod+}O|5ZDU@};7y+hSCz|F9gRqGNxpYDmlbaA+?X{eozkBBQS z-I!ShKL5Gh8-*XP>AMtHwECGR8%KgcWLEW!~oh1ux+~9V!_qG+G54keo5QgbiYl)um>o&%dgQ=#)gFYBt zfpyROe{&y~yLq9?PX6@KAaA9)fEy-pLQXW5w$6(i%&Q19>5ne`x(L+3{e`wm{`~SeCO+$=4VdR0SwsKQc1`ky?C8(Z7ewIsoCkT4s$BiXSOkjF?q+ai z8$F^CHlaMG=9U5BX=cYWIzQXj?UkhZ7Fg zB^|9F2-(V#z{5j1JqPi}oxiW4dG(dJJIAD}i$F@5mk3;}>0X;Bw{R)U*v01HAnrE< z%&Dtio9~NK=ASimQAx02(6>2KLOMbgYMkB@G+rNQDptL3n=`g%$84{9Qdi|%QG@ig zEbupvvnmuWbb1JIScQUtu%yKDJ&8N+kTF$(MWd%KRYn&XGD+w48n>Lze{O2{!0B{& zhEwB|M>xeykN?wRMBSpZbzk$d7z+)y)#DwBXSE5;8FkZ01wP!55Jl>(L&TcJ$*4#1Hj<|FakUYuEp*dH+2b5)J -

Pyramid Starter project

-

404 Page Not Found

+ +
+

Méditation SUNYATA Paris

+

404 Page non trouvée

+ {% endblock content %} diff --git a/cao_blogr/templates/apropos.jinja2 b/cao_blogr/templates/apropos.jinja2 index bc08d18..0162797 100644 --- a/cao_blogr/templates/apropos.jinja2 +++ b/cao_blogr/templates/apropos.jinja2 @@ -1,6 +1,7 @@ {% extends "layout.jinja2" %} {% block content %} +
@@ -29,5 +30,5 @@
- + {% endblock %} \ No newline at end of file diff --git a/cao_blogr/templates/blog.jinja2 b/cao_blogr/templates/blog.jinja2 index cc3ca06..beab5f2 100644 --- a/cao_blogr/templates/blog.jinja2 +++ b/cao_blogr/templates/blog.jinja2 @@ -1,6 +1,7 @@ {% extends "cao_blogr:templates/layout.jinja2" %} {% block content %} + {% if request.authenticated_userid %}

[ Retour ] @@ -12,20 +13,8 @@


{{ entry.body_html | safe }}


- {% if request.authenticated_userid %} -

- 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") }} -

- {% else %} -

- Créé : {{ entry.created_in_words }} -

- {% endif %} - +

+ Publié le : {{ entry.edited.strftime("%d-%m-%Y - %H:%M") }} +

+ {% endblock %} diff --git a/cao_blogr/templates/blog_edit.jinja2 b/cao_blogr/templates/blog_edit.jinja2 index 9256505..3a7cbf6 100644 --- a/cao_blogr/templates/blog_edit.jinja2 +++ b/cao_blogr/templates/blog_edit.jinja2 @@ -1,6 +1,7 @@ {% extends "cao_blogr:templates/layout.jinja2" %} {% block content %} +
{% for error in form.title.errors %} @@ -35,6 +36,15 @@ {{ form.tag(class_='form-control') }} +

+ 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") }} +


Retour @@ -50,4 +60,4 @@ - {% endblock %} +{% endblock %} diff --git a/cao_blogr/templates/blog_search.jinja2 b/cao_blogr/templates/blog_search.jinja2 index 7fca9af..0300153 100644 --- a/cao_blogr/templates/blog_search.jinja2 +++ b/cao_blogr/templates/blog_search.jinja2 @@ -1,6 +1,7 @@ {% extends "cao_blogr:templates/layout.jinja2" %} {% block content %} +
diff --git a/cao_blogr/templates/home.jinja2 b/cao_blogr/templates/home.jinja2 index f2a35e1..aa401ab 100644 --- a/cao_blogr/templates/home.jinja2 +++ b/cao_blogr/templates/home.jinja2 @@ -3,84 +3,84 @@ {% block carousel %}