Changeset View
Changeset View
Standalone View
Standalone View
films/views/gallery.py
| """Render film asset gallery and collections.""" | """Render film asset gallery and collections.""" | ||||
| from django.http import HttpResponse, HttpRequest | from django.http import HttpResponse, HttpRequest | ||||
| from django.http import Http404 | from django.http import Http404 | ||||
| from django.shortcuts import get_object_or_404, render | from django.shortcuts import get_object_or_404, render | ||||
| from django.views.decorators.http import require_safe | from django.views.decorators.http import require_safe | ||||
| from common.queries import has_group | |||||
| from films.models import Film, Collection, Asset | from films.models import Film, Collection, Asset | ||||
| from films.queries import get_gallery_drawer_context, get_current_asset | from films.queries import get_gallery_drawer_context, get_current_asset | ||||
| @require_safe | @require_safe | ||||
| def collection_list(request: HttpRequest, film_slug: str) -> HttpResponse: | def collection_list(request: HttpRequest, film_slug: str) -> HttpResponse: | ||||
| """ | """ | ||||
| Display all the film collections as well as the featured artwork in the gallery. | Display all the film collections as well as the featured artwork in the gallery. | ||||
| Show All 30 Lines | def collection_list(request: HttpRequest, film_slug: str) -> HttpResponse: | ||||
| :template:`films/gallery.html` | :template:`films/gallery.html` | ||||
| """ | """ | ||||
| film = get_object_or_404(Film, slug=film_slug) | film = get_object_or_404(Film, slug=film_slug) | ||||
| drawer_menu_context = get_gallery_drawer_context(film, request.user) | drawer_menu_context = get_gallery_drawer_context(film, request.user) | ||||
| context = { | context = { | ||||
| 'film': film, | 'film': film, | ||||
| 'user_can_view_asset': ( | |||||
| request.user.is_authenticated and has_group(request.user, 'subscriber') | |||||
| ), | |||||
| 'user_can_edit_asset': ( | 'user_can_edit_asset': ( | ||||
| request.user.is_staff and request.user.has_perm('films.change_asset') | request.user.is_staff and request.user.has_perm('films.change_asset') | ||||
| ), | ), | ||||
| **drawer_menu_context, | **drawer_menu_context, | ||||
| **get_current_asset(request), | **get_current_asset(request), | ||||
| } | } | ||||
| return render(request, 'films/gallery.html', context) | return render(request, 'films/gallery.html', context) | ||||
| ▲ Show 20 Lines • Show All 49 Lines • ▼ Show 20 Lines | def collection_detail(request: HttpRequest, film_slug: str, collection_slug: str) -> HttpResponse: | ||||
| context = { | context = { | ||||
| 'film': film, | 'film': film, | ||||
| 'current_collection': collection, | 'current_collection': collection, | ||||
| 'current_assets': ( | 'current_assets': ( | ||||
| collection.assets.filter(is_published=True).order_by(*Asset._meta.ordering) | collection.assets.filter(is_published=True).order_by(*Asset._meta.ordering) | ||||
| ), | ), | ||||
| 'child_collections': child_collections, | 'child_collections': child_collections, | ||||
| 'user_can_view_asset': ( | |||||
| request.user.is_authenticated and has_group(request.user, 'subscriber') | |||||
| ), | |||||
| 'user_can_edit_asset': ( | 'user_can_edit_asset': ( | ||||
| request.user.is_staff and request.user.has_perm('films.change_asset') | request.user.is_staff and request.user.has_perm('films.change_asset') | ||||
| ), | ), | ||||
| **drawer_menu_context, | **drawer_menu_context, | ||||
| **get_current_asset(request), | **get_current_asset(request), | ||||
| } | } | ||||
| return render(request, 'films/collection_detail.html', context) | return render(request, 'films/collection_detail.html', context) | ||||