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

start testing

parent bbf7d3bf
Loading
Loading
Loading
Loading
+78 −70
Original line number Diff line number Diff line
@@ -8,6 +8,8 @@ from resources.models import (
    MetadataType,
    ResourceClass,
    Collection,
    fetch_public_project,
    Permission,
)
import json
import csv
@@ -24,56 +26,58 @@ IIIF_SUPPORT = [
]


class Command(BaseCommand):
    # mimes database from https://cdn.jsdelivr.net/gh/jshttp/mime-db@master/db.json
    def handle(self, *args, **options):
def set_base_permissions():
    obj_types = ["collection", "resource", "metadata", "metadataset", "file", "tag"]
    permissions = ["add", "read", "write", "delete"]
    for obj_type in obj_types:
        for permission in permissions:
            Permission.objects.get_or_create(label="{}.{}".format(obj_type, permission))
    Permission.objects.get_or_create(label="file.download_source")


def load_fixtures(*args):
    set_base_permissions()
    for title in ["text", "numeric", "json", "xml", "integer", "float"]:
            metatype = MetadataType(title=title)
            metatype.save()
        MetadataType.objects.get_or_create(title=title)
    default_user, created = User.objects.get_or_create(username="public_user")
        root_collection, created = Collection.objects.get_or_create(
            owner=default_user, title="root"
        )
    public_project = fetch_public_project()
    Collection.objects.get_or_create(owner=default_user, title="root")
    with open(
        "{}/mimes.json".format(pathlib.Path(__file__).parent.absolute()), "r"
    ) as f:
        data = json.load(f)
        for key in data:
            if "extensions" in data[key]:
                    file_type, created = FileType.objects.get_or_create(
                        mime=key, title=key
                    )
                    if created:
                        print("created file type {}".format(file_type))
                file_type, created = FileType.objects.get_or_create(mime=key, title=key)
                for extension in data[key]["extensions"]:
                    extension, created = FileExtension.objects.get_or_create(
                        label=extension
                    )
                        if created:
                            print("created extension {}".format(extension))
                    file_type.extensions.add(extension)

    metadatasets = {}
    with open(
        "{}/vocabulary.csv".format(pathlib.Path(__file__).parent.absolute()), "r"
    ) as f:
        reader = csv.reader(f)
        next(reader)
        for row in reader:
                meta_set, created = MetadataSet.objects.get_or_create(
                    title=row[4], owner=default_user
            metadatasets[row[0]], created = MetadataSet.objects.get_or_create(
                title=row[4], owner=default_user, project=public_project
            )
                if created:
                    print("created meta set {}".format(meta_set))
    metadatas = {}
    with open(
        "{}/property.csv".format(pathlib.Path(__file__).parent.absolute()), "r"
    ) as f:
        reader = csv.reader(f)
        next(reader)
        for row in reader:
                meta_prop, created = Metadata.objects.get_or_create(
                    title=row[3], set_id=row[2], owner=default_user
            metadatas[row[0]], created = Metadata.objects.get_or_create(
                title=row[3],
                set_id=metadatasets[row[2]].pk,
                owner=default_user,
                project=public_project,
            )
                if created:
                    print("created metada {}".format(meta_prop))
    with open(
        "{}/resource_class.csv".format(pathlib.Path(__file__).parent.absolute()),
        "r",
@@ -81,15 +85,13 @@ class Command(BaseCommand):
        reader = csv.reader(f)
        next(reader)
        for row in reader:
                resource_class, created = ResourceClass.objects.get_or_create(
            ResourceClass.objects.get_or_create(
                id=row[0],
                title=row[3],
                    set_id=row[2],
                set_id=metadatasets[row[2]].pk,
                verbose_title=row[4],
                description=row[5],
            )
                if created:
                    print("created resource class {}".format(resource_class))
    for mime in IIIF_SUPPORT:
        try:
            file_type = FileType.objects.get(mime=mime)
@@ -97,3 +99,9 @@ class Command(BaseCommand):
            file_type.save()
        except FileType.DoesNotExist:
            pass


class Command(BaseCommand):
    # mimes database from https://cdn.jsdelivr.net/gh/jshttp/mime-db@master/db.json
    def handle(self, *args, **options):
        load_fixtures()
+325 −105

File changed.

Preview size limit exceeded, changes collapsed.

+8 −4
Original line number Diff line number Diff line
@@ -7,13 +7,17 @@ import django.db.models.deletion
class Migration(migrations.Migration):

    dependencies = [
        ('resources', '0001_initial'),
        ("resources", "0001_initial"),
    ]

    operations = [
        migrations.AlterField(
            model_name='collection',
            name='parent',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='resources.collection'),
            model_name="collection",
            name="parent",
            field=models.ForeignKey(
                null=True,
                on_delete=django.db.models.deletion.CASCADE,
                to="resources.collection",
            ),
        ),
    ]
+8 −4
Original line number Diff line number Diff line
@@ -9,13 +9,17 @@ class Migration(migrations.Migration):

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
        ('resources', '0002_auto_20201125_1111'),
        ("resources", "0002_auto_20201125_1111"),
    ]

    operations = [
        migrations.AddField(
            model_name='resource',
            name='ptr_owner',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
            model_name="resource",
            name="ptr_owner",
            field=models.ForeignKey(
                null=True,
                on_delete=django.db.models.deletion.CASCADE,
                to=settings.AUTH_USER_MODEL,
            ),
        ),
    ]
+19 −7
Original line number Diff line number Diff line
@@ -7,20 +7,32 @@ import django.db.models.deletion
class Migration(migrations.Migration):

    dependencies = [
        ('resources', '0003_resource_ptr_owner'),
        ("resources", "0003_resource_ptr_owner"),
    ]

    operations = [
        migrations.CreateModel(
            name='MetadataType',
            name="MetadataType",
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('title', models.CharField(max_length=128, verbose_name='titre')),
                (
                    "id",
                    models.AutoField(
                        auto_created=True,
                        primary_key=True,
                        serialize=False,
                        verbose_name="ID",
                    ),
                ),
                ("title", models.CharField(max_length=128, verbose_name="titre")),
            ],
        ),
        migrations.AddField(
            model_name='metadata',
            name='data_type',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='resources.metadatatype'),
            model_name="metadata",
            name="data_type",
            field=models.ForeignKey(
                null=True,
                on_delete=django.db.models.deletion.SET_NULL,
                to="resources.metadatatype",
            ),
        ),
    ]
Loading