From: Marek Stępniowski Date: Fri, 22 Aug 2008 13:40:15 +0000 (+0200) Subject: Renamed module catalogue.templatetags.catalogue to catalogue.templatetags.catalogue_tags. X-Git-Url: https://git.mdrn.pl/wolnelektury.git/commitdiff_plain/e224f0bea768179cf44886dfbabbd296767d79dd?ds=inline;hp=ddae51d9a0c525bfef85af0251eec14828bd1a70 Renamed module catalogue.templatetags.catalogue to catalogue.templatetags.catalogue_tags. --- diff --git a/catalogue/forms.py b/catalogue/forms.py index 5708d897b..7472eb420 100644 --- a/catalogue/forms.py +++ b/catalogue/forms.py @@ -8,7 +8,8 @@ from catalogue.lib.slughifi import slughifi class SearchForm(forms.Form): q = JQueryAutoCompleteField('/katalog/tags/', {'minChars': 2, 'selectFirst': True, 'cacheLength': 50}) - + tags = forms.CharField(widget=forms.HiddenInput) + def __init__(self, *args, **kwargs): super(SearchForm, self).__init__(*args, **kwargs) self.fields['q'].widget.attrs['title'] = u'tytuł utworu, motyw lub kategoria' diff --git a/catalogue/templatetags/catalogue.py b/catalogue/templatetags/catalogue.py deleted file mode 100644 index 6b06f3802..000000000 --- a/catalogue/templatetags/catalogue.py +++ /dev/null @@ -1,179 +0,0 @@ -# -*- coding: utf-8 -*- -from django import template -from django.template import Node, Variable -from django.utils.encoding import smart_str -from django.core.urlresolvers import reverse -from django.contrib.auth.forms import UserCreationForm, AuthenticationForm - - -register = template.Library() - - -class RegistrationForm(UserCreationForm): - def as_ul(self): - "Returns this form rendered as HTML
  • s -- excluding the ." - return self._html_output(u'
  • %(errors)s%(label)s %(field)s%(help_text)s
  • ', u'
  • %s
  • ', '', u' %s', False) - - -class LoginForm(AuthenticationForm): - def as_ul(self): - "Returns this form rendered as HTML
  • s -- excluding the ." - return self._html_output(u'
  • %(errors)s%(label)s %(field)s%(help_text)s
  • ', u'
  • %s
  • ', '', u' %s', False) - - -def iterable(obj): - try: - iter(obj) - return True - except TypeError: - return False - - -def capfirst(text): - try: - return '%s%s' % (text[0].upper(), text[1:]) - except IndexError: - return '' - - -@register.simple_tag -def title_from_tags(tags): - def split_tags(tags): - result = {} - for tag in tags: - result[tag.category] = tag - return result - - class Flection(object): - def get_case(self, name, flection): - return name - flection = Flection() - - self = split_tags(tags) - - title = u'' - - # Specjalny przypadek oglądania wszystkich lektur w danym zestawie - if len(self) == 1 and 'set' in self: - return u'Zestaw %s' % self['set'] - - # Specjalny przypadek "Twórczość w pozytywizmie", wtedy gdy tylko epoka - # jest wybrana przez użytkownika - if 'epoch' in self and len(self) == 1: - text = u'Twórczość w %s' % flection.get_case(unicode(self['epoch']), u'miejscownik') - return capfirst(text) - - # Specjalny przypadek "Dramat w twórczości Sofoklesa", wtedy gdy podane - # są tylko rodzaj literacki i autor - if 'kind' in self and 'author' in self and len(self) == 2: - text = u'%s w twórczości %s' % (unicode(self['kind']), - flection.get_case(unicode(self['author']), u'dopełniacz')) - return capfirst(text) - - # Przypadki ogólniejsze - if 'theme' in self: - title += u'Motyw %s' % unicode(self['theme']) - - if 'genre' in self: - if 'theme' in self: - title += u' w %s' % flection.get_case(unicode(self['genre']), u'miejscownik') - else: - title += unicode(self['genre']) - - if 'kind' in self or 'author' in self or 'epoch' in self: - if 'genre' in self or 'theme' in self: - if 'kind' in self: - title += u' w %s ' % flection.get_case(unicode(self['kind']), u'miejscownik') - else: - title += u' w twórczości ' - else: - title += u'%s ' % unicode(self.get('kind', u'twórczość')) - - if 'author' in self: - title += flection.get_case(unicode(self['author']), u'dopełniacz') - elif 'epoch' in self: - title += flection.get_case(unicode(self['epoch']), u'dopełniacz') - - return capfirst(title) - - -@register.simple_tag -def user_creation_form(): - return RegistrationForm(prefix='registration').as_ul() - - -@register.simple_tag -def authentication_form(): - return LoginForm(prefix='login').as_ul() - - -@register.tag -def catalogue_url(parser, token): - bits = token.split_contents() - tag_name = bits[0] - - tags_to_add = [] - tags_to_remove = [] - for bit in bits[1:]: - if bit[0] == '-': - tags_to_remove.append(bit[1:]) - else: - tags_to_add.append(bit) - - return CatalogueURLNode(tags_to_add, tags_to_remove) - - -class CatalogueURLNode(Node): - def __init__(self, tags_to_add, tags_to_remove): - self.tags_to_add = [Variable(tag) for tag in tags_to_add] - self.tags_to_remove = [Variable(tag) for tag in tags_to_remove] - - def render(self, context): - tags_to_add = [] - tags_to_remove = [] - - for tag_variable in self.tags_to_add: - tag = tag_variable.resolve(context) - if isinstance(tag, (list, dict)): - tags_to_add += [t for t in tag] - else: - tags_to_add.append(tag) - - for tag_variable in self.tags_to_remove: - tag = tag_variable.resolve(context) - if iterable(tag): - tags_to_remove += [t for t in tag] - else: - tags_to_remove.append(tag) - - tag_slugs = [tag.slug for tag in tags_to_add] - for tag in tags_to_remove: - try: - tag_slugs.remove(tag.slug) - except KeyError: - pass - - if len(tag_slugs) > 0: - return reverse('tagged_book_list', kwargs={'tags': '/'.join(tag_slugs)}) - else: - return reverse('main_page') - - -@register.inclusion_tag('catalogue/latest_blog_posts.html') -def latest_blog_posts(feed_url, posts_to_show=5): - import feedparser - import datetime - - feed = feedparser.parse(feed_url) - posts = [] - for i in range(posts_to_show): - pub_date = feed['entries'][i].updated_parsed - published = datetime.date(pub_date[0], pub_date[1], pub_date[2] ) - posts.append({ - 'title': feed['entries'][i].title, - 'summary': feed['entries'][i].summary, - 'link': feed['entries'][i].link, - 'date': published, - }) - return {'posts': posts} - diff --git a/catalogue/templatetags/catalogue_tags.py b/catalogue/templatetags/catalogue_tags.py new file mode 100644 index 000000000..43713ce0d --- /dev/null +++ b/catalogue/templatetags/catalogue_tags.py @@ -0,0 +1,179 @@ +# -*- coding: utf-8 -*- +from django import template +from django.template import Node, Variable +from django.utils.encoding import smart_str +from django.core.urlresolvers import reverse +from django.contrib.auth.forms import UserCreationForm, AuthenticationForm + + +register = template.Library() + + +class RegistrationForm(UserCreationForm): + def as_ul(self): + "Returns this form rendered as HTML
  • s -- excluding the ." + return self._html_output(u'
  • %(errors)s%(label)s %(field)s%(help_text)s
  • ', u'
  • %s
  • ', '', u' %s', False) + + +class LoginForm(AuthenticationForm): + def as_ul(self): + "Returns this form rendered as HTML
  • s -- excluding the ." + return self._html_output(u'
  • %(errors)s%(label)s %(field)s%(help_text)s
  • ', u'
  • %s
  • ', '', u' %s', False) + + +def iterable(obj): + try: + iter(obj) + return True + except TypeError: + return False + + +def capfirst(text): + try: + return '%s%s' % (text[0].upper(), text[1:]) + except IndexError: + return '' + + +@register.simple_tag +def title_from_tags(tags): + def split_tags(tags): + result = {} + for tag in tags: + result[tag.category] = tag + return result + + class Flection(object): + def get_case(self, name, flection): + return name + flection = Flection() + + self = split_tags(tags) + + title = u'' + + # Specjalny przypadek oglądania wszystkich lektur w danym zestawie + if len(self) == 1 and 'set' in self: + return u'Zestaw %s' % self['set'] + + # Specjalny przypadek "Twórczość w pozytywizmie", wtedy gdy tylko epoka + # jest wybrana przez użytkownika + if 'epoch' in self and len(self) == 1: + text = u'Twórczość w %s' % flection.get_case(unicode(self['epoch']), u'miejscownik') + return capfirst(text) + + # Specjalny przypadek "Dramat w twórczości Sofoklesa", wtedy gdy podane + # są tylko rodzaj literacki i autor + if 'kind' in self and 'author' in self and len(self) == 2: + text = u'%s w twórczości %s' % (unicode(self['kind']), + flection.get_case(unicode(self['author']), u'dopełniacz')) + return capfirst(text) + + # Przypadki ogólniejsze + if 'theme' in self: + title += u'Motyw %s' % unicode(self['theme']) + + if 'genre' in self: + if 'theme' in self: + title += u' w %s' % flection.get_case(unicode(self['genre']), u'miejscownik') + else: + title += unicode(self['genre']) + + if 'kind' in self or 'author' in self or 'epoch' in self: + if 'genre' in self or 'theme' in self: + if 'kind' in self: + title += u' w %s ' % flection.get_case(unicode(self['kind']), u'miejscownik') + else: + title += u' w twórczości ' + else: + title += u'%s ' % unicode(self.get('kind', u'twórczość')) + + if 'author' in self: + title += flection.get_case(unicode(self['author']), u'dopełniacz') + elif 'epoch' in self: + title += flection.get_case(unicode(self['epoch']), u'dopełniacz') + + return capfirst(title) + + +@register.simple_tag +def user_creation_form(): + return RegistrationForm(prefix='registration').as_ul() + + +@register.simple_tag +def authentication_form(): + return LoginForm(prefix='login').as_ul() + + +@register.tag +def catalogue_url(parser, token): + bits = token.split_contents() + tag_name = bits[0] + + tags_to_add = [] + tags_to_remove = [] + for bit in bits[1:]: + if bit[0] == '-': + tags_to_remove.append(bit[1:]) + else: + tags_to_add.append(bit) + + return CatalogueURLNode(tags_to_add, tags_to_remove) + + +class CatalogueURLNode(Node): + def __init__(self, tags_to_add, tags_to_remove): + self.tags_to_add = [Variable(tag) for tag in tags_to_add] + self.tags_to_remove = [Variable(tag) for tag in tags_to_remove] + + def render(self, context): + tags_to_add = [] + tags_to_remove = [] + + for tag_variable in self.tags_to_add: + tag = tag_variable.resolve(context) + if isinstance(tag, (list, dict)): + tags_to_add += [t for t in tag] + else: + tags_to_add.append(tag) + + for tag_variable in self.tags_to_remove: + tag = tag_variable.resolve(context) + if iterable(tag): + tags_to_remove += [t for t in tag] + else: + tags_to_remove.append(tag) + + tag_slugs = [tag.slug for tag in tags_to_add] + for tag in tags_to_remove: + try: + tag_slugs.remove(tag.slug) + except KeyError: + pass + + if len(tag_slugs) > 0: + return reverse('tagged_book_list', kwargs={'tags': '/'.join(tag_slugs)}) + else: + return reverse('main_page') + + +@register.inclusion_tag('catalogue/latest_blog_posts.html') +def latest_blog_posts(feed_url, posts_to_show=5): + import feedparser + import datetime + + feed = feedparser.parse(feed_url) + posts = [] + for i in range(posts_to_show): + pub_date = feed['entries'][i].updated_parsed + published = datetime.date(pub_date[0], pub_date[1], pub_date[2] ) + posts.append({ + 'title': feed['entries'][i].title, + 'summary': feed['entries'][i].summary, + 'link': feed['entries'][i].link, + 'date': published, + }) + return {'posts': posts} + diff --git a/templates/admin/base_site.html b/templates/admin/base_site.html index 8a4e1b0ea..d0ca937a0 100644 --- a/templates/admin/base_site.html +++ b/templates/admin/base_site.html @@ -1,5 +1,4 @@ {% extends "admin/base.html" %} -{% load i18n %} {% block title %}{{ title }} | Administracja stroną WolneLektury.pl{% endblock %} diff --git a/templates/base.html b/templates/base.html index 84cfd36b7..69f5dd2f9 100644 --- a/templates/base.html +++ b/templates/base.html @@ -1,4 +1,4 @@ -{% load chunks compressed catalogue %} +{% load chunks compressed catalogue_tags %} diff --git a/templates/catalogue/book_detail.html b/templates/catalogue/book_detail.html index 8746edbb5..a23e6315e 100644 --- a/templates/catalogue/book_detail.html +++ b/templates/catalogue/book_detail.html @@ -1,5 +1,5 @@ {% extends "base.html" %} -{% load catalogue %} +{% load catalogue_tags %} {% block title %}Lektura {{ book.title }} w WolneLektury.pl{% endblock %} diff --git a/templates/catalogue/book_list.html b/templates/catalogue/book_list.html index dc2ebf960..f6c3b75fa 100644 --- a/templates/catalogue/book_list.html +++ b/templates/catalogue/book_list.html @@ -1,5 +1,5 @@ {% extends "base.html" %} -{% load catalogue chunks %} +{% load catalogue_tags chunks %} {% block bodyid %}book-a-list{% endblock %} diff --git a/templates/catalogue/book_sets.html b/templates/catalogue/book_sets.html index 1b87c12af..1ae34c3cd 100644 --- a/templates/catalogue/book_sets.html +++ b/templates/catalogue/book_sets.html @@ -1,15 +1,17 @@ -{% if book %}

    Zestawy zawierające utwór {{ book.title }}

    -
    -
      -
    1. {{ form.set_ids }}
    2. -
    3. -
    -
    +{% if not user.tag_set.count %} +

    Nie posiadasz żadnych zestawów. Jeśli chcesz, możesz utworzyć nowy zestaw poniżej.

    +{% else %} +
    +
      +
    1. {{ form.set_ids }}
    2. +
    3. +
    +
    {% endif %}
      -
    1. {{ new_set_form.name }}
    2. +
    3. {{ new_set_form.name }}
    \ No newline at end of file diff --git a/templates/catalogue/tagged_book_list.html b/templates/catalogue/tagged_book_list.html index 3fd8e7255..695a49240 100644 --- a/templates/catalogue/tagged_book_list.html +++ b/templates/catalogue/tagged_book_list.html @@ -1,5 +1,5 @@ {% extends "base.html" %} -{% load catalogue pagination_tags %} +{% load catalogue_tags pagination_tags %} {% block title %}{% title_from_tags tags %} w WolneLektury.pl{% endblock %}