diff --git a/app/apps/core/migrations/0046_data_share_doc_to_proj.py b/app/apps/core/migrations/0046_data_share_doc_to_proj.py index c1e758f3190b3c7907faadf17102bed9bef0ea9a..5007decefb9efcc6eb7b0ebcb04f618855399483 100644 --- a/app/apps/core/migrations/0046_data_share_doc_to_proj.py +++ b/app/apps/core/migrations/0046_data_share_doc_to_proj.py @@ -21,6 +21,7 @@ def make_slug(proj, Project): def forwards(apps, schema_editor): User = apps.get_model('users', 'User') Project = apps.get_model('core', 'Project') + Document = apps.get_model('core', 'Document') # create user projects for user in User.objects.all(): proj, created = Project.objects.get_or_create(name=user.username+"'s Project", @@ -39,6 +40,24 @@ def forwards(apps, schema_editor): # shared to draft user.document_set.filter(workflow_state=1).update(workflow_state=0) + # deal with documents without owner (shouldn't be any but let's be safe) + # move them to admin's + user = User.objects.filter(is_superuser=True).first() + proj, dummy = Project.objects.get_or_create(name=user.username+"'s Project", + owner=user) + if not proj.slug: + make_slug(proj, Project) + for doc in Document.objects.filter(owner=None): + doc.project = proj + doc.save() + # move share from docs to created projects + for doc in user.document_set.all(): + for share in doc.shared_with_users.all(): + proj.shared_with_users.add(share) + for share in doc.shared_with_groups.all(): + proj.shared_with_groups.add(share) + + def backwards(apps, schema_editor): Document = apps.get_model('core', 'Document') for doc in Document.objects.all(): diff --git a/app/apps/core/migrations/0048_auto_20210520_1308.py b/app/apps/core/migrations/0048_auto_20210520_1308.py new file mode 100644 index 0000000000000000000000000000000000000000..31bfc70455cc2db516958f3134cf2ceb29e8f11c --- /dev/null +++ b/app/apps/core/migrations/0048_auto_20210520_1308.py @@ -0,0 +1,19 @@ +# Generated by Django 2.2.20 on 2021-05-20 13:08 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0047_auto_20210510_1512'), + ] + + operations = [ + migrations.AlterField( + model_name='document', + name='project', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='documents', to='core.Project'), + ), + ] diff --git a/app/apps/core/models.py b/app/apps/core/models.py index 2b6e829a7b6b634d82cf1e760522d34f1d9d98e7..2269c8675c6f8fb2448bed472972b36c5e4958c6 100644 --- a/app/apps/core/models.py +++ b/app/apps/core/models.py @@ -236,7 +236,7 @@ class Document(models.Model): metadatas = models.ManyToManyField(Metadata, through=DocumentMetadata, blank=True) - project = models.ForeignKey(Project, null=True, blank=True, + project = models.ForeignKey(Project, on_delete=models.CASCADE, related_name='documents')