Renamed module catalogue.templatetags.catalogue to catalogue.templatetags.catalogue_tags.
authorMarek Stępniowski <marek@stepniowski.com>
Fri, 22 Aug 2008 13:40:15 +0000 (15:40 +0200)
committerMarek Stępniowski <marek@stepniowski.com>
Fri, 22 Aug 2008 13:40:15 +0000 (15:40 +0200)
catalogue/forms.py
catalogue/templatetags/catalogue.py [deleted file]
catalogue/templatetags/catalogue_tags.py [new file with mode: 0644]
templates/admin/base_site.html
templates/base.html
templates/catalogue/book_detail.html
templates/catalogue/book_list.html
templates/catalogue/book_sets.html
templates/catalogue/tagged_book_list.html

index 5708d89..7472eb4 100644 (file)
@@ -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 (file)
index 6b06f38..0000000
+++ /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 <li>s -- excluding the <ul></ul>."
-        return self._html_output(u'<li>%(errors)s%(label)s %(field)s<span class="help-text">%(help_text)s</span></li>', u'<li>%s</li>', '</li>', u' %s', False)
-
-
-class LoginForm(AuthenticationForm):
-    def as_ul(self):
-        "Returns this form rendered as HTML <li>s -- excluding the <ul></ul>."
-        return self._html_output(u'<li>%(errors)s%(label)s %(field)s<span class="help-text">%(help_text)s</span></li>', u'<li>%s</li>', '</li>', 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 (file)
index 0000000..43713ce
--- /dev/null
@@ -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 <li>s -- excluding the <ul></ul>."
+        return self._html_output(u'<li>%(errors)s%(label)s %(field)s<span class="help-text">%(help_text)s</span></li>', u'<li>%s</li>', '</li>', u' %s', False)
+
+
+class LoginForm(AuthenticationForm):
+    def as_ul(self):
+        "Returns this form rendered as HTML <li>s -- excluding the <ul></ul>."
+        return self._html_output(u'<li>%(errors)s%(label)s %(field)s<span class="help-text">%(help_text)s</span></li>', u'<li>%s</li>', '</li>', 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}
+
index 8a4e1b0..d0ca937 100644 (file)
@@ -1,5 +1,4 @@
 {% extends "admin/base.html" %}
-{% load i18n %}
 
 {% block title %}{{ title }} | Administracja stroną WolneLektury.pl{% endblock %}
 
index 84cfd36..69f5dd2 100644 (file)
@@ -1,4 +1,4 @@
-{% load chunks compressed catalogue %}
+{% load chunks compressed catalogue_tags %}
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
index 8746edb..a23e631 100644 (file)
@@ -1,5 +1,5 @@
 {% extends "base.html" %}
-{% load catalogue %}
+{% load catalogue_tags %}
 
 {% block title %}Lektura {{ book.title }} w WolneLektury.pl{% endblock %}
 
index dc2ebf9..f6c3b75 100644 (file)
@@ -1,5 +1,5 @@
 {% extends "base.html" %}
-{% load catalogue chunks %}
+{% load catalogue_tags chunks %}
 
 {% block bodyid %}book-a-list{% endblock %}
 
index 1b87c12..1ae34c3 100644 (file)
@@ -1,15 +1,17 @@
-{% if book %}
 <h2>Zestawy zawierające utwór {{ book.title }}</h2>
-<form action="{% url catalogue.views.book_sets book.slug %}" method="POST" accept-charset="utf-8" class="cuteform">
-<ol>
-    <li>{{ form.set_ids }}</li>
-    <li><input type="submit" value="Zapisz zestawy"/></li>
-</ol>
-</form>
+{% if not user.tag_set.count %}
+    <p>Nie posiadasz żadnych zestawów. Jeśli chcesz, możesz utworzyć nowy zestaw poniżej.</p>
+{% else %}
+    <form action="{% url catalogue.views.book_sets book.slug %}" method="POST" accept-charset="utf-8" class="cuteform">
+    <ol>
+        <li>{{ form.set_ids }}</li>
+        <li><input type="submit" value="Zapisz zestawy"/></li>
+    </ol>
+    </form>
 {% endif %}
 <hr />
 <form action="{% url catalogue.views.new_set %}" method="POST" accept-charset="utf-8" class="cuteform">
 <ol>
-    <li>{{ new_set_form.name }} <input type="submit" value="Dodaj zestaw"/></li>
+    <li>{{ new_set_form.name }} <input type="submit" value="Nowy zestaw"/></li>
 </ol>
 </form>
\ No newline at end of file
index 3fd8e72..695a492 100644 (file)
@@ -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 %}