Upload images in galleries
This commit is contained in:
parent
0d0f72a9eb
commit
05ff9ca3d3
2 changed files with 47 additions and 7 deletions
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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.")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue