added stats page

This commit is contained in:
2026-05-03 10:21:40 +02:00
parent b64cfc7cef
commit fbbb04da27
5 changed files with 76 additions and 40 deletions
+15 -6
View File
@@ -39,12 +39,21 @@ def get_entries_by_id(request, _id):
results = request.dbsession.execute(text(query), {'id':_id}).first() results = request.dbsession.execute(text(query), {'id':_id}).first()
return results return results
def get_entries_count_by_topic(request): def get_entries_last_viewed(request):
query = """SELECT topics.topic_name, tags.tag_name, count(entries.id) as count, strftime('%d/%m/%Y', created) AS create_date query = """SELECT strftime('%d/%m/%Y', view_date) AS last_viewed, title, view_count
FROM entries FROM entries WHERE topic_id <> '_admin' ORDER BY view_date DESC LIMIT 20;"""
INNER JOIN topics ON entries.topic_id = topics.topic results = request.dbsession.execute(text(query),).fetchall()
INNER JOIN tags ON entries.tag = tags.tag return results
GROUP BY entries.tag ORDER BY entries.topic_id, entries.tag;"""
def get_entries_most_viewed(request):
query = """SELECT strftime('%d/%m/%Y', view_date) AS date_viewed, title, view_count
FROM entries WHERE topic_id <> '_admin' ORDER BY view_count DESC LIMIT 20;"""
results = request.dbsession.execute(text(query),).fetchall()
return results
def get_entries_last_created(request):
query = """SELECT strftime('%d/%m/%Y', created) AS last_created, title, view_count
FROM entries WHERE topic_id <> '_admin' ORDER BY created DESC LIMIT 20;"""
results = request.dbsession.execute(text(query),).fetchall() results = request.dbsession.execute(text(query),).fetchall()
return results return results
+2
View File
@@ -188,6 +188,8 @@
{% endif %} {% endif %}
<li><a class="dropdown-item" href="{{request.route_url('settings')}}"> <li><a class="dropdown-item" href="{{request.route_url('settings')}}">
<i class="ti ti-settings fs-6"></i> Paramètres</a></li> <i class="ti ti-settings fs-6"></i> Paramètres</a></li>
<li><a class="dropdown-item" href="{{request.route_url('stats_pages')}}">
<i class="ti ti-chart-bar fs-6"></i> Statistiques</a></li>
<li><a class="dropdown-item" href="{{request.route_url('blog_search')}}"> <li><a class="dropdown-item" href="{{request.route_url('blog_search')}}">
<i class="ti ti-search fs-6"></i> Recherche</a></li> <i class="ti ti-search fs-6"></i> Recherche</a></li>
<li><a class="dropdown-item" href="{{request.route_url('logout')}}"> <li><a class="dropdown-item" href="{{request.route_url('logout')}}">
-6
View File
@@ -25,12 +25,6 @@
<span class="hide-menu">Pages internes</span> <span class="hide-menu">Pages internes</span>
</a> </a>
</li> </li>
<li class="sidebar-item mb-3">
<a class="sidebar-link" href=" {{request.route_url('stats_pages') }} " aria-expanded="false">
<span><i class="ti ti-chart-bar fs-6"></i></span>
<span class="hide-menu">Statistiques</span>
</a>
</li>
<li class="sidebar-item mb-3"> <li class="sidebar-item mb-3">
<a class="sidebar-link" href="https://www.edrawmind.com/online/files" target="_blank" aria-expanded="false"> <a class="sidebar-link" href="https://www.edrawmind.com/online/files" target="_blank" aria-expanded="false">
<span><i class="ti ti-pencil fs-6"></i></span> <span><i class="ti ti-pencil fs-6"></i></span>
+48 -22
View File
@@ -2,29 +2,55 @@
{% block content %} {% block content %}
<div class="card mb-0"> <div class="container">
<div class="card-body"> <div class="accordion" id="accordionPanelsStayOpenExample">
<div class="row"> <div class="accordion-item">
<table class="table table-sm"> <h2 class="accordion-header">
<thead> <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#panelsStayOpen-collapseOne" aria-expanded="true" aria-controls="panelsStayOpen-collapseOne">
<tr> 20 dernieres pages vues
<th>Topic</th> </button>
<th>Tag</th> </h2>
<th>Nombre</th> <div id="panelsStayOpen-collapseOne" class="accordion-collapse collapse">
<th>Dern. ajout</th> <div class="accordion-body">
</tr> <p>
</thead> {% for entry in last_viewed %}
<tbody class="table-group-divider"> {{ entry.last_viewed }} - {{ entry.title }} - ({{ entry.view_count }})<br>
{% for entry in entries %}
<tr>
<td>{{ entry.topic_name }}</td>
<td>{{ entry.tag_name }}</td>
<td>{{ entry.count }}</td>
<td>{{ entry.create_date }}</td>
</tr>
{% endfor %} {% endfor %}
</tbody> </p>
</table> </div>
</div>
</div>
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#panelsStayOpen-collapseTwo" aria-expanded="false" aria-controls="panelsStayOpen-collapseTwo">
20 dernieres pages crées
</button>
</h2>
<div id="panelsStayOpen-collapseTwo" class="accordion-collapse collapse">
<div class="accordion-body">
<p>
{% for entry in last_created %}
{{ entry.last_created }} - {{ entry.title }} - ({{ entry.view_count }})<br>
{% endfor %}
</p>
</div>
</div>
</div>
<div class="accordion-item">
<h2 class="accordion-header">
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#panelsStayOpen-collapseThree" aria-expanded="false" aria-controls="panelsStayOpen-collapseThree">
20 pages les plus vues
</button>
</h2>
<div id="panelsStayOpen-collapseThree" class="accordion-collapse collapse">
<div class="accordion-body">
<p>
{% for entry in most_viewed %}
{{ entry.view_count }} - {{ entry.title }} - {{ entry.date_viewed }}<br>
{% endfor %}
</p>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
+9 -4
View File
@@ -43,7 +43,8 @@ def blog(request):
last_view = 'None' last_view = 'None'
if client_addr != '127.0.0.1' and entry.view_ip != client_addr and last_view != str(today)[:13] and \ if client_addr != '127.0.0.1' and entry.view_ip != client_addr and last_view != str(today)[:13] and \
request.user_agent.find("spider") == -1 and request.user_agent.find("crawler") == -1 and request.user_agent.find("+http") == -1: request.user_agent.find("spider") == -1 and request.user_agent.find("crawler") == -1 and \
request.user_agent.find("bot") == -1 and request.user_agent.find("+http") == -1:
update_view_counter(request, blog_id, client_addr, today) update_view_counter(request, blog_id, client_addr, today)
@@ -305,11 +306,15 @@ def topic(request):
@view_config(route_name='stats_pages', renderer='../templates/stats_pages.jinja2') @view_config(route_name='stats_pages', renderer='../templates/stats_pages.jinja2')
def stats_pages(request): def stats_pages(request):
entries = get_entries_count_by_topic(request) last_viewed = get_entries_last_viewed(request)
last_created = get_entries_last_created(request)
most_viewed = get_entries_most_viewed(request)
return { return {
'page_title': "Statistiques par topics", 'page_title': "Statistiques",
'entries': entries, 'last_viewed': last_viewed,
'last_created': last_created,
'most_viewed' : most_viewed,
} }
@view_config(route_name='maintenance', renderer='../templates/maintenance.jinja2') @view_config(route_name='maintenance', renderer='../templates/maintenance.jinja2')