class FlickrPhotosListView(PaginatedMixin, TemplateView): template_name = getattr(settings, 'PHOTOS_LIST_TEMPLATE') paginate_by = getattr(settings, 'PHOTOS_PER_PAGE') page_kwarg = getattr(settings, 'PAGE_FIELD') per_page_field = getattr(settings, 'PER_PAGE_FIELD') context_object_name = 'photos' photoset = None def paginate(self, page_number, page_size): photoset_id = self.kwargs.get('photoset_id') self.photoset = Photoset(id=photoset_id) photos, paginator, page = self.photoset.getPhotos(page=page_number, per_page=page_size) if not photos: raise Http404( _('No photos not found for photoset %(photoset_id)s') % {'photoset_id': photoset_id}) return photos, paginator, page def get_context_data(self, **kwargs): context = super(FlickrPhotosListView, self).get_context_data(**kwargs) context['photoset'] = self.photoset return context
class FlickrPhotosListView(PaginatedMixin, TemplateView): template_name = getattr(settings, 'PHOTOS_LIST_TEMPLATE') paginate_by = getattr(settings, 'PHOTOS_PER_PAGE') page_kwarg = getattr(settings, 'PAGE_FIELD') per_page_field = getattr(settings, 'PER_PAGE_FIELD') context_object_name = 'photos' photoset = None def paginate(self, page_number, page_size): self.photoset = Photoset(id=self.kwargs.get('photoset_id')) photos, paginator, page = self.photoset.getPhotos(page=page_number, per_page=page_size) return photos, paginator, page def get_context_data(self, **kwargs): context = super(FlickrPhotosListView, self).get_context_data(**kwargs) context['photoset'] = self.photoset return context
def get_photos_by_photoset(context, photoset_id, page=None, per_page=None, template_name="gallery/flickr/tags/photoset.html"): """ Get photos by photoset_id. Allow paginator. :param context: Context object. :param photoset_id: Photoset id to get a photoset. :param page: Current page number. :param per_page: How many objects per page. :param template_name: Template to render tag. :return: context object. """ request = context['request'] # get page number if per_page is not None: page = page or request.GET.get(PAGE_FIELD, None) photoset = Photoset(id=photoset_id) photos, paginator, page_obj = photoset.getPhotos(page=page, per_page=per_page) is_paginated = paginator is not None and page_obj is not None context = { 'photoset': photoset, 'photos': photos, 'object_list': photos, 'template': template_name } if is_paginated: context.update({ 'is_paginated': True, 'paginator': paginator, 'page_obj': page_obj }) return context