added button to dupplicate a post

This commit is contained in:
2022-05-19 16:45:24 +02:00
parent 9c61a8e98b
commit f018b418c0
14 changed files with 59 additions and 19 deletions

View File

@@ -13,7 +13,7 @@ from sqlalchemy.orm import relationship
from webhelpers2.text import urlify #<- will generate slugs
from webhelpers2.date import distance_of_time_in_words #<- human friendly dates
import unidecode
class BlogRecord(Base):
__tablename__ = 'entries'
@@ -30,7 +30,9 @@ class BlogRecord(Base):
@property
def slug(self):
return urlify(self.title)
# remove ascents
title = unidecode.unidecode(self.title)
return urlify(title)
@property
def created_in_words(self):

View File

@@ -3,6 +3,7 @@ def includeme(config):
config.add_route('home', '/')
config.add_route('apropos', '/apropos')
config.add_route('blog', '/blog/{id:\d+}/{slug}')
config.add_route('blog_copy', '/blog_copy/{topic}/{id}')
config.add_route('blog_edit', '/blog_edit/{topic}/{id}')
config.add_route('blog_search', '/blog_search')
config.add_route('login', '/login')

View File

@@ -14,6 +14,9 @@ class BlogRecordService(object):
if request.authenticated_userid == None:
# if user is anonym, display only published posts
query = query.filter(BlogRecord.status == 'publié')
if request.authenticated_userid != 'admin':
# if user is not 'admin', hide admin posts
query = query.filter(BlogRecord.tag != 'admin')
if tag != '':
query = query.filter(BlogRecord.tag == tag)
query = query.order_by(BlogRecord.tag, BlogRecord.title).all()
@@ -44,7 +47,7 @@ class BlogRecordService(object):
@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

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -8,7 +8,9 @@
<span class="glyphicon glyphicon-chevron-left"></span> Retour</a>
<a href="{{ request.route_url('blog_edit', topic=entry.topic_id, id=entry.id) }}" class="btn btn-primary" role="button">
<span class="glyphicon glyphicon-pencil"></span> Modifier</a>
</p>
<a href="{{ request.route_url('blog_copy', topic=entry.topic_id, id=entry.id) }}" class="btn btn-success" role="button">
<span class="glyphicon glyphicon-duplicate"></span> Duppliquer</a>
</p>
{% endif %}
@@ -18,6 +20,9 @@
<p>
Auteur : <strong>{{ entry.author }}</strong><br>
Publié le : <strong>{{ entry.created.strftime("%d-%m-%Y - %H:%M") }}</strong><br>
{% if request.authenticated_userid %}
Topic - Tag : <strong>{{ entry.topic_id }}</strong> - <strong>{{ entry.tag }}</strong>
{% endif %}
</p>
{% endblock %}

View File

@@ -73,7 +73,7 @@
<div class="row">
<div class="col-xs-4">
<p>
<a href="{{ request.route_url('blog', id=10, slug='la-m%25C3%25A9ditation-sunyata-%253A-un-aper%25C3%25A7u') }}">
<a href="{{ request.route_url('blog', id=10, slug='la-meditation-sunyata-%253A-un-apercu') }}">
<img src="{{ request.static_url('cao_blogr:static/ni-su.jpg') }}" class="img-circle person" alt="Médiation Sunyata" width="255" height="255">
<br /><b>La Méditation SUNYATA</b>
</a>
@@ -82,7 +82,7 @@
</div>
<div class="col-xs-4">
<p>
<a href="{{ request.route_url('blog', id=2, slug='biographie-du-ma%25C3%25AEtre-thich-th%25C3%25B4ng-tri%25C3%25AAt-%25281929-2019%2529') }}">
<a href="{{ request.route_url('blog', id=2, slug='biographie-du-maitre-thich-thong-triet-%25281929-2019%2529') }}">
<img src="{{ request.static_url('cao_blogr:static/img/thong-triet.jpg') }}" class="img-circle person" alt="Maître Thông Triêt" width="255" height="255">
<br /><b>Le Maître Fondateur</b>
</a>
@@ -91,10 +91,11 @@
Il s'est ensuite établi aux Etats Unis et a commencé à enseigner en 1995 dans l'Oregon. </p>
</div>
<div class="col-xs-4">
<a href="#demo3" data-toggle="collapse">
<p>
<a href="{{ request.route_url('blog', id=22, slug='aller-droit-au-samadhi-avec-les-deux-mots-%2522parle-pas%2522') }}">
<img src="{{ request.static_url('cao_blogr:static/khong-noi.jpg') }}" class="img-circle person" alt="Khong Noi" width="255" height="255">
<br /><b>La technique « PARLE PAS »</b>
</a>
<p><b>La technique « PARLE PAS »</p></b>
<p>Depuis 2016, la technique <b>PARLE PAS</b> (ou KHÔNG NÓI) est devenu la pierre angulaire de la pratique de la méditation SUNYATA. Cette technique conduit le méditant vers la maîtrise de ses pensées à travers un processus graduel d'extinction des murmures mentaux.</p>
</div>
</div>

View File

@@ -111,7 +111,7 @@
<div class="row">
<p class="text-center">
&copy; 2022&nbsp;-&nbsp;Méditation SUNYATA Paris
&nbsp;|&nbsp;<a href="{{ request.route_url('blog', id=1, slug='mentions-l%25C3%25A9gales') }}">Mentions légales</a>
&nbsp;|&nbsp;<a href="{{ request.route_url('blog', id=1, slug='mentions-legales') }}">Mentions légales</a>
&nbsp;|&nbsp;<a href="{{ request.route_url('topic', topic='FR9') }}">A propos</a>
</p>

View File

@@ -3,7 +3,7 @@
{% block content %}
<div class="row text-center">
{% if request.authenticated_userid %}
{% if request.authenticated_userid == 'admin' %}
<div class="col-sm-3">
<a href=" {{request.route_url('users')}} "><span class="glyphicon glyphicon-user icone-big"></span>
<h4>UTILISATEURS</h4>
@@ -18,9 +18,8 @@
</div>
<div class="row">
<h2>Pages internes</h2>
{% if request.authenticated_userid %}
{% if request.authenticated_userid == 'admin' %}
<p>
<a href="{{ request.route_url('blog_edit', topic=topic, id='0') }}" class="btn btn-success" role="button">
<span class="glyphicon glyphicon-plus"></span> Nouveau</a>
@@ -39,7 +38,7 @@
{% if entry.status == 'brouillon' %}
<td><span class="label label-danger">{{ entry.status }}</span></td>
{% else %}
td> </td>
<td> </td>
{% endif %}
</td>
</tr>

View File

@@ -31,6 +31,35 @@ def blog(request):
}
@view_config(route_name='blog_copy',
renderer='cao_blogr:templates/blog_copy.jinja2', permission='view')
def blog_copy(request):
# get post parameters from request
topic = request.matchdict['topic']
blog_id = request.matchdict['id']
# get the post
entry = BlogRecordService.by_id(request, blog_id)
if not entry:
request.session.flash("Page non trouvée : %s" % blog_id, 'warning')
return HTTPFound(location=request.route_url('topic', topic=topic))
# create a new post
dup_entry = BlogRecord()
dup_entry.title = entry.title + ' - copie'
dup_entry.body = entry.body
dup_entry.topic_id = entry.topic_id
dup_entry.tag = entry.tag
dup_entry.author = entry.author
dup_entry.status = entry.status
request.dbsession.add(dup_entry)
request.session.flash("La page a été duppliquée avec succès", 'success')
return HTTPFound(location=request.route_url('topic', topic=topic))
@view_config(route_name='blog_edit',
renderer='cao_blogr:templates/blog_edit.jinja2', permission='view')
def blog_edit(request):
@@ -54,8 +83,8 @@ def blog_edit(request):
# modify post
entry = BlogRecordService.by_id(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'))
request.session.flash("Page non trouvée : %s" % blog_id, 'warning')
return HTTPFound(location=request.route_url('topic', topic=topic))
form = BlogUpdateForm(request.POST, entry)
form.tag.choices = [(row.tag, row.tag_name) for row in tags]
page_title = 'Modifier : ' + entry.title

View File

@@ -83,7 +83,7 @@ Le site "meditation-sunyata.paris"
}
@view_config(route_name='settings', renderer='cao_blogr:templates/settings.jinja2', permission='manage')
@view_config(route_name='settings', renderer='cao_blogr:templates/settings.jinja2', permission='view')
def settings(request):
# lire toutes les docs du topic
@@ -196,7 +196,7 @@ def user_pwd(request):
}
@view_config(route_name='topics',
renderer='cao_blogr:templates/topics.jinja2', permission='manage')
renderer='cao_blogr:templates/topics.jinja2', permission='view')
def topics(request):
# get all topics
topics = BlogRecordService.get_topics(request)
@@ -206,7 +206,7 @@ def topics(request):
}
@view_config(route_name='topic_edit',
renderer='cao_blogr:templates/topic_edit.jinja2', permission='manage')
renderer='cao_blogr:templates/topic_edit.jinja2', permission='view')
def topic_edit(request):
# get topic parameters from request
topic = request.matchdict['topic']
@@ -254,7 +254,7 @@ def topic_edit(request):
}
@view_config(route_name='tag_edit',
renderer='cao_blogr:templates/tag_edit.jinja2', permission='manage')
renderer='cao_blogr:templates/tag_edit.jinja2', permission='view')
def tag_edit(request):
# get tag parameters from request
topic = request.matchdict['topic']