Upload images in galleries

This commit is contained in:
Alexandre Iooss 2021-10-15 14:14:09 +02:00
parent 0d0f72a9eb
commit 05ff9ca3d3
2 changed files with 47 additions and 7 deletions

View file

@ -1,6 +1,11 @@
import datetime
from django import forms from django import forms
from django.utils.text import slugify
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from photologue.models import Gallery from photologue.models import Gallery, Photo
from .models import GalleryExtended, PhotoExtended
class UploadForm(forms.Form): class UploadForm(forms.Form):
@ -24,6 +29,16 @@ class UploadForm(forms.Form):
max_length=250, max_length=250,
required=False, required=False,
) )
date_start = forms.DateField(
label=_('New gallery event start date'),
initial=datetime.date.today,
required=False,
)
date_end = forms.DateField(
label=_('New gallery event end date'),
initial=datetime.date.today,
required=False,
)
def clean_new_gallery_title(self): def clean_new_gallery_title(self):
title = self.cleaned_data['new_gallery_title'] title = self.cleaned_data['new_gallery_title']
@ -41,6 +56,31 @@ class UploadForm(forms.Form):
return cleaned_data return cleaned_data
def save(self, files): def get_or_create_gallery(self):
# TODO: upload """
print(type(files)) Get or create gallery
"""
gallery = self.cleaned_data['gallery']
if not gallery:
# Create new gallery
title = self.cleaned_data.get('new_gallery_title')
gallery = Gallery.objects.create(title=title, slug=slugify(title))
GalleryExtended.objects.create(
gallery=gallery,
date_start=self.cleaned_data['date_start'],
date_end=self.cleaned_data['date_end'],
)
return gallery
def save(self, user, files):
"""
Save gallery then photos
"""
gallery = self.get_or_create_gallery()
for photo_file in files:
title = f"{gallery.title} - {photo_file.name}"
photo = Photo(title=title, slug=slugify(title))
photo.image.save(photo_file.name, photo_file)
photo.save()
photo.galleries.set([gallery])
PhotoExtended.objects.create(photo=photo, owner=user)

View file

@ -5,13 +5,13 @@ import os
import zipfile import zipfile
from io import BytesIO from io import BytesIO
from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib import messages from django.contrib import messages
from django.contrib.auth.mixins import LoginRequiredMixin
from django.core.mail import mail_managers from django.core.mail import mail_managers
from django.http import HttpResponse from django.http import HttpResponse
from django.urls import reverse_lazy
from django.views.generic.detail import DetailView from django.views.generic.detail import DetailView
from django.views.generic.edit import FormView from django.views.generic.edit import FormView
from django.urls import reverse_lazy
from photologue.models import Gallery from photologue.models import Gallery
from photologue.views import GalleryArchiveIndexView, GalleryYearArchiveView from photologue.views import GalleryArchiveIndexView, GalleryYearArchiveView
from taggit.models import Tag from taggit.models import Tag
@ -109,7 +109,7 @@ class GalleryUpload(FormView):
# Upload photos # Upload photos
# We take files from the request to support multiple upload # We take files from the request to support multiple upload
files = self.request.FILES.getlist('file_field') files = self.request.FILES.getlist('file_field')
form.save(files) form.save(self.request.user, files)
# Notify user then managers # Notify user then managers
messages.success(self.request, "Photos has been successfully uploaded.") messages.success(self.request, "Photos has been successfully uploaded.")