Allow staff to upload photos has another user.
All checks were successful
Docker / build (release) Successful in 9s

This commit is contained in:
krek0 2026-05-16 18:46:51 +02:00
parent b0027be96c
commit 15414d4d4d
3 changed files with 40 additions and 12 deletions

View file

@ -299,15 +299,20 @@ class GalleryUpload(PermissionRequiredMixin, FormView):
success_url = reverse_lazy("photologue:pl-gallery-upload")
permission_required = "photologue.add_gallery"
def _upload_media(self, model, file_field, file_obj, gallery, gallery_dir, post_save=None):
def get_form_kwargs(self):
kwargs = super().get_form_kwargs()
kwargs["is_staff"] = self.request.user.is_staff
return kwargs
def _upload_media(self, model, file_field, file_obj, gallery, gallery_dir, owner, post_save=None):
"""
Create a media object, save it to the DB, schedule file save on commit.
Returns True if uploaded, False if already exists.
"""
title = Path(file_obj.name).stem
if model.objects.filter(title=title, owner=self.request.user, galleries=gallery).exists():
if model.objects.filter(title=title, owner=owner, galleries=gallery).exists():
return False
obj = model(title=title, slug=unique_slug(model, title), owner=self.request.user)
obj = model(title=title, slug=unique_slug(model, title), owner=owner)
file_path = str(gallery_dir / file_obj.name)
with transaction.atomic():
obj.save()
@ -345,6 +350,7 @@ class GalleryUpload(PermissionRequiredMixin, FormView):
gallery_year = Path(str(gallery.date_start.year))
gallery_dir = gallery_year / gallery.slug
owner = form.get_owner(self.request.user)
# Upload pictures and videos
uploaded_photo_name = []
@ -352,9 +358,9 @@ class GalleryUpload(PermissionRequiredMixin, FormView):
files = form.cleaned_data["file_field"]
for photo_file in files:
if is_photo(photo_file):
uploaded = self._upload_media(Photo, "image", photo_file, gallery, gallery_dir)
uploaded = self._upload_media(Photo, "image", photo_file, gallery, gallery_dir, owner)
elif is_video(photo_file):
uploaded = self._upload_media(Video, "file", photo_file, gallery, gallery_dir, post_save=generate_video_thumbnail)
uploaded = self._upload_media(Video, "file", photo_file, gallery, gallery_dir, owner, post_save=generate_video_thumbnail)
else:
messages.error(self.request, f"{photo_file.name} is not a recognized image or video")
jsondata["code"] = 400