Commit d68e3073 authored by Mickaël Desfrênes's avatar Mickaël Desfrênes
Browse files

add migrations

parent ef27179c
Loading
Loading
Loading
Loading
+72 −0
Original line number Diff line number Diff line
from django.core.management.base import BaseCommand
from django.db import connection
from resources.models import (
    Project,
    Role,
    Permission,
    Collection,
    Resource,
    File,
    Metadata,
    MetadataSet,
    MetadataCollectionValue,
    MetadataResourceValue,
    Tag,
    ProjectAccess,
)
from django.contrib.auth.models import User


"""
    - Add field project to collection
    - Add field project to file
    - Add field project to metadata
    - Add field project to metadataset
    - Add field ptr_project to resource
    - Add field project to tag
"""


class Command(BaseCommand):
    def handle(self, *args, **options):
        for user in User.objects.all():
            project, created = Project.objects.get_or_create(
                label="{} main project".format(user.username)
            )
            admin_role, created = Role.objects.get_or_create(
                label="admin", project=project
            )
            project_access, created = ProjectAccess.objects.get_or_create(
                project=project, role=admin_role, user=user
            )
            with connection.cursor() as cursor:
                cursor.execute(
                    "UPDATE resources_collection set project_id = {} where owner_id = {}".format(
                        project.pk, user.pk
                    )
                )
                cursor.execute(
                    "UPDATE resources_file set project_id = {} where owner_id = {}".format(
                        project.pk, user.pk
                    )
                )
                cursor.execute(
                    "UPDATE resources_metadata set project_id = {} where owner_id = {}".format(
                        project.pk, user.pk
                    )
                )
                cursor.execute(
                    "UPDATE resources_metadataset set project_id = {} where owner_id = {}".format(
                        project.pk, user.pk
                    )
                )
                cursor.execute(
                    "UPDATE resources_resource set ptr_project_id = {} where ptr_owner_id = {}".format(
                        project.pk, user.pk
                    )
                )
                cursor.execute(
                    "UPDATE resources_tag set project_id = {} where owner_id = {}".format(
                        project.pk, user.pk
                    )
                )
+101 −0
Original line number Diff line number Diff line
# Generated by Django 3.2.2 on 2021-09-15 20:24

from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
        ('resources', '0013_collection_is_oai_record'),
    ]

    operations = [
        migrations.CreateModel(
            name='Permission',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('label', models.TextField(unique=True)),
            ],
        ),
        migrations.CreateModel(
            name='Project',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('label', models.TextField()),
                ('description', models.TextField()),
            ],
        ),
        migrations.CreateModel(
            name='Role',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('label', models.TextField()),
                ('permissions', models.ManyToManyField(to='resources.Permission')),
                ('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='resources.project')),
            ],
            options={
                'unique_together': {('label', 'project')},
            },
        ),
        migrations.AddField(
            model_name='collection',
            name='project',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='resources.project'),
        ),
        migrations.AddField(
            model_name='file',
            name='project',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='resources.project'),
        ),
        migrations.AddField(
            model_name='metadata',
            name='project',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='resources.project'),
        ),
        migrations.AddField(
            model_name='metadataset',
            name='project',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='resources.project'),
        ),
        migrations.AddField(
            model_name='resource',
            name='ptr_project',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='resources.project'),
        ),
        migrations.AddField(
            model_name='tag',
            name='project',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='resources.project'),
        ),
        migrations.AlterUniqueTogether(
            name='file',
            unique_together={('owner', 'hash'), ('project', 'hash')},
        ),
        migrations.AlterUniqueTogether(
            name='metadata',
            unique_together={('title', 'set', 'owner'), ('title', 'set', 'project')},
        ),
        migrations.AlterUniqueTogether(
            name='metadataset',
            unique_together={('title', 'project'), ('title', 'owner')},
        ),
        migrations.AlterUniqueTogether(
            name='tag',
            unique_together={('uid', 'project'), ('uid', 'owner')},
        ),
        migrations.CreateModel(
            name='ProjectAccess',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='resources.project')),
                ('role', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='resources.role')),
                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'unique_together': {('project', 'user', 'role')},
            },
        ),
    ]