95 lines
2.8 KiB
Python
95 lines
2.8 KiB
Python
import os
|
|
from collections import deque
|
|
from random import randint
|
|
|
|
from django.conf import settings
|
|
from django.http import Http404
|
|
from django.shortcuts import render
|
|
from django.utils.text import slugify
|
|
|
|
from authentications.decorators import authenticated_user
|
|
from .models import Album
|
|
from .utils import create_thumbs, get_folder_list, get_image_list
|
|
|
|
|
|
def index(request):
|
|
if request.user.is_authenticated:
|
|
albums = deque(Album.objects.all().order_by("-event_date"))
|
|
|
|
# get albums that are in the server but not in the db.
|
|
folders = get_folder_list()
|
|
if folders:
|
|
for folder in folders:
|
|
if not Album.objects.filter(folder_name=folder):
|
|
album = Album(
|
|
title=folder,
|
|
slug=slugify(folder),
|
|
folder_name=folder,
|
|
event_date=None,
|
|
)
|
|
else:
|
|
# show only PUBLIC albums.
|
|
albums = deque(
|
|
Album.objects.filter(status=Album.PUBLIC).order_by("-event_date")
|
|
)
|
|
|
|
for album in list(albums):
|
|
img_list = get_image_list(album.folder_name)
|
|
if img_list:
|
|
if album.thumbnail:
|
|
for img in img_list:
|
|
if album.thumbnail in img["title"]:
|
|
album.thumbnail = img["thumb_url"]
|
|
break
|
|
else:
|
|
value = randint(0, len(img_list) - 1)
|
|
album.thumbnail = img_list[value]["thumb_url"]
|
|
else:
|
|
value = randint(0, len(img_list) - 1)
|
|
album.thumbnail = img_list[value]["thumb_url"]
|
|
else:
|
|
# empty album is temporarily set to DRAFT.
|
|
album.thumbnail = settings.STATIC_URL + "img/FET-Logo-2014-quadrat.png"
|
|
album.status = Album.DRAFT
|
|
|
|
context = {
|
|
"albums": albums,
|
|
}
|
|
|
|
return render(request, "gallery/index.html", context)
|
|
|
|
|
|
def show_album(request, slug):
|
|
album = Album.objects.filter(slug=slug).first()
|
|
if not album:
|
|
for folder in get_folder_list():
|
|
if slug == slugify(folder):
|
|
album = Album(
|
|
title=folder,
|
|
slug=slugify(folder),
|
|
folder_name=folder,
|
|
event_date=None,
|
|
)
|
|
break
|
|
else:
|
|
raise Http404("wrong album slug")
|
|
|
|
img_list = get_image_list(album.folder_name)
|
|
if not img_list:
|
|
# empty album is temporarily set to DRAFT.
|
|
album.status = Album.DRAFT
|
|
|
|
create_thumbs(album.folder_name)
|
|
|
|
context = {
|
|
"album": album,
|
|
"images": img_list,
|
|
}
|
|
|
|
return render(request, "gallery/album.html", context)
|
|
|
|
|
|
@authenticated_user
|
|
def show_draft_album(request, slug):
|
|
return show_album(request, slug)
|