X-Git-Url: https://git.sommitrealweird.co.uk/sommitrealweird.git/blobdiff_plain/d82db041f520a51eccee6788ebc3a494e2a4280f..refs/heads/django-4.2:/sommitrealweird/photo/views.py?ds=sidebyside diff --git a/sommitrealweird/photo/views.py b/sommitrealweird/photo/views.py index 920b1da..bddd15d 100644 --- a/sommitrealweird/photo/views.py +++ b/sommitrealweird/photo/views.py @@ -1,30 +1,61 @@ -import django.views.generic.list_detail +from django.views.generic import ListView, DetailView from django.http import Http404 -from models import Album, Photo - -def album_view(request, slug): - album = Album.objects.get(slug__exact=slug) - photos = Photo.objects.filter(album=album).order_by('order', 'image') - return django.views.generic.list_detail.object_list(request, photos, paginate_by=20, template_name='photo/photo_index.html') - -def photo_view(request, slug, id): - id = int(id) - album = Album.objects.get(slug__exact=slug) - photos = Photo.objects.filter(album=album).order_by('order', 'image') - photo_qs = Photo.objects.filter(id=id) - found_prev = False - prev_photo = None - found_next = False - next_photo = None - for photo in photos: - if not found_prev: - if not photo.id == id: - prev_photo = photo - else: - found_prev = True - if found_next: - next_photo = photo - break - if photo.id == id: - found_next = True - return django.views.generic.list_detail.object_detail(request, photo_qs, object_id=id, template_name='photo/photo.html', extra_context={"next_photo": next_photo, "prev_photo": prev_photo }) +from photo.models import Album, Photo + +class AlbumListView(ListView): + model = Album + queryset = Album.objects.order_by('-name') + paginate_by = 20 + +class PhotoListView(ListView): + model = Photo + paginate_by = 20 + + def order_by(self): + return self.ordering + + def get_queryset(self): + try: + album = Album.objects.get(slug__exact=self.kwargs['slug']) + return Photo.objects.filter(album=album).order_by('order', 'image') + except: + raise Http404 + +class PhotoView(DetailView): + + def get_queryset(self, **kwargs): + return Photo.objects.get(id=self.kwargs['id']).get_queryset() + + def get_object(self, **kwargs): + try: + photo = Photo.objects.get(id=self.kwargs['id']) + return photo + except: + raise Http404 + + def get_context_data(self, **kwargs): + context = super(PhotoView, self).get_context_data(**kwargs) + album = Album.objects.get(slug__exact=self.kwargs['slug']) + photos = Photo.objects.filter(album=album).order_by('order', 'image') + + found_prev = False + prev_photo = None + found_next = False + next_photo = None + + for photo in photos: + if not found_prev: + if not photo.id == int(self.kwargs['id']): + prev_photo = photo + else: + found_prev = True + if found_next: + next_photo = photo + break + if photo.id == int(self.kwargs['id']): + found_next = True + + context['next_photo'] = next_photo + context['prev_photo'] = prev_photo + + return context