Allow staff to upload photos has another user.
All checks were successful
Docker / build (release) Successful in 9s
All checks were successful
Docker / build (release) Successful in 9s
This commit is contained in:
parent
b0027be96c
commit
1de1cb4086
4 changed files with 48 additions and 14 deletions
|
|
@ -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,10 @@ 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)
|
||||
if owner != self.request.user and not self.request.user.is_staff:
|
||||
from django.core.exceptions import PermissionDenied
|
||||
raise PermissionDenied
|
||||
|
||||
# Upload pictures and videos
|
||||
uploaded_photo_name = []
|
||||
|
|
@ -352,9 +361,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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue