diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-05-30 20:26:21 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-06-12 09:57:24 +0200 |
commit | 10b603af68689ea3b251006b7ec05855b9616811 (patch) | |
tree | 981ddce21bc6bad956c5b012baf9608fdfe909b1 /ishtar_common/utils_migrations.py | |
parent | bdfc5407eb4790c86e5ffe80d3ac0cc68fb5a9a2 (diff) | |
download | Ishtar-10b603af68689ea3b251006b7ec05855b9616811.tar.bz2 Ishtar-10b603af68689ea3b251006b7ec05855b9616811.zip |
Migrate images and sources to new document model (refs #4107)
Diffstat (limited to 'ishtar_common/utils_migrations.py')
-rw-r--r-- | ishtar_common/utils_migrations.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/ishtar_common/utils_migrations.py b/ishtar_common/utils_migrations.py index 9f514ea48..48e9e4f9b 100644 --- a/ishtar_common/utils_migrations.py +++ b/ishtar_common/utils_migrations.py @@ -46,3 +46,32 @@ def migrate_simple_image_to_m2m(base_model, image_model, rel_model, print(base_model) print("{} missing".format(missing)) print("{} moved".format(moved)) + + +def migrate_images(apps, base_model, rel_model): + IshtarImage = apps.get_model('ishtar_common', 'IshtarImage') + Document = apps.get_model('ishtar_common', 'Document') + for image_rel in rel_model.objects.order_by('is_main').all(): + image = IshtarImage.objects.get(pk=image_rel.image.pk) + doc = Document.objects.create(image=image.image, + thumbnail=image.thumbnail) + item = base_model.objects.get(pk=image_rel.item.pk) + item.documents.add(doc) + + +def migrate_sources(apps, base_model, source_model, item_attr): + Document = apps.get_model('ishtar_common', 'Document') + for source in source_model.objects.all(): + doc = Document.objects.create() + for attr in ['title', 'index', 'external_id', 'reference', + 'internal_reference', 'source_type', 'support_type', + 'format_type', 'scale', 'associated_url', 'receipt_date', + 'creation_date', 'receipt_date_in_documentation', + 'item_number', 'description', 'comment', + 'additional_information', 'duplicate']: + setattr(doc, attr, getattr(source, attr)) + doc.save() + for author in source.authors.all(): + doc.authors.add(author) + item = base_model.objects.get(pk=getattr(source, item_attr).pk) + item.documents.add(doc) |