X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/69b332800a472211b5da70426171fa429702a273..0b1bf765d6185ef20235e702b2969d951bca4de5:/src/depot/migrations/0010_migrate_external_ids.py diff --git a/src/depot/migrations/0010_migrate_external_ids.py b/src/depot/migrations/0010_migrate_external_ids.py new file mode 100644 index 00000000..d00630d4 --- /dev/null +++ b/src/depot/migrations/0010_migrate_external_ids.py @@ -0,0 +1,62 @@ +# Generated by Django 4.1.9 on 2023-09-05 14:14 + +from django.db import migrations + + +def migrate_external_ids(apps, schema_editor): + Book = apps.get_model('documents', 'Book') + Site = apps.get_model('depot', 'Site') + SiteBook = apps.get_model('depot', 'SiteBook') + SiteBookPublish = apps.get_model('depot', 'SiteBookPublish') + + site_types = ('legimi', 'woblink') + for site_type in site_types: + site = Site.objects.filter(site_type=site_type).first() + if site is None: + continue + for book in Book.objects.exclude(**{f'{site_type}_id': ''}): + SiteBook.objects.get_or_create( + site=site, book=book, + external_id=getattr(book, f'{site_type}_id') + ) + + for p in SiteBookPublish.objects.all(): + p.site_book, created = SiteBook.objects.get_or_create( + site=p.site, + book=p.book + ) + p.save(update_fields=['site_book']) + + + +def remigrate_external_ids(apps, schema_editor): + Book = apps.get_model('documents', 'Book') + Site = apps.get_model('depot', 'Site') + SiteBook = apps.get_model('depot', 'SiteBook') + SiteBookPublish = apps.get_model('depot', 'SiteBookPublish') + + for p in SiteBookPublish.objects.exclude(site_book=None): + p.site = p.site_book.site + p.book = p.site_book.book + p.save(update_fields=['site', 'book']) + + site_types = ('legimi', 'woblink') + for site_type in site_types: + for site_book in SiteBook.objects.exclude(external_id=None): + book = site_book.book + setattr(book, f'{site_type}_id', site_book.external_id) + book.save(update_fields=[f'{site_type}_id']) + + +class Migration(migrations.Migration): + + dependencies = [ + ("depot", "0009_sitebook_sitebookpublish_site_book"), + ] + + operations = [ + migrations.RunPython( + migrate_external_ids, + remigrate_external_ids, + ) + ]