X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/0c5403e0b84d85ce6f515e2b8e5bc6190647645f..2caa6415139fe58938a62dca695639ba0cc86dda:/src/catalogue/management/commands/import_catalogue_from_wl_dump.py diff --git a/src/catalogue/management/commands/import_catalogue_from_wl_dump.py b/src/catalogue/management/commands/import_catalogue_from_wl_dump.py index 226fc476..ea3f8054 100644 --- a/src/catalogue/management/commands/import_catalogue_from_wl_dump.py +++ b/src/catalogue/management/commands/import_catalogue_from_wl_dump.py @@ -6,6 +6,15 @@ import wikidata from catalogue.models import Book, Author +def parse_name(name): + name_pieces = name.rsplit(' ', 1) + if len(name_pieces) == 1: + return name_pieces[0], '' + else: + return name_pieces + + + class Command(BaseCommand): def add_arguments(self, parser): parser.add_argument('path') @@ -15,7 +24,6 @@ class Command(BaseCommand): data = json.load(f) for item in data: if item['model'] == 'pdcounter.bookstub': - continue notes = [] slug = item['fields']['slug'] book, created = Book.objects.get_or_create(slug=slug) @@ -29,16 +37,9 @@ class Command(BaseCommand): book.save() if not book.authors.exists(): - author_name = item['fields']['author'] - name_pieces = author_name.rsplit(' ', 1) - if len(name_pieces) == 1: - first_name, last_name = name_pieces, '' - else: - first_name, last_name = name_pieces - + first_name, last_name = parse_name(item['fields']['author']) author, created = Author.objects.get_or_create(first_name=first_name, last_name=last_name) if not author.slug: - print(author.slug, author_name) author.slug = slugify(author_name) author.save() book.authors.set([author]) @@ -46,15 +47,11 @@ class Command(BaseCommand): slug = item['fields']['slug'] author, created = Author.objects.get_or_create(slug=slug) if not author.first_name and not author.last_name: - author_name = item['fields']['name'] - name_pieces = author_name.rsplit(' ', 1) - if len(name_pieces) == 1: - author.first_name, author.last_name = name_pieces, '' - else: - author.first_name, author.last_name = name_pieces + author.first_name, author.last_name = parse_name(item['fields']['name']) author.year_of_death = author.year_of_death or item['fields']['death'] author.notes = author.notes or item['fields']['description'] author.gazeta_link = author.gazeta_link or item['fields']['gazeta_link'] + author.save() wiki_link = item['fields']['wiki_link'] assert not wiki_link # Welp else: