First Commit

This commit is contained in:
mrtoine 2025-09-12 11:11:44 +02:00
commit ce0758fbbb
496 changed files with 52062 additions and 0 deletions

0
gallery/__init__.py Normal file
View file

3
gallery/admin.py Normal file
View file

@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.

6
gallery/apps.py Normal file
View file

@ -0,0 +1,6 @@
from django.apps import AppConfig
class GalleryConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'gallery'

17
gallery/forms.py Normal file
View file

@ -0,0 +1,17 @@
from django import forms
class AddImgGallery(forms.Form):
image = forms.FileField(
label='Image',
required=True,
widget=forms.ClearableFileInput(attrs={'class': 'form-inline'})
)
def clean_img(self):
img = self.cleaned_data.get('image')
if img:
if not img.name.lower().endswith(('.jpg', '.jpeg', '.png')):
raise forms.ValidationError('Seul les fichiers JPG, JPEG, PNG sont autorisés.')
if img.size > 5 * 1024 * 1024:
raise forms.ValidationError('La taille de l\'image ne dois pas dépasser 5 Mo.')
return img

View file

3
gallery/models.py Normal file
View file

@ -0,0 +1,3 @@
from django.db import models
# Create your models here.

3
gallery/tests.py Normal file
View file

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

10
gallery/urls.py Executable file
View file

@ -0,0 +1,10 @@
from django.urls import path
from django.conf.urls.static import static
from passion_retro import settings
from . import views
urlpatterns = [
path("", views.home_gallery, name="home_gallery"),
path("import", views.import_img, name="import"),
]

52
gallery/views.py Normal file
View file

@ -0,0 +1,52 @@
from django.shortcuts import render
from django.contrib import messages
from .forms import AddImgGallery
from django.contrib.auth.decorators import login_required
import os
from django.conf import settings
@login_required()
def home_gallery(request):
user_id = request.user.id
user_directory = os.path.join(settings.MEDIA_ROOT, 'galleries', str(user_id))
img_urls = []
if os.path.exists(user_directory):
for filename in os.listdir(user_directory):
if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.gif')):
img_urls.append(f"{settings.MEDIA_URL}galleries/{user_id}/{filename}")
return render(request, 'gallery/home.html', {'images': img_urls})
@login_required()
def import_img(request):
if request.method == "POST":
form = AddImgGallery(request.POST, request.FILES)
if form.is_valid():
image = form.clean_img()
user_id = request.user.id
saved_image_url = save_image_to_gallery(image, user_id)
messages.success(request, 'Votre image a bien été ajoutée à la galerie')
form = AddImgGallery()
return render(request, 'gallery/form.html', {'form': form})
def save_image_to_gallery(image, user_id):
user_directory = os.path.join(settings.MEDIA_ROOT, 'galleries', str(user_id))
os.makedirs(user_directory, exist_ok=True)
# Créer un fichier index.html vide pour sécuriser le répertoire
index_file_path = os.path.join(user_directory, 'index.html')
if not os.path.exists(index_file_path): # Vérifie si le fichier n'existe pas déjà
with open(index_file_path, 'w') as index_file:
index_file.write('') # Écrit un fichier vide
# Définir le chemin complet du fichier
file_path = os.path.join(user_directory, image.name)
# Enregistrer le fichier
with open(file_path, 'wb+') as destination:
for chunk in image.chunks():
destination.write(chunk)
return f"{settings.MEDIA_URL}galleries/{user_id}/{image.name}"