def recent(request, tag_name=None, page=None): tag = Tag.with_name(tag_name) if not tag: photo_set = Photo.recent() video_set = Video.recent() else: photo_set = tag.get_recent_photos() video_set = tag.get_recent_videos() media_set = list(photo_set) + list(video_set) total = len(media_set) page, start, end, nb_pages = get_page(page, total) medias = media_set[start:end] total_pages = range(nb_pages) slug = "/%s/recent/" % G_URL if tag_name: slug += "%s/" % tag_name params = { "tag": tag, "page": page, "slug": slug, "tag_name": tag_name, "nb_pages": nb_pages, "total_pages": total_pages, "medias": medias, } params.update(DEFAULT_PARAMS) return render_to_response("gallery/tag.html", params, context_instance=RequestContext(request))
def photo(request, photo_id, in_tag_name=None, in_event_id=None): reset_cache, form = process_form(request, aksmet, photo_id=photo_id) response = None cache_key = "photo_%s" % photo_id if not reset_cache: response = cache.get(cache_key) if not response: reset_cache = True if reset_cache or not response: p = get_object_or_404(Photo.objects.using("gallery"), pk=photo_id) exported = get_object_or_404(OriginalExport.objects.using("gallery"), id=photo_id) tag = None event = None if in_tag_name: tag = Tag.with_name(in_tag_name) kw = dict(tag=tag) elif in_event_id: kw = dict(event_id=in_event_id) event = get_object_or_404(Event.objects.using("gallery"), pk=in_event_id) else: kw = {} previous = p.get_sibling_media("previous", **kw) next = p.get_sibling_media("next", **kw) p.increment_hit() slug = "/%s/photo/%s/" % (G_URL, p.id) slideshow_url = "%s/slideshow/%s/%d" % (G_URL, in_tag_name, p.id) params = { "tag": tag, "media": p, "previous": previous, "slug": slug, "next": next, "exported": exported, "form": form, "event": event, "slideshow_url": slideshow_url, } params.update(DEFAULT_PARAMS) context = RequestContext(request) response = render_to_response("gallery/photo.html", params, context_instance=context) cache.set(cache_key, response, CACHE_TIMEOUT) return response
def medias_in_tag(request, tag_name, photo_id=None, video_id=None, page=None): if photo_id: return photo(request, photo_id, in_tag_name=tag_name) elif video_id: return video(request, video_id, in_tag_name=tag_name) else: if tag_name.find("+") > -1: # combination of tags media_set = Tag.build_set(tag_name) tag = None else: # display all photos of the tag tag = Tag.with_name(tag_name) if not tag: raise Http404 else: photo_set = tag.photo_set.order_by("timestamp") video_set = tag.video_set.order_by("time_created") media_set = list(photo_set) + list(video_set) total = len(media_set) page, start, end, nb_pages = get_page(page, total) medias = media_set[start:end] total_pages = range(nb_pages) slug = "%s/tag/%s/" % (G_URL, tag_name) params = { "tag": tag, "page": page, "slug": slug, "tag_name": tag_name, "nb_pages": nb_pages, "total_pages": total_pages, "medias": medias, } params.update(DEFAULT_PARAMS) return render_to_response("gallery/tag.html", params, context_instance=RequestContext(request))
def get_object(self, bits): if len(bits) != 1: raise ObjectDoesNotExist return Tag.with_name(bits[0])
def slideshow(request, tag_name=None, photo_id=None): tag = Tag.with_name(tag_name) p = get_object_or_404(Photo.objects.using("gallery"), pk=photo_id) photos = tag.photo_set_from(p.timestamp) params = {"photos": photos} return render_to_response("gallery/slideshow.html", params, context_instance=RequestContext(request))