1 # -*- coding: utf-8 -*-
3 from optparse import make_option
7 from django.core.management.base import BaseCommand
8 from django.core.management.color import color_style
9 from django.db import transaction
10 from librarian import ParseError, ValidationError
12 from catalogue.models import Book
15 class Command(BaseCommand):
16 option_list = BaseCommand.option_list + (
17 make_option('-q', '--quiet', action='store_false', dest='verbose', default=True, help='Less output'),
19 help = 'Imports XML files.'
22 def handle(self, directory, *args, **options):
24 self.style = color_style()
26 verbose = options.get('verbose')
28 # Start transaction management.
29 transaction.commit_unless_managed()
30 transaction.enter_transaction_management()
31 transaction.managed(True)
35 "author_name": 'Platforma',
36 "description": 'Automatycznie zaimportowane',
39 for xml_filename in os.listdir(directory):
42 text = open(os.path.join(directory, xml_filename)).read().decode('utf-8')
44 tree = etree.fromstring(text)
45 slug = xml_filename.split('.')[0]
46 except Exception as e:
47 print xml_filename, 'error: ', repr(e)
49 title = tree.find('.//header').text
50 print book_count, slug, title
57 commit_args=commit_args,
64 print "Imported %d books" % book_count
68 transaction.leave_transaction_management()