Compare commits

...

8 Commits

Author SHA1 Message Date
phuoc 7b686b9e27 minor enhancements 2026-06-25 11:04:53 +02:00
phuoc 7f0307ec00 h1 to h6 colors are red 2026-06-09 14:56:59 +02:00
phuoc 3b3361d329 fixed urlify the title in update 2026-06-09 12:13:19 +02:00
phuoc 9c663daefc moved urlify the title in update 2026-06-09 11:55:51 +02:00
phuoc cfa58e0859 fixed title_url is None when create new entry 2026-06-09 11:25:23 +02:00
phuoc da6216e92b changed font weight 2026-06-04 17:54:47 +02:00
phuoc ff9d226c9e new footer 2026-05-31 10:18:15 +02:00
phuoc a07618d4a3 fixed sending contact form 2026-05-31 09:51:25 +02:00
12 changed files with 46 additions and 22 deletions
+10 -4
View File
@@ -46,7 +46,8 @@ def get_entries_last_viewed(request):
return results return results
def get_entries_most_viewed(request): def get_entries_most_viewed(request):
query = """SELECT strftime('%d/%m/%Y', view_date) AS date_viewed, title, view_count query = """SELECT strftime('%d/%m/%Y', view_date) AS date_viewed, strftime('%d/%m/%Y', created) AS create_date, \
title, view_count
FROM entries WHERE topic_id <> '_admin' ORDER BY view_count DESC LIMIT 20;""" FROM entries WHERE topic_id <> '_admin' ORDER BY view_count DESC LIMIT 20;"""
results = request.dbsession.execute(text(query),).fetchall() results = request.dbsession.execute(text(query),).fetchall()
return results return results
@@ -139,6 +140,10 @@ def delete_topic(request, topic):
execute_query(request, query, {'topic': topic}) execute_query(request, query, {'topic': topic})
def update_entry(request, blog_id, new_values): def update_entry(request, blog_id, new_values):
# si le title a changé, modifier le title_url en urlify le nouveau titre
if 'title' in new_values:
new_values['title_url'] = urlify(new_values['title'].replace("'","-"))
# formater les champs # formater les champs
s = '' s = ''
for param in new_values.keys(): for param in new_values.keys():
@@ -149,14 +154,15 @@ def update_entry(request, blog_id, new_values):
# import pdb;pdb.set_trace() # import pdb;pdb.set_trace()
if blog_id == '0': if blog_id == '0':
query = """INSERT INTO entries (title, body, created, edited, topic_id, tag, author, status, creator, editor) query = """INSERT INTO entries (title, body, created, edited, topic_id, tag, author, status, creator, editor, title_url)
VALUES ('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', '{8}', '{8}')""".format( VALUES ('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', '{8}', '{9}', '{10}')""".format(
new_values['title'].replace("'","''"), new_values['body'].replace("'","''"), new_values['created'], new_values['created'], new_values['title'].replace("'","''"), new_values['body'].replace("'","''"), new_values['created'], new_values['created'],
new_values['topic_id'], new_values['tag'], new_values['author'], new_values['status'], new_values['topic_id'], new_values['tag'], new_values['author'], new_values['status'],
new_values['editor'], new_values['editor'],) new_values['editor'], new_values['editor'], urlify(new_values['title'].replace("'","-")))
else: else:
new_values['id'] = blog_id new_values['id'] = blog_id
query = "UPDATE entries SET %s WHERE id = :id;" % s query = "UPDATE entries SET %s WHERE id = :id;" % s
execute_query(request, query, new_values) execute_query(request, query, new_values)
def update_tag(request, id, new_values): def update_tag(request, id, new_values):
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

+2 -4
View File
@@ -83,7 +83,7 @@
--bs-body-font-size: 0.875rem; --bs-body-font-size: 0.875rem;
--bs-body-font-weight: 400; --bs-body-font-weight: 400;
--bs-body-line-height: 1.5; --bs-body-line-height: 1.5;
--bs-body-color: #768b9e; --bs-body-color: #232324;
--bs-body-color-rgb: 118, 139, 158; --bs-body-color-rgb: 118, 139, 158;
--bs-body-bg: #fff; --bs-body-bg: #fff;
--bs-body-bg-rgb: 255, 255, 255; --bs-body-bg-rgb: 255, 255, 255;
@@ -97,7 +97,7 @@
--bs-tertiary-color-rgb: 118, 139, 158; --bs-tertiary-color-rgb: 118, 139, 158;
--bs-tertiary-bg: #f6f8fa; --bs-tertiary-bg: #f6f8fa;
--bs-tertiary-bg-rgb: 246, 248, 250; --bs-tertiary-bg-rgb: 246, 248, 250;
--bs-heading-color: #3a4752; --bs-heading-color: #df4937;
--bs-link-color: #0d6efd; --bs-link-color: #0d6efd;
--bs-link-color-rgb: 41, 82, 255; --bs-link-color-rgb: 41, 82, 255;
--bs-link-decoration: underline; --bs-link-decoration: underline;
@@ -227,7 +227,6 @@ h6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 {
h1, .h1 { h1, .h1 {
font-size: calc(1.34375rem + 1.125vw); font-size: calc(1.34375rem + 1.125vw);
color: #df4937
} }
@media (min-width: 1200px) { @media (min-width: 1200px) {
h1, .h1 { h1, .h1 {
@@ -255,7 +254,6 @@ h3, .h3 {
h4, .h4 { h4, .h4 {
font-size: calc(1.25625rem + 0.075vw); font-size: calc(1.25625rem + 0.075vw);
color: #df4937
} }
@media (min-width: 1200px) { @media (min-width: 1200px) {
h4, .h4 { h4, .h4 {
+1 -3
View File
@@ -14,9 +14,7 @@
<div class="mb-3"> <div class="mb-3">
<label class="form-label required-field" for="body">Corps du texte</label> <label class="form-label required-field" for="body">Corps du texte</label>
<textarea class="form-control monospace-font" id="body" name="body" required rows="20" cols="35"> <textarea class="form-control monospace-font" id="body" name="body" required rows="20" cols="35">{{ entry.body }}</textarea>
{{ entry.body }}
</textarea>
</div> </div>
<div class="mb-3"> <div class="mb-3">
+1 -1
View File
@@ -6,7 +6,7 @@
<div class="col-lg-8"> <div class="col-lg-8">
<div class="card mb-0"> <div class="card mb-0">
<div class="card-body"> <div class="card-body">
<form action="{{ request.route_url('home') }}" method="POST" class="form"> <form action="{{ request.route_url('contact') }}" method="POST" class="form">
<div class="mb-3"> <div class="mb-3">
<label for="username" class="form-label required-field">Nom et prénom - Tên họ</label> <label for="username" class="form-label required-field">Nom et prénom - Tên họ</label>
<input type="text" class="form-control" name="name" value="{{name}}"required> <input type="text" class="form-control" name="name" value="{{name}}"required>
+19 -1
View File
@@ -240,7 +240,25 @@
<!-- Footer --> <!-- Footer -->
<div class="py-6 px-6 text-center"> <div class="py-6 px-6 text-center">
<p class="mb-0 fs-4">© 2022-2024 - Méditation SUNYATA Paris - Hội Thiền Tánh Không Paris</p> <p class="mb-0 fs-4">
© 2022-2024 - Méditation SUNYATA Paris<br>
Hội Thiền Tánh Không Paris<br>
<span><i class="ti ti-mail fs-6"></i></span>
<a class="sidebar-link" href="{{ request.route_url('contact') }}" aria-expanded="false">
<span class="hide-menu">Contactez nous - Liên hệ</span>
</a>
</p>
{% if request.authenticated_userid %}
<p class="mb-0 fs-4">
<a class="sidebar-link" href="https://www.ovhcloud.com/fr/mail/" aria-expanded="false">
<span class="hide-menu">SUNYATA Paris webmail</span>
</a><br>
Zoom claim host key : 310069
</p>
{% endif %}
<br>
<br>
</div> </div>
</div> </div>
</div> </div>
+5
View File
@@ -3,6 +3,11 @@
{% block content %} {% block content %}
<div class="card mb-0"> <div class="card mb-0">
<div class="card-body">
<p class="text-danger">
Attention ! Les traitements ci-dessous modifient la base de données de manière irréversible. A lancer avec une extrême prudence.
</p>
</div>
<div class="card-body"> <div class="card-body">
<form id="search-form" class="form-horizontal" role="form" action="/maintenance" method="post"> <form id="search-form" class="form-horizontal" role="form" action="/maintenance" method="post">
-2
View File
@@ -39,14 +39,12 @@
</a> </a>
</li> </li>
{% endif %} {% endif %}
{% if request.client_addr == '127.0.0.1' %}
<li class="sidebar-item mb-3"> <li class="sidebar-item mb-3">
<a class="sidebar-link" href=" {{request.route_url('maintenance') }} " aria-expanded="false"> <a class="sidebar-link" href=" {{request.route_url('maintenance') }} " aria-expanded="false">
<span><i class="ti ti-server fs-6"></i></span> <span><i class="ti ti-server fs-6"></i></span>
<span class="hide-menu">Maintenance BD</span> <span class="hide-menu">Maintenance BD</span>
</a> </a>
</li> </li>
{% endif %}
</ul> </ul>
</nav> </nav>
</div> </div>
+1 -1
View File
@@ -46,7 +46,7 @@
<div class="accordion-body"> <div class="accordion-body">
<p> <p>
{% for entry in most_viewed %} {% for entry in most_viewed %}
{{ entry.view_count }} - {{ entry.title }} - {{ entry.date_viewed }}<br> {{ entry.view_count }} - {{ entry.title }} - Vu le {{ entry.date_viewed }} - Créé le {{ entry.create_date }}<br>
{% endfor %} {% endfor %}
</p> </p>
</div> </div>
+1 -3
View File
@@ -28,9 +28,7 @@
<div class="mb-3"> <div class="mb-3">
<label class="form-label required-field" for="topic_quote">Citation</label> <label class="form-label required-field" for="topic_quote">Citation</label>
<textarea class="form-control monospace-font" id="topic_quote" name="topic_quote" required rows="10" cols="35"> <textarea class="form-control monospace-font" id="topic_quote" name="topic_quote" required rows="10" cols="35">{{ entry.topic_quote }}</textarea>
{{ entry.topic_quote }}
</textarea>
</div> </div>
<div class="mb-3"> <div class="mb-3">
+5 -3
View File
@@ -6,7 +6,6 @@ import markdown
import datetime #<- will be used to set default dates on models import datetime #<- will be used to set default dates on models
from ..models.entries import * from ..models.entries import *
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
from urllib.parse import urlparse from urllib.parse import urlparse
@@ -131,13 +130,13 @@ def blog_edit(request):
if 'form.submitted' in request.params: if 'form.submitted' in request.params:
new_values = {} new_values = {}
# import pdb; pdb.set_trace()
for param in entry.keys(): for param in entry.keys():
if param in request.params and request.params[param] != entry[param]: if param in request.params and request.params[param] != entry[param]:
new_values[param] = request.params[param] new_values[param] = request.params[param]
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'].replace("'","-"))
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':
@@ -164,7 +163,10 @@ def blog_edit(request):
new_values['editor'] = request.authenticated_userid new_values['editor'] = request.authenticated_userid
new_values['edited'] = datetime.datetime.now() new_values['edited'] = datetime.datetime.now()
update_entry(request, blog_id, new_values) update_entry(request, blog_id, new_values)
return HTTPFound(location=url_retour) request.session.flash("La page a été modifiée avec succès.", 'success')
# retour
return HTTPFound(location=url_retour)
if 'form.deleted' in request.params: if 'form.deleted' in request.params:
delete_entry(request, blog_id) delete_entry(request, blog_id)
+1
View File
@@ -162,6 +162,7 @@ def contact(request):
# verification reCaptcha ? # verification reCaptcha ?
ok, erreur = captcha_validate(response, request.remote_addr, request.registry.settings['secret_key']) ok, erreur = captcha_validate(response, request.remote_addr, request.registry.settings['secret_key'])
# import pdb;pdb.set_trace()
if ok and comments != '': if ok and comments != '':
# no, message is not spam, send it # no, message is not spam, send it
body = """ body = """