Bladeren bron

core: add StaticStorage + gone_view for 410 responses

TIM 1 dag geleden
bovenliggende
commit
5bd028df20
4 gewijzigde bestanden met toevoegingen van 30 en 1 verwijderingen
  1. 2 1
      models.py
  2. 1 0
      storage/__init__.py
  3. 13 0
      storage/backends.py
  4. 14 0
      views.py

+ 2 - 1
models.py

@@ -4,6 +4,7 @@ from django import forms
 from django.template.defaultfilters import slugify
 
 from tinymce.widgets import TinyMCE  # Réactivé
+from core.storage.backends import StaticStorage
 
 menu_pos = (
 	(u'no', u'No'),
@@ -72,7 +73,7 @@ class Data (models.Model) : #stocage de donnée dynamique
 class Fichier (models.Model) : # Upload de fichier pour réutilisation dans les pages
 	f_nom = models.CharField("Nom du fichier", max_length = 128, blank = True, editable = False)
 	f_date = models.DateTimeField("Date", auto_now_add=True)
-	f_fichier = models.FileField("Fichier", upload_to='static/uploads/')
+	f_fichier = models.FileField("Fichier", upload_to='uploads/', storage=StaticStorage())
 
 	class Meta :
 		verbose_name = 'Stocage de fichiers'

+ 1 - 0
storage/__init__.py

@@ -0,0 +1 @@
+# Storage personnalisé pour les fichiers uploadés

+ 13 - 0
storage/backends.py

@@ -0,0 +1,13 @@
+from django.core.files.storage import FileSystemStorage
+from django.conf import settings
+import os
+
+class StaticStorage(FileSystemStorage):
+    """
+    Storage personnalisé pour sauvegarder les fichiers dans le dossier static
+    au lieu du dossier media (pour compatibilité avec les liens historiques)
+    """
+    def __init__(self, *args, **kwargs):
+        kwargs['location'] = os.path.join(settings.BASE_DIR, 'static')
+        kwargs['base_url'] = '/static/'
+        super().__init__(*args, **kwargs)

+ 14 - 0
views.py

@@ -245,3 +245,17 @@ def p_registration(request):
 		}
 	return HttpResponse(template.render(context, request))
 
+
+
+def gone_view(request, path=None):
+    """
+    Vue HTTP 410 Gone pour les anciennes URLs /youtube/ et /flux/
+    Indique à Google que ces ressources n'existent plus définitivement
+    Résout les problèmes de Soft 404 dans Google Search Console
+    """
+    from django.http import HttpResponseGone
+    return HttpResponseGone(
+        '<h1>410 Gone</h1>'
+        '<p>Cette ressource n\'existe plus. Elle faisait partie d\'un ancien projet (feeds.duhaz.fr) qui n\'est plus maintenu.</p>'
+        '<p><a href="/blog/">Retour au blog</a></p>'
+    )