Check upload form

This commit is contained in:
Alexandre Iooss 2021-10-15 12:43:17 +02:00
parent 727387566d
commit d2fa5ce02f
5 changed files with 54 additions and 22 deletions

View file

@ -6,10 +6,12 @@ import zipfile
from io import BytesIO
from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib import messages
from django.core.mail import mail_managers
from django.http import HttpResponse
from django.views.generic.detail import DetailView
from django.views.generic.edit import FormView
from django.urls import reverse_lazy
from photologue.models import Gallery
from photologue.views import GalleryArchiveIndexView, GalleryYearArchiveView
from taggit.models import Tag
@ -96,27 +98,26 @@ class GalleryDownload(LoginRequiredMixin, DetailView):
class GalleryUpload(FormView):
"""
Form to upload new photos in a gallery
"""
form_class = UploadForm
template_name = "photologue/upload.html"
# success_url = '...' # Replace with your URL or reverse().
def post(self, request, *args, **kwargs):
form_class = self.get_form_class()
form = self.get_form(form_class)
files = request.FILES.getlist('file_field')
if form.is_valid():
for f in files:
print("upload", f)
return self.form_valid(form)
else:
return self.form_invalid(form)
success_url = reverse_lazy("gallery-upload")
def form_valid(self, form):
"""
Notify moderators about successful upload
"""
# Upload photos
# We take files from the request to support multiple upload
files = self.request.FILES.getlist('file_field')
form.save(files)
# Notify user then managers
messages.success(self.request, "Photos has been successfully uploaded.")
gallery_title = form.cleaned_data['gallery'] or form.cleaned_data.get('new_gallery_title', '')
photos = ", ".join(f.name for f in files)
mail_managers(
subject="New upload",
message="", # TODO: put username, gallery and photo names
subject="New photos upload",
message=f"{self.request.user.username} has uploaded in `{gallery_title}`: {photos}",
)
return super().form_valid(form)