Ajout du mode maintenance avec modèle, vues, URL, contexte, et intégration des templates. Ajout de nouvelles fonctionnalités côté client, comme le basculement de thème et les interactions de navigation mobile.
This commit is contained in:
parent
acd9f42cea
commit
536f4e303f
12 changed files with 227 additions and 27 deletions
|
|
@ -1,5 +1,5 @@
|
|||
from django.contrib import admin
|
||||
from .models import SiteSettings, Visit
|
||||
from .models import SiteSettings, Visit, Maintenance
|
||||
|
||||
@admin.register(SiteSettings)
|
||||
class SiteSettingsAdmin(admin.ModelAdmin):
|
||||
|
|
@ -28,6 +28,10 @@ class SiteSettingsAdmin(admin.ModelAdmin):
|
|||
}),
|
||||
)
|
||||
|
||||
@admin.register(Maintenance)
|
||||
class MaintenanceAdmin(admin.ModelAdmin):
|
||||
list_display = ("name","start_date", "end_date")
|
||||
|
||||
|
||||
@admin.register(Visit)
|
||||
class VisitAdmin(admin.ModelAdmin):
|
||||
|
|
|
|||
|
|
@ -1,5 +1,14 @@
|
|||
from .models import SiteSettings
|
||||
from django.utils.timesince import timesince
|
||||
|
||||
from .models import SiteSettings, Maintenance
|
||||
|
||||
def site_settings(request):
|
||||
# On récupère le premier objet, ou None s'il n'existe pas encore
|
||||
return {'settings': SiteSettings.objects.first()}
|
||||
return {'settings': SiteSettings.objects.first()}
|
||||
|
||||
def site_maintenance(request):
|
||||
last = Maintenance.objects.last()
|
||||
start = last.start_date if last else None
|
||||
end = last.end_date if last else None
|
||||
delay = timesince(start, end) if start and end else None
|
||||
return {'maintenance': Maintenance.objects.last(), 'delay': delay}
|
||||
23
core/migrations/0006_maintenance.py
Normal file
23
core/migrations/0006_maintenance.py
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
# Generated by Django 6.0 on 2025-12-17 10:25
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('core', '0005_sitesettings_receive_emails_active'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Maintenance',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('is_active', models.BooleanField(default=False)),
|
||||
('message', models.TextField(blank=True)),
|
||||
('start_date', models.DateTimeField(blank=True, null=True)),
|
||||
('end_date', models.DateTimeField(blank=True, null=True)),
|
||||
],
|
||||
),
|
||||
]
|
||||
18
core/migrations/0007_maintenance_name.py
Normal file
18
core/migrations/0007_maintenance_name.py
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 6.0 on 2025-12-17 10:26
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('core', '0006_maintenance'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='maintenance',
|
||||
name='name',
|
||||
field=models.CharField(blank=True, max_length=200),
|
||||
),
|
||||
]
|
||||
|
|
@ -35,6 +35,12 @@ class SiteSettings(models.Model):
|
|||
verbose_name = "Réglages du site"
|
||||
verbose_name_plural = "Réglages du site"
|
||||
|
||||
class Maintenance(models.Model):
|
||||
is_active = models.BooleanField(default=False)
|
||||
name = models.CharField(max_length=200, blank=True)
|
||||
message = models.TextField(blank=True)
|
||||
start_date = models.DateTimeField(blank=True, null=True)
|
||||
end_date = models.DateTimeField(blank=True, null=True)
|
||||
|
||||
class Visit(models.Model):
|
||||
"""Enregistrement simplifié des visites (agrégées par jour et visiteur).
|
||||
|
|
|
|||
8
core/urls.py
Normal file
8
core/urls.py
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
from django.urls import path
|
||||
from . import views
|
||||
|
||||
urlpatterns = [
|
||||
path('update_database', views.update_database, name='update_database'),
|
||||
path('clear_cache', views.clear_cache, name='clear_cache'),
|
||||
path('regen_static_files', views.regen_static_files, name='regen_static_files')
|
||||
]
|
||||
|
|
@ -1,3 +1,20 @@
|
|||
from django.shortcuts import render
|
||||
from django.core.management import call_command
|
||||
from django.core.cache import cache
|
||||
import subprocess
|
||||
|
||||
# Create your views here.
|
||||
def update_database(request):
|
||||
call_command('makemigrations')
|
||||
call_command('migrate')
|
||||
message = "La base de données à bien été mise à jour !"
|
||||
return render(request, 'home.html', {'message': message})
|
||||
|
||||
def clear_cache(request):
|
||||
cache.clear()
|
||||
message = "Le cache à bien été effacé !"
|
||||
return render(request, 'home.html', {'message': message})
|
||||
|
||||
def regen_static_files(request):
|
||||
call_command('collectstatic', '--noinput')
|
||||
message = "Les fichiers statics ont bien été générés !"
|
||||
return render(request, 'home.html', {'message': message})
|
||||
Loading…
Add table
Add a link
Reference in a new issue