X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/9c5d9a4e77a10b4e60d89d3890e49002bd7f3993..1f833acede38e81683b2bdc9096edf203c6ceb1e:/apps/catalogue/forms.py diff --git a/apps/catalogue/forms.py b/apps/catalogue/forms.py index d2178248e..04969c2e2 100644 --- a/apps/catalogue/forms.py +++ b/apps/catalogue/forms.py @@ -3,6 +3,7 @@ # 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 @@ -12,10 +13,20 @@ from catalogue import utils class BookImportForm(forms.Form): - book_xml_file = forms.FileField() + book_xml_file = forms.FileField(required=False) + book_xml = forms.CharField(required=False) - def save(self, commit=True): - return Book.from_xml_file(self.cleaned_data['book_xml_file'], overwrite=True) + def clean(self): + if not self.cleaned_data['book_xml_file']: + if self.cleaned_data['book_xml']: + self.cleaned_data['book_xml_file'] = \ + ContentFile(self.cleaned_data['book_xml'].encode('utf-8')) + else: + raise forms.ValidationError(_("Please supply an XML.")) + return super(BookImportForm, self).clean() + + def save(self, commit=True, **kwargs): + return Book.from_xml_file(self.cleaned_data['book_xml_file'], overwrite=True, **kwargs) class SearchForm(forms.Form): @@ -26,8 +37,8 @@ class SearchForm(forms.Form): tags = kwargs.pop('tags', []) super(SearchForm, self).__init__(*args, **kwargs) self.fields['q'].widget.attrs['title'] = _('title, author, theme/topic, epoch, kind, genre') - self.fields['q'].widget.attrs['style'] = 'float: left; width: 200px; border: medium none; height: 15px; margin-top: 2px;' - self.fields['tags'].initial = '/'.join(tag.slug for tag in Tag.get_tag_list(tags)) + #self.fields['q'].widget.attrs['style'] = '' + self.fields['tags'].initial = '/'.join(tag.url_chunk for tag in Tag.get_tag_list(tags)) class UserSetsForm(forms.Form): @@ -44,7 +55,7 @@ class ObjectSetsForm(forms.Form): self.fields['set_ids'] = forms.MultipleChoiceField( label=_('Shelves'), required=False, - choices=[(tag.id, "%s (%s)" % (tag.name, tag.book_count)) for tag in Tag.objects.filter(category='set', user=user)], + choices=[(tag.id, "%s (%s)" % (tag.name, tag.get_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 ) @@ -59,7 +70,7 @@ class NewSetForm(forms.Form): def save(self, user, commit=True): name = self.cleaned_data['name'] - new_set = Tag(name=name, slug=utils.get_random_hash(name), sort_key=slughifi(name), + new_set = Tag(name=name, slug=utils.get_random_hash(name), sort_key=name.lower(), category='set', user=user) new_set.save() @@ -73,6 +84,8 @@ FORMATS = ( ('odt', 'ODT'), ('txt', 'TXT'), ('epub', 'EPUB'), + ('daisy', 'DAISY'), + ('mobi', 'MOBI'), )