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

fix tests setup

parent 030c21e0
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -157,9 +157,8 @@ def make_iiif(f: models.File):

def delete_exif_metas(f: models.File) -> int:
    deleted_counter = 0
    public_project = models.fetch_public_project()
    exiftools_metas_set = models.MetadataSet.objects.filter(
        title="ExifTool", project=public_project
        title="ExifTool", project=f.project
    ).first()
    for meta_value in models.MetadataResourceValue.objects.filter(
        resource=f, metadata__set=exiftools_metas_set
@@ -177,19 +176,18 @@ def set_exif_metas(f: models.File) -> int:
    as project.
    """
    added_counter = 0
    public_project = models.fetch_public_project()
    exiftools_metas = image_metadatas(f.local_path())
    if "ExifTool:Error" not in exiftools_metas:
        # first delete ExifTool metas
        delete_exif_metas(f)
        # then insert new metas from extracted data
        exiftools_metas_set = models.MetadataSet.objects.filter(
            title="ExifTool", project=public_project
            title="ExifTool", project=f.project
        ).first()
        if exiftools_metas_set:
            for key in exiftools_metas:
                metadata, created = models.Metadata.objects.get_or_create(
                    title=key, set=exiftools_metas_set, project=public_project
                    title=key, set=exiftools_metas_set, project=f.project
                )
                models.MetadataResourceValue.objects.get_or_create(
                    metadata=metadata,
+24 −18
Original line number Diff line number Diff line
from django.core.management.base import BaseCommand, CommandError
from django.contrib.auth.models import User
from resources.models import (
    FileExtension,
    FileType,
@@ -8,8 +7,8 @@ from resources.models import (
    MetadataType,
    ResourceClass,
    Collection,
    fetch_public_project,
    Permission,
    Project,
)
import json
import csv
@@ -35,13 +34,13 @@ def set_base_permissions():
    Permission.objects.get_or_create(label="file.download_source")


def load_fixtures(*args):
    set_base_permissions()
def set_root():
    Collection.objects.get_or_create(title="root")


def set_file_types():
    for title in ["text", "numeric", "json", "xml", "integer", "float"]:
        MetadataType.objects.get_or_create(title=title)
    default_user, created = User.objects.get_or_create(username="public_user")
    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:
@@ -54,7 +53,17 @@ def load_fixtures(*args):
                        label=extension
                    )
                    file_type.extensions.add(extension)
    for mime in IIIF_SUPPORT:
        try:
            file_type = FileType.objects.get(mime=mime)
            file_type.serve_with_iiif = True
            file_type.save()
        except FileType.DoesNotExist:
            pass


# deprecate ?
def set_basic_vocabularies_metas(project: Project):
    metadatasets = {}
    with open(
        "{}/vocabulary.csv".format(pathlib.Path(__file__).parent.absolute()), "r"
@@ -63,7 +72,7 @@ def load_fixtures(*args):
        next(reader)
        for row in reader:
            metadatasets[row[0]], created = MetadataSet.objects.get_or_create(
                title=row[4], owner=default_user, project=public_project
                title=row[4], project=project
            )
    metadatas = {}
    with open(
@@ -75,8 +84,7 @@ def load_fixtures(*args):
            metadatas[row[0]], created = Metadata.objects.get_or_create(
                title=row[3],
                set_id=metadatasets[row[2]].pk,
                owner=default_user,
                project=public_project,
                project=project,
            )
    with open(
        "{}/resource_class.csv".format(pathlib.Path(__file__).parent.absolute()),
@@ -92,16 +100,14 @@ def load_fixtures(*args):
                verbose_title=row[4],
                description=row[5],
            )
    for mime in IIIF_SUPPORT:
        try:
            file_type = FileType.objects.get(mime=mime)
            file_type.serve_with_iiif = True
            file_type.save()
        except FileType.DoesNotExist:
            pass


def load_fixtures(*args):
    set_root()
    set_base_permissions()
    set_file_types()


class Command(BaseCommand):
    # mimes database from https://cdn.jsdelivr.net/gh/jshttp/mime-db@master/db.json
    def handle(self, *args, **options):
        load_fixtures()
+64 −0
Original line number Diff line number Diff line
# Generated by Django 3.2.2 on 2021-09-20 17:17

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


class Migration(migrations.Migration):

    dependencies = [
        ("resources", "0015_auto_20210920_1419"),
    ]

    operations = [
        migrations.AlterField(
            model_name="collection",
            name="project",
            field=models.ForeignKey(
                default=1,
                on_delete=django.db.models.deletion.CASCADE,
                to="resources.project",
            ),
            preserve_default=False,
        ),
        migrations.AlterField(
            model_name="file",
            name="project",
            field=models.ForeignKey(
                default=1,
                on_delete=django.db.models.deletion.CASCADE,
                to="resources.project",
            ),
            preserve_default=False,
        ),
        migrations.AlterField(
            model_name="metadata",
            name="project",
            field=models.ForeignKey(
                default=1,
                on_delete=django.db.models.deletion.CASCADE,
                to="resources.project",
            ),
            preserve_default=False,
        ),
        migrations.AlterField(
            model_name="metadataset",
            name="project",
            field=models.ForeignKey(
                default=1,
                on_delete=django.db.models.deletion.CASCADE,
                to="resources.project",
            ),
            preserve_default=False,
        ),
        migrations.AlterField(
            model_name="tag",
            name="project",
            field=models.ForeignKey(
                default=1,
                on_delete=django.db.models.deletion.CASCADE,
                to="resources.project",
            ),
            preserve_default=False,
        ),
    ]
+57 −0
Original line number Diff line number Diff line
# Generated by Django 3.2.2 on 2021-09-20 17:27

from django.db import migrations


class Migration(migrations.Migration):

    dependencies = [
        ("resources", "0016_auto_20210920_1717"),
    ]

    operations = [
        migrations.RemoveField(
            model_name="resource",
            name="ptr_owner",
        ),
        migrations.AlterUniqueTogether(
            name="collection",
            unique_together={("title", "project", "parent")},
        ),
        migrations.AlterUniqueTogether(
            name="file",
            unique_together={("project", "hash")},
        ),
        migrations.AlterUniqueTogether(
            name="metadata",
            unique_together={("title", "set", "project")},
        ),
        migrations.AlterUniqueTogether(
            name="metadataset",
            unique_together={("title", "project")},
        ),
        migrations.AlterUniqueTogether(
            name="tag",
            unique_together={("uid", "project")},
        ),
        migrations.RemoveField(
            model_name="collection",
            name="owner",
        ),
        migrations.RemoveField(
            model_name="file",
            name="owner",
        ),
        migrations.RemoveField(
            model_name="metadata",
            name="owner",
        ),
        migrations.RemoveField(
            model_name="metadataset",
            name="owner",
        ),
        migrations.RemoveField(
            model_name="tag",
            name="owner",
        ),
    ]
+18 −0
Original line number Diff line number Diff line
# Generated by Django 3.2.2 on 2021-09-21 08:39

from django.db import migrations, models


class Migration(migrations.Migration):

    dependencies = [
        ("resources", "0017_auto_20210920_1727"),
    ]

    operations = [
        migrations.AlterField(
            model_name="project",
            name="label",
            field=models.TextField(unique=True),
        ),
    ]
Loading