X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/d0072de89eb395f99aedcdf7804e48b547cbbeca..41c2520ea493330737e29cf1ef00ba1c199b517d:/apps/social/templatetags/social_tags.py diff --git a/apps/social/templatetags/social_tags.py b/apps/social/templatetags/social_tags.py index deac93df0..29a43098b 100755 --- a/apps/social/templatetags/social_tags.py +++ b/apps/social/templatetags/social_tags.py @@ -12,20 +12,37 @@ register = template.Library() register.filter('likes', likes) -@register.inclusion_tag('social/cite_promo.html') -def cite_promo(ctx=None, fallback=False): +@register.inclusion_tag('social/cite_promo.html', takes_context=True) +def cite_promo(context, ctx=None, fallback=False): """Choose""" - if ctx is None: - cites = Cite.objects.all() - elif isinstance(ctx, Book): - cites = ctx.cite_set.all() - if not cites.exists(): - cites = cites_for_tags([ctx.book_tag()]) - else: - cites = cites_for_tags(ctx) + try: + request = context['request'] + assert request.user.is_staff + assert 'choose_cite' in request.GET + cite = Cite.objects.get(pk=request.GET['choose_cite']) + except AssertionError, Cite.DoesNotExist: + if ctx is None: + cites = Cite.objects.all() + elif isinstance(ctx, Book): + cites = ctx.cite_set.all() + if not cites.exists(): + cites = cites_for_tags([ctx.book_tag()]) + else: + cites = cites_for_tags(ctx) + cite = cites.order_by('?')[0] if cites.exists() else None return { - 'cite': cites.order_by('?')[0] if cites.exists() else None, + 'cite': cite, 'fallback': fallback, 'ctx': ctx, - } \ No newline at end of file + } + + +@register.inclusion_tag('social/shelf_tags.html', takes_context=True) +def shelf_tags(context, book): + user = context['request'].user + if not user.is_authenticated(): + tags = [] + else: + tags = book.tags.filter(category='set', user=user).exclude(name='') + return {'tags': tags}