diff --git a/cao_blogr.sqlite b/cao_blogr.sqlite index b37c352..aa89269 100644 Binary files a/cao_blogr.sqlite and b/cao_blogr.sqlite differ diff --git a/cao_blogr/alembic/versions/20220419_bbacde35234d.py b/cao_blogr/alembic/versions/20220419_bbacde35234d.py deleted file mode 100644 index 47b04ea..0000000 --- a/cao_blogr/alembic/versions/20220419_bbacde35234d.py +++ /dev/null @@ -1,26 +0,0 @@ -"""init - -Revision ID: bbacde35234d -Revises: e7889eab89c0 -Create Date: 2022-04-19 17:09:50.728285 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = 'bbacde35234d' -down_revision = 'e7889eab89c0' -branch_labels = None -depends_on = None - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.add_column('entries', sa.Column('body_html', sa.UnicodeText(), nullable=True)) - # ### end Alembic commands ### - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_column('entries', 'body_html') - # ### end Alembic commands ### diff --git a/cao_blogr/alembic/versions/20220419_e7889eab89c0.py b/cao_blogr/alembic/versions/20220419_e7889eab89c0.py deleted file mode 100644 index a0ac311..0000000 --- a/cao_blogr/alembic/versions/20220419_e7889eab89c0.py +++ /dev/null @@ -1,28 +0,0 @@ -"""init - -Revision ID: e7889eab89c0 -Revises: 5899f27f265f -Create Date: 2022-04-19 16:21:57.531003 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = 'e7889eab89c0' -down_revision = '5899f27f265f' -branch_labels = None -depends_on = None - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.add_column('entries', sa.Column('tag', sa.Unicode(), nullable=True)) - op.add_column('entries', sa.Column('topic', sa.Unicode(), nullable=True)) - # ### end Alembic commands ### - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_column('entries', 'topic') - op.drop_column('entries', 'tag') - # ### end Alembic commands ### diff --git a/cao_blogr/alembic/versions/20221208_7cfe6f79c819.py b/cao_blogr/alembic/versions/20221208_7cfe6f79c819.py deleted file mode 100644 index 15e047b..0000000 --- a/cao_blogr/alembic/versions/20221208_7cfe6f79c819.py +++ /dev/null @@ -1,28 +0,0 @@ -"""init - -Revision ID: 7cfe6f79c819 -Revises: b6095fa68edc -Create Date: 2022-12-08 16:30:41.529957 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '7cfe6f79c819' -down_revision = 'b6095fa68edc' -branch_labels = None -depends_on = None - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.add_column('users', sa.Column('groups', sa.Unicode(), nullable=True)) - op.drop_column('users', 'group') - # ### end Alembic commands ### - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.add_column('users', sa.Column('group', sa.VARCHAR(), nullable=True)) - op.drop_column('users', 'groups') - # ### end Alembic commands ### diff --git a/cao_blogr/alembic/versions/20221208_86d2844ace15.py b/cao_blogr/alembic/versions/20221208_86d2844ace15.py deleted file mode 100644 index 8b46a8e..0000000 --- a/cao_blogr/alembic/versions/20221208_86d2844ace15.py +++ /dev/null @@ -1,26 +0,0 @@ -"""init - -Revision ID: 86d2844ace15 -Revises: bbacde35234d -Create Date: 2022-12-08 15:53:57.291157 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = '86d2844ace15' -down_revision = 'bbacde35234d' -branch_labels = None -depends_on = None - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.add_column('users', sa.Column('group', sa.Unicode(), nullable=True)) - # ### end Alembic commands ### - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - op.drop_column('users', 'group') - # ### end Alembic commands ### diff --git a/cao_blogr/alembic/versions/20221208_b6095fa68edc.py b/cao_blogr/alembic/versions/20221208_b6095fa68edc.py deleted file mode 100644 index 0c33480..0000000 --- a/cao_blogr/alembic/versions/20221208_b6095fa68edc.py +++ /dev/null @@ -1,26 +0,0 @@ -"""init - -Revision ID: b6095fa68edc -Revises: 86d2844ace15 -Create Date: 2022-12-08 16:22:49.206993 - -""" -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision = 'b6095fa68edc' -down_revision = '86d2844ace15' -branch_labels = None -depends_on = None - -def upgrade(): - # ### commands auto generated by Alembic - please adjust! ### - pass - # ### end Alembic commands ### - -def downgrade(): - # ### commands auto generated by Alembic - please adjust! ### - pass - # ### end Alembic commands ### diff --git a/cao_blogr/alembic/versions/20181223_5899f27f265f.py b/cao_blogr/alembic/versions/20230121_d335bb2cb9da.py similarity index 65% rename from cao_blogr/alembic/versions/20181223_5899f27f265f.py rename to cao_blogr/alembic/versions/20230121_d335bb2cb9da.py index 0b31f9a..c01a3df 100644 --- a/cao_blogr/alembic/versions/20181223_5899f27f265f.py +++ b/cao_blogr/alembic/versions/20230121_d335bb2cb9da.py @@ -1,8 +1,8 @@ """init -Revision ID: 5899f27f265f +Revision ID: d335bb2cb9da Revises: -Create Date: 2018-12-23 16:39:13.677058 +Create Date: 2023-01-21 08:05:36.719719 """ from alembic import op @@ -10,21 +10,18 @@ import sqlalchemy as sa # revision identifiers, used by Alembic. -revision = '5899f27f265f' +revision = 'd335bb2cb9da' down_revision = None branch_labels = None depends_on = None def upgrade(): # ### commands auto generated by Alembic - please adjust! ### - op.create_table('entries', + op.create_table('tags', sa.Column('id', sa.Integer(), nullable=False), - sa.Column('title', sa.Unicode(length=255), nullable=False), - sa.Column('body', sa.UnicodeText(), nullable=True), - sa.Column('created', sa.DateTime(), nullable=True), - sa.Column('edited', sa.DateTime(), nullable=True), - sa.PrimaryKeyConstraint('id', name=op.f('pk_entries')), - sa.UniqueConstraint('title', name=op.f('uq_entries_title')) + sa.Column('tag', sa.Unicode(length=25), nullable=True), + sa.Column('tag_name', sa.Unicode(length=25), nullable=False), + sa.PrimaryKeyConstraint('id', name=op.f('pk_tags')) ) op.create_table('users', sa.Column('id', sa.Integer(), nullable=False), @@ -34,10 +31,25 @@ def upgrade(): sa.PrimaryKeyConstraint('id', name=op.f('pk_users')), sa.UniqueConstraint('name', name=op.f('uq_users_name')) ) + op.create_table('entries', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('title', sa.Unicode(length=255), nullable=False), + sa.Column('body', sa.UnicodeText(), nullable=True), + sa.Column('created', sa.DateTime(), nullable=True), + sa.Column('creator', sa.Unicode(length=50), nullable=True), + sa.Column('edited', sa.DateTime(), nullable=True), + sa.Column('editor', sa.Unicode(length=50), nullable=True), + sa.Column('tag', sa.Unicode(length=25), nullable=True), + sa.Column('author', sa.Unicode(length=50), nullable=True), + sa.Column('status', sa.Unicode(length=50), nullable=True), + sa.PrimaryKeyConstraint('id', name=op.f('pk_entries')), + sa.UniqueConstraint('title', name=op.f('uq_entries_title')) + ) # ### end Alembic commands ### def downgrade(): # ### commands auto generated by Alembic - please adjust! ### - op.drop_table('users') op.drop_table('entries') + op.drop_table('users') + op.drop_table('tags') # ### end Alembic commands ### diff --git a/cao_blogr/models/blog_record.py b/cao_blogr/models/blog_record.py index 978306e..a889358 100644 --- a/cao_blogr/models/blog_record.py +++ b/cao_blogr/models/blog_record.py @@ -15,12 +15,14 @@ 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') - created = Column(DateTime, default=datetime.datetime.utcnow) - edited = Column(DateTime, default=datetime.datetime.utcnow) + body = Column(UnicodeText, default='') + created = Column(DateTime, default=datetime.datetime.now) + creator = Column(Unicode(50), default='') + edited = Column(DateTime, default=datetime.datetime.now) + editor = Column(Unicode(50), default='') + tag = Column(Unicode(25)) + author = Column(Unicode(50), default='') + status = Column(Unicode(50), default='brouillon') @property def slug(self): @@ -31,3 +33,8 @@ class BlogRecord(Base): return distance_of_time_in_words(self.created, datetime.datetime.utcnow()) + +class Tags(Base): + __tablename__ = 'tags' + id = Column(Integer, primary_key=True) + tag = Column(Unicode(25)) diff --git a/cao_blogr/services/blog_record.py b/cao_blogr/services/blog_record.py index 2f4cd4b..a3fe4b0 100644 --- a/cao_blogr/services/blog_record.py +++ b/cao_blogr/services/blog_record.py @@ -3,7 +3,7 @@ import datetime #<- will be used to set default dates on models from sqlalchemy import or_ from ..models.blog_record import BlogRecord -from markdown2 import Markdown + class BlogRecordService(object): @@ -32,26 +32,3 @@ class BlogRecordService(object): query = query.order_by(sa.desc(BlogRecord.created)).limit(10).all() return query - - @classmethod - def proc_after_create(cls, request, _id): - entry = request.dbsession.query(BlogRecord).get(_id) - # set default values - if entry.tag == '': - entry.tag = 'pyramid' - if entry.topic == '': - entry.topic = 'blog' - # convertir mardown en HTML - markdowner = Markdown() - entry.body_html = markdowner.convert(entry.body) - return - - @classmethod - def proc_after_update(cls, request, _id): - entry = request.dbsession.query(BlogRecord).get(_id) - entry.edited = datetime.datetime.now() - # convertir mardown en HTML - markdowner = Markdown() - entry.body_html = markdowner.convert(entry.body) - return - diff --git a/cao_blogr/templates/blog.jinja2 b/cao_blogr/templates/blog.jinja2 index cc3ca06..ceb8a8d 100644 --- a/cao_blogr/templates/blog.jinja2 +++ b/cao_blogr/templates/blog.jinja2 @@ -10,7 +10,7 @@ {% endif %}
{{ entry.body_html | safe }}
+{{ body_html | safe }}
diff --git a/cao_blogr/templates/home.jinja2 b/cao_blogr/templates/home.jinja2 index 7e8789b..88ca4a4 100644 --- a/cao_blogr/templates/home.jinja2 +++ b/cao_blogr/templates/home.jinja2 @@ -19,6 +19,8 @@
Aucun post trouvé
{% endfor %} diff --git a/cao_blogr/views/blog.py b/cao_blogr/views/blog.py index 0e89e72..25041f0 100644 --- a/cao_blogr/views/blog.py +++ b/cao_blogr/views/blog.py @@ -3,7 +3,8 @@ from pyramid.httpexceptions import HTTPNotFound, HTTPFound from ..models.blog_record import BlogRecord from ..services.blog_record import BlogRecordService from ..forms import BlogCreateForm, BlogUpdateForm, BlogSearchForm - +import markdown +import datetime #<- will be used to set default dates on models @view_config(route_name='blog', renderer='cao_blogr:templates/blog.jinja2') @@ -12,22 +13,23 @@ def blog(request): blog_id = request.matchdict['id'] entry = BlogRecordService.by_id(request, blog_id) - # just created ? convert body to html - if entry.body_html == '': - BlogRecordService.proc_after_create(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')) + + # insèrer le path de static/img + body = entry.body.replace('static/', "%s/static/" % request.application_url) + # convertir de markdown en HTML + body_html = markdown.markdown(body, extensions=['footnotes']) + return { 'page_title': entry.title, - 'entry': entry + 'entry': entry, + 'body_html': body_html, } -@view_config(route_name='blog_edit', - renderer='cao_blogr:templates/blog_edit.jinja2', - permission='view') +@view_config(route_name='blog_edit', renderer='cao_blogr:templates/blog_edit.jinja2', permission='view') def blog_edit(request): # get post id from request blog_id = request.matchdict['id'] @@ -51,15 +53,14 @@ def blog_edit(request): if 'form.submitted' in request.params and form.validate(): if blog_id == '0': form.populate_obj(entry) + import pdb;pdb.set_trace() request.dbsession.add(entry) return HTTPFound(location=request.route_url('home')) else: del form.id # SECURITY: prevent overwriting of primary key form.populate_obj(entry) - - # after update procedure - BlogRecordService.proc_after_update(request, blog_id) + entry.edited = datetime.datetime.now() return HTTPFound(location=request.route_url('blog', id=entry.id, slug=entry.slug)) diff --git a/setup.py b/setup.py index 7a5861c..8320403 100644 --- a/setup.py +++ b/setup.py @@ -24,7 +24,7 @@ requires = [ 'wtforms', # form library 2.2.1 'webhelpers2', # various web building related helpers 2.0 'passlib', - 'markdown2', + 'markdown', ] tests_require = [