added button to dupplicate a post
This commit is contained in:
@@ -13,7 +13,7 @@ from sqlalchemy.orm import relationship
|
|||||||
|
|
||||||
from webhelpers2.text import urlify #<- will generate slugs
|
from webhelpers2.text import urlify #<- will generate slugs
|
||||||
from webhelpers2.date import distance_of_time_in_words #<- human friendly dates
|
from webhelpers2.date import distance_of_time_in_words #<- human friendly dates
|
||||||
|
import unidecode
|
||||||
|
|
||||||
class BlogRecord(Base):
|
class BlogRecord(Base):
|
||||||
__tablename__ = 'entries'
|
__tablename__ = 'entries'
|
||||||
@@ -30,7 +30,9 @@ class BlogRecord(Base):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def slug(self):
|
def slug(self):
|
||||||
return urlify(self.title)
|
# remove ascents
|
||||||
|
title = unidecode.unidecode(self.title)
|
||||||
|
return urlify(title)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def created_in_words(self):
|
def created_in_words(self):
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ def includeme(config):
|
|||||||
config.add_route('home', '/')
|
config.add_route('home', '/')
|
||||||
config.add_route('apropos', '/apropos')
|
config.add_route('apropos', '/apropos')
|
||||||
config.add_route('blog', '/blog/{id:\d+}/{slug}')
|
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_edit', '/blog_edit/{topic}/{id}')
|
||||||
config.add_route('blog_search', '/blog_search')
|
config.add_route('blog_search', '/blog_search')
|
||||||
config.add_route('login', '/login')
|
config.add_route('login', '/login')
|
||||||
|
|||||||
@@ -14,6 +14,9 @@ class BlogRecordService(object):
|
|||||||
if request.authenticated_userid == None:
|
if request.authenticated_userid == None:
|
||||||
# if user is anonym, display only published posts
|
# if user is anonym, display only published posts
|
||||||
query = query.filter(BlogRecord.status == 'publié')
|
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 != '':
|
if tag != '':
|
||||||
query = query.filter(BlogRecord.tag == tag)
|
query = query.filter(BlogRecord.tag == tag)
|
||||||
query = query.order_by(BlogRecord.tag, BlogRecord.title).all()
|
query = query.order_by(BlogRecord.tag, BlogRecord.title).all()
|
||||||
@@ -44,7 +47,7 @@ class BlogRecordService(object):
|
|||||||
@classmethod
|
@classmethod
|
||||||
def get_activities(cls, request):
|
def get_activities(cls, request):
|
||||||
# gest the Activities section
|
# 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()
|
query = query.order_by(sa.desc(BlogRecord.created)).first()
|
||||||
return query
|
return query
|
||||||
|
|
||||||
|
|||||||
BIN
cao_blogr/static/img/Nhu-That.jpg
Normal file
BIN
cao_blogr/static/img/Nhu-That.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 27 KiB |
BIN
cao_blogr/static/img/Nhu-Vay.jpg
Normal file
BIN
cao_blogr/static/img/Nhu-Vay.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 28 KiB |
BIN
cao_blogr/static/img/nhu-that-nhu-vay-1.jpg
Normal file
BIN
cao_blogr/static/img/nhu-that-nhu-vay-1.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 20 KiB |
BIN
cao_blogr/static/img/nhu-that-nhu-vay-2.jpg
Normal file
BIN
cao_blogr/static/img/nhu-that-nhu-vay-2.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 17 KiB |
BIN
cao_blogr/static/img/nhu-that-nhu-vay-3.jpg
Normal file
BIN
cao_blogr/static/img/nhu-that-nhu-vay-3.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 20 KiB |
@@ -8,6 +8,8 @@
|
|||||||
<span class="glyphicon glyphicon-chevron-left"></span> Retour</a>
|
<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">
|
<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>
|
<span class="glyphicon glyphicon-pencil"></span> Modifier</a>
|
||||||
|
<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>
|
</p>
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@@ -18,6 +20,9 @@
|
|||||||
<p>
|
<p>
|
||||||
Auteur : <strong>{{ entry.author }}</strong><br>
|
Auteur : <strong>{{ entry.author }}</strong><br>
|
||||||
Publié le : <strong>{{ entry.created.strftime("%d-%m-%Y - %H:%M") }}</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>
|
</p>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -73,7 +73,7 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xs-4">
|
<div class="col-xs-4">
|
||||||
<p>
|
<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">
|
<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>
|
<br /><b>La Méditation SUNYATA</b>
|
||||||
</a>
|
</a>
|
||||||
@@ -82,7 +82,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-xs-4">
|
<div class="col-xs-4">
|
||||||
<p>
|
<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">
|
<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>
|
<br /><b>Le Maître Fondateur</b>
|
||||||
</a>
|
</a>
|
||||||
@@ -91,10 +91,11 @@
|
|||||||
Il s'est ensuite établi aux Etats Unis et a commencé à enseigner en 1995 dans l'Oregon. </p>
|
Il s'est ensuite établi aux Etats Unis et a commencé à enseigner en 1995 dans l'Oregon. </p>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-xs-4">
|
<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">
|
<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>
|
</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>
|
<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>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -111,7 +111,7 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<p class="text-center">
|
<p class="text-center">
|
||||||
© 2022 - Méditation SUNYATA Paris
|
© 2022 - Méditation SUNYATA Paris
|
||||||
| <a href="{{ request.route_url('blog', id=1, slug='mentions-l%25C3%25A9gales') }}">Mentions légales</a>
|
| <a href="{{ request.route_url('blog', id=1, slug='mentions-legales') }}">Mentions légales</a>
|
||||||
| <a href="{{ request.route_url('topic', topic='FR9') }}">A propos</a>
|
| <a href="{{ request.route_url('topic', topic='FR9') }}">A propos</a>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<div class="row text-center">
|
<div class="row text-center">
|
||||||
{% if request.authenticated_userid %}
|
{% if request.authenticated_userid == 'admin' %}
|
||||||
<div class="col-sm-3">
|
<div class="col-sm-3">
|
||||||
<a href=" {{request.route_url('users')}} "><span class="glyphicon glyphicon-user icone-big"></span>
|
<a href=" {{request.route_url('users')}} "><span class="glyphicon glyphicon-user icone-big"></span>
|
||||||
<h4>UTILISATEURS</h4>
|
<h4>UTILISATEURS</h4>
|
||||||
@@ -18,9 +18,8 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
|
||||||
<h2>Pages internes</h2>
|
<h2>Pages internes</h2>
|
||||||
{% if request.authenticated_userid %}
|
{% if request.authenticated_userid == 'admin' %}
|
||||||
<p>
|
<p>
|
||||||
<a href="{{ request.route_url('blog_edit', topic=topic, id='0') }}" class="btn btn-success" role="button">
|
<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>
|
<span class="glyphicon glyphicon-plus"></span> Nouveau</a>
|
||||||
@@ -39,7 +38,7 @@
|
|||||||
{% if entry.status == 'brouillon' %}
|
{% if entry.status == 'brouillon' %}
|
||||||
<td><span class="label label-danger">{{ entry.status }}</span></td>
|
<td><span class="label label-danger">{{ entry.status }}</span></td>
|
||||||
{% else %}
|
{% else %}
|
||||||
td> </td>
|
<td> </td>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|||||||
@@ -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',
|
@view_config(route_name='blog_edit',
|
||||||
renderer='cao_blogr:templates/blog_edit.jinja2', permission='view')
|
renderer='cao_blogr:templates/blog_edit.jinja2', permission='view')
|
||||||
def blog_edit(request):
|
def blog_edit(request):
|
||||||
@@ -54,8 +83,8 @@ def blog_edit(request):
|
|||||||
# modify post
|
# modify post
|
||||||
entry = BlogRecordService.by_id(request, blog_id)
|
entry = BlogRecordService.by_id(request, blog_id)
|
||||||
if not entry:
|
if not entry:
|
||||||
request.session.flash(u"Page non trouvée : %s" % blog_id, 'warning')
|
request.session.flash("Page non trouvée : %s" % blog_id, 'warning')
|
||||||
return HTTPFound(location=request.route_url('home'))
|
return HTTPFound(location=request.route_url('topic', topic=topic))
|
||||||
form = BlogUpdateForm(request.POST, entry)
|
form = BlogUpdateForm(request.POST, entry)
|
||||||
form.tag.choices = [(row.tag, row.tag_name) for row in tags]
|
form.tag.choices = [(row.tag, row.tag_name) for row in tags]
|
||||||
page_title = 'Modifier : ' + entry.title
|
page_title = 'Modifier : ' + entry.title
|
||||||
|
|||||||
@@ -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):
|
def settings(request):
|
||||||
|
|
||||||
# lire toutes les docs du topic
|
# lire toutes les docs du topic
|
||||||
@@ -196,7 +196,7 @@ def user_pwd(request):
|
|||||||
}
|
}
|
||||||
|
|
||||||
@view_config(route_name='topics',
|
@view_config(route_name='topics',
|
||||||
renderer='cao_blogr:templates/topics.jinja2', permission='manage')
|
renderer='cao_blogr:templates/topics.jinja2', permission='view')
|
||||||
def topics(request):
|
def topics(request):
|
||||||
# get all topics
|
# get all topics
|
||||||
topics = BlogRecordService.get_topics(request)
|
topics = BlogRecordService.get_topics(request)
|
||||||
@@ -206,7 +206,7 @@ def topics(request):
|
|||||||
}
|
}
|
||||||
|
|
||||||
@view_config(route_name='topic_edit',
|
@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):
|
def topic_edit(request):
|
||||||
# get topic parameters from request
|
# get topic parameters from request
|
||||||
topic = request.matchdict['topic']
|
topic = request.matchdict['topic']
|
||||||
@@ -254,7 +254,7 @@ def topic_edit(request):
|
|||||||
}
|
}
|
||||||
|
|
||||||
@view_config(route_name='tag_edit',
|
@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):
|
def tag_edit(request):
|
||||||
# get tag parameters from request
|
# get tag parameters from request
|
||||||
topic = request.matchdict['topic']
|
topic = request.matchdict['topic']
|
||||||
|
|||||||
Reference in New Issue
Block a user