X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/5c959cbb46c29a03cb6c8bc0e8b5aae5765bf150..55bc643c16dc56cf2377bd5c4d6e924d5fc62698:/apps/catalogue/forms.py diff --git a/apps/catalogue/forms.py b/apps/catalogue/forms.py index 92f50edcb..655f1eccd 100644 --- a/apps/catalogue/forms.py +++ b/apps/catalogue/forms.py @@ -3,7 +3,6 @@ # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. # from django import forms -from django.core.files.base import ContentFile from django.utils.translation import ugettext_lazy as _ from slughifi import slughifi @@ -17,6 +16,8 @@ class BookImportForm(forms.Form): book_xml = forms.CharField(required=False) def clean(self): + from django.core.files.base import ContentFile + if not self.cleaned_data['book_xml_file']: if self.cleaned_data['book_xml']: self.cleaned_data['book_xml_file'] = \ @@ -30,20 +31,16 @@ class BookImportForm(forms.Form): class SearchForm(forms.Form): - q = JQueryAutoCompleteSearchField('/newsearch/hint/') # {'minChars': 2, 'selectFirst': True, 'cacheLength': 50, 'matchContains': "word"}) - tags = forms.CharField(widget=forms.HiddenInput, required=False) - - book = forms.IntegerField(widget=forms.HiddenInput, min_value=0, required=False) + q = JQueryAutoCompleteSearchField() # {'minChars': 2, 'selectFirst': True, 'cacheLength': 50, 'matchContains': "word"}) - def __init__(self, *args, **kwargs): - tags = kwargs.pop('tags', []) - book = kwargs.pop('book', None) + def __init__(self, source, *args, **kwargs): + kwargs['auto_id'] = False super(SearchForm, self).__init__(*args, **kwargs) - self.fields['q'].widget.attrs['title'] = _('title, author, theme/topic, epoch, kind, genre, phrase') - #self.fields['q'].widget.attrs['style'] = '' - self.fields['tags'].initial = '/'.join(tag.url_chunk for tag in Tag.get_tag_list(tags)) - if book is not None: - self.fields['book'].initial = book.id + self.fields['q'].widget.attrs['id'] = _('search') + self.fields['q'].widget.attrs['autocomplete'] = _('off') + self.fields['q'].widget.attrs['data-source'] = _(source) + if not 'q' in self.data: + self.fields['q'].widget.attrs['title'] = _('title, author, theme/topic, epoch, kind, genre, phrase') class UserSetsForm(forms.Form): @@ -60,7 +57,7 @@ class ObjectSetsForm(forms.Form): self.fields['set_ids'] = forms.MultipleChoiceField( label=_('Shelves'), required=False, - choices=[(tag.id, "%s (%s)" % (tag.name, tag.get_count())) for tag in Tag.objects.filter(category='set', user=user)], + choices=[(tag.id, "%s (%s)" % (tag.name, tag.book_count)) for tag in Tag.objects.filter(category='set', user=user)], initial=[tag.id for tag in obj.tags.filter(category='set', user=user)], widget=forms.CheckboxSelectMultiple ) @@ -82,21 +79,62 @@ class NewSetForm(forms.Form): return new_set -FORMATS = ( - ('mp3', 'MP3'), - ('ogg', 'OGG'), - ('pdf', 'PDF'), - ('odt', 'ODT'), - ('txt', 'TXT'), - ('epub', 'EPUB'), - ('daisy', 'DAISY'), - ('mobi', 'MOBI'), -) +FORMATS = [(f, f.upper()) for f in Book.ebook_formats] class DownloadFormatsForm(forms.Form): - formats = forms.MultipleChoiceField(required=False, choices=FORMATS, widget=forms.CheckboxSelectMultiple) + formats = forms.MultipleChoiceField(required=False, choices=FORMATS, + widget=forms.CheckboxSelectMultiple) def __init__(self, *args, **kwargs): super(DownloadFormatsForm, self).__init__(*args, **kwargs) + +PDF_PAGE_SIZES = ( + ('a4paper', _('A4')), + ('a5paper', _('A5')), +) + + +PDF_LEADINGS = ( + ('', _('Normal leading')), + ('onehalfleading', _('One and a half leading')), + ('doubleleading', _('Double leading')), + ) + +PDF_FONT_SIZES = ( + ('11pt', _('Default')), + ('13pt', _('Big')) + ) + + +class CustomPDFForm(forms.Form): + nofootnotes = forms.BooleanField(required=False, label=_("Don't show footnotes")) + nothemes = forms.BooleanField(required=False, label=_("Don't disply themes")) + nowlfont = forms.BooleanField(required=False, label=_("Don't use our custom font")) + ## pagesize = forms.ChoiceField(PDF_PAGE_SIZES, required=True, label=_("Paper size")) + leading = forms.ChoiceField(PDF_LEADINGS, required=False, label=_("Leading")) + fontsize = forms.ChoiceField(PDF_FONT_SIZES, required=True, label=_("Font size")) + + @property + def customizations(self): + c = [] + if self.cleaned_data['nofootnotes']: + c.append('nofootnotes') + + if self.cleaned_data['nothemes']: + c.append('nothemes') + + if self.cleaned_data['nowlfont']: + c.append('nowlfont') + + ## c.append(self.cleaned_data['pagesize']) + c.append(self.cleaned_data['fontsize']) + + if self.cleaned_data['leading']: + c.append(self.cleaned_data['leading']) + + c.sort() + + return c +