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'
+++ /dev/null
-# -*- 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}
-
--- /dev/null
+# -*- 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}
+
{% extends "admin/base.html" %}
-{% load i18n %}
{% block title %}{{ title }} | Administracja stroną WolneLektury.pl{% endblock %}
-{% 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">
{% extends "base.html" %}
-{% load catalogue %}
+{% load catalogue_tags %}
{% block title %}Lektura {{ book.title }} w WolneLektury.pl{% endblock %}
{% extends "base.html" %}
-{% load catalogue chunks %}
+{% load catalogue_tags chunks %}
{% block bodyid %}book-a-list{% endblock %}
-{% 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
{% extends "base.html" %}
-{% load catalogue pagination_tags %}
+{% load catalogue_tags pagination_tags %}
{% block title %}{% title_from_tags tags %} w WolneLektury.pl{% endblock %}