regluit/utils/fields.py

30 lines
1004 B
Python

import zipfile
from django import forms
from django.utils.translation import ugettext_lazy as _
from django.template.defaultfilters import filesizeformat
from regluit.core.isbn import ISBN
class EpubFileField(forms.FileField):
"""
does some epub checking; currently only checks its a zip:
"""
def clean(self, data, initial=None):
data = super(EpubFileField, self).clean(data, initial)
if data.name and not zipfile.is_zipfile(data.file):
raise forms.ValidationError(_('%s is not a valid EPUB file' % data.name) )
return data
class ISBNField(forms.CharField):
def to_python(self, value):
value=super(ISBNField,self).to_python(value)
if not value:
return ''
elif value == 'delete':
return value
self.isbn=ISBN(value)
if self.isbn.error:
raise forms.ValidationError(self.isbn.error)
self.isbn.validate()
return self.isbn.to_string()