Fixed slug regex for tags (now allows numbers in tag name).
[wolnelektury.git] / catalogue / management / commands / importbooks.py
index 24908fe..838fd4f 100644 (file)
@@ -1,11 +1,11 @@
-from django.core.management.base import BaseCommand, CommandError
+import os
+
+from django.core.management.base import BaseCommand
 from django.core.management.color import color_style
 from optparse import make_option
-import sys
-import os
+from slughifi import slughifi
+import dcparser
 
-from catalogue.lib.dcparser import parse
-from catalogue.lib.slughifi import slughifi
 from catalogue.models import Book, Tag
 
 
@@ -40,26 +40,10 @@ class Command(BaseCommand):
                     if not os.path.splitext(file_name)[1] == '.xml':
                         print self.style.NOTICE("Skipping '%s': not an XML file." % file_path)
                         continue
-                    if verbosity > 1:
+                    if verbosity > 0:
                         print "Parsing '%s'" % file_path
-                        
-                    book_info = parse(file_path)
-                    book = Book(title=book_info.title, slug=slughifi(book_info.title))
-                    book.save()
                     
-                    book_tags = []
-                    for category in ('kind', 'genre', 'author', 'epoch'):    
-                        tag_name = getattr(book_info, category)
-                        tag_sort_key = tag_name
-                        if category == 'author':
-                            tag_sort_key = tag_name.last_name
-                            tag_name = ' '.join(tag_name.first_names) + ' ' + tag_name.last_name
-                        tag, created = Tag.objects.get_or_create(name=tag_name,
-                            slug=slughifi(tag_name), sort_key=slughifi(tag_sort_key), category=category)
-                        tag.save()
-                        book_tags.append(tag)
-                    book.tags = book_tags
-        
+                    Book.from_xml_file(file_path)
         
         transaction.commit()
         transaction.leave_transaction_management()