added replace slug by title urlified

This commit is contained in:
Phuoc Cao
2026-04-19 17:37:00 +02:00
parent fee9aa2ac1
commit 91331b7355
5 changed files with 34 additions and 14 deletions
+15
View File
@@ -4,6 +4,8 @@ from sqlalchemy import text
from .default import ( from .default import (
execute_query, execute_query,
) )
from webhelpers2.text import urlify #<- will generate slugs
def get_entries_by_topic(request, topic, tag): 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) 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 new_values['topic'] = topic
query = "UPDATE topics SET %s WHERE topic = :topic;" % s query = "UPDATE topics SET %s WHERE topic = :topic;" % s
execute_query(request, query, new_values) 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})
+4 -2
View File
@@ -8,9 +8,11 @@
<form id="search-form" class="form-horizontal" role="form" action="/blog_search" method="post"> <form id="search-form" class="form-horizontal" role="form" action="/blog_search" method="post">
<div class="mb-3"> <div class="mb-3">
<div class="input-group mb-3"> <div class="input-group mb-3">
<input type="text" class="form-control" name="criteria"> <input type="text" class="form-control" name="criteria">
<button class="btn btn-primary" type="submit" name="form.submitted">Rechercher</button> <button class="btn btn-primary" type="submit" name="form.submitted">Rechercher</button>
</div>
<button class="btn btn-warning" type="submit" name="form.replace">Remplacer title_url</button>
</div> </div>
</form> </form>
@@ -30,7 +32,7 @@
{% for entry in items %} {% for entry in items %}
<tr> <tr>
<td> <td>
<a href="{{ request.route_url('blog', id=entry.id, slug='slug') }}"> <a href="{{ request.route_url('blog', id=entry.id, slug=entry.title_url) }}">
{{ entry.title }} {{ entry.title }}
</a> </a>
</td> </td>
+4 -4
View File
@@ -85,7 +85,7 @@
<div class="card-body text-center p-3"> <div class="card-body text-center p-3">
{{ activity_col1 | safe }} {{ activity_col1 | safe }}
{% if request.authenticated_userid %} {% if request.authenticated_userid %}
<p class="text-left fs-2"> <a href="{{ request.route_url('blog', id=32, slug='slug') }}">[Modifier ce bloc]</a></p> <p class="text-left fs-2"> <a href="{{ request.route_url('blog', id=32, slug='activity_col1') }}">[Modifier ce bloc]</a></p>
{% endif %} {% endif %}
</div> </div>
</div> </div>
@@ -101,7 +101,7 @@
<div class="card-body text-center p-3"> <div class="card-body text-center p-3">
{{ activity_col2 | safe }} {{ activity_col2 | safe }}
{% if request.authenticated_userid %} {% if request.authenticated_userid %}
<p class="text-left fs-2"> <a href="{{ request.route_url('blog', id=40, slug='slug') }}">[Modifier ce bloc]</a></p> <p class="text-left fs-2"> <a href="{{ request.route_url('blog', id=40, slug='activity_col2') }}">[Modifier ce bloc]</a></p>
{% endif %} {% endif %}
</div> </div>
</div> </div>
@@ -117,7 +117,7 @@
<div class="card-body text-center p-3"> <div class="card-body text-center p-3">
{{ activity_col3 | safe }} {{ activity_col3 | safe }}
{% if request.authenticated_userid %} {% if request.authenticated_userid %}
<p class="text-left fs-2"> <a href="{{ request.route_url('blog', id=207, slug='slug') }}">[Modifier ce bloc]</a></p> <p class="text-left fs-2"> <a href="{{ request.route_url('blog', id=207, slug='activity_col3') }}">[Modifier ce bloc]</a></p>
{% endif %} {% endif %}
</div> </div>
@@ -136,7 +136,7 @@
<tr> <tr>
<td>{{ entry.create_date }}</td> <td>{{ entry.create_date }}</td>
<td> <td>
<a href="{{ request.route_url('blog', id=entry.id, slug='slug') }}">{{ entry.title }}</a> <a href="{{ request.route_url('blog', id=entry.id, slug='entry.title_url') }}">{{ entry.title }}</a>
</td> </td>
<td>{{ entry.author }}</td> <td>{{ entry.author }}</td>
{% if entry.status != 'publié' %} {% if entry.status != 'publié' %}
+1 -1
View File
@@ -71,7 +71,7 @@
<td>{{ entry.edit_date }}</td> <td>{{ entry.edit_date }}</td>
<td>{{ entry.editor }}</td> <td>{{ entry.editor }}</td>
<td> <td>
<a href="{{ request.route_url('blog', id=entry.id, slug='slug') }}">{{ entry.title }}</a> <a href="{{ request.route_url('blog', id=entry.id, slug='entry.title_url') }}">{{ entry.title }}</a>
</td> </td>
<td>{{ entry.tag }}</td> <td>{{ entry.tag }}</td>
{% if entry.status != 'publié' %} {% if entry.status != 'publié' %}
+8 -5
View File
@@ -111,8 +111,7 @@ def blog_edit(request):
# lire les contenus correles # lire les contenus correles
relateds = get_entries_related(request, entry.id) relateds = get_entries_related(request, entry.id)
page_title = 'Modifier : ' + entry.title page_title = 'Modifier : ' + entry.title
entry_slug = urlify(entry.title) url_retour = request.route_url('blog', id=blog_id, slug=entry.title_url)
url_retour = request.route_url('blog', id=blog_id, slug=entry_slug)
if 'form.submitted' in request.params: if 'form.submitted' in request.params:
new_values = {} new_values = {}
@@ -122,6 +121,7 @@ def blog_edit(request):
if param == 'title': if param == 'title':
# interdire le car '/' dans le titre à cause du slug # interdire le car '/' dans le titre à cause du slug
new_values['title'] = new_values['title'].replace('/','.') new_values['title'] = new_values['title'].replace('/','.')
new_values['title_url'] = urlify(new_values['title'])
elif param == 'body': elif param == 'body':
new_values['body'] = new_values['body'].strip() new_values['body'] = new_values['body'].strip()
elif param == 'source_link': elif param == 'source_link':
@@ -176,8 +176,12 @@ def blog_search(request):
# si afficher tous les fiches ? # si afficher tous les fiches ?
items = get_entries_by_criteria(request, criteria) 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 { return {
'page_title': "Rechercher interne", 'page_title': "Recherche interne",
'items': items, 'items': items,
'criteria': criteria, 'criteria': criteria,
} }
@@ -266,9 +270,8 @@ def topic(request):
liste += '<div><table class="table table-sm ms-4 mb-4">' liste += '<div><table class="table table-sm ms-4 mb-4">'
liste += '<tbody class="table-group-divider">' liste += '<tbody class="table-group-divider">'
for item in items: for item in items:
item_slug = urlify(item.title)
liste += '<tr>' liste += '<tr>'
liste += '<td><a href="%s">%s</a></td>' % (request.route_url('blog', id=item.id, slug=item_slug), item.title) liste += '<td><a href="%s">%s</a></td>' % (request.route_url('blog', id=item.id, slug=item.title_url), item.title)
liste += '<td>%s</td>' % item.author liste += '<td>%s</td>' % item.author
liste += '<td>%s</td>' % item.create_date liste += '<td>%s</td>' % item.create_date
if item.status != 'publié': if item.status != 'publié':