X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/9a6638c3bf05511aa43d6511436014921f00b169..b15410e8b6dc970a92d0716dd54f154090ff6946:/apps/catalogue/models.py diff --git a/apps/catalogue/models.py b/apps/catalogue/models.py index 9c943ca75..cb1eff841 100644 --- a/apps/catalogue/models.py +++ b/apps/catalogue/models.py @@ -479,7 +479,7 @@ class Book(models.Model): @classmethod - def from_xml_file(cls, xml_file, overwrite=False, build_epub=True): + def from_xml_file(cls, xml_file, **kwargs): # use librarian to parse meta-data book_info = dcparser.parse(xml_file) @@ -487,12 +487,13 @@ class Book(models.Model): xml_file = File(open(xml_file)) try: - return cls.from_text_and_meta(xml_file, book_info, overwrite, build_epub=build_epub) + return cls.from_text_and_meta(xml_file, book_info, **kwargs) finally: xml_file.close() @classmethod def from_text_and_meta(cls, raw_file, book_info, overwrite=False, build_epub=True, build_txt=True): + import re from tempfile import NamedTemporaryFile from slughifi import slughifi from markupstring import MarkupString @@ -511,6 +512,8 @@ class Book(models.Model): # Read book metadata book_base, book_slug = book_info.url.rsplit('/', 1) + if re.search(r'[^a-zA-Z0-9-]', book_slug): + raise ValueError('Invalid characters in slug') book, created = Book.objects.get_or_create(slug=book_slug) if created: