First Commit
This commit is contained in:
commit
ce0758fbbb
496 changed files with 52062 additions and 0 deletions
0
gallery/__init__.py
Normal file
0
gallery/__init__.py
Normal file
3
gallery/admin.py
Normal file
3
gallery/admin.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
from django.contrib import admin
|
||||
|
||||
# Register your models here.
|
||||
6
gallery/apps.py
Normal file
6
gallery/apps.py
Normal 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
17
gallery/forms.py
Normal 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
|
||||
0
gallery/migrations/__init__.py
Normal file
0
gallery/migrations/__init__.py
Normal file
3
gallery/models.py
Normal file
3
gallery/models.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
from django.db import models
|
||||
|
||||
# Create your models here.
|
||||
3
gallery/tests.py
Normal file
3
gallery/tests.py
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
||||
10
gallery/urls.py
Executable file
10
gallery/urls.py
Executable 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
52
gallery/views.py
Normal 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}"
|
||||
Loading…
Add table
Add a link
Reference in a new issue