fnp
/
wolnelektury.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Machina preview.
[wolnelektury.git]
/
src
/
isbn
/
management
/
commands
/
import_onix.py
diff --git
a/src/isbn/management/commands/import_onix.py
b/src/isbn/management/commands/import_onix.py
index
1d86e96
..
85d54ec
100644
(file)
--- a/
src/isbn/management/commands/import_onix.py
+++ b/
src/isbn/management/commands/import_onix.py
@@
-4,8
+4,9
@@
from lxml import etree
from django.core.management.base import BaseCommand
from isbn.models import ISBNPool, ONIXRecord
from django.core.management.base import BaseCommand
from isbn.models import ISBNPool, ONIXRecord
+from librarian import XMLNamespace
-ONIXNS =
'{http://ns.editeur.org/onix/3.0/reference}'
+ONIXNS =
XMLNamespace('http://ns.editeur.org/onix/3.0/reference')
DIRECT_FIELDS = {
'product_form': 'ProductForm',
DIRECT_FIELDS = {
'product_form': 'ProductForm',
@@
-18,7
+19,7
@@
DIRECT_FIELDS = {
'imprint': 'ImprintName',
}
'imprint': 'ImprintName',
}
-UN
NAMED
= u'Autor nieznany'
+UN
KNOWN
= u'Autor nieznany'
def parse_date(date_str):
def parse_date(date_str):
@@
-29,9
+30,9
@@
def parse_date(date_str):
def get_descendants(element, tags):
def get_descendants(element, tags):
- if isinstance(tags,
basestring
):
+ if isinstance(tags,
str
):
tags = [tags]
tags = [tags]
- return element.findall('.//' + '/'.join(ONIXNS
+ tag
for tag in tags))
+ return element.findall('.//' + '/'.join(ONIXNS
(tag)
for tag in tags))
def get_field(element, tags, allow_multiple=False):
def get_field(element, tags, allow_multiple=False):
@@
-43,14
+44,17
@@
def get_field(element, tags, allow_multiple=False):
class Command(BaseCommand):
help = "Import data from ONIX."
class Command(BaseCommand):
help = "Import data from ONIX."
- args = 'filename'
- def handle(self, filename, *args, **options):
+ def add_arguments(self, parser):
+ parser.add_argument('filename')
+
+ def handle(self, **options):
+ filename = options['filename']
tree = etree.parse(open(filename))
for product in get_descendants(tree, 'Product'):
isbn = get_field(product, ['ProductIdentifier', 'IDValue'])
assert len(isbn) == 13
tree = etree.parse(open(filename))
for product in get_descendants(tree, 'Product'):
isbn = get_field(product, ['ProductIdentifier', 'IDValue'])
assert len(isbn) == 13
- pool = ISBNPool.objects.get(prefix__in=[isbn[:i] for i in
x
range(8, 11)])
+ pool = ISBNPool.objects.get(prefix__in=[isbn[:i] for i in range(8, 11)])
contributors = [
self.parse_contributor(contributor)
for contributor in get_descendants(product, 'Contributor')]
contributors = [
self.parse_contributor(contributor)
for contributor in get_descendants(product, 'Contributor')]
@@
-61,7
+65,7
@@
class Command(BaseCommand):
get_field(product, ['PublishingDate', 'Date'], allow_multiple=True)),
'contributors': contributors,
}
get_field(product, ['PublishingDate', 'Date'], allow_multiple=True)),
'contributors': contributors,
}
- for field, tag in DIRECT_FIELDS.ite
rite
ms():
+ for field, tag in DIRECT_FIELDS.items():
record_data[field] = get_field(product, tag) or ''
record = ONIXRecord.objects.create(**record_data)
ONIXRecord.objects.filter(pk=record.pk).update(datestamp=parse_date(product.attrib['datestamp']))
record_data[field] = get_field(product, tag) or ''
record = ONIXRecord.objects.create(**record_data)
ONIXRecord.objects.filter(pk=record.pk).update(datestamp=parse_date(product.attrib['datestamp']))
@@
-77,10
+81,10
@@
class Command(BaseCommand):
contributor_data = {
'role': get_field(contributor, 'ContributorRole'),
}
contributor_data = {
'role': get_field(contributor, 'ContributorRole'),
}
- for key, value in data.ite
rite
ms():
+ for key, value in data.items():
if value:
contributor_data[key] = value
if value:
contributor_data[key] = value
- if contributor_data.get('name') == UN
NAMED
:
+ if contributor_data.get('name') == UN
KNOWN
:
del contributor_data['name']
contributor_data['unnamed'] = '01'
for date_elem in get_descendants(contributor, 'ContributorDate'):
del contributor_data['name']
contributor_data['unnamed'] = '01'
for date_elem in get_descendants(contributor, 'ContributorDate'):