From 91331b7355c4ac21854f01c78a0a0f998ff36401 Mon Sep 17 00:00:00 2001 From: Phuoc Cao Date: Sun, 19 Apr 2026 17:37:00 +0200 Subject: [PATCH] added replace slug by title urlified --- cao_sunyata/models/entries.py | 15 +++++++++++++++ cao_sunyata/templates/blog_search.jinja2 | 8 +++++--- cao_sunyata/templates/home.jinja2 | 8 ++++---- cao_sunyata/templates/settings.jinja2 | 2 +- cao_sunyata/views/blog.py | 15 +++++++++------ 5 files changed, 34 insertions(+), 14 deletions(-) diff --git a/cao_sunyata/models/entries.py b/cao_sunyata/models/entries.py index f897443..57c00ff 100644 --- a/cao_sunyata/models/entries.py +++ b/cao_sunyata/models/entries.py @@ -4,6 +4,8 @@ from sqlalchemy import text from .default import ( execute_query, ) +from webhelpers2.text import urlify #<- will generate slugs + def get_entries_by_topic(request, topic, tag): query = "SELECT *, strftime('%d/%m/%Y', created) AS create_date FROM entries WHERE topic_id = '{0}'".format(topic) @@ -196,3 +198,16 @@ def update_topic(request, topic, new_values): new_values['topic'] = topic query = "UPDATE topics SET %s WHERE topic = :topic;" % s execute_query(request, query, new_values) + +def get_entries(request): + query = """SELECT * FROM entries WHERE title_url IS NULL;""" + results = request.dbsession.execute(text(query)).fetchall() + return results + +def update_entries_url(request): + # lire tous les posts + entries = get_entries(request) + for entry in entries: + slug = urlify(entry.title) + query = "UPDATE entries SET title_url = :slug WHERE id = :id;" + execute_query(request, query, {'id': entry.id, 'slug': slug}) diff --git a/cao_sunyata/templates/blog_search.jinja2 b/cao_sunyata/templates/blog_search.jinja2 index 0c78449..848484b 100644 --- a/cao_sunyata/templates/blog_search.jinja2 +++ b/cao_sunyata/templates/blog_search.jinja2 @@ -8,10 +8,12 @@
-
+
- +
+ +
@@ -30,7 +32,7 @@ {% for entry in items %} - + {{ entry.title }} diff --git a/cao_sunyata/templates/home.jinja2 b/cao_sunyata/templates/home.jinja2 index 29f4776..5dc725c 100644 --- a/cao_sunyata/templates/home.jinja2 +++ b/cao_sunyata/templates/home.jinja2 @@ -85,7 +85,7 @@
{{ activity_col1 | safe }} {% if request.authenticated_userid %} -

[Modifier ce bloc]

+

[Modifier ce bloc]

{% endif %}
@@ -101,7 +101,7 @@
{{ activity_col2 | safe }} {% if request.authenticated_userid %} -

[Modifier ce bloc]

+

[Modifier ce bloc]

{% endif %}
@@ -117,7 +117,7 @@
{{ activity_col3 | safe }} {% if request.authenticated_userid %} -

[Modifier ce bloc]

+

[Modifier ce bloc]

{% endif %}
@@ -136,7 +136,7 @@ {{ entry.create_date }} - {{ entry.title }} + {{ entry.title }} {{ entry.author }} {% if entry.status != 'publié' %} diff --git a/cao_sunyata/templates/settings.jinja2 b/cao_sunyata/templates/settings.jinja2 index 02e0821..154d022 100644 --- a/cao_sunyata/templates/settings.jinja2 +++ b/cao_sunyata/templates/settings.jinja2 @@ -71,7 +71,7 @@ {{ entry.edit_date }} {{ entry.editor }} - {{ entry.title }} + {{ entry.title }} {{ entry.tag }} {% if entry.status != 'publié' %} diff --git a/cao_sunyata/views/blog.py b/cao_sunyata/views/blog.py index 7e61d7c..bab5498 100644 --- a/cao_sunyata/views/blog.py +++ b/cao_sunyata/views/blog.py @@ -111,8 +111,7 @@ def blog_edit(request): # lire les contenus correles relateds = get_entries_related(request, entry.id) page_title = 'Modifier : ' + entry.title - entry_slug = urlify(entry.title) - url_retour = request.route_url('blog', id=blog_id, slug=entry_slug) + url_retour = request.route_url('blog', id=blog_id, slug=entry.title_url) if 'form.submitted' in request.params: new_values = {} @@ -122,6 +121,7 @@ def blog_edit(request): if param == 'title': # interdire le car '/' dans le titre à cause du slug new_values['title'] = new_values['title'].replace('/','.') + new_values['title_url'] = urlify(new_values['title']) elif param == 'body': new_values['body'] = new_values['body'].strip() elif param == 'source_link': @@ -175,9 +175,13 @@ def blog_search(request): criteria = request.params['criteria'] # si afficher tous les fiches ? items = get_entries_by_criteria(request, criteria) - + + if 'form.replace' in request.params: + update_entries_url(request) + request.session.flash("Le changement a été effectué avec succès !", 'success') + return { - 'page_title': "Rechercher interne", + 'page_title': "Recherche interne", 'items': items, 'criteria': criteria, } @@ -266,9 +270,8 @@ def topic(request): liste += '
' liste += '' for item in items: - item_slug = urlify(item.title) liste += '' - liste += '' % (request.route_url('blog', id=item.id, slug=item_slug), item.title) + liste += '' % (request.route_url('blog', id=item.id, slug=item.title_url), item.title) liste += '' % item.author liste += '' % item.create_date if item.status != 'publié':
%s%s%s%s