From dc5487928e4a5fa534b1504e4100339ec1ba9f08 Mon Sep 17 00:00:00 2001 From: "Douglas Cerna (Soy Douglas)" Date: Mon, 9 Dec 2024 16:32:12 +0000 Subject: [PATCH 01/99] Bump version to 1.18.0 --- src/archivematicaCommon/lib/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/archivematicaCommon/lib/version.py b/src/archivematicaCommon/lib/version.py index 574134445b..1f69c7b4c6 100644 --- a/src/archivematicaCommon/lib/version.py +++ b/src/archivematicaCommon/lib/version.py @@ -1,4 +1,4 @@ -ARCHIVEMATICA_VERSION = (1, 17, 1) +ARCHIVEMATICA_VERSION = (1, 18, 0) def get_version(): From de76a201aed63d59ce640b35254a2e45bff68a6e Mon Sep 17 00:00:00 2001 From: "Douglas Cerna (Soy Douglas)" Date: Mon, 9 Dec 2024 16:32:41 +0000 Subject: [PATCH 02/99] Update archivematica-storage-service git submodule --- hack/submodules/archivematica-storage-service | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hack/submodules/archivematica-storage-service b/hack/submodules/archivematica-storage-service index b3e3f4bd59..9e915ce50e 160000 --- a/hack/submodules/archivematica-storage-service +++ b/hack/submodules/archivematica-storage-service @@ -1 +1 @@ -Subproject commit b3e3f4bd595603940d5e98fe61ccf334b55c62e5 +Subproject commit 9e915ce50ed66213642fe21744bf788bce34b2bf From 45785542bc77405632a8c84c95ffc42105ef894e Mon Sep 17 00:00:00 2001 From: Douglas Cerna Date: Mon, 6 Jan 2025 09:23:05 -0600 Subject: [PATCH 03/99] Drop Python 3.8 support * Upgrade pre-commit dependencies * Drop Python 3.8 support * Update git submodules --- .github/workflows/test.yml | 1 - .pre-commit-config.yaml | 8 +- .../submodules/archivematica-acceptance-tests | 2 +- hack/submodules/archivematica-storage-service | 2 +- pyproject.toml | 3 + requirements-dev.in | 5 +- requirements-dev.txt | 72 ++++++++--------- requirements.in | 8 +- requirements.txt | 58 +++++++------ src/MCPClient/lib/client/gearman.py | 24 +++--- src/MCPClient/lib/client/job.py | 16 ++-- src/MCPClient/lib/client/loader.py | 5 +- src/MCPClient/lib/client/metrics.py | 5 +- src/MCPClient/lib/client/pool.py | 17 ++-- src/MCPClient/lib/client/utils.py | 3 +- src/MCPClient/lib/client/worker.py | 3 +- .../lib/clientScripts/characterize_file.py | 3 +- .../determine_aip_version_key_exit_code.py | 3 +- .../lib/clientScripts/has_packages.py | 3 +- .../lib/clientScripts/identify_file_format.py | 3 +- src/MCPClient/lib/clientScripts/normalize.py | 3 +- .../lib/clientScripts/policy_check.py | 13 ++- .../lib/clientScripts/transcribe_file.py | 8 +- .../lib/clientScripts/validate_file.py | 9 +-- .../lib/archivematicaFunctions.py | 5 +- src/archivematicaCommon/lib/dbconns.py | 3 +- .../lib/executeOrRunSubProcess.py | 11 +-- .../administration/migrations/0001_initial.py | 4 +- .../management/commands/import_pronom_ids.py | 3 +- .../src/fpr/migrations/0001_initial.py | 4 +- .../src/fpr/south_migrations/0001_initial.py | 3 +- .../src/fpr/south_migrations/0002_api_v2.py | 3 +- src/dashboard/src/settings/base.py | 4 +- tests/MCPClient/test_antivirus_clamdscan.py | 81 +++++++++---------- tests/MCPClient/test_create_aip_mets.py | 3 +- tests/MCPClient/test_normalize.py | 9 +-- tests/MCPClient/test_verify_checksum.py | 25 +++--- tests/MCPServer/test_integration.py | 11 ++- .../test_execute_functions.py | 2 +- .../components/accounts/test_views.py | 3 +- tests/integration/test_oidc_auth.py | 5 +- 41 files changed, 201 insertions(+), 255 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ec8b2e2ee8..6acbf36b61 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -30,7 +30,6 @@ jobs: "22.04", ] python-version: [ - "3.8", "3.9", "3.10", "3.11", diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index cc9073a7d6..95d91d896d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -10,7 +10,7 @@ repos: src/(MCPClient/MCPServer|dashboard)/install/.*\.json ) - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.7.0 + rev: v0.8.5 hooks: - id: ruff args: [--fix, --exit-non-zero-on-fix] @@ -21,7 +21,7 @@ repos: - id: django-upgrade args: [--target-version, "4.2"] - repo: https://github.com/igorshubovych/markdownlint-cli - rev: v0.42.0 + rev: v0.43.0 hooks: - id: markdownlint exclude: | @@ -46,7 +46,7 @@ repos: hooks: - id: validate-cff - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.12.1 + rev: v1.14.1 hooks: - id: mypy additional_dependencies: @@ -54,7 +54,7 @@ repos: - types-python-dateutil - pytest - repo: https://github.com/tcort/markdown-link-check - rev: v3.12.2 + rev: v3.13.6 hooks: - id: markdown-link-check stages: [manual] diff --git a/hack/submodules/archivematica-acceptance-tests b/hack/submodules/archivematica-acceptance-tests index 5e87b4680d..0ebb512ba0 160000 --- a/hack/submodules/archivematica-acceptance-tests +++ b/hack/submodules/archivematica-acceptance-tests @@ -1 +1 @@ -Subproject commit 5e87b4680d80d965106b4cf3e1f9e200de11f271 +Subproject commit 0ebb512ba07415c1f4a2211ca1110d7236197c3f diff --git a/hack/submodules/archivematica-storage-service b/hack/submodules/archivematica-storage-service index 9e915ce50e..00e671996e 160000 --- a/hack/submodules/archivematica-storage-service +++ b/hack/submodules/archivematica-storage-service @@ -1 +1 @@ -Subproject commit 9e915ce50ed66213642fe21744bf788bce34b2bf +Subproject commit 00e671996e17e097bca526ae032e37123f3cd72d diff --git a/pyproject.toml b/pyproject.toml index 99e1fa0e6b..a36c8960b8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,6 +23,9 @@ include = [ ] branch = true +[tool.ruff] +target-version = "py39" + [tool.ruff.lint] # Rule reference: https://docs.astral.sh/ruff/rules/ select = [ diff --git a/requirements-dev.in b/requirements-dev.in index dfcfe84656..c682a63775 100644 --- a/requirements-dev.in +++ b/requirements-dev.in @@ -1,5 +1,6 @@ -r requirements.txt +coverage[toml] git+https://github.com/artefactual-labs/mockldap@v0.3.1#egg=mockldap pip-tools pytest @@ -13,7 +14,3 @@ tox # gevent dependency in requirements.txt. # See https://github.com/microsoft/playwright-python/issues/2190 git+https://github.com/microsoft/playwright-python.git@d9cdfbb1e178b6770625e9f857139aff77516af0#egg=playwright - -# These dependencies dropped support for Python 3.8, so pinning them for now. -coverage[toml]==7.6.1 -pytest-randomly==3.15.0 diff --git a/requirements-dev.txt b/requirements-dev.txt index 188b81c0f8..a9956df116 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -4,17 +4,17 @@ # # pip-compile --allow-unsafe --output-file=requirements-dev.txt requirements-dev.in # -agentarchives==0.9.0 +agentarchives==0.10.0 # via -r requirements.txt -amclient==1.3.0 +amclient==1.4.0 # via -r requirements.txt -ammcpc==0.2.0 +ammcpc==0.3.0 # via -r requirements.txt asgiref==3.8.1 # via # -r requirements.txt # django -attrs==24.2.0 +attrs==24.3.0 # via # -r requirements.txt # jsonschema @@ -27,7 +27,7 @@ build==1.2.2.post1 # via pip-tools cachetools==5.5.0 # via tox -certifi==2024.8.30 +certifi==2024.12.14 # via # -r requirements.txt # requests @@ -37,21 +37,21 @@ cffi==1.17.1 # cryptography chardet==5.2.0 # via tox -charset-normalizer==3.4.0 +charset-normalizer==3.4.1 # via # -r requirements.txt # requests clamd==1.0.2 # via -r requirements.txt -click==8.1.7 +click==8.1.8 # via pip-tools colorama==0.4.6 # via tox -coverage[toml]==7.6.1 +coverage[toml]==7.6.10 # via # -r requirements-dev.in # pytest-cov -cryptography==43.0.3 +cryptography==44.0.0 # via # -r requirements.txt # josepy @@ -59,14 +59,14 @@ cryptography==43.0.3 # pyopenssl distlib==0.3.9 # via virtualenv -django==4.2.16 +django==4.2.17 # via # -r requirements.txt # django-auth-ldap # django-cas-ng # django-csp # mozilla-django-oidc -django-auth-ldap==5.0.0 +django-auth-ldap==5.1.0 # via -r requirements.txt django-autoslug==1.9.9 # via -r requirements.txt @@ -80,7 +80,7 @@ django-prometheus==2.3.1 # via -r requirements.txt django-shibboleth-remoteuser @ git+https://github.com/artefactual-labs/django-shibboleth-remoteuser.git@f08a7864d6130416c352981ccf318fff0fd5be58 # via -r requirements.txt -django-tastypie==0.14.7 +django-tastypie==0.15.0 # via -r requirements.txt elasticsearch==6.8.2 # via -r requirements.txt @@ -94,7 +94,7 @@ funcparserlib==2.0.0a0 # via mockldap gearman3 @ git+https://github.com/artefactual-labs/python-gearman.git@b68efc868c7a494dd6a2d2e820fb098a6da9f797 # via -r requirements.txt -gevent==24.2.1 +gevent==24.11.1 # via -r requirements.txt greenlet==3.1.1 # via @@ -112,7 +112,7 @@ importlib-metadata==8.5.0 # -r requirements.txt # build # pytest-randomly -importlib-resources==6.4.5 +importlib-resources==6.5.2 # via # -r requirements.txt # opf-fido @@ -126,7 +126,7 @@ josepy==1.14.0 # mozilla-django-oidc jsonschema==4.23.0 # via -r requirements.txt -jsonschema-specifications==2023.12.1 +jsonschema-specifications==2024.10.1 # via # -r requirements.txt # jsonschema @@ -138,13 +138,13 @@ lxml==5.3.0 # ammcpc # metsrw # python-cas -metsrw==0.5.1 +metsrw==0.6.0 # via -r requirements.txt mockldap @ git+https://github.com/artefactual-labs/mockldap@v0.3.1 # via -r requirements-dev.in mozilla-django-oidc==4.0.1 # via -r requirements.txt -mysqlclient==2.2.5 +mysqlclient==2.2.6 # via # -r requirements.txt # agentarchives @@ -154,9 +154,9 @@ olefile==0.47 # opf-fido opf-fido @ git+https://github.com/artefactual-labs/fido.git@564ceb8018a8650fe931cf20e6780ee008e60fca # via -r requirements.txt -orjson==3.10.10 +orjson==3.10.13 # via -r requirements.txt -packaging==24.1 +packaging==24.2 # via # -r requirements.txt # build @@ -178,7 +178,7 @@ pluggy==1.5.0 # via # pytest # tox -prometheus-client==0.21.0 +prometheus-client==0.21.1 # via # -r requirements.txt # django-prometheus @@ -197,7 +197,7 @@ pycparser==2.22 # cffi pyee==12.0.0 # via playwright -pyopenssl==24.2.1 +pyopenssl==24.3.0 # via # -r requirements.txt # josepy @@ -207,7 +207,7 @@ pyproject-hooks==1.2.0 # via # build # pip-tools -pytest==8.3.3 +pytest==8.3.4 # via # -r requirements-dev.in # pytest-base-url @@ -217,13 +217,13 @@ pytest==8.3.3 # pytest-randomly pytest-base-url==2.1.0 # via pytest-playwright -pytest-cov==5.0.0 +pytest-cov==6.0.0 # via -r requirements-dev.in pytest-django==4.9.0 # via -r requirements-dev.in -pytest-playwright==0.5.2 +pytest-playwright==0.6.2 # via -r requirements-dev.in -pytest-randomly==3.15.0 +pytest-randomly==3.16.0 # via -r requirements-dev.in python-cas==1.6.0 # via @@ -258,24 +258,24 @@ requests==2.32.3 # opf-fido # pytest-base-url # python-cas -rpds-py==0.20.0 +rpds-py==0.22.3 # via # -r requirements.txt # jsonschema # referencing -six==1.16.0 +six==1.17.0 # via # -r requirements.txt # opf-fido # python-cas # python-dateutil -sqlparse==0.5.1 +sqlparse==0.5.3 # via # -r requirements.txt # django text-unidecode==1.3 # via python-slugify -tomli==2.0.2 +tomli==2.2.1 # via # build # coverage @@ -293,19 +293,19 @@ typing-extensions==4.12.2 # tox unidecode==1.3.8 # via -r requirements.txt -urllib3==2.2.3 +urllib3==2.3.0 # via # -r requirements.txt # amclient # elasticsearch # requests -virtualenv==20.27.1 +virtualenv==20.28.1 # via tox -wheel==0.44.0 +wheel==0.45.1 # via pip-tools -whitenoise==6.7.0 +whitenoise==6.8.2 # via -r requirements.txt -zipp==3.20.2 +zipp==3.21.0 # via # -r requirements.txt # importlib-metadata @@ -314,7 +314,7 @@ zope-event==5.0 # via # -r requirements.txt # gevent -zope-interface==7.1.1 +zope-interface==7.2 # via # -r requirements.txt # gevent @@ -322,7 +322,7 @@ zope-interface==7.1.1 # The following packages are considered to be unsafe in a requirements file: pip==24.3.1 # via pip-tools -setuptools==75.2.0 +setuptools==75.6.0 # via # -r requirements.txt # pip-tools diff --git a/requirements.in b/requirements.in index 204bc96c0a..4393cd65fe 100644 --- a/requirements.in +++ b/requirements.in @@ -13,6 +13,7 @@ django-prometheus django-tastypie elasticsearch>=6.0.0,<7.0.0 git+https://github.com/artefactual-labs/python-gearman.git@b68efc868c7a494dd6a2d2e820fb098a6da9f797#egg=gearman3 +gevent gunicorn importlib-metadata inotify_simple @@ -26,6 +27,7 @@ prometheus_client python-dateutil requests unidecode +whitenoise # Required by LDAP authentication django-auth-ldap @@ -36,9 +38,3 @@ django-cas-ng # Required for OpenID Connect authentication mozilla-django-oidc - -# These dependencies dropped support for Python 3.8, so pinning them for now. -django-auth-ldap==5.0.0 -gevent==24.2.1 -jsonschema-specifications==2023.12.1 -whitenoise==6.7.0 diff --git a/requirements.txt b/requirements.txt index d7eb7776ec..c83559e68a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,15 +4,15 @@ # # pip-compile --allow-unsafe --output-file=requirements.txt requirements.in # -agentarchives==0.9.0 +agentarchives==0.10.0 # via -r requirements.in -amclient==1.3.0 +amclient==1.4.0 # via -r requirements.in -ammcpc==0.2.0 +ammcpc==0.3.0 # via -r requirements.in asgiref==3.8.1 # via django -attrs==24.2.0 +attrs==24.3.0 # via # jsonschema # referencing @@ -20,27 +20,27 @@ bagit @ git+https://github.com/artefactual-labs/bagit-python.git@902051d8410219f # via -r requirements.in brotli==1.1.0 # via -r requirements.in -certifi==2024.8.30 +certifi==2024.12.14 # via requests cffi==1.17.1 # via cryptography -charset-normalizer==3.4.0 +charset-normalizer==3.4.1 # via requests clamd==1.0.2 # via -r requirements.in -cryptography==43.0.3 +cryptography==44.0.0 # via # josepy # mozilla-django-oidc # pyopenssl -django==4.2.16 +django==4.2.17 # via # -r requirements.in # django-auth-ldap # django-cas-ng # django-csp # mozilla-django-oidc -django-auth-ldap==5.0.0 +django-auth-ldap==5.1.0 # via -r requirements.in django-autoslug==1.9.9 # via -r requirements.in @@ -54,13 +54,13 @@ django-prometheus==2.3.1 # via -r requirements.in django-shibboleth-remoteuser @ git+https://github.com/artefactual-labs/django-shibboleth-remoteuser.git@f08a7864d6130416c352981ccf318fff0fd5be58 # via -r requirements.in -django-tastypie==0.14.7 +django-tastypie==0.15.0 # via -r requirements.in elasticsearch==6.8.2 # via -r requirements.in gearman3 @ git+https://github.com/artefactual-labs/python-gearman.git@b68efc868c7a494dd6a2d2e820fb098a6da9f797 # via -r requirements.in -gevent==24.2.1 +gevent==24.11.1 # via -r requirements.in greenlet==3.1.1 # via gevent @@ -70,7 +70,7 @@ idna==3.10 # via requests importlib-metadata==8.5.0 # via -r requirements.in -importlib-resources==6.4.5 +importlib-resources==6.5.2 # via opf-fido inotify-simple==1.3.5 # via -r requirements.in @@ -78,10 +78,8 @@ josepy==1.14.0 # via mozilla-django-oidc jsonschema==4.23.0 # via -r requirements.in -jsonschema-specifications==2023.12.1 - # via - # -r requirements.in - # jsonschema +jsonschema-specifications==2024.10.1 + # via jsonschema lazy-paged-sequence==0.3 # via -r requirements.in lxml==5.3.0 @@ -90,21 +88,21 @@ lxml==5.3.0 # ammcpc # metsrw # python-cas -metsrw==0.5.1 +metsrw==0.6.0 # via -r requirements.in mozilla-django-oidc==4.0.1 # via -r requirements.in -mysqlclient==2.2.5 +mysqlclient==2.2.6 # via agentarchives olefile==0.47 # via opf-fido opf-fido @ git+https://github.com/artefactual-labs/fido.git@564ceb8018a8650fe931cf20e6780ee008e60fca # via -r requirements.in -orjson==3.10.10 +orjson==3.10.13 # via -r requirements.in -packaging==24.1 +packaging==24.2 # via gunicorn -prometheus-client==0.21.0 +prometheus-client==0.21.1 # via # -r requirements.in # django-prometheus @@ -116,7 +114,7 @@ pyasn1-modules==0.4.1 # via python-ldap pycparser==2.22 # via cffi -pyopenssl==24.2.1 +pyopenssl==24.3.0 # via josepy python-cas==1.6.0 # via django-cas-ng @@ -142,39 +140,39 @@ requests==2.32.3 # mozilla-django-oidc # opf-fido # python-cas -rpds-py==0.20.0 +rpds-py==0.22.3 # via # jsonschema # referencing -six==1.16.0 +six==1.17.0 # via # opf-fido # python-cas # python-dateutil -sqlparse==0.5.1 +sqlparse==0.5.3 # via django typing-extensions==4.12.2 # via asgiref unidecode==1.3.8 # via -r requirements.in -urllib3==2.2.3 +urllib3==2.3.0 # via # amclient # elasticsearch # requests -whitenoise==6.7.0 +whitenoise==6.8.2 # via -r requirements.in -zipp==3.20.2 +zipp==3.21.0 # via # importlib-metadata # importlib-resources zope-event==5.0 # via gevent -zope-interface==7.1.1 +zope-interface==7.2 # via gevent # The following packages are considered to be unsafe in a requirements file: -setuptools==75.2.0 +setuptools==75.6.0 # via # zope-event # zope-interface diff --git a/src/MCPClient/lib/client/gearman.py b/src/MCPClient/lib/client/gearman.py index 6653e296e5..eef6b97d47 100644 --- a/src/MCPClient/lib/client/gearman.py +++ b/src/MCPClient/lib/client/gearman.py @@ -4,11 +4,7 @@ from datetime import datetime from multiprocessing.synchronize import Event from types import TracebackType -from typing import Dict -from typing import List from typing import Optional -from typing import Tuple -from typing import Type from typing import Union import gearman @@ -34,8 +30,8 @@ # }, # ... # } -TaskData = Dict[str, Union[str, bool]] -GearmanJobTasks = Dict[str, TaskData] +TaskData = dict[str, Union[str, bool]] +GearmanJobTasks = dict[str, TaskData] # This is how `results` looks in the `_format_job_results` method below: # { @@ -49,8 +45,8 @@ # }, # ... # } -JobData = Dict[str, Union[int, Optional[datetime], str]] -JobResults = Dict[str, JobData] +JobData = dict[str, Union[int, Optional[datetime], str]] +JobResults = dict[str, JobData] logger = logging.getLogger("archivematica.mcp.client.gearman") @@ -60,8 +56,8 @@ class MCPGearmanWorker(gearman.GearmanWorker): # type: ignore def __init__( self, - hosts: List[str], - client_scripts: List[str], + hosts: list[str], + client_scripts: list[str], shutdown_event: Optional[Event] = None, max_jobs_to_process: Optional[int] = None, ) -> None: @@ -82,7 +78,7 @@ def __init__( logger.debug("Worker %s registered tasks: %s", self.client_id, client_scripts) @staticmethod - def _format_job_results(jobs: List[Job]) -> JobResults: + def _format_job_results(jobs: list[Job]) -> JobResults: results = {} for job in jobs: @@ -103,7 +99,7 @@ def _format_job_results(jobs: List[Job]) -> JobResults: return results @staticmethod - def _prepare_jobs(task_name: str, gearman_job: GearmanJob) -> List[Job]: + def _prepare_jobs(task_name: str, gearman_job: GearmanJob) -> list[Job]: """Given a tasks dictionary, return a list of Job objects.""" tasks: GearmanJobTasks = gearman_job.data["tasks"] @@ -132,7 +128,7 @@ def handle_job( task_name: str, gearman_worker: gearman.GearmanWorker, gearman_job: GearmanJob, - ) -> Dict[str, JobResults]: + ) -> dict[str, JobResults]: job_module = self.job_modules[task_name] logger.debug( "Gearman job request %s received for %s", @@ -152,7 +148,7 @@ def handle_job( def on_job_exception( self, current_job: GearmanJob, - exc_info: Tuple[Type[BaseException], BaseException, TracebackType], + exc_info: tuple[type[BaseException], BaseException, TracebackType], ) -> bool: logger.error( "An unhandled exception occurred processing a Gearman job", diff --git a/src/MCPClient/lib/client/job.py b/src/MCPClient/lib/client/job.py index 018f298e01..e423589178 100644 --- a/src/MCPClient/lib/client/job.py +++ b/src/MCPClient/lib/client/job.py @@ -9,14 +9,12 @@ import logging import sys import traceback +from collections.abc import Generator +from collections.abc import Iterable +from collections.abc import Mapping from contextlib import contextmanager from logging.handlers import BufferingHandler from typing import Any -from typing import Dict -from typing import Generator -from typing import Iterable -from typing import List -from typing import Mapping from typing import Optional from typing import TypeVar from typing import Union @@ -28,7 +26,7 @@ logger = logging.getLogger("archivematica.mcp.client.job") SelfJob = TypeVar("SelfJob", bound="Job") -TaskData = Dict[str, Union[int, Optional[datetime.datetime], str]] +TaskData = dict[str, Union[int, Optional[datetime.datetime], str]] class Job: @@ -36,7 +34,7 @@ def __init__( self, name: str, uuid: str, - arguments: List[str], + arguments: list[str], capture_output: bool = False, ) -> None: """ @@ -60,7 +58,7 @@ def __init__( self.end_time: Optional[datetime.datetime] = None @classmethod - def bulk_set_start_times(cls, jobs: List[SelfJob]) -> None: + def bulk_set_start_times(cls, jobs: list[SelfJob]) -> None: """Bulk set the processing start time for a batch of jobs.""" start_time = timezone.now() uuids = [job.uuid for job in jobs] @@ -69,7 +67,7 @@ def bulk_set_start_times(cls, jobs: List[SelfJob]) -> None: job.start_time = start_time @classmethod - def bulk_mark_failed(cls, jobs: List[SelfJob], message: str) -> None: + def bulk_mark_failed(cls, jobs: list[SelfJob], message: str) -> None: uuids = [job.uuid for job in jobs] Task.objects.filter(taskuuid__in=uuids).update( diff --git a/src/MCPClient/lib/client/loader.py b/src/MCPClient/lib/client/loader.py index f61c84724b..e1198bc372 100644 --- a/src/MCPClient/lib/client/loader.py +++ b/src/MCPClient/lib/client/loader.py @@ -2,11 +2,10 @@ import warnings from configparser import RawConfigParser from types import ModuleType -from typing import Dict from typing import Optional -def get_supported_modules(modules_file_path: str) -> Dict[str, str]: +def get_supported_modules(modules_file_path: str) -> dict[str, str]: """Create and return the ``supported_modules`` dict by parsing the MCPClient modules config file (typically MCPClient/lib/archivematicaClientModules). """ @@ -41,7 +40,7 @@ def get_module_concurrency(module: ModuleType) -> int: return 1 -def load_job_modules(modules_file_path: str) -> Dict[str, Optional[ModuleType]]: +def load_job_modules(modules_file_path: str) -> dict[str, Optional[ModuleType]]: """Return a dict of {client script name: module}.""" supported_modules = get_supported_modules(modules_file_path) diff --git a/src/MCPClient/lib/client/metrics.py b/src/MCPClient/lib/client/metrics.py index 20df295a8b..03e268f084 100644 --- a/src/MCPClient/lib/client/metrics.py +++ b/src/MCPClient/lib/client/metrics.py @@ -8,7 +8,6 @@ import threading from typing import Callable from typing import Optional -from typing import Tuple from typing import TypeVar from wsgiref.simple_server import WSGIServer @@ -255,13 +254,13 @@ def worker_exit(process_id: Optional[int]) -> None: @skip_if_prometheus_disabled -def start_prometheus_server() -> Tuple[WSGIServer, threading.Thread]: +def start_prometheus_server() -> tuple[WSGIServer, threading.Thread]: registry = CollectorRegistry() multiprocess.MultiProcessCollector(registry) init_counter_labels() - result: Tuple[WSGIServer, threading.Thread] = start_http_server( + result: tuple[WSGIServer, threading.Thread] = start_http_server( settings.PROMETHEUS_BIND_PORT, addr=settings.PROMETHEUS_BIND_ADDRESS, registry=registry, diff --git a/src/MCPClient/lib/client/pool.py b/src/MCPClient/lib/client/pool.py index 936cca13c2..640765f4d8 100644 --- a/src/MCPClient/lib/client/pool.py +++ b/src/MCPClient/lib/client/pool.py @@ -20,11 +20,8 @@ import time from multiprocessing.synchronize import Event from types import ModuleType -from typing import Dict -from typing import List from typing import Optional from typing import Protocol -from typing import Tuple from typing import TypeVar import django @@ -68,14 +65,14 @@ def put_nowait(self, item: T) -> None: ... # ), # ... # ] -WorkerInitArgs = List[Tuple[Tuple[LogQueue, List[str]], Dict[str, Event]]] +WorkerInitArgs = list[tuple[tuple[LogQueue, list[str]], dict[str, Event]]] logger = logging.getLogger("archivematica.mcp.client.worker") def run_gearman_worker( log_queue: LogQueue, - client_scripts: List[str], + client_scripts: list[str], shutdown_event: Optional[Event] = None, ) -> None: """Target function executed by child processes in the pool.""" @@ -110,7 +107,7 @@ class WorkerPool: def __init__(self) -> None: self.log_queue: LogQueue = multiprocessing.Queue() self.shutdown_event = multiprocessing.Event() - self.workers: List[multiprocessing.Process] = [] + self.workers: list[multiprocessing.Process] = [] self.job_modules = loader.load_job_modules(settings.CLIENT_MODULES_FILE) self.worker_function = run_gearman_worker @@ -161,8 +158,8 @@ def stop(self) -> None: self.logging_listener.stop() def _get_script_workers_required( - self, job_modules: Dict[str, Optional[ModuleType]] - ) -> Dict[str, int]: + self, job_modules: dict[str, Optional[ModuleType]] + ) -> dict[str, int]: workers_required = {} for client_script, module in job_modules.items(): concurrency = loader.get_module_concurrency(module) @@ -172,11 +169,11 @@ def _get_script_workers_required( # Use Queue[logging.LogRecord] instead of Any def _get_worker_init_args( - self, script_workers_required: Dict[str, int] + self, script_workers_required: dict[str, int] ) -> WorkerInitArgs: # Don't mutate the argument script_workers_required = script_workers_required.copy() - init_scripts: List[List[str]] = [] + init_scripts: list[list[str]] = [] for i in range(self.pool_size): init_scripts.append([]) diff --git a/src/MCPClient/lib/client/utils.py b/src/MCPClient/lib/client/utils.py index fb2c9213fd..fe90de6946 100644 --- a/src/MCPClient/lib/client/utils.py +++ b/src/MCPClient/lib/client/utils.py @@ -1,11 +1,10 @@ import shlex -from typing import List from django.conf import settings from django.utils import timezone -def parse_command_line(s: str) -> List[str]: +def parse_command_line(s: str) -> list[str]: return [_shlex_unescape(x) for x in shlex.split(s)] diff --git a/src/MCPClient/lib/client/worker.py b/src/MCPClient/lib/client/worker.py index ceb9a234c2..0292d47c03 100644 --- a/src/MCPClient/lib/client/worker.py +++ b/src/MCPClient/lib/client/worker.py @@ -1,6 +1,5 @@ import logging from types import ModuleType -from typing import List from dbconns import auto_close_old_connections @@ -11,7 +10,7 @@ @auto_close_old_connections() # type: ignore -def run_task(task_name: str, job_module: ModuleType, jobs: List[Job]) -> None: +def run_task(task_name: str, job_module: ModuleType, jobs: list[Job]) -> None: """Do actual processing of the jobs given.""" logger.info("\n\n*** RUNNING TASK: %s***", task_name) Job.bulk_set_start_times(jobs) diff --git a/src/MCPClient/lib/clientScripts/characterize_file.py b/src/MCPClient/lib/clientScripts/characterize_file.py index dd875d5a2a..5eb645e5ce 100755 --- a/src/MCPClient/lib/clientScripts/characterize_file.py +++ b/src/MCPClient/lib/clientScripts/characterize_file.py @@ -10,7 +10,6 @@ import dataclasses import multiprocessing import uuid -from typing import List import django @@ -139,7 +138,7 @@ def parse_args(parser: argparse.ArgumentParser, job: Job) -> CharacterizeFileArg return CharacterizeFileArgs(**vars(namespace)) -def call(jobs: List[Job]) -> None: +def call(jobs: list[Job]) -> None: parser = get_parser() with transaction.atomic(): diff --git a/src/MCPClient/lib/clientScripts/determine_aip_version_key_exit_code.py b/src/MCPClient/lib/clientScripts/determine_aip_version_key_exit_code.py index 9e76220a20..eda27d3e5b 100755 --- a/src/MCPClient/lib/clientScripts/determine_aip_version_key_exit_code.py +++ b/src/MCPClient/lib/clientScripts/determine_aip_version_key_exit_code.py @@ -17,13 +17,12 @@ # along with Archivematica. If not, see . import os import sys -from typing import Dict from typing import Optional import namespaces as ns from lxml import etree -VERSION_MAP: Dict[Optional[str], int] = { +VERSION_MAP: dict[Optional[str], int] = { # Only change exit code if AIP format changes. If unknown, default to latest # version. Currently, all AIPs are the same format so no special cases # required. diff --git a/src/MCPClient/lib/clientScripts/has_packages.py b/src/MCPClient/lib/clientScripts/has_packages.py index 2a073df960..7a758abfb5 100755 --- a/src/MCPClient/lib/clientScripts/has_packages.py +++ b/src/MCPClient/lib/clientScripts/has_packages.py @@ -1,5 +1,4 @@ #!/usr/bin/env python -from typing import List import django @@ -63,7 +62,7 @@ def main(job: Job, sip_uuid: str) -> int: return 1 -def call(jobs: List[Job]) -> None: +def call(jobs: list[Job]) -> None: for job in jobs: with job.JobContext(): job.set_status(main(job, job.args[1])) diff --git a/src/MCPClient/lib/clientScripts/identify_file_format.py b/src/MCPClient/lib/clientScripts/identify_file_format.py index 24f16e1ac3..ffbb7d2cb1 100755 --- a/src/MCPClient/lib/clientScripts/identify_file_format.py +++ b/src/MCPClient/lib/clientScripts/identify_file_format.py @@ -3,7 +3,6 @@ import dataclasses import multiprocessing import uuid -from typing import List from typing import Optional import django @@ -242,7 +241,7 @@ def parse_args(parser: argparse.ArgumentParser, job: Job) -> IdentifyFileFormatA return IdentifyFileFormatArgs(**vars(namespace)) -def call(jobs: List[Job]) -> None: +def call(jobs: list[Job]) -> None: parser = get_parser() with transaction.atomic(): diff --git a/src/MCPClient/lib/clientScripts/normalize.py b/src/MCPClient/lib/clientScripts/normalize.py index 6e240b6b00..aa184041e5 100755 --- a/src/MCPClient/lib/clientScripts/normalize.py +++ b/src/MCPClient/lib/clientScripts/normalize.py @@ -9,7 +9,6 @@ import traceback import uuid from typing import Callable -from typing import List from typing import Optional import django @@ -608,7 +607,7 @@ def parse_args(parser: argparse.ArgumentParser, job: Job) -> NormalizeArgs: return NormalizeArgs(**vars(namespace)) -def call(jobs: List[Job]) -> None: +def call(jobs: list[Job]) -> None: parser = get_parser() with transaction.atomic(): diff --git a/src/MCPClient/lib/clientScripts/policy_check.py b/src/MCPClient/lib/clientScripts/policy_check.py index b3a6374276..83c8b43295 100755 --- a/src/MCPClient/lib/clientScripts/policy_check.py +++ b/src/MCPClient/lib/clientScripts/policy_check.py @@ -18,10 +18,7 @@ from custom_handlers import get_script_logger django.setup() -from typing import Dict -from typing import List from typing import Optional -from typing import Tuple import databaseFunctions from client.job import Job @@ -315,7 +312,7 @@ def _execute_rule_command(self, rule: FPRule) -> str: ) return result - def _get_command_to_execute(self, rule: FPRule) -> Tuple[str, List[str]]: + def _get_command_to_execute(self, rule: FPRule) -> tuple[str, list[str]]: """Return a 2-tuple consisting of a) the FPR rule ``rule``'s command and b) a list of arguments to pass to it. """ @@ -332,14 +329,14 @@ def _get_command_to_execute(self, rule: FPRule) -> Tuple[str, List[str]]: else: return (rule.command.command, [self.file_path, self.policies_dir]) - def _save_to_logs_dir(self, output: Dict[str, str]) -> None: + def _save_to_logs_dir(self, output: dict[str, str]) -> None: """Save the MediaConch policy file as well as the raw MediaConch stdout for the target file to the logs/ directory of the SIP. """ self._save_stdout_to_logs_dir(output) self._save_policy_to_subm_doc_dir(output) - def _save_stdout_to_logs_dir(self, output: Dict[str, str]) -> None: + def _save_stdout_to_logs_dir(self, output: dict[str, str]) -> None: """Save the output of running MediaConch's policy checker against the input file to logs/policyChecks//.xml in the SIP. @@ -356,7 +353,7 @@ def _save_stdout_to_logs_dir(self, output: Dict[str, str]) -> None: with open(stdout_path, "w") as f: f.write(mc_stdout) - def _save_policy_to_subm_doc_dir(self, output: Dict[str, str]) -> None: + def _save_policy_to_subm_doc_dir(self, output: dict[str, str]) -> None: """Save the policy file text in ``output['policy']`` to a file named ``output['policyFileName']`` in metadata/submissionDocumentation/policies/ in the SIP, if it is not @@ -464,7 +461,7 @@ def sip_policy_checks_dir(self) -> Optional[str]: return self._sip_policy_checks_dir -def call(jobs: List[Job]) -> None: +def call(jobs: list[Job]) -> None: with transaction.atomic(): for job in jobs: with job.JobContext(logger=logger): diff --git a/src/MCPClient/lib/clientScripts/transcribe_file.py b/src/MCPClient/lib/clientScripts/transcribe_file.py index 906db4061c..f92def343d 100755 --- a/src/MCPClient/lib/clientScripts/transcribe_file.py +++ b/src/MCPClient/lib/clientScripts/transcribe_file.py @@ -4,10 +4,8 @@ import multiprocessing import os import uuid -from typing import List +from collections.abc import Sequence from typing import Optional -from typing import Sequence -from typing import Tuple import django @@ -105,7 +103,7 @@ def fetch_rules_for(file_: File) -> Sequence[FPRule]: return [] -def fetch_rules_for_derivatives(file_: File) -> Tuple[Optional[File], Sequence[FPRule]]: +def fetch_rules_for_derivatives(file_: File) -> tuple[Optional[File], Sequence[FPRule]]: derivs = Derivation.objects.filter(source_file=file_) for deriv in derivs: derived_file = deriv.derived_file @@ -203,7 +201,7 @@ def parse_args(parser: argparse.ArgumentParser, job: Job) -> TranscribeFileArgs: return TranscribeFileArgs(**vars(namespace)) -def call(jobs: List[Job]) -> None: +def call(jobs: list[Job]) -> None: parser = get_parser() with transaction.atomic(): diff --git a/src/MCPClient/lib/clientScripts/validate_file.py b/src/MCPClient/lib/clientScripts/validate_file.py index 0318949a60..7abbf03f41 100755 --- a/src/MCPClient/lib/clientScripts/validate_file.py +++ b/src/MCPClient/lib/clientScripts/validate_file.py @@ -18,10 +18,9 @@ import ast import os import sys +from collections.abc import Mapping from pprint import pformat from typing import Any -from typing import List -from typing import Mapping from typing import Optional import django @@ -324,21 +323,21 @@ def sip_pres_val_dir(self) -> Optional[str]: return self._sip_pres_val_dir -def _get_shared_path(argv: List[str]) -> Optional[str]: +def _get_shared_path(argv: list[str]) -> Optional[str]: try: return argv[4] except IndexError: return None -def _get_file_type(argv: List[str]) -> str: +def _get_file_type(argv: list[str]) -> str: try: return argv[5] except IndexError: return "original" -def call(jobs: List[Job]) -> None: +def call(jobs: list[Job]) -> None: with transaction.atomic(): for job in jobs: with job.JobContext(logger=logger): diff --git a/src/archivematicaCommon/lib/archivematicaFunctions.py b/src/archivematicaCommon/lib/archivematicaFunctions.py index 6dfa48c867..6a6ece804d 100644 --- a/src/archivematicaCommon/lib/archivematicaFunctions.py +++ b/src/archivematicaCommon/lib/archivematicaFunctions.py @@ -27,10 +27,9 @@ import os import pprint import re +from collections.abc import Iterable from itertools import zip_longest from pathlib import Path -from typing import Dict -from typing import Iterable from uuid import uuid4 from amclient import AMClient @@ -530,7 +529,7 @@ def chunk_iterable(iterable, chunk_size=10, fillvalue=None): def get_oidc_secondary_providers( oidc_secondary_provider_names: Iterable[str], -) -> Dict[str, Dict[str, str]]: +) -> dict[str, dict[str, str]]: """Build secondary OIDC provider details dict. Takes a list of secondary OIDC providers and gathers details about these providers from env vars. Output dict contains details for each OIDC connection which can then be diff --git a/src/archivematicaCommon/lib/dbconns.py b/src/archivematicaCommon/lib/dbconns.py index bd5b9a5060..dd12cab88c 100644 --- a/src/archivematicaCommon/lib/dbconns.py +++ b/src/archivematicaCommon/lib/dbconns.py @@ -21,7 +21,6 @@ import threading import traceback from contextlib import ContextDecorator -from typing import Type from django.conf import settings from django.db import close_old_connections @@ -85,7 +84,7 @@ def emit(self, record): ) -auto_close_old_connections: Type[AutoCloseOldConnections] +auto_close_old_connections: type[AutoCloseOldConnections] if settings.DEBUG: logger.debug("Using DEBUG auto_close_old_connections") diff --git a/src/archivematicaCommon/lib/executeOrRunSubProcess.py b/src/archivematicaCommon/lib/executeOrRunSubProcess.py index 0b8ada6cf5..8eb804c02a 100644 --- a/src/archivematicaCommon/lib/executeOrRunSubProcess.py +++ b/src/archivematicaCommon/lib/executeOrRunSubProcess.py @@ -21,19 +21,16 @@ import subprocess import sys import tempfile -from typing import Dict -from typing import List from typing import Optional -from typing import Tuple from typing import Union from archivematicaFunctions import escape -Arguments = List[str] +Arguments = list[str] Input = Union[str, bytes, io.IOBase] -Environment = Dict[str, str] -Command = Union[str, List[str]] -Result = Tuple[int, str, str] +Environment = dict[str, str] +Command = Union[str, list[str]] +Result = tuple[int, str, str] def launchSubProcess( diff --git a/src/dashboard/src/components/administration/migrations/0001_initial.py b/src/dashboard/src/components/administration/migrations/0001_initial.py index 8a28bd1bd9..14abb7364d 100644 --- a/src/dashboard/src/components/administration/migrations/0001_initial.py +++ b/src/dashboard/src/components/administration/migrations/0001_initial.py @@ -1,6 +1,4 @@ import uuid -from typing import List -from typing import Tuple import main.models from django.db import migrations @@ -8,7 +6,7 @@ class Migration(migrations.Migration): - dependencies: List[Tuple[str, str]] = [] + dependencies: list[tuple[str, str]] = [] operations = [ migrations.CreateModel( diff --git a/src/dashboard/src/fpr/management/commands/import_pronom_ids.py b/src/dashboard/src/fpr/management/commands/import_pronom_ids.py index 0f4d79147b..f05f03d1ad 100644 --- a/src/dashboard/src/fpr/management/commands/import_pronom_ids.py +++ b/src/dashboard/src/fpr/management/commands/import_pronom_ids.py @@ -1,7 +1,6 @@ import os import sys import uuid -from typing import Dict from django.core.management.base import BaseCommand from django.db import connection @@ -15,7 +14,7 @@ # Introduced in fpr/migrations/0035_python3_compatibility.py FILE_BY_EXTENSION_CMD_UUID = "8546b624-7894-4201-8df6-f239d5e0d5ba" -archivematica_formats: Dict[str, Format] = {} +archivematica_formats: dict[str, Format] = {} unknown_format_group = FormatGroup.objects.get(description="Unknown") file_by_extension = IDCommand.objects.get(uuid=FILE_BY_EXTENSION_CMD_UUID) diff --git a/src/dashboard/src/fpr/migrations/0001_initial.py b/src/dashboard/src/fpr/migrations/0001_initial.py index ba43b39f8e..40823113c2 100644 --- a/src/dashboard/src/fpr/migrations/0001_initial.py +++ b/src/dashboard/src/fpr/migrations/0001_initial.py @@ -1,6 +1,4 @@ import uuid -from typing import List -from typing import Tuple import autoslug.fields import main.models @@ -9,7 +7,7 @@ class Migration(migrations.Migration): - dependencies: List[Tuple[str, str]] = [] + dependencies: list[tuple[str, str]] = [] operations = [ migrations.CreateModel( diff --git a/src/dashboard/src/fpr/south_migrations/0001_initial.py b/src/dashboard/src/fpr/south_migrations/0001_initial.py index b816629256..6af9c76709 100644 --- a/src/dashboard/src/fpr/south_migrations/0001_initial.py +++ b/src/dashboard/src/fpr/south_migrations/0001_initial.py @@ -1,5 +1,4 @@ from typing import Any -from typing import Dict from south.db import db from south.v2 import SchemaMigration @@ -452,7 +451,7 @@ def backwards(self, orm): # Deleting model 'FileIDsBySingleID' db.delete_table("FileIDsBySingleID") - models: Dict[str, Any] = { + models: dict[str, Any] = { "fpr.agent": { "Meta": {"object_name": "Agent", "db_table": "u'Agent'"}, "agentIdentifierType": ( diff --git a/src/dashboard/src/fpr/south_migrations/0002_api_v2.py b/src/dashboard/src/fpr/south_migrations/0002_api_v2.py index ebb878a3ed..603711fbc4 100644 --- a/src/dashboard/src/fpr/south_migrations/0002_api_v2.py +++ b/src/dashboard/src/fpr/south_migrations/0002_api_v2.py @@ -1,5 +1,4 @@ from typing import Any -from typing import Dict from south.db import db from south.v2 import SchemaMigration @@ -552,7 +551,7 @@ def backwards(self, orm): ), ) - models: Dict[str, Any] = { + models: dict[str, Any] = { "fpr.agent": { "Meta": {"object_name": "Agent", "db_table": "u'Agent'"}, "agentIdentifierType": ( diff --git a/src/dashboard/src/settings/base.py b/src/dashboard/src/settings/base.py index 462cb75175..3e6d49f167 100644 --- a/src/dashboard/src/settings/base.py +++ b/src/dashboard/src/settings/base.py @@ -19,8 +19,6 @@ import os from io import StringIO from typing import Any -from typing import Dict -from typing import List import email_settings from appconfig import Config @@ -378,7 +376,7 @@ def _get_settings_from_file(path): }, } -TEMPLATES: List[Dict[str, Any]] = [ +TEMPLATES: list[dict[str, Any]] = [ { "BACKEND": "django.template.backends.django.DjangoTemplates", "DIRS": [os.path.join(BASE_PATH, "templates")], diff --git a/tests/MCPClient/test_antivirus_clamdscan.py b/tests/MCPClient/test_antivirus_clamdscan.py index 5bf353a8ca..443952cfc2 100644 --- a/tests/MCPClient/test_antivirus_clamdscan.py +++ b/tests/MCPClient/test_antivirus_clamdscan.py @@ -85,11 +85,10 @@ def patch(pass_by_stream, pass_by_reference, scanner, ret=OKAY_RET, excepts=Fals scanner = setup_clamdscanner(settings, stream=False) - with mock.patch.object( - scanner, "pass_by_stream" - ) as pass_by_stream, mock.patch.object( - scanner, "pass_by_reference" - ) as pass_by_reference: + with ( + mock.patch.object(scanner, "pass_by_stream") as pass_by_stream, + mock.patch.object(scanner, "pass_by_reference") as pass_by_reference, + ): deps = patch(pass_by_stream, pass_by_reference, scanner, ret=OKAY_RET) passed, state, details = scanner.scan("/file") assert passed is True @@ -99,11 +98,10 @@ def patch(pass_by_stream, pass_by_reference, scanner, ret=OKAY_RET, excepts=Fals deps.pass_by_reference.assert_called_once() scanner = setup_clamdscanner(settings, stream=True) - with mock.patch.object( - scanner, "pass_by_stream" - ) as pass_by_stream, mock.patch.object( - scanner, "pass_by_reference" - ) as pass_by_reference: + with ( + mock.patch.object(scanner, "pass_by_stream") as pass_by_stream, + mock.patch.object(scanner, "pass_by_reference") as pass_by_reference, + ): deps = patch(pass_by_stream, pass_by_reference, scanner, ret=OKAY_RET) passed, state, details = scanner.scan("/file") assert passed is True @@ -112,33 +110,30 @@ def patch(pass_by_stream, pass_by_reference, scanner, ret=OKAY_RET, excepts=Fals deps.pass_by_stream.assert_called_once() deps.pass_by_reference.assert_not_called() - with mock.patch.object( - scanner, "pass_by_stream" - ) as pass_by_stream, mock.patch.object( - scanner, "pass_by_reference" - ) as pass_by_reference: + with ( + mock.patch.object(scanner, "pass_by_stream") as pass_by_stream, + mock.patch.object(scanner, "pass_by_reference") as pass_by_reference, + ): patch(pass_by_stream, pass_by_reference, scanner, ret=ERROR_RET) passed, state, details = scanner.scan("/file") assert passed is False assert state == "ERROR" assert details == "Permission denied" - with mock.patch.object( - scanner, "pass_by_stream" - ) as pass_by_stream, mock.patch.object( - scanner, "pass_by_reference" - ) as pass_by_reference: + with ( + mock.patch.object(scanner, "pass_by_stream") as pass_by_stream, + mock.patch.object(scanner, "pass_by_reference") as pass_by_reference, + ): patch(pass_by_stream, pass_by_reference, scanner, ret=FOUND_RET) passed, state, details = scanner.scan("/file") assert passed is False assert state == "FOUND" assert details == "Eicar-Test-Signature" - with mock.patch.object( - scanner, "pass_by_stream" - ) as pass_by_stream, mock.patch.object( - scanner, "pass_by_reference" - ) as pass_by_reference: + with ( + mock.patch.object(scanner, "pass_by_stream") as pass_by_stream, + mock.patch.object(scanner, "pass_by_reference") as pass_by_reference, + ): # Testing a generic Exception returned by the clamdscan micorservice. patch(pass_by_stream, pass_by_reference, scanner, ret=OKAY_RET, excepts=True) passed, state, details = scanner.scan("/file") @@ -146,11 +141,10 @@ def patch(pass_by_stream, pass_by_reference, scanner, ret=OKAY_RET, excepts=Fals assert state is None assert details is None - with mock.patch.object( - scanner, "pass_by_stream" - ) as pass_by_stream, mock.patch.object( - scanner, "pass_by_reference" - ) as pass_by_reference: + with ( + mock.patch.object(scanner, "pass_by_stream") as pass_by_stream, + mock.patch.object(scanner, "pass_by_reference") as pass_by_reference, + ): # Testing a generic IOError that is not a broken pipe error that we're # expecting to be able to manage from clamdscan. patch( @@ -165,11 +159,10 @@ def patch(pass_by_stream, pass_by_reference, scanner, ret=OKAY_RET, excepts=Fals assert state is None assert details is None - with mock.patch.object( - scanner, "pass_by_stream" - ) as pass_by_stream, mock.patch.object( - scanner, "pass_by_reference" - ) as pass_by_reference: + with ( + mock.patch.object(scanner, "pass_by_stream") as pass_by_stream, + mock.patch.object(scanner, "pass_by_reference") as pass_by_reference, + ): # Broken pipe is a known error from the clamd library. brokenpipe_error = OSError("Testing a broken pipe error") brokenpipe_error.errno = errno.EPIPE @@ -185,11 +178,10 @@ def patch(pass_by_stream, pass_by_reference, scanner, ret=OKAY_RET, excepts=Fals assert state is None assert details is None - with mock.patch.object( - scanner, "pass_by_stream" - ) as pass_by_stream, mock.patch.object( - scanner, "pass_by_reference" - ) as pass_by_reference: + with ( + mock.patch.object(scanner, "pass_by_stream") as pass_by_stream, + mock.patch.object(scanner, "pass_by_reference") as pass_by_reference, + ): # The INSTREAM size limit error is known to us; test it here. instream_error = BufferTooLongError("INSTREAM size limit exceeded. ERROR.") patch( @@ -204,11 +196,10 @@ def patch(pass_by_stream, pass_by_reference, scanner, ret=OKAY_RET, excepts=Fals assert state is None assert details is None - with mock.patch.object( - scanner, "pass_by_stream" - ) as pass_by_stream, mock.patch.object( - scanner, "pass_by_reference" - ) as pass_by_reference: + with ( + mock.patch.object(scanner, "pass_by_stream") as pass_by_stream, + mock.patch.object(scanner, "pass_by_reference") as pass_by_reference, + ): # The clamd library can return a further error code here, and we we test it # to make sure that if it does, it is managed. connection_error = ConnectionError("Error while reading from socket.") diff --git a/tests/MCPClient/test_create_aip_mets.py b/tests/MCPClient/test_create_aip_mets.py index a56eb73e3c..cc37bdbf1f 100644 --- a/tests/MCPClient/test_create_aip_mets.py +++ b/tests/MCPClient/test_create_aip_mets.py @@ -7,7 +7,6 @@ import tempfile import unittest from pathlib import Path -from typing import List import archivematicaCreateMETSMetadataCSV import archivematicaCreateMETSRights @@ -30,7 +29,7 @@ class TestNormativeStructMap(TestCase): """Test creation of normative structMap.""" - fixture_files: List[str] = [] + fixture_files: list[str] = [] fixtures = [os.path.join(THIS_DIR, "fixtures", p) for p in fixture_files] @pytest.fixture(autouse=True) diff --git a/tests/MCPClient/test_normalize.py b/tests/MCPClient/test_normalize.py index 025a34d5a0..40667bebe4 100644 --- a/tests/MCPClient/test_normalize.py +++ b/tests/MCPClient/test_normalize.py @@ -1,10 +1,9 @@ import argparse import pathlib import uuid -from typing import Mapping +from collections.abc import Mapping +from collections.abc import Sequence from typing import Optional -from typing import Sequence -from typing import Tuple from unittest import mock import normalize @@ -579,7 +578,7 @@ def execute_or_run_side_effect( arguments: Optional[Sequence[str]] = None, env_updates: Optional[Mapping[str, str]] = None, capture_output: bool = True, - ) -> Tuple[int, str, str]: + ) -> tuple[int, str, str]: """Mock thumbnail generation by creating a new temporary file.""" parser = argparse.ArgumentParser() parser.add_argument("--output-directory", required=True) @@ -707,7 +706,7 @@ def execute_or_run_side_effect( arguments: Optional[Sequence[str]] = None, env_updates: Optional[Mapping[str, str]] = None, capture_output: bool = True, - ) -> Tuple[int, str, str]: + ) -> tuple[int, str, str]: """Mock a complex normalization command that initially fails and then falls back to its default rule and also runs its own verification and event detail commands. diff --git a/tests/MCPClient/test_verify_checksum.py b/tests/MCPClient/test_verify_checksum.py index 94cf4dde88..06f9a3179f 100644 --- a/tests/MCPClient/test_verify_checksum.py +++ b/tests/MCPClient/test_verify_checksum.py @@ -146,10 +146,11 @@ def test_compare_hashes_failed(self): "sha256: objects/nested/ファイル3.bin: FAILED\n" "sha256: objects/readonly.file: FAILED open or read" ) - with mock.patch.object( - hashsum, "_call", return_value=output_string - ) as mock_call, mock.patch.object( - hashsum, "count_and_compare_lines", return_value=True + with ( + mock.patch.object( + hashsum, "_call", return_value=output_string + ) as mock_call, + mock.patch.object(hashsum, "count_and_compare_lines", return_value=True), ): mock_call.side_effect = subprocess.CalledProcessError( returncode=1, cmd=toolname, output=output_string @@ -186,10 +187,11 @@ def test_compare_hashes_with_bad_files(self): "sha1: comparison exited with status: 1. Please check the formatting of the checksums or integrity of the files.\n" "sha1: sha1sum: WARNING: 1 line is improperly formatted" ) - with mock.patch.object( - hashsum, "_call", return_value=no_proper_output - ) as mock_call, mock.patch.object( - hashsum, "count_and_compare_lines", return_value=True + with ( + mock.patch.object( + hashsum, "_call", return_value=no_proper_output + ) as mock_call, + mock.patch.object(hashsum, "count_and_compare_lines", return_value=True), ): mock_call.side_effect = subprocess.CalledProcessError( returncode=1, cmd=toolname, output=no_proper_output @@ -226,10 +228,9 @@ def test_line_comparison_fail(self): hash_file = "metadata/checksum.sha1" hashsum = self.setup_hashsum(hash_file, Job("stub", "stub", ["", ""])) toolname = "sha1sum" - with mock.patch.object( - hashsum, "_call", return_value=None - ) as mock_call, mock.patch.object( - hashsum, "count_and_compare_lines", return_value=False + with ( + mock.patch.object(hashsum, "_call", return_value=None) as mock_call, + mock.patch.object(hashsum, "count_and_compare_lines", return_value=False), ): mock_call.side_effect = subprocess.CalledProcessError( returncode=1, cmd=toolname, output=None diff --git a/tests/MCPServer/test_integration.py b/tests/MCPServer/test_integration.py index 468bba4739..274213a7ff 100644 --- a/tests/MCPServer/test_integration.py +++ b/tests/MCPServer/test_integration.py @@ -114,10 +114,13 @@ def test_workflow_integration( settings.PROCESSING_DIRECTORY = str(tmp_path / "processing") mock_get_task_backend.return_value = echo_backend - with mock.patch.dict( - "server.packages.BASE_REPLACEMENTS", - {r"%processingDirectory%": settings.PROCESSING_DIRECTORY}, - ), mock.patch.object(transfer, "files", return_value=dummy_file_replacements): + with ( + mock.patch.dict( + "server.packages.BASE_REPLACEMENTS", + {r"%processingDirectory%": settings.PROCESSING_DIRECTORY}, + ), + mock.patch.object(transfer, "files", return_value=dummy_file_replacements), + ): # Schedule the first job first_workflow_chain = workflow.get_chains()[ "3816f689-65a8-4ad0-ac27-74292a70b093" diff --git a/tests/archivematicaCommon/test_execute_functions.py b/tests/archivematicaCommon/test_execute_functions.py index 0f1fa41b91..3425d8ffc4 100644 --- a/tests/archivematicaCommon/test_execute_functions.py +++ b/tests/archivematicaCommon/test_execute_functions.py @@ -1,7 +1,7 @@ import pathlib import shlex import tempfile -from typing import Generator +from collections.abc import Generator from unittest.mock import ANY from unittest.mock import Mock from unittest.mock import patch diff --git a/tests/dashboard/components/accounts/test_views.py b/tests/dashboard/components/accounts/test_views.py index 8b42a678dc..2465883655 100644 --- a/tests/dashboard/components/accounts/test_views.py +++ b/tests/dashboard/components/accounts/test_views.py @@ -1,7 +1,6 @@ import hmac import uuid from hashlib import sha1 -from typing import Type from unittest import mock from urllib.parse import parse_qs from urllib.parse import urlparse @@ -60,7 +59,7 @@ def dashboard_uuid() -> None: @pytest.fixture -def non_administrative_user(django_user_model: Type[User]) -> User: +def non_administrative_user(django_user_model: type[User]) -> User: return django_user_model.objects.create_user( username="test", password="test", diff --git a/tests/integration/test_oidc_auth.py b/tests/integration/test_oidc_auth.py index 8eac1e8669..bcda6ae2fe 100644 --- a/tests/integration/test_oidc_auth.py +++ b/tests/integration/test_oidc_auth.py @@ -1,6 +1,5 @@ import os import uuid -from typing import Type import pytest from components import helpers @@ -20,7 +19,7 @@ def dashboard_uuid() -> None: @pytest.fixture -def user(django_user_model: Type[User]) -> User: +def user(django_user_model: type[User]) -> User: user = django_user_model.objects.create( username="foobar", email="foobar@example.com", @@ -38,7 +37,7 @@ def test_oidc_backend_creates_local_user( page: Page, live_server: LiveServer, dashboard_uuid: None, - django_user_model: Type[User], + django_user_model: type[User], ) -> None: page.goto(live_server.url) From b462355aea25d36da941d2de59749dab20a0cdee Mon Sep 17 00:00:00 2001 From: "Douglas Cerna (Soy Douglas)" Date: Tue, 7 Jan 2025 22:07:26 +0000 Subject: [PATCH 04/99] Use 1.18.x OS packages in the Dockerfile --- hack/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hack/Dockerfile b/hack/Dockerfile index 348c7d018c..c84a54779b 100644 --- a/hack/Dockerfile +++ b/hack/Dockerfile @@ -156,8 +156,8 @@ ARG PYENV_DIR=/pyenv ARG MEDIAAREA_VERSION RUN set -ex \ - && curl --retry 3 -fsSL https://packages.archivematica.org/1.17.x/key.asc | gpg --dearmor -o /etc/apt/keyrings/archivematica-1.17.x.gpg \ - && echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/archivematica-1.17.x.gpg] http://packages.archivematica.org/1.17.x/ubuntu-externals jammy main" > /etc/apt/sources.list.d/archivematica-external.list \ + && curl --retry 3 -fsSL https://packages.archivematica.org/1.18.x/key.asc | gpg --dearmor -o /etc/apt/keyrings/archivematica-1.18.x.gpg \ + && echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/archivematica-1.18.x.gpg] http://packages.archivematica.org/1.18.x/ubuntu-externals jammy main" > /etc/apt/sources.list.d/archivematica-external.list \ && curl --retry 3 -so /tmp/repo-mediaarea.deb -L https://mediaarea.net/repo/deb/repo-mediaarea_${MEDIAAREA_VERSION}_all.deb \ && dpkg -i /tmp/repo-mediaarea.deb \ && rm /tmp/repo-mediaarea.deb \ From 0695b46c83189b3baef515791d41aa6a60fb4198 Mon Sep 17 00:00:00 2001 From: Douglas Cerna Date: Thu, 9 Jan 2025 06:53:10 -0600 Subject: [PATCH 05/99] Extend test coverage of the create_mets_v2 script --- pyproject.toml | 1 + tests/MCPClient/test_create_mets_v2.py | 239 ++++++++++++++++++++++--- 2 files changed, 212 insertions(+), 28 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index a36c8960b8..3826646624 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -76,6 +76,7 @@ module = [ "tests.integration.test_oidc_auth", "tests.MCPClient.conftest", "tests.MCPClient.test_characterize_file", + "tests.MCPClient.test_create_mets_v2", "tests.MCPClient.test_has_packages", "tests.MCPClient.test_identify_file_format", "tests.MCPClient.test_normalize", diff --git a/tests/MCPClient/test_create_mets_v2.py b/tests/MCPClient/test_create_mets_v2.py index 1fd62bc338..701b1e8673 100644 --- a/tests/MCPClient/test_create_mets_v2.py +++ b/tests/MCPClient/test_create_mets_v2.py @@ -1,11 +1,15 @@ +import pathlib import uuid from contextlib import ExitStack as does_not_raise from unittest import mock import pytest +import pytest_django +from client.job import Job from create_mets_v2 import createDMDIDsFromCSVMetadata from create_mets_v2 import main from lxml import etree +from main.models import SIP from main.models import DublinCore from main.models import File from main.models import MetadataAppliesToType @@ -14,7 +18,9 @@ @mock.patch("create_mets_v2.createDmdSecsFromCSVParsedMetadata", return_value=[]) -def test_createDMDIDsFromCSVMetadata_finds_non_ascii_paths(dmd_secs_creator_mock): +def test_createDMDIDsFromCSVMetadata_finds_non_ascii_paths( + dmd_secs_creator_mock: mock.Mock, +) -> None: state_mock = mock.Mock( **{ "CSV_METADATA": { @@ -38,7 +44,7 @@ def test_createDMDIDsFromCSVMetadata_finds_non_ascii_paths(dmd_secs_creator_mock @pytest.fixture() -def objects_path(sip_directory_path): +def objects_path(sip_directory_path: pathlib.Path) -> pathlib.Path: objects_path = sip_directory_path / "objects" objects_path.mkdir() @@ -46,7 +52,7 @@ def objects_path(sip_directory_path): @pytest.fixture() -def empty_dir_path(objects_path): +def empty_dir_path(objects_path: pathlib.Path) -> pathlib.Path: empty_dir_path = objects_path / "empty_dir" empty_dir_path.mkdir() @@ -54,7 +60,9 @@ def empty_dir_path(objects_path): @pytest.fixture() -def metadata_csv(sip, sip_directory_path, objects_path): +def metadata_csv( + sip: SIP, sip_directory_path: pathlib.Path, objects_path: pathlib.Path +) -> File: (objects_path / "metadata").mkdir() metadata_csv = objects_path / "metadata" / "metadata.csv" metadata_csv.write_text("Filename,dc.title\nobjects/file1,File 1") @@ -80,7 +88,7 @@ def metadata_csv(sip, sip_directory_path, objects_path): @pytest.fixture() -def sip_dublincore(sip): +def sip_dublincore(sip: SIP) -> DublinCore: return DublinCore.objects.create( metadataappliestotype_id=MetadataAppliesToType.SIP_TYPE, metadataappliestoidentifier=sip.pk, @@ -91,7 +99,7 @@ def sip_dublincore(sip): @pytest.fixture() -def file_path(objects_path): +def file_path(objects_path: pathlib.Path) -> pathlib.Path: file_path = objects_path / "file1" file_path.write_text("Hello world") @@ -99,7 +107,9 @@ def file_path(objects_path): @pytest.fixture() -def sip_file(sip_file, sip_directory_path, file_path): +def sip_file( + sip_file: File, sip_directory_path: pathlib.Path, file_path: pathlib.Path +) -> File: sip_file.originallocation = ( f"%transferDirectory%{file_path.relative_to(sip_directory_path)}".encode() ) @@ -112,7 +122,9 @@ def sip_file(sip_file, sip_directory_path, file_path): @pytest.mark.django_db -def test_simple_mets(mcp_job, sip_directory_path, sip, sip_file): +def test_simple_mets( + mcp_job: Job, sip_directory_path: pathlib.Path, sip: SIP, sip_file: File +) -> None: mets_path = sip_directory_path / f"METS.{sip.uuid}.xml" main( mcp_job, @@ -145,8 +157,12 @@ def test_simple_mets(mcp_job, sip_directory_path, sip, sip_file): @pytest.mark.django_db def test_aip_mets_includes_dublincore( - mcp_job, sip_directory_path, sip, sip_dublincore, sip_file -): + mcp_job: Job, + sip_directory_path: pathlib.Path, + sip: SIP, + sip_dublincore: DublinCore, + sip_file: File, +) -> None: mets_path = sip_directory_path / f"METS.{sip.uuid}.xml" main( mcp_job, @@ -180,8 +196,12 @@ def test_aip_mets_includes_dublincore( @pytest.mark.django_db def test_aip_mets_includes_dublincore_via_metadata_csv( - mcp_job, sip_directory_path, sip, sip_file, metadata_csv -): + mcp_job: Job, + sip_directory_path: pathlib.Path, + sip: SIP, + sip_file: File, + metadata_csv: File, +) -> None: mets_path = sip_directory_path / f"METS.{sip.uuid}.xml" main( mcp_job, @@ -211,8 +231,13 @@ def test_aip_mets_includes_dublincore_via_metadata_csv( @pytest.mark.django_db def test_aip_mets_normative_directory_structure( - mcp_job, sip_directory_path, sip, sip_file, metadata_csv, empty_dir_path -): + mcp_job: Job, + sip_directory_path: pathlib.Path, + sip: SIP, + sip_file: File, + metadata_csv: File, + empty_dir_path: pathlib.Path, +) -> None: mets_path = sip_directory_path / f"METS.{sip.uuid}.xml" main( mcp_job, @@ -264,16 +289,16 @@ def test_aip_mets_normative_directory_structure( ) @mock.patch("create_mets_v2.archivematicaCreateMETSMetadataXML.process_xml_metadata") def test_xml_validation_fail_on_error( - process_xml_metadata, - settings, - mcp_job, - sip_directory_path, - sip, - sip_file, - fail_on_error, - errors, - expectation, -): + process_xml_metadata: mock.Mock, + settings: pytest_django.fixtures.SettingsWrapper, + mcp_job: Job, + sip_directory_path: pathlib.Path, + sip: SIP, + sip_file: File, + fail_on_error: bool, + errors: list[str], + expectation: does_not_raise, +) -> None: mock_mets = mock.Mock( **{ "serialize.return_value": etree.Element("tag"), @@ -301,7 +326,7 @@ def test_xml_validation_fail_on_error( @pytest.fixture -def arranged_sip_path(tmp_path): +def arranged_sip_path(tmp_path: pathlib.Path) -> pathlib.Path: sip_path = tmp_path / "sip" sip_path.mkdir() @@ -309,7 +334,7 @@ def arranged_sip_path(tmp_path): @pytest.fixture -def create_arrangement(sip, arranged_sip_path): +def create_arrangement(sip: SIP, arranged_sip_path: pathlib.Path) -> None: # Create the directory structure representing the new arrangement. objects_path = arranged_sip_path / "objects" objects_path.mkdir() @@ -351,8 +376,8 @@ def create_arrangement(sip, arranged_sip_path): @pytest.mark.django_db def test_structmap_is_created_from_sip_arrangement( - mcp_job, create_arrangement, arranged_sip_path, sip -): + mcp_job: Job, create_arrangement: None, arranged_sip_path: pathlib.Path, sip: SIP +) -> None: mets_path = f"{arranged_sip_path}/METS.{sip.uuid}.xml" main( @@ -391,3 +416,161 @@ def test_structmap_is_created_from_sip_arrangement( assert file3_div.attrib["TYPE"] == "File" assert subdir_second_div.attrib["TYPE"] == "Subseries" assert file4_div.attrib["TYPE"] == "File" + + +@pytest.fixture +def bag_path(sip_directory_path: pathlib.Path, sip: SIP) -> pathlib.Path: + result = ( + sip_directory_path / "logs" / "transfers" / str(sip.uuid) / "logs" / "BagIt" + ) + result.mkdir(parents=True) + (result / "bag-info.txt").touch() + + return result + + +@pytest.mark.django_db +@mock.patch("create_mets_v2.Bag") +def test_bag_metadata_is_recorded_in_a_amdsec( + bag_class: mock.Mock, + mcp_job: Job, + sip_directory_path: pathlib.Path, + sip: SIP, + sip_file: File, + bag_path: pathlib.Path, +) -> None: + info = {"Bagging-Date": "2025-01-08", "Payload-Oxum": "0.2"} + bag_class.return_value = mock.Mock(info=info) + mets_path = sip_directory_path / f"METS.{sip.uuid}.xml" + + main( + mcp_job, + sipType="SIP", + baseDirectoryPath=str(sip_directory_path), + XMLFile=str(mets_path), + sipUUID=sip.pk, + includeAmdSec=False, + createNormativeStructmap=False, + ) + + mets_xml = etree.parse(mets_path.open()) + transfer_metadata = mets_xml.xpath( + ".//mets:amdSec//transfer_metadata/*", + namespaces=NSMAP, + ) + assert {e.tag: e.text for e in transfer_metadata} == info + + +@pytest.fixture() +def transfer_metadata_xml_path(sip: SIP, sip_directory_path: pathlib.Path) -> File: + metadata_dir_path = sip_directory_path / "objects" / "metadata" / "transfers" + metadata_dir_path.mkdir(parents=True) + + result = metadata_dir_path / "transfer_metadata.xml" + result.touch() + + return result + + +@pytest.fixture() +def transfer_metadata_xml( + sip: SIP, sip_directory_path: pathlib.Path, transfer_metadata_xml_path: pathlib.Path +) -> File: + return File.objects.create( + sip=sip, + currentlocation=f"%SIPDirectory%{transfer_metadata_xml_path.relative_to(sip_directory_path)}".encode(), + filegrpuse="metadata", + ) + + +@pytest.mark.django_db +def test_transfer_metadata_xml_is_recorded_in_a_amdsec( + mcp_job: Job, + sip_directory_path: pathlib.Path, + sip: SIP, + sip_file: File, + transfer_metadata_xml_path: pathlib.Path, + transfer_metadata_xml: File, +) -> None: + info = {"test": "foobar"} + for tag, value in info.items(): + transfer_metadata_xml_path.write_text(f"<{tag}>{value}") + mets_path = sip_directory_path / f"METS.{sip.uuid}.xml" + + main( + mcp_job, + sipType="SIP", + baseDirectoryPath=str(sip_directory_path), + XMLFile=str(mets_path), + sipUUID=sip.pk, + includeAmdSec=False, + createNormativeStructmap=False, + ) + + mets_xml = etree.parse(mets_path.open()) + transfer_metadata = mets_xml.xpath( + ".//mets:amdSec//mets:xmlData/*", + namespaces=NSMAP, + ) + assert {e.tag: e.text for e in transfer_metadata} == info + + +@pytest.fixture() +def source_metadata_xml_path(sip: SIP, sip_directory_path: pathlib.Path) -> File: + metadata_dir_path = ( + sip_directory_path / "objects" / "metadata" / "transfers" / "sourceMD" + ) + metadata_dir_path.mkdir(parents=True) + + result = metadata_dir_path / "file.xml" + result.touch() + + return result + + +@pytest.fixture() +def source_metadata_xml( + sip: SIP, sip_directory_path: pathlib.Path, source_metadata_xml_path: pathlib.Path +) -> File: + return File.objects.create( + sip=sip, + currentlocation=f"%SIPDirectory%{source_metadata_xml_path.relative_to(sip_directory_path)}".encode(), + filegrpuse="metadata", + ) + + +@pytest.mark.django_db +def test_source_metadata_xml_is_recorded_in_a_amdsec( + mcp_job: Job, + sip_directory_path: pathlib.Path, + sip: SIP, + sip_file: File, + source_metadata_xml_path: pathlib.Path, + source_metadata_xml: File, +) -> None: + mets_path = sip_directory_path / f"METS.{sip.uuid}.xml" + + main( + mcp_job, + sipType="SIP", + baseDirectoryPath=str(sip_directory_path), + XMLFile=str(mets_path), + sipUUID=sip.pk, + includeAmdSec=False, + createNormativeStructmap=False, + ) + + mets_xml = etree.parse(mets_path.open()) + transfer_metadata = mets_xml.xpath( + ".//mets:amdSec//mets:mdRef", + namespaces=NSMAP, + ) + assert len(transfer_metadata) == 1 + assert transfer_metadata[0].attrib == { + f"{{{NSMAP['xlink']}}}href": str( + source_metadata_xml_path.relative_to(sip_directory_path) + ), + "MDTYPE": "OTHER", + "LOCTYPE": "OTHER", + "OTHERLOCTYPE": "SYSTEM", + } From 9735e9ebca06f2671a4faa90db5cbd75f2451303 Mon Sep 17 00:00:00 2001 From: Douglas Cerna Date: Thu, 9 Jan 2025 15:50:19 -0600 Subject: [PATCH 06/99] Do not create amdSec when bag metadata is empty This prevents the creation and association of a amdSec element to the objects directory in the structMap when the transfer bag metadata is missing or unreadable. --- src/MCPClient/lib/clientScripts/create_mets_v2.py | 2 +- tests/MCPClient/test_create_mets_v2.py | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/MCPClient/lib/clientScripts/create_mets_v2.py b/src/MCPClient/lib/clientScripts/create_mets_v2.py index c61a9a3a9c..e722b6f179 100755 --- a/src/MCPClient/lib/clientScripts/create_mets_v2.py +++ b/src/MCPClient/lib/clientScripts/create_mets_v2.py @@ -1420,7 +1420,7 @@ def create_object_metadata(job, struct_map, baseDirectoryPath, state): ) bag_info = [find_bag_metadata(job, path) for path in paths] - if not transfer and not source and not bag_info: + if not transfer and not source and not any(bag_info): return state.globalAmdSecCounter += 1 diff --git a/tests/MCPClient/test_create_mets_v2.py b/tests/MCPClient/test_create_mets_v2.py index 701b1e8673..49d1e3e5cd 100644 --- a/tests/MCPClient/test_create_mets_v2.py +++ b/tests/MCPClient/test_create_mets_v2.py @@ -431,15 +431,26 @@ def bag_path(sip_directory_path: pathlib.Path, sip: SIP) -> pathlib.Path: @pytest.mark.django_db @mock.patch("create_mets_v2.Bag") +@pytest.mark.parametrize( + "info", + [ + {"Bagging-Date": "2025-01-08", "Payload-Oxum": "0.2"}, + {}, + ], + ids=[ + "populated", + "empty", + ], +) def test_bag_metadata_is_recorded_in_a_amdsec( bag_class: mock.Mock, + info: dict[str, str], mcp_job: Job, sip_directory_path: pathlib.Path, sip: SIP, sip_file: File, bag_path: pathlib.Path, ) -> None: - info = {"Bagging-Date": "2025-01-08", "Payload-Oxum": "0.2"} bag_class.return_value = mock.Mock(info=info) mets_path = sip_directory_path / f"METS.{sip.uuid}.xml" From 2532eb57232a4cc52044abb00aa091ceaba3b86b Mon Sep 17 00:00:00 2001 From: Douglas Cerna Date: Mon, 13 Jan 2025 11:37:35 -0600 Subject: [PATCH 07/99] Upgrade dependencies * Update git submodules * Upgrade pre-commit dependencies * Upgrade Python requirements * Run test CI jobs in Ubuntu 24.04 --- .github/workflows/acceptance-test.yml | 2 +- .github/workflows/test.yml | 6 +- .pre-commit-config.yaml | 2 +- .../submodules/archivematica-acceptance-tests | 2 +- hack/submodules/archivematica-storage-service | 2 +- requirements-dev.txt | 11 +- requirements.txt | 14 ++- .../clientScripts/archivematica_clamscan.py | 4 +- .../convert_dataverse_structure.py | 4 +- .../lib/clientScripts/create_mets_v2.py | 2 +- .../lib/clientScripts/move_to_backlog.py | 2 +- .../lib/clientScripts/parse_dataverse_mets.py | 6 +- .../lib/clientScripts/policy_check.py | 3 +- src/MCPClient/lib/clientScripts/verify_aip.py | 4 +- src/MCPServer/lib/server/packages.py | 12 +- src/MCPServer/lib/server/rpc_server.py | 5 +- src/archivematicaCommon/lib/bindpid.py | 11 +- .../lib/elasticSearchFunctions.py | 6 +- .../src/components/api/validators.py | 2 +- src/dashboard/src/components/api/views.py | 2 +- .../src/components/ingest/views_as.py | 2 +- src/dashboard/src/fpr/forms.py | 8 +- .../management/commands/import_pronom_ids.py | 3 +- .../fpr/migrations-data/mc_validate_cmd.py | 2 +- .../0012_mediaconch_policy_checks.py | 2 +- .../commands/reindex_from_remote_cluster.py | 2 +- .../migrations/0036_mediaconch_validation.py | 2 +- .../0037_mediaconch_policy_checks.py | 4 +- .../migrations/0038_fix_workflow_store_dip.py | 6 +- .../main/migrations/0040_directory_model.py | 3 +- .../migrations/0050_remove_magic_links.py | 2 +- tests/MCPClient/conftest.py | 2 +- tests/MCPClient/test_create_aip_mets.py | 54 +++++---- tests/MCPClient/test_create_dataverse_mets.py | 42 +++---- tests/MCPClient/test_filename_change.py | 2 +- tests/MCPClient/test_pid_components.py | 78 ++++++------- tests/MCPClient/test_verify_checksum.py | 108 +++++++++--------- tests/MCPServer/test_package.py | 12 +- tests/archivematicaCommon/test_appconfig.py | 2 +- .../test_elasticsearch_functions.py | 2 +- .../components/accounts/test_views.py | 6 +- .../archival_storage/test_archival_storage.py | 4 +- tests/dashboard/fpr/test_forms.py | 2 +- tests/dashboard/test_ingest.py | 2 +- 44 files changed, 224 insertions(+), 230 deletions(-) diff --git a/.github/workflows/acceptance-test.yml b/.github/workflows/acceptance-test.yml index e7ec2da7dc..bf26f46b71 100644 --- a/.github/workflows/acceptance-test.yml +++ b/.github/workflows/acceptance-test.yml @@ -14,7 +14,7 @@ jobs: test: if: "${{ github.event_name == 'workflow_dispatch' || (github.event_name == 'pull_request' && github.event.label.name == 'AMAUAT') }}" name: "Test ${{ matrix.tag }} on ${{ matrix.browser }}" - runs-on: "ubuntu-22.04" + runs-on: "ubuntu-24.04" strategy: fail-fast: false matrix: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6acbf36b61..a3aba9f4b9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -16,7 +16,7 @@ on: jobs: test: name: "Test ${{ matrix.rule }} on ${{ matrix.python-version }}" - runs-on: "ubuntu-22.04" + runs-on: "ubuntu-24.04" strategy: fail-fast: false matrix: @@ -103,7 +103,7 @@ jobs: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} frontend: name: "Test frontend" - runs-on: "ubuntu-22.04" + runs-on: "ubuntu-24.04" defaults: run: working-directory: "./src/dashboard/frontend/" @@ -131,7 +131,7 @@ jobs: npm run "test-single-run" linting: name: "Lint" - runs-on: "ubuntu-22.04" + runs-on: "ubuntu-24.04" steps: - name: "Check out repository" if: "${{ github.event_name != 'workflow_dispatch' }}" diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 95d91d896d..a107f2bf0d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -10,7 +10,7 @@ repos: src/(MCPClient/MCPServer|dashboard)/install/.*\.json ) - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.8.5 + rev: v0.9.1 hooks: - id: ruff args: [--fix, --exit-non-zero-on-fix] diff --git a/hack/submodules/archivematica-acceptance-tests b/hack/submodules/archivematica-acceptance-tests index 0ebb512ba0..255cca0f12 160000 --- a/hack/submodules/archivematica-acceptance-tests +++ b/hack/submodules/archivematica-acceptance-tests @@ -1 +1 @@ -Subproject commit 0ebb512ba07415c1f4a2211ca1110d7236197c3f +Subproject commit 255cca0f129230cbf9102305895d82f0ca8f6f16 diff --git a/hack/submodules/archivematica-storage-service b/hack/submodules/archivematica-storage-service index 00e671996e..2955aeec73 160000 --- a/hack/submodules/archivematica-storage-service +++ b/hack/submodules/archivematica-storage-service @@ -1 +1 @@ -Subproject commit 00e671996e17e097bca526ae032e37123f3cd72d +Subproject commit 2955aeec7326683c955bc7a87ddba09f382eba09 diff --git a/requirements-dev.txt b/requirements-dev.txt index a9956df116..7fc0514bbc 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -138,13 +138,13 @@ lxml==5.3.0 # ammcpc # metsrw # python-cas -metsrw==0.6.0 +metsrw==0.6.1 # via -r requirements.txt mockldap @ git+https://github.com/artefactual-labs/mockldap@v0.3.1 # via -r requirements-dev.in mozilla-django-oidc==4.0.1 # via -r requirements.txt -mysqlclient==2.2.6 +mysqlclient==2.2.7 # via # -r requirements.txt # agentarchives @@ -154,7 +154,7 @@ olefile==0.47 # opf-fido opf-fido @ git+https://github.com/artefactual-labs/fido.git@564ceb8018a8650fe931cf20e6780ee008e60fca # via -r requirements.txt -orjson==3.10.13 +orjson==3.10.14 # via -r requirements.txt packaging==24.2 # via @@ -197,7 +197,7 @@ pycparser==2.22 # cffi pyee==12.0.0 # via playwright -pyopenssl==24.3.0 +pyopenssl==25.0.0 # via # -r requirements.txt # josepy @@ -290,6 +290,7 @@ typing-extensions==4.12.2 # -r requirements.txt # asgiref # pyee + # pyopenssl # tox unidecode==1.3.8 # via -r requirements.txt @@ -322,7 +323,7 @@ zope-interface==7.2 # The following packages are considered to be unsafe in a requirements file: pip==24.3.1 # via pip-tools -setuptools==75.6.0 +setuptools==75.8.0 # via # -r requirements.txt # pip-tools diff --git a/requirements.txt b/requirements.txt index c83559e68a..2ba4f252d4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -88,17 +88,17 @@ lxml==5.3.0 # ammcpc # metsrw # python-cas -metsrw==0.6.0 +metsrw==0.6.1 # via -r requirements.in mozilla-django-oidc==4.0.1 # via -r requirements.in -mysqlclient==2.2.6 +mysqlclient==2.2.7 # via agentarchives olefile==0.47 # via opf-fido opf-fido @ git+https://github.com/artefactual-labs/fido.git@564ceb8018a8650fe931cf20e6780ee008e60fca # via -r requirements.in -orjson==3.10.13 +orjson==3.10.14 # via -r requirements.in packaging==24.2 # via gunicorn @@ -114,7 +114,7 @@ pyasn1-modules==0.4.1 # via python-ldap pycparser==2.22 # via cffi -pyopenssl==24.3.0 +pyopenssl==25.0.0 # via josepy python-cas==1.6.0 # via django-cas-ng @@ -152,7 +152,9 @@ six==1.17.0 sqlparse==0.5.3 # via django typing-extensions==4.12.2 - # via asgiref + # via + # asgiref + # pyopenssl unidecode==1.3.8 # via -r requirements.in urllib3==2.3.0 @@ -172,7 +174,7 @@ zope-interface==7.2 # via gevent # The following packages are considered to be unsafe in a requirements file: -setuptools==75.6.0 +setuptools==75.8.0 # via # zope-event # zope-interface diff --git a/src/MCPClient/lib/clientScripts/archivematica_clamscan.py b/src/MCPClient/lib/clientScripts/archivematica_clamscan.py index f3af3a2c91..acc4ff29e3 100755 --- a/src/MCPClient/lib/clientScripts/archivematica_clamscan.py +++ b/src/MCPClient/lib/clientScripts/archivematica_clamscan.py @@ -145,7 +145,7 @@ def clamd_exception_handler(err): return None elif isinstance(err, ConnectionError): logger.error( - "Clamd ConnectionError. File not scanned. Check Clamd " "output: %s", + "Clamd ConnectionError. File not scanned. Check Clamd output: %s", err, ) return None @@ -274,7 +274,7 @@ def get_scanner(): choice = str(mcpclient_settings.CLAMAV_CLIENT_BACKEND).lower() if choice not in SCANNERS_NAMES: logger.warning( - "Unexpected antivirus scanner (CLAMAV_CLIENT_BACKEND):" ' "%s"; using %s.', + 'Unexpected antivirus scanner (CLAMAV_CLIENT_BACKEND): "%s"; using %s.', choice, DEFAULT_SCANNER.__name__, ) diff --git a/src/MCPClient/lib/clientScripts/convert_dataverse_structure.py b/src/MCPClient/lib/clientScripts/convert_dataverse_structure.py index 0d2b533060..3c5bb2907f 100644 --- a/src/MCPClient/lib/clientScripts/convert_dataverse_structure.py +++ b/src/MCPClient/lib/clientScripts/convert_dataverse_structure.py @@ -393,7 +393,7 @@ def add_dataset_files_to_md(job, sip, dataset_md_latest, contact_information): is_restricted = file_json.get("restricted") if is_restricted is True and contact_information: logger.error( - "Restricted dataset files may not have transferred " "correctly: %s", + "Restricted dataset files may not have transferred correctly: %s", contact_information, ) @@ -407,7 +407,7 @@ def add_dataset_files_to_md(job, sip, dataset_md_latest, contact_information): sip.add_child(bundle) else: logger.error( - "Create Dataverse transfer METS failed. " "Bundle returned: %s", + "Create Dataverse transfer METS failed. Bundle returned: %s", bundle, ) return None diff --git a/src/MCPClient/lib/clientScripts/create_mets_v2.py b/src/MCPClient/lib/clientScripts/create_mets_v2.py index e722b6f179..6ad2b73c16 100755 --- a/src/MCPClient/lib/clientScripts/create_mets_v2.py +++ b/src/MCPClient/lib/clientScripts/create_mets_v2.py @@ -1477,7 +1477,7 @@ def create_object_metadata(job, struct_map, baseDirectoryPath, state): bag_tag = etree.SubElement(bag_metadata, key) except ValueError: job.pyprint( - f"Skipping bag key {key}; not a valid" " XML tag name", + f"Skipping bag key {key}; not a valid XML tag name", file=sys.stderr, ) continue diff --git a/src/MCPClient/lib/clientScripts/move_to_backlog.py b/src/MCPClient/lib/clientScripts/move_to_backlog.py index c9af819664..ff4a7b2ac8 100755 --- a/src/MCPClient/lib/clientScripts/move_to_backlog.py +++ b/src/MCPClient/lib/clientScripts/move_to_backlog.py @@ -73,7 +73,7 @@ def _create_file( def _index_transfer(job, transfer_id, transfer_path, size): """Index the transfer and its files in Elasticsearch.""" if "transfers" not in mcpclient_settings.SEARCH_ENABLED: - logger.info("Skipping indexing:" " Transfers indexing is currently disabled.") + logger.info("Skipping indexing: Transfers indexing is currently disabled.") return elasticSearchFunctions.setup_reading_from_conf(mcpclient_settings) client = elasticSearchFunctions.get_client() diff --git a/src/MCPClient/lib/clientScripts/parse_dataverse_mets.py b/src/MCPClient/lib/clientScripts/parse_dataverse_mets.py index 79142b6260..89dd2faa69 100644 --- a/src/MCPClient/lib/clientScripts/parse_dataverse_mets.py +++ b/src/MCPClient/lib/clientScripts/parse_dataverse_mets.py @@ -75,7 +75,7 @@ def get_db_objects(job, mets, transfer_uuid): continue except (File.DoesNotExist, ValidationError): logger.debug( - "Could not find file type: '%s' in the database: %s with " "path: %s", + "Could not find file type: '%s' in the database: %s with path: %s", entry.type, entry.path, item_path, @@ -252,7 +252,7 @@ def verify_checksum( checksumtype = checksumtype.lower() generated_checksum = get_file_checksum(path, checksumtype) - event_detail = 'program="python"; ' f'module="hashlib.{checksumtype}()"' + event_detail = f'program="python"; module="hashlib.{checksumtype}()"' if checksum != generated_checksum: job.pyprint("Checksum failed") event_outcome = "Fail" @@ -299,7 +299,7 @@ def init_parse_dataverse_mets(job): transfer_dir = job.args[1] transfer_uuid = job.args[2] logger.info( - "Parse Dataverse METS with dir: '%s' and transfer " "uuid: %s", + "Parse Dataverse METS with dir: '%s' and transfer uuid: %s", transfer_dir, transfer_uuid, ) diff --git a/src/MCPClient/lib/clientScripts/policy_check.py b/src/MCPClient/lib/clientScripts/policy_check.py index 83c8b43295..b5d89bb71d 100755 --- a/src/MCPClient/lib/clientScripts/policy_check.py +++ b/src/MCPClient/lib/clientScripts/policy_check.py @@ -114,8 +114,7 @@ def check(self) -> int: rules = self._get_rules() if not rules: self.job.pyprint( - "Not performing a policy check because there are no relevant" - " FPR rules" + "Not performing a policy check because there are no relevant FPR rules" ) return NOT_APPLICABLE_CODE rule_outputs = [] diff --git a/src/MCPClient/lib/clientScripts/verify_aip.py b/src/MCPClient/lib/clientScripts/verify_aip.py index 32feae86a6..31b9f7be3a 100755 --- a/src/MCPClient/lib/clientScripts/verify_aip.py +++ b/src/MCPClient/lib/clientScripts/verify_aip.py @@ -215,9 +215,7 @@ def verify_aip(job): except VerifyChecksumsError: return_code = 1 else: - job.pyprint( - "Not verifying checksums because other tests have already" " failed." - ) + job.pyprint("Not verifying checksums because other tests have already failed.") # cleanup if not is_uncompressed_aip: diff --git a/src/MCPServer/lib/server/packages.py b/src/MCPServer/lib/server/packages.py index 80f4d3a090..641850834a 100644 --- a/src/MCPServer/lib/server/packages.py +++ b/src/MCPServer/lib/server/packages.py @@ -408,7 +408,7 @@ def _start_package_transfer_with_auto_approval( """ transfer_rel, filepath, path = _determine_transfer_paths(name, path, tmpdir) logger.debug( - "Package %s: determined vars" " transfer_rel=%s, filepath=%s, path=%s", + "Package %s: determined vars transfer_rel=%s, filepath=%s, path=%s", transfer.pk, transfer_rel, filepath, @@ -416,7 +416,7 @@ def _start_package_transfer_with_auto_approval( ) logger.debug( - "Package %s: copying chosen contents from transfer sources" " (from=%s, to=%s)", + "Package %s: copying chosen contents from transfer sources (from=%s, to=%s)", transfer.pk, path, transfer_rel, @@ -450,7 +450,7 @@ def _start_package_transfer(transfer, name, path, tmpdir, starting_point): """ transfer_rel, filepath, path = _determine_transfer_paths(name, path, tmpdir) logger.debug( - "Package %s: determined vars" " transfer_rel=%s, filepath=%s, path=%s", + "Package %s: determined vars transfer_rel=%s, filepath=%s, path=%s", transfer.pk, transfer_rel, filepath, @@ -458,7 +458,7 @@ def _start_package_transfer(transfer, name, path, tmpdir, starting_point): ) logger.debug( - "Package %s: copying chosen contents from transfer sources" " (from=%s, to=%s)", + "Package %s: copying chosen contents from transfer sources (from=%s, to=%s)", transfer.pk, path, transfer_rel, @@ -466,7 +466,7 @@ def _start_package_transfer(transfer, name, path, tmpdir, starting_point): _copy_from_transfer_sources([path], transfer_rel) logger.debug( - "Package %s: moving package to activeTransfers dir (from=%s," " to=%s)", + "Package %s: moving package to activeTransfers dir (from=%s, to=%s)", transfer.pk, filepath, starting_point.watched_dir, @@ -701,7 +701,7 @@ def set_variable(self, key, value, chain_link_id): if created: message = "New UnitVariable %s created for %s: %s (MSCL: %s)" else: - message = "Existing UnitVariable %s for %s updated to %s (MSCL" " %s)" + message = "Existing UnitVariable %s for %s updated to %s (MSCL %s)" logger.info(message, key, self.uuid, value, chain_link_id) diff --git a/src/MCPServer/lib/server/rpc_server.py b/src/MCPServer/lib/server/rpc_server.py index c14090f171..712966b385 100644 --- a/src/MCPServer/lib/server/rpc_server.py +++ b/src/MCPServer/lib/server/rpc_server.py @@ -309,8 +309,7 @@ def _approve_partial_reingest_handler(self, worker, job, payload): ).first() if not job: # No job to be found. raise NotFoundError( - 'There is no "Reingest AIP" job awaiting a' - f" decision for SIP {sip_uuid}" + f'There is no "Reingest AIP" job awaiting a decision for SIP {sip_uuid}' ) not_found = NotFoundError("Could not find choice for approve AIP reingest") try: @@ -514,7 +513,7 @@ def start(workflow, shutdown_event, package_queue, executor): worker.work(poll_timeout=5.0) except gearman.errors.ServerUnavailable as inst: logger.error( - "Gearman server is unavailable: %s. Retrying in %d" " seconds.", + "Gearman server is unavailable: %s. Retrying in %d seconds.", inst.args, fail_sleep, ) diff --git a/src/archivematicaCommon/lib/bindpid.py b/src/archivematicaCommon/lib/bindpid.py index 7f4daf3b41..28276f4cf2 100755 --- a/src/archivematicaCommon/lib/bindpid.py +++ b/src/archivematicaCommon/lib/bindpid.py @@ -383,15 +383,14 @@ def _add_parser_args(parser): "desired_pid", type=str, action="store", - help="The PID that you want to create or whose resolve" - " URL you want to modify.", + help="The PID that you want to create or whose resolve URL you want to modify.", default=None, ) parser.add_argument( "entity_type", type=str, action="store", - help="The type of entity---file or unit---that you want" " to create a PID for", + help="The type of entity---file or unit---that you want to create a PID for", choices=tuple(ENTITY_TYPES.keys()), default=None, ) @@ -401,9 +400,7 @@ def _add_parser_args(parser): type=str, action="store", dest="naming_authority", - help="A handle naming" - " authority that you can create PIDs under, e.g.," - " 12345.", + help="A handle naming authority that you can create PIDs under, e.g., 12345.", ) parser.add_argument( "-e", @@ -453,7 +450,7 @@ def _add_parser_args(parser): type=str, action="store", dest="resolve_url_template_archive", - help="Template for the URL that a DIP's PURL should" " resolve to", + help="Template for the URL that a DIP's PURL should resolve to", default=None, ) parser.add_argument( diff --git a/src/archivematicaCommon/lib/elasticSearchFunctions.py b/src/archivematicaCommon/lib/elasticSearchFunctions.py index 76acbc83a2..4176d96d81 100644 --- a/src/archivematicaCommon/lib/elasticSearchFunctions.py +++ b/src/archivematicaCommon/lib/elasticSearchFunctions.py @@ -127,9 +127,7 @@ def setup(hosts, timeout=DEFAULT_TIMEOUT, enabled=(AIPS_INDEX, TRANSFERS_INDEX)) if len(indexes) > 0: create_indexes_if_needed(_es_client, indexes) else: - logger.warning( - "Setting up the Elasticsearch client " "without enabled indexes." - ) + logger.warning("Setting up the Elasticsearch client without enabled indexes.") def setup_reading_from_conf(settings): @@ -1206,7 +1204,7 @@ def search_all_results(client, body, index): if results["hits"]["total"] > MAX_QUERY_SIZE: logger.warning( - "Number of items in backlog (%s) exceeds maximum amount " "fetched (%s)", + "Number of items in backlog (%s) exceeds maximum amount fetched (%s)", results["hits"]["total"], MAX_QUERY_SIZE, ) diff --git a/src/dashboard/src/components/api/validators.py b/src/dashboard/src/components/api/validators.py index 39e321e840..d3a1118122 100644 --- a/src/dashboard/src/components/api/validators.py +++ b/src/dashboard/src/components/api/validators.py @@ -188,7 +188,7 @@ def _check_file_exts(row, file_cols): q in row[c] for q in [".high.", ".medium.", ".low"] ): raise ValidationError( - "Filepath " + row[c] + " contains" " more than one period." + "Filepath " + row[c] + " contains more than one period." ) @staticmethod diff --git a/src/dashboard/src/components/api/views.py b/src/dashboard/src/components/api/views.py index 6e6f7b707d..24686cd835 100644 --- a/src/dashboard/src/components/api/views.py +++ b/src/dashboard/src/components/api/views.py @@ -413,7 +413,7 @@ def _completed_units(unit_type="transfer"): completed.append(str(unit.uuid)) if status_err: LOGGER.warning( - "Unable to determine status of at least one unit," " e.g.: unit %s (%s)", + "Unable to determine status of at least one unit, e.g.: unit %s (%s)", unit.uuid, model_name, ) diff --git a/src/dashboard/src/components/ingest/views_as.py b/src/dashboard/src/components/ingest/views_as.py index aeaadfc8d1..d2983eb5e4 100644 --- a/src/dashboard/src/components/ingest/views_as.py +++ b/src/dashboard/src/components/ingest/views_as.py @@ -25,7 +25,7 @@ def get_as_system_client(): config = models.DashboardSetting.objects.get_dict("upload-archivesspace_v0.0") config_err = ArchivesSpaceError( - "ArchivesSpace has not been configured properly" " - base URL is missing" + "ArchivesSpace has not been configured properly - base URL is missing" ) try: base_url = config["base_url"] diff --git a/src/dashboard/src/fpr/forms.py b/src/dashboard/src/fpr/forms.py index e2e23a2ba6..1d39ff1713 100644 --- a/src/dashboard/src/fpr/forms.py +++ b/src/dashboard/src/fpr/forms.py @@ -57,7 +57,7 @@ def clean(self): ).exists() ): raise forms.ValidationError( - _("An ID tool with this description and version already" " exists") + _("An ID tool with this description and version already exists") ) return cleaned_data @@ -137,9 +137,9 @@ def clean(self): # give its UUID so that the user can reasonably track it down. else: ex_fpr_uuid = existing_fprule.uuid - msg = _( - "An identical FP rule already exists. See rule" " %(uuid)s." - ) % {"uuid": ex_fpr_uuid} + msg = _("An identical FP rule already exists. See rule %(uuid)s.") % { + "uuid": ex_fpr_uuid + } if not existing_fprule.enabled: replacers = fprmodels.FPRule.objects.filter( replaces=existing_fprule.uuid diff --git a/src/dashboard/src/fpr/management/commands/import_pronom_ids.py b/src/dashboard/src/fpr/management/commands/import_pronom_ids.py index f05f03d1ad..1e5537ead5 100644 --- a/src/dashboard/src/fpr/management/commands/import_pronom_ids.py +++ b/src/dashboard/src/fpr/management/commands/import_pronom_ids.py @@ -36,8 +36,7 @@ def add_arguments(self, parser): parser.add_argument( "--output-filename", "-o", - help='File to output the migration to. "stdout" outputs to ' - "standard output", + help='File to output the migration to. "stdout" outputs to standard output', default="stdout", ) diff --git a/src/dashboard/src/fpr/migrations-data/mc_validate_cmd.py b/src/dashboard/src/fpr/migrations-data/mc_validate_cmd.py index 673332612a..a7552279e8 100644 --- a/src/dashboard/src/fpr/migrations-data/mc_validate_cmd.py +++ b/src/dashboard/src/fpr/migrations-data/mc_validate_cmd.py @@ -33,7 +33,7 @@ def parse_mediaconch_data(target): return Parse(etree_el=etree.fromstring(output), stdout=output) except etree.XMLSyntaxError: raise MediaConchException( - "MediaConch failed when attempting to parse the XML output by" " MediaConch" + "MediaConch failed when attempting to parse the XML output by MediaConch" ) diff --git a/src/dashboard/src/fpr/migrations/0012_mediaconch_policy_checks.py b/src/dashboard/src/fpr/migrations/0012_mediaconch_policy_checks.py index 54c3ce66e0..c77e9cfbeb 100644 --- a/src/dashboard/src/fpr/migrations/0012_mediaconch_policy_checks.py +++ b/src/dashboard/src/fpr/migrations/0012_mediaconch_policy_checks.py @@ -53,7 +53,7 @@ def data_migration(apps, schema_editor): uuid=mediaconch_policy_check_command_uuid, tool=mediaconch_tool, description=( - "Check against policy PLACEHOLDER_FOR_POLICY_FILE_NAME" " using MediaConch" + "Check against policy PLACEHOLDER_FOR_POLICY_FILE_NAME using MediaConch" ), command=POLICY_CHECK_CMD, script_type="pythonScript", diff --git a/src/dashboard/src/main/management/commands/reindex_from_remote_cluster.py b/src/dashboard/src/main/management/commands/reindex_from_remote_cluster.py index 8cf3523988..32456985e9 100644 --- a/src/dashboard/src/main/management/commands/reindex_from_remote_cluster.py +++ b/src/dashboard/src/main/management/commands/reindex_from_remote_cluster.py @@ -43,7 +43,7 @@ def add_arguments(self, parser): "--size", type=int, default=10, - help="Batch size, reduce it to limit request chunk size. " "Default: 10.", + help="Batch size, reduce it to limit request chunk size. Default: 10.", ) parser.add_argument( "-t", diff --git a/src/dashboard/src/main/migrations/0036_mediaconch_validation.py b/src/dashboard/src/main/migrations/0036_mediaconch_validation.py index f49d556e2e..9d4cd2599e 100644 --- a/src/dashboard/src/main/migrations/0036_mediaconch_validation.py +++ b/src/dashboard/src/main/migrations/0036_mediaconch_validation.py @@ -160,7 +160,7 @@ def data_migration(apps, schema_editor): id=vldt_ccss_drvtv_stc_pk, execute="validateFile_v1.0", arguments=( - '"%relativeLocation%" "%fileUUID%" "%SIPUUID%"' ' "%sharedPath%" "access"' + '"%relativeLocation%" "%fileUUID%" "%SIPUUID%" "%sharedPath%" "access"' ), filter_subdir="DIP/objects/", ) diff --git a/src/dashboard/src/main/migrations/0037_mediaconch_policy_checks.py b/src/dashboard/src/main/migrations/0037_mediaconch_policy_checks.py index c0e42b53a2..b5aec34c1d 100644 --- a/src/dashboard/src/main/migrations/0037_mediaconch_policy_checks.py +++ b/src/dashboard/src/main/migrations/0037_mediaconch_policy_checks.py @@ -95,7 +95,7 @@ def data_migration(apps, schema_editor): id=ccss_drvtv_policy_check_stc_pk, execute="policyCheck_v0.0", arguments=( - '"%relativeLocation%" "%fileUUID%" "%SIPUUID%"' ' "%sharedPath%" "access"' + '"%relativeLocation%" "%fileUUID%" "%SIPUUID%" "%sharedPath%" "access"' ), ) @@ -315,7 +315,7 @@ def data_migration(apps, schema_editor): id=rgnl_policy_check_stc_pk, execute="policyCheck_v0.0", arguments=( - '"%relativeLocation%" "%fileUUID%" "%SIPUUID%"' ' "%sharedPath%" "original"' + '"%relativeLocation%" "%fileUUID%" "%SIPUUID%" "%sharedPath%" "original"' ), # filter_subdir='objects/' <- not needed during transfer, I believe ... ) diff --git a/src/dashboard/src/main/migrations/0038_fix_workflow_store_dip.py b/src/dashboard/src/main/migrations/0038_fix_workflow_store_dip.py index 7f06190779..565e61e649 100644 --- a/src/dashboard/src/main/migrations/0038_fix_workflow_store_dip.py +++ b/src/dashboard/src/main/migrations/0038_fix_workflow_store_dip.py @@ -152,9 +152,7 @@ def data_migration(apps, schema_editor): completed_tc.save() completed_stc = StandardTaskConfig.objects.get(id=completed_stc_uuid) completed_stc.arguments = ( - '"%SIPDirectory%" ' - '"%rejectedDirectory%" ' - '"%watchDirectoryPath%uploadedDIPs/"' + '"%SIPDirectory%" "%rejectedDirectory%" "%watchDirectoryPath%uploadedDIPs/"' ) completed_stc.execute = "handleUnstoredDIP_v0.0" completed_stc.save() @@ -169,7 +167,7 @@ def data_migration(apps, schema_editor): move_uploaded_dips_stc_uuid = "302be9f9-af3f-45da-9305-02706d81b742" StandardTaskConfig.objects.filter(id=move_uploaded_dips_stc_uuid).update( execute="copy_v0.0", - arguments='"%SIPDirectory%" ' '"%watchDirectoryPath%uploadedDIPs/." ' "-R", + arguments='"%SIPDirectory%" "%watchDirectoryPath%uploadedDIPs/." -R', ) diff --git a/src/dashboard/src/main/migrations/0040_directory_model.py b/src/dashboard/src/main/migrations/0040_directory_model.py index bdbd806d9e..928e1e7453 100644 --- a/src/dashboard/src/main/migrations/0040_directory_model.py +++ b/src/dashboard/src/main/migrations/0040_directory_model.py @@ -93,8 +93,7 @@ def data_migration(apps, schema_editor): id=dir_uuid_stc_uuid, execute="assignUUIDsToDirectories_v0.0", arguments=( - '"%SIPDirectory%" "%SIPUUID%" --include-dirs' - ' "%AssignUUIDsToDirectories%"' + '"%SIPDirectory%" "%SIPUUID%" --include-dirs "%AssignUUIDsToDirectories%"' ), ) diff --git a/src/dashboard/src/main/migrations/0050_remove_magic_links.py b/src/dashboard/src/main/migrations/0050_remove_magic_links.py index 1dac6e0947..0f8d76a43c 100644 --- a/src/dashboard/src/main/migrations/0050_remove_magic_links.py +++ b/src/dashboard/src/main/migrations/0050_remove_magic_links.py @@ -53,7 +53,7 @@ def data_migration(apps, schema_editor): ########################################################################### assign_magic_link = namedtuple( - "AssignMagicLink", "mscl_pk tc_pk tcmagic_pk goto_mscl_pk " "new_uuid new_var" + "AssignMagicLink", "mscl_pk tc_pk tcmagic_pk goto_mscl_pk new_uuid new_var" ) assign_magic_links = [ # These two determine the path after the package is moved to quarantine. diff --git a/tests/MCPClient/conftest.py b/tests/MCPClient/conftest.py index 244772bcf5..d9ef8decbf 100644 --- a/tests/MCPClient/conftest.py +++ b/tests/MCPClient/conftest.py @@ -270,6 +270,6 @@ def settings( shared_directory_path: pathlib.Path, ) -> pytest_django.fixtures.SettingsWrapper: settings.SHARED_DIRECTORY = f"{shared_directory_path}/" - settings.PROCESSING_DIRECTORY = f'{shared_directory_path / "currentlyProcessing"}/' + settings.PROCESSING_DIRECTORY = f"{shared_directory_path / 'currentlyProcessing'}/" return settings diff --git a/tests/MCPClient/test_create_aip_mets.py b/tests/MCPClient/test_create_aip_mets.py index cc37bdbf1f..7ac8267127 100644 --- a/tests/MCPClient/test_create_aip_mets.py +++ b/tests/MCPClient/test_create_aip_mets.py @@ -863,18 +863,20 @@ def test_create_file_sec(self): ) fnames = [label.attrib["LABEL"] for label in labels] uuids = [fptr.attrib["FILEID"] for fptr in fptrs] - assert isinstance( - self.structmap_div_element, etree._Element - ), "createFileSec didn't return an XML structure to work with" + assert isinstance(self.structmap_div_element, etree._Element), ( + "createFileSec didn't return an XML structure to work with" + ) assert self.count_dir_objects(self.objects_dir) == ( len(fnames) and len(uuids) ), "Count of objects on disk and in fileSec do not match." - assert ( - self.state.fileNameToFileID is not None - ), "fileNameToFileID mapping hasn't been generated" - assert ( - self.count_dir_objects(self.objects_dir) == len(self.state.fileNameToFileID) - ), "State hasn't been generated for all objects on disk, duplicate names may not be counted for" + assert self.state.fileNameToFileID is not None, ( + "fileNameToFileID mapping hasn't been generated" + ) + assert self.count_dir_objects(self.objects_dir) == len( + self.state.fileNameToFileID + ), ( + "State hasn't been generated for all objects on disk, duplicate names may not be counted for" + ) def test_get_included_structmap_invalid_mets(self): """Integration test ensuring that it is possible for the mets @@ -893,7 +895,9 @@ def test_get_included_structmap_invalid_mets(self): try: self.validate_mets(self.mets_xsd_path, broken_structmap_path) except etree.DocumentInvalid: - assert True, "Expecting a validation error so that we know validation is working correctly" + assert True, ( + "Expecting a validation error so that we know validation is working correctly" + ) def test_get_included_structmap_valid_mets(self): """Test the valid output of custom structmaps in create_mets_v2.""" @@ -976,20 +980,20 @@ def test_get_included_structmap_valid_mets(self): == f"structmap_{self.state.globalStructMapCounter}" ), "structmap id is incorrect" else: - assert ( - custom_structmap.attrib["ID"].lower() == res.structmap_id - ), "structmap id hasn't been maintained" + assert custom_structmap.attrib["ID"].lower() == res.structmap_id, ( + "structmap id hasn't been maintained" + ) fids = custom_structmap.xpath( "//*[@FILEID]", namespaces={"mets:": ns.metsNS} ) assert len(fids) == res.replaced_count, "Count of FILEIDs is incorrect" - assert len({fid.attrib["FILEID"] for fid in fids}) == len( - res.files - ), "Uneven replacement of IDs for files in structmap" + assert len({fid.attrib["FILEID"] for fid in fids}) == len(res.files), ( + "Uneven replacement of IDs for files in structmap" + ) for fileid in [fid.attrib["FILEID"] for fid in fids]: - assert fileid in list( - self.state.fileNameToFileID.values() - ), "Expected FILEID not in returned structmap" + assert fileid in list(self.state.fileNameToFileID.values()), ( + "Expected FILEID not in returned structmap" + ) def test_get_included_structmap_incomplete_mets(self): """Test the output of custom structmaps in create_mets_v2 where the @@ -1023,9 +1027,9 @@ def test_get_included_structmap_incomplete_mets(self): state=self.state, custom_structmap=res.structmap_name, ) - assert ( - custom_structmap == [] - ), f"Return from include_custom_structmap should be an empty array: {custom_structmap}" - assert ( - self.state.error_accumulator.error_count == 1 - ), "error counter should be incremented on error" + assert custom_structmap == [], ( + f"Return from include_custom_structmap should be an empty array: {custom_structmap}" + ) + assert self.state.error_accumulator.error_count == 1, ( + "error counter should be incremented on error" + ) diff --git a/tests/MCPClient/test_create_dataverse_mets.py b/tests/MCPClient/test_create_dataverse_mets.py index f19327091e..378187d31a 100644 --- a/tests/MCPClient/test_create_dataverse_mets.py +++ b/tests/MCPClient/test_create_dataverse_mets.py @@ -202,9 +202,9 @@ def test_generated_mets_(self, fixture, tmpdir): except metsrw.MetsError: pytest.fail(f"Could not parse mets {mets_path}") - assert ( - len(mets.all_files()) == fixture.all_file_count - ), f"File count incorrect: '{len(mets.all_files())}', expected '{fixture.all_file_count}'" + assert len(mets.all_files()) == fixture.all_file_count, ( + f"File count incorrect: '{len(mets.all_files())}', expected '{fixture.all_file_count}'" + ) dir_counter = 0 item_counter = 0 @@ -214,12 +214,12 @@ def test_generated_mets_(self, fixture, tmpdir): if file_.type == "Item": item_counter += 1 - assert ( - dir_counter == fixture.dir_count - ), f"Directory count incorrect: '{dir_counter}', expected: '{fixture.dir_count}'" - assert ( - item_counter == fixture.item_count - ), f"Item count incorrect: '{item_counter}', expected: '{fixture.item_count}'" + assert dir_counter == fixture.dir_count, ( + f"Directory count incorrect: '{dir_counter}', expected: '{fixture.dir_count}'" + ) + assert item_counter == fixture.item_count, ( + f"Item count incorrect: '{item_counter}', expected: '{fixture.item_count}'" + ) @pytest.mark.parametrize( "fixture", [dv_1, dv_2, dv_3, dv_4, dv_5, dv_6, dv_7, dv_8] @@ -254,9 +254,9 @@ def test_mets_content(self, fixture, tmpdir): # is expected. title = mets_root.findall(".//ddi:titl", namespace) assert len(title) == 1 - assert ( - title[0].text == fixture.ddi_title - ), f"DDI title: '{title[0].text}' is not what was expected: '{fixture.ddi_title}'" + assert title[0].text == fixture.ddi_title, ( + f"DDI title: '{title[0].text}' is not what was expected: '{fixture.ddi_title}'" + ) # Test that we have a single PID and that it matches what is expected. pid = mets_root.findall(".//ddi:IDNo", namespace) @@ -264,21 +264,21 @@ def test_mets_content(self, fixture, tmpdir): # Agency is synonymous with Type in our use of the PID Agency value. # N.B. The agency providing the persistent identifier. pid_agency = pid[0].get("agency") - assert ( - pid_agency == fixture.pid_type - ), f"PID type: '{pid_agency}' is not what was expected: '{fixture.pid_type}'" - assert ( - pid[0].text == fixture.pid_value - ), f"PID value: '{pid[0].text}' is not what was expected: '{fixture.pid_value}" + assert pid_agency == fixture.pid_type, ( + f"PID type: '{pid_agency}' is not what was expected: '{fixture.pid_type}'" + ) + assert pid[0].text == fixture.pid_value, ( + f"PID value: '{pid[0].text}' is not what was expected: '{fixture.pid_value}" + ) # Title is used in three other locations in the METS. Make sure that # they are found as well. for map_ in mets_root.findall("{http://www.loc.gov/METS/}structMap"): for entry in map_: if entry.get("Type") == "Directory" and entry.get("DMDID") is not None: - assert ( - entry.get("LABEL") == fixture.ddi_title - ), "Title not found in METS struct maps where expected" + assert entry.get("LABEL") == fixture.ddi_title, ( + "Title not found in METS struct maps where expected" + ) # Test that the MDRef count is what is expected. refs = mets_root.findall(".//{http://www.loc.gov/METS/}mdRef") diff --git a/tests/MCPClient/test_filename_change.py b/tests/MCPClient/test_filename_change.py index 3f8127a47a..2db93194f2 100644 --- a/tests/MCPClient/test_filename_change.py +++ b/tests/MCPClient/test_filename_change.py @@ -139,7 +139,7 @@ def is_uuid(uuid_): def verify_event_details(event): assert ( - 'prohibited characters removed: program="change_names"; ' 'version="1.10.' + 'prohibited characters removed: program="change_names"; version="1.10.' ) in event.event_detail assertQuerysetEqual( event.agents.all(), diff --git a/tests/MCPClient/test_pid_components.py b/tests/MCPClient/test_pid_components.py index fe248f6114..7bbb1e7744 100644 --- a/tests/MCPClient/test_pid_components.py +++ b/tests/MCPClient/test_pid_components.py @@ -237,9 +237,9 @@ def test_bind_pids_no_config( processing configuration but no handle server information configured. """ DashboardSetting.objects.filter(scope="handle").delete() - assert ( - bind_pids.main(mcp_job, None, None) == 1 - ), "Incorrect return value for bind_pids with incomplete configuration." + assert bind_pids.main(mcp_job, None, None) == 1, ( + "Incorrect return value for bind_pids with incomplete configuration." + ) assert caplog.records[0].message.startswith(INCOMPLETE_CONFIG_MSG) @@ -272,9 +272,9 @@ def test_bind_pids( bind_pids.main(mcp_job, str(sip.uuid), "") sip_mdl = SIP.objects.filter(uuid=sip.uuid).first() - assert len(sip_mdl.identifiers.all()) == len( - BOUND_IDENTIFIER_TYPES - ), "Number of SIP identifiers is greater than anticipated" + assert len(sip_mdl.identifiers.all()) == len(BOUND_IDENTIFIER_TYPES), ( + "Number of SIP identifiers is greater than anticipated" + ) dirs = Directory.objects.filter(sip=sip).all() # At time of writing, the Bind PIDs functions only binds to the content # folders and the SIP itself, it doesn't bind to the metadata or @@ -287,9 +287,9 @@ def test_bind_pids( pid_types = [] for pid in bound: pid_types.append(pid[0]) - assert ( - "hdl" in pid_types - ), "An expected hdl persistent identifier isn't in the result set" + assert "hdl" in pid_types, ( + "An expected hdl persistent identifier isn't in the result set" + ) assert "URI" in pid_types, "An expected URI isn't in the result set" bound_hdl = f"{BOUND_HDL}{mdl.pk}" bound_uri = f"{BOUND_URI}{mdl.pk}" @@ -350,16 +350,16 @@ def test_bind_pid( "METS.xml", "identifiers.json", ] - assert len(files) is len( - package_files - ), "Number of files returned from package is incorrect" + assert len(files) is len(package_files), ( + "Number of files returned from package is incorrect" + ) for file_ in files: bind_pid.main(mcp_job, file_.pk) for file_mdl in files: bound = {idfr.type: idfr.value for idfr in file_mdl.identifiers.all()} - assert ( - "hdl" in bound - ), "An expected hdl persistent identifier isn't in the result set" + assert "hdl" in bound, ( + "An expected hdl persistent identifier isn't in the result set" + ) assert "URI" in bound, "An expected URI isn't in the result set" bound_hdl = f"{BOUND_HDL}{file_mdl.pk}" bound_uri = f"{BOUND_URI}{file_mdl.pk}" @@ -378,9 +378,9 @@ def test_bind_pid( id_values = [item.text for item in id_value] identifiers_dict = dict(list(zip(id_types, id_values))) for key in identifiers_dict.keys(): - assert key in chain( - TRADITIONAL_IDENTIFIERS, BOUND_IDENTIFIER_TYPES - ), "Identifier type not in expected schemes list" + assert key in chain(TRADITIONAL_IDENTIFIERS, BOUND_IDENTIFIER_TYPES), ( + "Identifier type not in expected schemes list" + ) assert bound_hdl in list(identifiers_dict.values()) assert bound_uri in list(identifiers_dict.values()) @@ -448,9 +448,9 @@ def test_pid_declaration( for mdl in chain((sip_mdl,), files, dir_mdl): bound = {idfr.type: idfr.value for idfr in mdl.identifiers.all()} assert len(bound) == 2, "Number of identifiers is incorrect" - assert set(bound.keys()) == set( - DECLARED_IDENTIFIER_TYPES - ), "Returned keys are not in expected list" + assert set(bound.keys()) == set(DECLARED_IDENTIFIER_TYPES), ( + "Returned keys are not in expected list" + ) for key, value in bound.items(): assert value, "Returned an empty value for an identifier" if key == PID_EXID: @@ -468,12 +468,12 @@ def test_pid_declaration( id_value = dir_dmd_sec.xpath( "//premis:objectIdentifierValue", namespaces={"premis": ns.premisNS} ) - assert len(id_type) == len( - all_identifier_types - ), "Identifier type count is incorrect" - assert len(id_value) == len( - all_identifier_types - ), "Identifier value count is incorrect" + assert len(id_type) == len(all_identifier_types), ( + "Identifier type count is incorrect" + ) + assert len(id_value) == len(all_identifier_types), ( + "Identifier value count is incorrect" + ) for key, value in dict(list(zip(id_type, id_value))).items(): if key == PID_EXID: assert example_uri in value, "Example URI not preserved" @@ -489,12 +489,12 @@ def test_pid_declaration( id_value = file_level_premis.xpath( "//premis:objectIdentifierValue", namespaces={"premis": ns.premisNS} ) - assert len(id_type) == len( - all_identifier_types - ), "Identifier type count is incorrect" - assert len(id_value) == len( - all_identifier_types - ), "Identifier value count is incorrect" + assert len(id_type) == len(all_identifier_types), ( + "Identifier type count is incorrect" + ) + assert len(id_value) == len(all_identifier_types), ( + "Identifier value count is incorrect" + ) for key, value in dict(list(zip(id_type, id_value))).items(): if key == PID_EXID: assert example_uri in value, "Example URI not preserved" @@ -514,9 +514,9 @@ def test_pid_declaration_exceptions( DeclarePIDs(mcp_job).pid_declaration( unit_uuid="eb6b860e-611c-45c8-8d3e-b9396ed6c751", sip_directory="" ) - assert ( - "No identifiers.json file found" in mcp_job.get_stderr().strip() - ), "Expecting no identifiers.json file, but got something else" + assert "No identifiers.json file found" in mcp_job.get_stderr().strip(), ( + "Expecting no identifiers.json file, but got something else" + ) with mock.patch( "pid_declaration.DeclarePIDs._retrieve_identifiers_path", return_value=os.path.join( @@ -527,6 +527,6 @@ def test_pid_declaration_exceptions( DeclarePIDs(mcp_job).pid_declaration(unit_uuid="", sip_directory="") except DeclarePIDsException as err: json_error = "Expecting value: line 15 column 1 (char 336)" - assert json_error in str( - err - ), "Error message something other than anticipated for invalid JSON" + assert json_error in str(err), ( + "Error message something other than anticipated for invalid JSON" + ) diff --git a/tests/MCPClient/test_verify_checksum.py b/tests/MCPClient/test_verify_checksum.py index 06f9a3179f..73b2c75856 100644 --- a/tests/MCPClient/test_verify_checksum.py +++ b/tests/MCPClient/test_verify_checksum.py @@ -75,9 +75,9 @@ def test_valid_initialisation(self, fixture): configured to work with the file path provided. """ if fixture[1]: - assert isinstance( - Hashsum(fixture[0]), Hashsum - ), "Hashsum object not instantiated correctly" + assert isinstance(Hashsum(fixture[0]), Hashsum), ( + "Hashsum object not instantiated correctly" + ) else: with pytest.raises(NoHashCommandAvailable): Hashsum(fixture[0]) @@ -99,9 +99,9 @@ def test_provenance_string(self): with mock.patch.object( hashsum, "_call", return_value=version_string ) as mock_call: - assert ( - hashsum.version() == "md5sum (GNU coreutils) 8.28" - ), "Hashsum version retrieved is incorrect" + assert hashsum.version() == "md5sum (GNU coreutils) 8.28", ( + "Hashsum version retrieved is incorrect" + ) mock_call.assert_called_once_with("--version") expected_provenance = 'program="md5sum -c --strict metadata/checksum.md5"; version="md5sum (GNU coreutils) 8.28"' with mock.patch.object( @@ -110,9 +110,9 @@ def test_provenance_string(self): (hashsum.COMMAND,) + ("-c", "--strict", hash_file), ): provenance_output = hashsum.get_command_detail() - assert ( - provenance_output == expected_provenance - ), f"Provenance output is incorrect: {provenance_output}" + assert provenance_output == expected_provenance, ( + f"Provenance output is incorrect: {provenance_output}" + ) def test_provenance_string_no_command(self): """When nothing has happened, e.g. the checksums haven't been validated @@ -160,9 +160,9 @@ def test_compare_hashes_failed(self): "-c", "--strict", hash_file, transfer_dir=objects_dir ) assert ret == 1, self.assert_return_value.format(ret) - assert ( - job.get_stderr().strip() == exception_string - ), self.assert_exception_string + assert job.get_stderr().strip() == exception_string, ( + self.assert_exception_string + ) def test_compare_hashes_with_bad_files(self): """Ensure that the formatting of errors is consistent if improperly @@ -200,9 +200,9 @@ def test_compare_hashes_with_bad_files(self): mock_call.assert_called_once_with( "-c", "--strict", hash_file, transfer_dir=objects_dir ) - assert ( - job.get_stderr().strip() == except_string_no_proper_out - ), self.assert_exception_string + assert job.get_stderr().strip() == except_string_no_proper_out, ( + self.assert_exception_string + ) assert ret == 1, self.assert_return_value.format(ret) # Flush job.error as it isn't flushed automatically. job.error = "" @@ -213,9 +213,9 @@ def test_compare_hashes_with_bad_files(self): returncode=1, cmd="sha1sum", output=improper_formatting ) ret = hashsum.compare_hashes("") - assert ( - job.get_stderr().strip() == except_string_improper_format - ), self.assert_exception_string + assert job.get_stderr().strip() == except_string_improper_format, ( + self.assert_exception_string + ) mock_call.assert_called_once_with( "-c", "--strict", hash_file, transfer_dir=objects_dir ) @@ -252,9 +252,9 @@ def test_line_comparison_fail(self): ) def test_get_ext(self, fixture): """get_ext helps to format usefully.""" - assert ( - Hashsum.get_ext(fixture[0]) == fixture[1] - ), "Incorrect extension returned from Hashsum" + assert Hashsum.get_ext(fixture[0]) == fixture[1], ( + "Incorrect extension returned from Hashsum" + ) @staticmethod def test_decode_and_version_string(): @@ -265,12 +265,12 @@ def test_decode_and_version_string(): b"sha256sum (GNU coreutils) 8.28\n" b"Copyright (C) 2017 Free Software Foundation, Inc." ) - assert Hashsum._decode(version_string)[ - 0 - ], "Version string incorrectly decoded by Hashsum" - assert ( - Hashsum._decode(version_string)[0] == "sha256sum (GNU coreutils) 8.28" - ), "Invalid version string decoded by Hashsum" + assert Hashsum._decode(version_string)[0], ( + "Version string incorrectly decoded by Hashsum" + ) + assert Hashsum._decode(version_string)[0] == "sha256sum (GNU coreutils) 8.28", ( + "Invalid version string decoded by Hashsum" + ) @pytest.mark.django_db def test_write_premis_event_to_db(self, transfer, transfer_file): @@ -306,21 +306,21 @@ def test_write_premis_event_to_db(self, transfer, transfer_file): event_detail = f"{algorithm}: {detail}" write_premis_event_per_file(file_objs_queryset, package_uuid, event_detail) file_uuids = File.objects.filter(**kwargs).values_list("uuid") - assert ( - file_uuids - ), "Files couldn't be retrieved for the transfer from the database" + assert file_uuids, ( + "Files couldn't be retrieved for the transfer from the database" + ) event_algorithms = [] for uuid_ in file_uuids: events = Event.objects.filter(file_uuid=uuid_, event_type=event_type) - assert len(events) == len( - algorithms - ), f"Length of the event objects is not '1', it is: {len(events)}" - assert ( - events[0].event_outcome == event_outcome - ), f"Event outcome retrieved from the database is incorrect: {events[0].event_outcome}" - assert ( - detail in events[0].event_detail - ), f"Event detail retrieved from the database is incorrect: {events[0].event_detail}" + assert len(events) == len(algorithms), ( + f"Length of the event objects is not '1', it is: {len(events)}" + ) + assert events[0].event_outcome == event_outcome, ( + f"Event outcome retrieved from the database is incorrect: {events[0].event_outcome}" + ) + assert detail in events[0].event_detail, ( + f"Event detail retrieved from the database is incorrect: {events[0].event_detail}" + ) # Ensure that UUID creation has happened as anticipated. Will raise # a TypeError if otherwise. (events[0].event_id) @@ -335,26 +335,26 @@ def test_write_premis_event_to_db(self, transfer, transfer_file): idtypes.append(agent.identifiertype) agentnames.append(agent.name) agenttypes.append(agent.agenttype) - assert set(idvalues) == set( - identifier_values - ), "agent identifier values returned don't match" - assert set(idtypes) == set( - identifier_types - ), "agent type values returned don't match" - assert set(agentnames) == set( - agent_names - ), "agent name values returned don't match" + assert set(idvalues) == set(identifier_values), ( + "agent identifier values returned don't match" + ) + assert set(idtypes) == set(identifier_types), ( + "agent type values returned don't match" + ) + assert set(agentnames) == set(agent_names), ( + "agent name values returned don't match" + ) assert set(agenttypes) == set(agent_types), "agent types don't match" - assert ( - _agent_count == number_of_expected_agents - ), f"Number of agents is incorrect: {_agent_count} expected: {number_of_expected_agents}" + assert _agent_count == number_of_expected_agents, ( + f"Number of agents is incorrect: {_agent_count} expected: {number_of_expected_agents}" + ) # Collect the different checksum algorithms written to ensure they # were all written independently in the function. for event in events: event_algorithms.append(event.event_detail.split(":", 1)[0]) - assert set(event_algorithms) == set( - algorithms - ), "No all algorithms written to PREMIS events" + assert set(event_algorithms) == set(algorithms), ( + "No all algorithms written to PREMIS events" + ) @pytest.mark.django_db def test_get_file_obj_queryset(self, transfer, transfer_file): diff --git a/tests/MCPServer/test_package.py b/tests/MCPServer/test_package.py index 919ed8b92a..9641ebcdd0 100644 --- a/tests/MCPServer/test_package.py +++ b/tests/MCPServer/test_package.py @@ -203,9 +203,9 @@ def test_reload_file_list(tmp_path): "transfer_id": transfer_uuid, } models.File.objects.create(**kwargs) - assert ( - _file_count == 2 - ), "Database and file objects were not returned by the generator" + assert _file_count == 2, ( + "Database and file objects were not returned by the generator" + ) assert models.File.objects.filter(transfer_id=str(transfer_uuid)).count() == 2 # Simulate an additional file object being added later on in the transfer @@ -229,9 +229,9 @@ def test_reload_file_list(tmp_path): "transfer_id": transfer_uuid, } models.File.objects.create(**kwargs) - assert ( - _file_count == 3 - ), "Database and file objects were not returned by the generator" + assert _file_count == 3, ( + "Database and file objects were not returned by the generator" + ) assert models.File.objects.filter(transfer_id=str(transfer_uuid)).count() == 3 # Now the database is updated, we will still have the same file count, but diff --git a/tests/archivematicaCommon/test_appconfig.py b/tests/archivematicaCommon/test_appconfig.py index 3b99461030..da3d24d6e0 100644 --- a/tests/archivematicaCommon/test_appconfig.py +++ b/tests/archivematicaCommon/test_appconfig.py @@ -32,7 +32,7 @@ ) def test_mapping_list_config_file(option, value, expect): config = Config(env_prefix="ARCHIVEMATICA_DASHBOARD", attrs=CONFIG_MAPPING) - config.read_defaults(StringIO("[Dashboard]\n" f"{option} = {value}")) + config.read_defaults(StringIO(f"[Dashboard]\n{option} = {value}")) if isinstance(expect, list): assert sorted(config.get("search_enabled")) == sorted(expect) else: diff --git a/tests/archivematicaCommon/test_elasticsearch_functions.py b/tests/archivematicaCommon/test_elasticsearch_functions.py index ecda1b5543..9c6e49df39 100644 --- a/tests/archivematicaCommon/test_elasticsearch_functions.py +++ b/tests/archivematicaCommon/test_elasticsearch_functions.py @@ -391,7 +391,7 @@ def _bulk(client, actions, stats_only=False, *args, **kwargs): "path": "objects/beihai.tif", "title": "Beihai, Guanxi, China, 1988", "creator": ( - "NASA/GSFC/METI/ERSDAC/JAROS and U.S./Japan " "ASTER Science Team" + "NASA/GSFC/METI/ERSDAC/JAROS and U.S./Japan ASTER Science Team" ), }, { diff --git a/tests/dashboard/components/accounts/test_views.py b/tests/dashboard/components/accounts/test_views.py index 2465883655..102cb28873 100644 --- a/tests/dashboard/components/accounts/test_views.py +++ b/tests/dashboard/components/accounts/test_views.py @@ -237,7 +237,7 @@ def test_user_profile_view_denies_editing_profile_fields_if_setting_disables_it( ) assert f"
{non_administrative_user.email}
" in content assert ( - f'
{"yes" if non_administrative_user.is_superuser else "no"}
' in content + f"
{'yes' if non_administrative_user.is_superuser else 'no'}
" in content ) assert f"{non_administrative_user_apikey.key}" in content @@ -273,7 +273,7 @@ def test_user_profile_view_regenerates_api_key_if_setting_disables_editing( ) assert f"
{non_administrative_user.email}
" in content assert ( - f'
{"yes" if non_administrative_user.is_superuser else "no"}
' in content + f"
{'yes' if non_administrative_user.is_superuser else 'no'}
" in content ) assert f"{expected_key}" in content @@ -301,6 +301,6 @@ def test_user_profile_view_does_not_regenerate_api_key_if_not_requested( ) assert f"
{non_administrative_user.email}
" in content assert ( - f'
{"yes" if non_administrative_user.is_superuser else "no"}
' in content + f"
{'yes' if non_administrative_user.is_superuser else 'no'}
" in content ) assert f"{non_administrative_user_apikey.key}" in content diff --git a/tests/dashboard/components/archival_storage/test_archival_storage.py b/tests/dashboard/components/archival_storage/test_archival_storage.py index 3d4004499d..1d22ef5551 100644 --- a/tests/dashboard/components/archival_storage/test_archival_storage.py +++ b/tests/dashboard/components/archival_storage/test_archival_storage.py @@ -466,7 +466,7 @@ def test_create_aic_creates_temporary_files( "created": 1689264994, "encrypted": False, "isPartOf": None, - "location": "Store AIP in standard " "Archivematica Directory", + "location": "Store AIP in standard Archivematica Directory", "name": "artefactual", "size": 4.80488395690918, "status": "UPLOADED", @@ -486,7 +486,7 @@ def test_create_aic_creates_temporary_files( "created": 1689264872, "encrypted": False, "isPartOf": None, - "location": "Store AIP in standard " "Archivematica Directory", + "location": "Store AIP in standard Archivematica Directory", "name": "bunny_1", "size": 4.805169105529785, "status": "UPLOADED", diff --git a/tests/dashboard/fpr/test_forms.py b/tests/dashboard/fpr/test_forms.py index e37d230fe9..de0784e817 100644 --- a/tests/dashboard/fpr/test_forms.py +++ b/tests/dashboard/fpr/test_forms.py @@ -36,7 +36,7 @@ def test_FPRuleForm(self): self.assertFalse(form.is_valid()) self.assertEqual( form.non_field_errors(), - ["An identical FP rule already exists." f" See rule {fprule.uuid}."], + [f"An identical FP rule already exists. See rule {fprule.uuid}."], ) @staticmethod diff --git a/tests/dashboard/test_ingest.py b/tests/dashboard/test_ingest.py index b572b059dc..11085e1eaf 100644 --- a/tests/dashboard/test_ingest.py +++ b/tests/dashboard/test_ingest.py @@ -73,7 +73,7 @@ def test_normalization_event_detail_view(self): response = self.client.get(url) assert response.status_code == 200 title = "".join( - ["

" "Normalization Event Detail
", "test", "

"] + ["

Normalization Event Detail
", "test", "

"] ) assert title in response.content.decode("utf8") From ef8484085147232452f6866317d79477a5f74c96 Mon Sep 17 00:00:00 2001 From: "Douglas Cerna (Soy Douglas)" Date: Sat, 18 Jan 2025 06:59:16 -0600 Subject: [PATCH 08/99] Upgrade Python requirements --- requirements-dev.txt | 7 ++++--- requirements.txt | 5 +++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 7fc0514bbc..c881ceea2e 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -59,7 +59,7 @@ cryptography==44.0.0 # pyopenssl distlib==0.3.9 # via virtualenv -django==4.2.17 +django==4.2.18 # via # -r requirements.txt # django-auth-ldap @@ -244,7 +244,7 @@ python-mimeparse==2.0.0 # django-tastypie python-slugify==8.0.4 # via pytest-playwright -referencing==0.35.1 +referencing==0.36.1 # via # -r requirements.txt # jsonschema @@ -291,6 +291,7 @@ typing-extensions==4.12.2 # asgiref # pyee # pyopenssl + # referencing # tox unidecode==1.3.8 # via -r requirements.txt @@ -300,7 +301,7 @@ urllib3==2.3.0 # amclient # elasticsearch # requests -virtualenv==20.28.1 +virtualenv==20.29.1 # via tox wheel==0.45.1 # via pip-tools diff --git a/requirements.txt b/requirements.txt index 2ba4f252d4..6b31028a33 100644 --- a/requirements.txt +++ b/requirements.txt @@ -33,7 +33,7 @@ cryptography==44.0.0 # josepy # mozilla-django-oidc # pyopenssl -django==4.2.17 +django==4.2.18 # via # -r requirements.in # django-auth-ldap @@ -128,7 +128,7 @@ python-ldap==3.4.4 # django-auth-ldap python-mimeparse==2.0.0 # via django-tastypie -referencing==0.35.1 +referencing==0.36.1 # via # jsonschema # jsonschema-specifications @@ -155,6 +155,7 @@ typing-extensions==4.12.2 # via # asgiref # pyopenssl + # referencing unidecode==1.3.8 # via -r requirements.in urllib3==2.3.0 From 152a29b1e06c80db6a01d59024e0b0ae5f8807a0 Mon Sep 17 00:00:00 2001 From: "Douglas Cerna (Soy Douglas)" Date: Fri, 7 Feb 2025 14:29:20 +0000 Subject: [PATCH 09/99] Fix test-at-check target in hack/Makefile --- hack/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hack/Makefile b/hack/Makefile index 24b07ce58d..4c2e0898b7 100644 --- a/hack/Makefile +++ b/hack/Makefile @@ -337,7 +337,7 @@ test-at-build: ## AMAUAT: build image. test-at-check: test-at-build ## AMAUAT: test browsers. $(call compose_amauat, \ - run --rm --no-deps archivematica-acceptance-tests /home/archivematica/acceptance-tests/simplebrowsertest.py) + run --rm --no-deps archivematica-acceptance-tests /home/artefactual/acceptance-tests/simplebrowsertest.py) define AT_HELP From f641cec4c99a16004f686dd53cbe4adf93bed17b Mon Sep 17 00:00:00 2001 From: "Douglas Cerna (Soy Douglas)" Date: Fri, 7 Feb 2025 16:35:25 +0000 Subject: [PATCH 10/99] Update git submodules --- hack/submodules/archivematica-acceptance-tests | 2 +- hack/submodules/archivematica-storage-service | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hack/submodules/archivematica-acceptance-tests b/hack/submodules/archivematica-acceptance-tests index 255cca0f12..4734e1a1b5 160000 --- a/hack/submodules/archivematica-acceptance-tests +++ b/hack/submodules/archivematica-acceptance-tests @@ -1 +1 @@ -Subproject commit 255cca0f129230cbf9102305895d82f0ca8f6f16 +Subproject commit 4734e1a1b5d893fadffc04d0f6687586ef5c6d1e diff --git a/hack/submodules/archivematica-storage-service b/hack/submodules/archivematica-storage-service index 2955aeec73..6621a91f3c 160000 --- a/hack/submodules/archivematica-storage-service +++ b/hack/submodules/archivematica-storage-service @@ -1 +1 @@ -Subproject commit 2955aeec7326683c955bc7a87ddba09f382eba09 +Subproject commit 6621a91f3cba4c29f93e467b6f30251aeddbbf8e From 508911d4e5db0e4f5c7ad902801536fff6bdf8f0 Mon Sep 17 00:00:00 2001 From: Douglas Cerna Date: Wed, 12 Feb 2025 07:36:43 -0600 Subject: [PATCH 11/99] Upgrade dependencies * Upgrade pre-commit dependencies * Upgrade Python requirements * Upgrade frontend dependencies * Update git submodules --- .pre-commit-config.yaml | 6 +- .../submodules/archivematica-acceptance-tests | 2 +- hack/submodules/archivematica-sampledata | 2 +- hack/submodules/archivematica-storage-service | 2 +- requirements-dev.txt | 44 +- requirements.txt | 24 +- src/dashboard/frontend/package-lock.json | 1545 ++++++++--------- src/dashboard/frontend/package.json | 20 +- 8 files changed, 775 insertions(+), 870 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a107f2bf0d..23df480564 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -10,7 +10,7 @@ repos: src/(MCPClient/MCPServer|dashboard)/install/.*\.json ) - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.9.1 + rev: v0.9.6 hooks: - id: ruff args: [--fix, --exit-non-zero-on-fix] @@ -21,7 +21,7 @@ repos: - id: django-upgrade args: [--target-version, "4.2"] - repo: https://github.com/igorshubovych/markdownlint-cli - rev: v0.43.0 + rev: v0.44.0 hooks: - id: markdownlint exclude: | @@ -46,7 +46,7 @@ repos: hooks: - id: validate-cff - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.14.1 + rev: v1.15.0 hooks: - id: mypy additional_dependencies: diff --git a/hack/submodules/archivematica-acceptance-tests b/hack/submodules/archivematica-acceptance-tests index 4734e1a1b5..c9b1705cef 160000 --- a/hack/submodules/archivematica-acceptance-tests +++ b/hack/submodules/archivematica-acceptance-tests @@ -1 +1 @@ -Subproject commit 4734e1a1b5d893fadffc04d0f6687586ef5c6d1e +Subproject commit c9b1705cef238d84f8da8cbaa658fe613334b0e4 diff --git a/hack/submodules/archivematica-sampledata b/hack/submodules/archivematica-sampledata index 419a8bf3ad..aaeda2d55a 160000 --- a/hack/submodules/archivematica-sampledata +++ b/hack/submodules/archivematica-sampledata @@ -1 +1 @@ -Subproject commit 419a8bf3adfa8611d4d2a8f554da633aa3ca5d08 +Subproject commit aaeda2d55ac737a9be9b74a8f7000f664ee64d2d diff --git a/hack/submodules/archivematica-storage-service b/hack/submodules/archivematica-storage-service index 6621a91f3c..395df96df7 160000 --- a/hack/submodules/archivematica-storage-service +++ b/hack/submodules/archivematica-storage-service @@ -1 +1 @@ -Subproject commit 6621a91f3cba4c29f93e467b6f30251aeddbbf8e +Subproject commit 395df96df7838caa15cb140f9833126edcd1d58d diff --git a/requirements-dev.txt b/requirements-dev.txt index c881ceea2e..87b4849ead 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -14,7 +14,7 @@ asgiref==3.8.1 # via # -r requirements.txt # django -attrs==24.3.0 +attrs==25.1.0 # via # -r requirements.txt # jsonschema @@ -25,9 +25,9 @@ brotli==1.1.0 # via -r requirements.txt build==1.2.2.post1 # via pip-tools -cachetools==5.5.0 +cachetools==5.5.1 # via tox -certifi==2024.12.14 +certifi==2025.1.31 # via # -r requirements.txt # requests @@ -47,19 +47,18 @@ click==8.1.8 # via pip-tools colorama==0.4.6 # via tox -coverage[toml]==7.6.10 +coverage[toml]==7.6.12 # via # -r requirements-dev.in # pytest-cov -cryptography==44.0.0 +cryptography==44.0.1 # via # -r requirements.txt # josepy # mozilla-django-oidc - # pyopenssl distlib==0.3.9 # via virtualenv -django==4.2.18 +django==4.2.19 # via # -r requirements.txt # django-auth-ldap @@ -86,7 +85,7 @@ elasticsearch==6.8.2 # via -r requirements.txt exceptiongroup==1.2.2 # via pytest -filelock==3.16.1 +filelock==3.17.0 # via # tox # virtualenv @@ -107,7 +106,7 @@ idna==3.10 # via # -r requirements.txt # requests -importlib-metadata==8.5.0 +importlib-metadata==8.6.1 # via # -r requirements.txt # build @@ -120,7 +119,7 @@ iniconfig==2.0.0 # via pytest inotify-simple==1.3.5 # via -r requirements.txt -josepy==1.14.0 +josepy==2.0.0 # via # -r requirements.txt # mozilla-django-oidc @@ -132,7 +131,7 @@ jsonschema-specifications==2024.10.1 # jsonschema lazy-paged-sequence==0.3 # via -r requirements.txt -lxml==5.3.0 +lxml==5.3.1 # via # -r requirements.txt # ammcpc @@ -154,7 +153,7 @@ olefile==0.47 # opf-fido opf-fido @ git+https://github.com/artefactual-labs/fido.git@564ceb8018a8650fe931cf20e6780ee008e60fca # via -r requirements.txt -orjson==3.10.14 +orjson==3.10.15 # via -r requirements.txt packaging==24.2 # via @@ -197,11 +196,7 @@ pycparser==2.22 # cffi pyee==12.0.0 # via playwright -pyopenssl==25.0.0 - # via - # -r requirements.txt - # josepy -pyproject-api==1.8.0 +pyproject-api==1.9.0 # via tox pyproject-hooks==1.2.0 # via @@ -219,9 +214,9 @@ pytest-base-url==2.1.0 # via pytest-playwright pytest-cov==6.0.0 # via -r requirements-dev.in -pytest-django==4.9.0 +pytest-django==4.10.0 # via -r requirements-dev.in -pytest-playwright==0.6.2 +pytest-playwright==0.7.0 # via -r requirements-dev.in pytest-randomly==3.16.0 # via -r requirements-dev.in @@ -244,7 +239,7 @@ python-mimeparse==2.0.0 # django-tastypie python-slugify==8.0.4 # via pytest-playwright -referencing==0.36.1 +referencing==0.36.2 # via # -r requirements.txt # jsonschema @@ -283,14 +278,13 @@ tomli==2.2.1 # pyproject-api # pytest # tox -tox==4.23.2 +tox==4.24.1 # via -r requirements-dev.in typing-extensions==4.12.2 # via # -r requirements.txt # asgiref # pyee - # pyopenssl # referencing # tox unidecode==1.3.8 @@ -301,11 +295,11 @@ urllib3==2.3.0 # amclient # elasticsearch # requests -virtualenv==20.29.1 +virtualenv==20.29.2 # via tox wheel==0.45.1 # via pip-tools -whitenoise==6.8.2 +whitenoise==6.9.0 # via -r requirements.txt zipp==3.21.0 # via @@ -322,7 +316,7 @@ zope-interface==7.2 # gevent # The following packages are considered to be unsafe in a requirements file: -pip==24.3.1 +pip==25.0.1 # via pip-tools setuptools==75.8.0 # via diff --git a/requirements.txt b/requirements.txt index 6b31028a33..b93974c158 100644 --- a/requirements.txt +++ b/requirements.txt @@ -12,7 +12,7 @@ ammcpc==0.3.0 # via -r requirements.in asgiref==3.8.1 # via django -attrs==24.3.0 +attrs==25.1.0 # via # jsonschema # referencing @@ -20,7 +20,7 @@ bagit @ git+https://github.com/artefactual-labs/bagit-python.git@902051d8410219f # via -r requirements.in brotli==1.1.0 # via -r requirements.in -certifi==2024.12.14 +certifi==2025.1.31 # via requests cffi==1.17.1 # via cryptography @@ -28,12 +28,11 @@ charset-normalizer==3.4.1 # via requests clamd==1.0.2 # via -r requirements.in -cryptography==44.0.0 +cryptography==44.0.1 # via # josepy # mozilla-django-oidc - # pyopenssl -django==4.2.18 +django==4.2.19 # via # -r requirements.in # django-auth-ldap @@ -68,13 +67,13 @@ gunicorn==23.0.0 # via -r requirements.in idna==3.10 # via requests -importlib-metadata==8.5.0 +importlib-metadata==8.6.1 # via -r requirements.in importlib-resources==6.5.2 # via opf-fido inotify-simple==1.3.5 # via -r requirements.in -josepy==1.14.0 +josepy==2.0.0 # via mozilla-django-oidc jsonschema==4.23.0 # via -r requirements.in @@ -82,7 +81,7 @@ jsonschema-specifications==2024.10.1 # via jsonschema lazy-paged-sequence==0.3 # via -r requirements.in -lxml==5.3.0 +lxml==5.3.1 # via # -r requirements.in # ammcpc @@ -98,7 +97,7 @@ olefile==0.47 # via opf-fido opf-fido @ git+https://github.com/artefactual-labs/fido.git@564ceb8018a8650fe931cf20e6780ee008e60fca # via -r requirements.in -orjson==3.10.14 +orjson==3.10.15 # via -r requirements.in packaging==24.2 # via gunicorn @@ -114,8 +113,6 @@ pyasn1-modules==0.4.1 # via python-ldap pycparser==2.22 # via cffi -pyopenssl==25.0.0 - # via josepy python-cas==1.6.0 # via django-cas-ng python-dateutil==2.9.0.post0 @@ -128,7 +125,7 @@ python-ldap==3.4.4 # django-auth-ldap python-mimeparse==2.0.0 # via django-tastypie -referencing==0.36.1 +referencing==0.36.2 # via # jsonschema # jsonschema-specifications @@ -154,7 +151,6 @@ sqlparse==0.5.3 typing-extensions==4.12.2 # via # asgiref - # pyopenssl # referencing unidecode==1.3.8 # via -r requirements.in @@ -163,7 +159,7 @@ urllib3==2.3.0 # amclient # elasticsearch # requests -whitenoise==6.8.2 +whitenoise==6.9.0 # via -r requirements.in zipp==3.21.0 # via diff --git a/src/dashboard/frontend/package-lock.json b/src/dashboard/frontend/package-lock.json index e69372f035..16733f5aa5 100644 --- a/src/dashboard/frontend/package-lock.json +++ b/src/dashboard/frontend/package-lock.json @@ -19,7 +19,7 @@ "angular-ui-bootstrap": "^0.14.3", "angular-ui-validate": "^1.2.2", "archivematica-browse-helpers": "git+https://github.com/artefactual-labs/archivematica-browse-helpers.git", - "base64-helpers": "github:artefactual-labs/base64-helpers#v0.1.2", + "base64-helpers": "github:artefactual-labs/base64-helpers#v0.1.3", "d3": "^3.5.17", "font-awesome": "^4.7.0", "lodash": "^4.17.21", @@ -27,18 +27,18 @@ "restangular": "^1.6.1" }, "devDependencies": { - "@babel/core": "^7.25.8", - "@babel/plugin-transform-modules-commonjs": "^7.25.7", - "@babel/plugin-transform-object-assign": "^7.25.7", - "@babel/plugin-transform-runtime": "^7.25.7", - "@babel/preset-env": "^7.25.8", + "@babel/core": "^7.26.8", + "@babel/plugin-transform-modules-commonjs": "^7.26.3", + "@babel/plugin-transform-object-assign": "^7.25.9", + "@babel/plugin-transform-runtime": "^7.26.8", + "@babel/preset-env": "^7.26.8", "angular-gettext-cli": "^1.2.0", "babel-loader": "^9.2.1", "css-loader": "^7.1.2", "html-loader": "^5.1.0", "http-server": "^14.1.1", "imports-loader": "^5.0.0", - "jasmine-core": "^5.4.0", + "jasmine-core": "^5.6.0", "karma": "^6.4.4", "karma-chrome-launcher": "^3.2.0", "karma-firefox-launcher": "^2.1.3", @@ -46,11 +46,11 @@ "karma-junit-reporter": "^2.0.1", "karma-webpack": "^5.0.1", "path-browserify": "^1.0.1", - "postcss": "^8.4.47", + "postcss": "^8.5.2", "shelljs": "^0.8.5", "style-loader": "^4.0.0", - "webpack": "^5.95.0", - "webpack-cli": "^5.1.4" + "webpack": "^5.97.1", + "webpack-cli": "^6.0.1" } }, "node_modules/@ampproject/remapping": { @@ -68,13 +68,14 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz", - "integrity": "sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/highlight": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", "picocolors": "^1.0.0" }, "engines": { @@ -82,9 +83,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.8.tgz", - "integrity": "sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", + "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", "dev": true, "license": "MIT", "engines": { @@ -92,22 +93,23 @@ } }, "node_modules/@babel/core": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.8.tgz", - "integrity": "sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.8.tgz", + "integrity": "sha512-l+lkXCHS6tQEc5oUpK28xBOZ6+HwaH7YwoYQbLFiYb4nS2/l1tKnZEtEWkD0GuiYdvArf9qBS0XlQGXzPMsNqQ==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.25.7", - "@babel/generator": "^7.25.7", - "@babel/helper-compilation-targets": "^7.25.7", - "@babel/helper-module-transforms": "^7.25.7", - "@babel/helpers": "^7.25.7", - "@babel/parser": "^7.25.8", - "@babel/template": "^7.25.7", - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.8", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.8", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.7", + "@babel/parser": "^7.26.8", + "@babel/template": "^7.26.8", + "@babel/traverse": "^7.26.8", + "@babel/types": "^7.26.8", + "@types/gensync": "^1.0.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -123,13 +125,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.7.tgz", - "integrity": "sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.8.tgz", + "integrity": "sha512-ef383X5++iZHWAXX0SXQR6ZyQhw/0KtTkrTz61WXRhFM6dhpHulO/RJz79L8S6ugZHJkOOkUrUdxgdF2YiPFnA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.25.7", + "@babel/parser": "^7.26.8", + "@babel/types": "^7.26.8", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -139,41 +142,27 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.7.tgz", - "integrity": "sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.25.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.7.tgz", - "integrity": "sha512-12xfNeKNH7jubQNm7PAkzlLwEmCs1tfuX3UjIw6vP6QXi+leKh6+LyC/+Ed4EIQermwd58wsyh070yjDHFlNGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.7.tgz", - "integrity": "sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", + "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.25.7", - "@babel/helper-validator-option": "^7.25.7", + "@babel/compat-data": "^7.26.5", + "@babel/helper-validator-option": "^7.25.9", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -183,18 +172,18 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.7.tgz", - "integrity": "sha512-bD4WQhbkx80mAyj/WCm4ZHcF4rDxkoLFO6ph8/5/mQ3z4vAzltQXAmbc7GvVJx5H+lk5Mi5EmbTeox5nMGCsbw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", + "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.7", - "@babel/helper-member-expression-to-functions": "^7.25.7", - "@babel/helper-optimise-call-expression": "^7.25.7", - "@babel/helper-replace-supers": "^7.25.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7", - "@babel/traverse": "^7.25.7", + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/traverse": "^7.25.9", "semver": "^6.3.1" }, "engines": { @@ -205,14 +194,14 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.7.tgz", - "integrity": "sha512-byHhumTj/X47wJ6C6eLpK7wW/WBEcnUeb7D0FNc/jFQnQVw7DOso3Zz5u9x/zLrFVkHa89ZGDbkAa1D54NdrCQ==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz", + "integrity": "sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.7", - "regexpu-core": "^6.1.1", + "@babel/helper-annotate-as-pure": "^7.25.9", + "regexpu-core": "^6.2.0", "semver": "^6.3.1" }, "engines": { @@ -223,9 +212,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", - "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz", + "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==", "dev": true, "license": "MIT", "dependencies": { @@ -240,44 +229,43 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.7.tgz", - "integrity": "sha512-O31Ssjd5K6lPbTX9AAYpSKrZmLeagt9uwschJd+Ixo6QiRyfpvgtVQp8qrDR9UNFjZ8+DO34ZkdrN+BnPXemeA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", + "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.7.tgz", - "integrity": "sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.7.tgz", - "integrity": "sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.25.7", - "@babel/helper-simple-access": "^7.25.7", - "@babel/helper-validator-identifier": "^7.25.7", - "@babel/traverse": "^7.25.7" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -287,22 +275,22 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.7.tgz", - "integrity": "sha512-VAwcwuYhv/AT+Vfr28c9y6SHzTan1ryqrydSTFGjU0uDJHw3uZ+PduI8plCLkRsDnqK2DMEDmwrOQRsK/Ykjng==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", + "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.25.7" + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.7.tgz", - "integrity": "sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", + "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", "dev": true, "license": "MIT", "engines": { @@ -310,15 +298,15 @@ } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.7.tgz", - "integrity": "sha512-kRGE89hLnPfcz6fTrlNU+uhgcwv0mBE4Gv3P9Ke9kLVJYpi4AMVVEElXvB5CabrPZW4nCM8P8UyyjrzCM0O2sw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz", + "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.7", - "@babel/helper-wrap-function": "^7.25.7", - "@babel/traverse": "^7.25.7" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-wrap-function": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -328,15 +316,15 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.7.tgz", - "integrity": "sha512-iy8JhqlUW9PtZkd4pHM96v6BdJ66Ba9yWSE4z0W4TvSZwLBPkyDsiIU3ENe4SmrzRBs76F7rQXTy1lYC49n6Lw==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz", + "integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.25.7", - "@babel/helper-optimise-call-expression": "^7.25.7", - "@babel/traverse": "^7.25.7" + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/traverse": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -345,38 +333,24 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.7.tgz", - "integrity": "sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.7.tgz", - "integrity": "sha512-pPbNbchZBkPMD50K0p3JGcFMNLVUCuU/ABybm/PGNj4JiHrpmNyqqCphBk4i19xXtNV0JhldQJJtbSW5aUvbyA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", + "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz", - "integrity": "sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", "dev": true, "license": "MIT", "engines": { @@ -384,9 +358,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz", - "integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "dev": true, "license": "MIT", "engines": { @@ -394,9 +368,9 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.7.tgz", - "integrity": "sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", "dev": true, "license": "MIT", "engines": { @@ -404,58 +378,42 @@ } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.7.tgz", - "integrity": "sha512-MA0roW3JF2bD1ptAaJnvcabsVlNQShUaThyJbCDD4bCp8NEgiFvpoqRI2YS22hHlc2thjO/fTg2ShLMC3jygAg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz", + "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.25.7", - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.7.tgz", - "integrity": "sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.7.tgz", + "integrity": "sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.25.7", - "@babel/types": "^7.25.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.7.tgz", - "integrity": "sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.25.7", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.8.tgz", - "integrity": "sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.8.tgz", + "integrity": "sha512-TZIQ25pkSoaKEYYaHbbxkfL36GNsQ6iFiBbeuzAkLnXayKR1yP1zFe+NxuZWWsUyvt8icPU9CCq0sgWGXR1GEw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.25.8" + "@babel/types": "^7.26.8" }, "bin": { "parser": "bin/babel-parser.js" @@ -465,14 +423,14 @@ } }, "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.7.tgz", - "integrity": "sha512-UV9Lg53zyebzD1DwQoT9mzkEKa922LNUp5YkTJ6Uta0RbyXaQNUgcvSt7qIu1PpPzVb6rd10OVNTzkyBGeVmxQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz", + "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/traverse": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -482,13 +440,13 @@ } }, "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.7.tgz", - "integrity": "sha512-GDDWeVLNxRIkQTnJn2pDOM1pkCgYdSqPeT1a9vh9yIqu2uzzgw1zcqEb+IJOhy+dTBMlNdThrDIksr2o09qrrQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz", + "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -498,13 +456,13 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.7.tgz", - "integrity": "sha512-wxyWg2RYaSUYgmd9MR0FyRGyeOMQE/Uzr1wzd/g5cf5bwi9A4v6HFdDm7y1MgDtod/fLOSTZY6jDgV0xU9d5bA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz", + "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -514,15 +472,15 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.7.tgz", - "integrity": "sha512-Xwg6tZpLxc4iQjorYsyGMyfJE7nP5MV8t/Ka58BgiA7Jw0fRqQNcANlLfdJ/yvBt9z9LD2We+BEkT7vLqZRWng==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7", - "@babel/plugin-transform-optional-chaining": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -532,14 +490,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.7.tgz", - "integrity": "sha512-UVATLMidXrnH+GMUIuxq55nejlj02HP7F5ETyBONzP6G87fPBogG4CH6kxrSrdIuAjdwNO9VzyaYsrZPscWUrw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz", + "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/traverse": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -562,13 +520,13 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.25.7.tgz", - "integrity": "sha512-ZvZQRmME0zfJnDQnVBKYzHxXT7lYBB3Revz1GuS7oLXWMgqUPX4G+DDbT30ICClht9WKV34QVrZhSw6WdklwZQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz", + "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -578,13 +536,13 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.7.tgz", - "integrity": "sha512-AqVo+dguCgmpi/3mYBdu9lkngOBlQ2w2vnNpa6gfiCxQZLzV4ZbhsXitJ2Yblkoe1VQwtHSaNmIaGll/26YWRw==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -611,13 +569,13 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.7.tgz", - "integrity": "sha512-EJN2mKxDwfOUCPxMO6MUI58RN3ganiRAG/MS/S3HfB6QFNjroAMelQo/gybyYq97WerCBAZoyrAoW8Tzdq2jWg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz", + "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -627,15 +585,15 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.8.tgz", - "integrity": "sha512-9ypqkozyzpG+HxlH4o4gdctalFGIjjdufzo7I2XPda0iBnZ6a+FO0rIEQcdSPXp02CkvGsII1exJhmROPQd5oA==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.26.8.tgz", + "integrity": "sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-remap-async-to-generator": "^7.25.7", - "@babel/traverse": "^7.25.7" + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-remap-async-to-generator": "^7.25.9", + "@babel/traverse": "^7.26.8" }, "engines": { "node": ">=6.9.0" @@ -645,15 +603,15 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.7.tgz", - "integrity": "sha512-ZUCjAavsh5CESCmi/xCpX1qcCaAglzs/7tmuvoFnJgA1dM7gQplsguljoTg+Ru8WENpX89cQyAtWoaE0I3X3Pg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz", + "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-remap-async-to-generator": "^7.25.7" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -663,13 +621,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.7.tgz", - "integrity": "sha512-xHttvIM9fvqW+0a3tZlYcZYSBpSWzGBFIt/sYG3tcdSzBB8ZeVgz2gBP7Df+sM0N1850jrviYSSeUuc+135dmQ==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz", + "integrity": "sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -679,13 +637,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.7.tgz", - "integrity": "sha512-ZEPJSkVZaeTFG/m2PARwLZQ+OG0vFIhPlKHK/JdIMy8DbRJ/htz6LRrTFtdzxi9EHmcwbNPAKDnadpNSIW+Aow==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz", + "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -695,14 +653,14 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.7.tgz", - "integrity": "sha512-mhyfEW4gufjIqYFo9krXHJ3ElbFLIze5IDp+wQTxoPd+mwFb1NxatNAwmv8Q8Iuxv7Zc+q8EkiMQwc9IhyGf4g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz", + "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -712,14 +670,14 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.25.8.tgz", - "integrity": "sha512-e82gl3TCorath6YLf9xUwFehVvjvfqFhdOo4+0iVIVju+6XOi5XHkqB3P2AXnSwoeTX0HBoXq5gJFtvotJzFnQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz", + "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -729,17 +687,17 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.7.tgz", - "integrity": "sha512-9j9rnl+YCQY0IGoeipXvnk3niWicIB6kCsWRGLwX241qSXpbA4MKxtp/EdvFxsc4zI5vqfLxzOd0twIJ7I99zg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz", + "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.7", - "@babel/helper-compilation-targets": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-replace-supers": "^7.25.7", - "@babel/traverse": "^7.25.7", + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/traverse": "^7.25.9", "globals": "^11.1.0" }, "engines": { @@ -750,14 +708,14 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.7.tgz", - "integrity": "sha512-QIv+imtM+EtNxg/XBKL3hiWjgdLjMOmZ+XzQwSgmBfKbfxUjBzGgVPklUuE55eq5/uVoh8gg3dqlrwR/jw3ZeA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz", + "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/template": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/template": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -767,13 +725,13 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.7.tgz", - "integrity": "sha512-xKcfLTlJYUczdaM1+epcdh1UGewJqr9zATgrNHcLBcV2QmfvPPEixo/sK/syql9cEmbr7ulu5HMFG5vbbt/sEA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz", + "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -783,14 +741,14 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.7.tgz", - "integrity": "sha512-kXzXMMRzAtJdDEgQBLF4oaiT6ZCU3oWHgpARnTKDAqPkDJ+bs3NrZb310YYevR5QlRo3Kn7dzzIdHbZm1VzJdQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz", + "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -800,13 +758,13 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.7.tgz", - "integrity": "sha512-by+v2CjoL3aMnWDOyCIg+yxU9KXSRa9tN6MbqggH5xvymmr9p4AMjYkNlQy4brMceBnUyHZ9G8RnpvT8wP7Cfg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz", + "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -816,14 +774,14 @@ } }, "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.7.tgz", - "integrity": "sha512-HvS6JF66xSS5rNKXLqkk7L9c/jZ/cdIVIcoPVrnl8IsVpLggTjXs8OWekbLHs/VtYDDh5WXnQyeE3PPUGm22MA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -833,13 +791,13 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.8.tgz", - "integrity": "sha512-gznWY+mr4ZQL/EWPcbBQUP3BXS5FwZp8RUOw06BaRn8tQLzN4XLIxXejpHN9Qo8x8jjBmAAKp6FoS51AgkSA/A==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz", + "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -849,14 +807,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.7.tgz", - "integrity": "sha512-yjqtpstPfZ0h/y40fAXRv2snciYr0OAoMXY/0ClC7tm4C/nG5NJKmIItlaYlLbIVAWNfrYuy9dq1bE0SbX0PEg==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz", + "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -866,13 +823,13 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.8.tgz", - "integrity": "sha512-sPtYrduWINTQTW7FtOy99VCTWp4H23UX7vYcut7S4CIMEXU+54zKX9uCoGkLsWXteyaMXzVHgzWbLfQ1w4GZgw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz", + "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -882,14 +839,14 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.7.tgz", - "integrity": "sha512-n/TaiBGJxYFWvpJDfsxSj9lEEE44BFM1EPGz4KEiTipTgkoFVVcCmzAL3qA7fdQU96dpo4gGf5HBx/KnDvqiHw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz", + "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -899,15 +856,15 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.7.tgz", - "integrity": "sha512-5MCTNcjCMxQ63Tdu9rxyN6cAWurqfrDZ76qvVPrGYdBxIj+EawuuxTu/+dgJlhK5eRz3v1gLwp6XwS8XaX2NiQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz", + "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/traverse": "^7.25.7" + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -917,13 +874,13 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.8.tgz", - "integrity": "sha512-4OMNv7eHTmJ2YXs3tvxAfa/I43di+VcF+M4Wt66c88EAED1RoGaf1D64cL5FkRpNL+Vx9Hds84lksWvd/wMIdA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz", + "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -933,13 +890,13 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.7.tgz", - "integrity": "sha512-fwzkLrSu2fESR/cm4t6vqd7ebNIopz2QHGtjoU+dswQo/P6lwAG04Q98lliE3jkz/XqnbGFLnUcE0q0CVUf92w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz", + "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -949,13 +906,13 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.8.tgz", - "integrity": "sha512-f5W0AhSbbI+yY6VakT04jmxdxz+WsID0neG7+kQZbCOjuyJNdL5Nn4WIBm4hRpKnUcO9lP0eipUhFN12JpoH8g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz", + "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -965,13 +922,13 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.7.tgz", - "integrity": "sha512-Std3kXwpXfRV0QtQy5JJcRpkqP8/wG4XL7hSKZmGlxPlDqmpXtEPRmhF7ztnlTCtUN3eXRUJp+sBEZjaIBVYaw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz", + "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -981,14 +938,14 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.7.tgz", - "integrity": "sha512-CgselSGCGzjQvKzghCvDTxKHP3iooenLpJDO842ehn5D2G5fJB222ptnDwQho0WjEvg7zyoxb9P+wiYxiJX5yA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz", + "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -998,15 +955,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.7.tgz", - "integrity": "sha512-L9Gcahi0kKFYXvweO6n0wc3ZG1ChpSFdgG+eV1WYZ3/dGbJK7vvk91FgGgak8YwRgrCuihF8tE/Xg07EkL5COg==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", + "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-simple-access": "^7.25.7" + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1016,16 +972,16 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.7.tgz", - "integrity": "sha512-t9jZIvBmOXJsiuyOwhrIGs8dVcD6jDyg2icw1VL4A/g+FnWyJKwUfSSU2nwJuMV2Zqui856El9u+ElB+j9fV1g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz", + "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-validator-identifier": "^7.25.7", - "@babel/traverse": "^7.25.7" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1035,14 +991,14 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.7.tgz", - "integrity": "sha512-p88Jg6QqsaPh+EB7I9GJrIqi1Zt4ZBHUQtjw3z1bzEXcLh6GfPqzZJ6G+G1HBGKUNukT58MnKG7EN7zXQBCODw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz", + "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1052,14 +1008,14 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.7.tgz", - "integrity": "sha512-BtAT9LzCISKG3Dsdw5uso4oV1+v2NlVXIIomKJgQybotJY3OwCwJmkongjHgwGKoZXd0qG5UZ12JUlDQ07W6Ow==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1069,13 +1025,13 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.7.tgz", - "integrity": "sha512-CfCS2jDsbcZaVYxRFo2qtavW8SpdzmBXC2LOI4oO0rP+JSRDxxF3inF4GcPsLgfb5FjkhXG5/yR/lxuRs2pySA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz", + "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1085,13 +1041,13 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.8.tgz", - "integrity": "sha512-Z7WJJWdQc8yCWgAmjI3hyC+5PXIubH9yRKzkl9ZEG647O9szl9zvmKLzpbItlijBnVhTUf1cpyWBsZ3+2wjWPQ==", + "version": "7.26.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz", + "integrity": "sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -1101,13 +1057,13 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.8.tgz", - "integrity": "sha512-rm9a5iEFPS4iMIy+/A/PiS0QN0UyjPIeVvbU5EMZFKJZHt8vQnasbpo3T3EFcxzCeYO0BHfc4RqooCZc51J86Q==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz", + "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1117,13 +1073,13 @@ } }, "node_modules/@babel/plugin-transform-object-assign": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.25.7.tgz", - "integrity": "sha512-snTWKDjknsLh7l67henNYebPZ809tYTAunlSkPHu0upP70ehLMCHnozh4Dpq7OD2e7iYxhy560iqP+FlU8c2uQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.25.9.tgz", + "integrity": "sha512-I/Vl1aQnPsrrn837oLbo+VQtkNcjuuiATqwmuweg4fTauwHHQoxyjmjjOVKyO8OaTxgqYTKW3LuQsykXjDf5Ag==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1133,15 +1089,15 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.8.tgz", - "integrity": "sha512-LkUu0O2hnUKHKE7/zYOIjByMa4VRaV2CD/cdGz0AxU9we+VA3kDDggKEzI0Oz1IroG+6gUP6UmWEHBMWZU316g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz", + "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/plugin-transform-parameters": "^7.25.7" + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1151,14 +1107,14 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.7.tgz", - "integrity": "sha512-pWT6UXCEW3u1t2tcAGtE15ornCBvopHj9Bps9D2DsH15APgNVOTwwczGckX+WkAvBmuoYKRCFa4DK+jM8vh5AA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz", + "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-replace-supers": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1168,13 +1124,13 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.8.tgz", - "integrity": "sha512-EbQYweoMAHOn7iJ9GgZo14ghhb9tTjgOc88xFgYngifx7Z9u580cENCV159M4xDh3q/irbhSjZVpuhpC2gKBbg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz", + "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1184,14 +1140,14 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.8.tgz", - "integrity": "sha512-q05Bk7gXOxpTHoQ8RSzGSh/LHVB9JEIkKnk3myAWwZHnYiTGYtbdrYkIsS8Xyh4ltKf7GNUSgzs/6P2bJtBAQg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1201,13 +1157,13 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.7.tgz", - "integrity": "sha512-FYiTvku63me9+1Nz7TOx4YMtW3tWXzfANZtrzHhUZrz4d47EEtMQhzFoZWESfXuAMMT5mwzD4+y1N8ONAX6lMQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz", + "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1217,14 +1173,14 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.7.tgz", - "integrity": "sha512-KY0hh2FluNxMLwOCHbxVOKfdB5sjWG4M183885FmaqWWiGMhRZq4DQRKH6mHdEucbJnyDyYiZNwNG424RymJjA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz", + "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1234,15 +1190,15 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.8.tgz", - "integrity": "sha512-8Uh966svuB4V8RHHg0QJOB32QK287NBksJOByoKmHMp1TAobNniNalIkI2i5IPj5+S9NYCG4VIjbEuiSN8r+ow==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz", + "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.7", - "@babel/helper-create-class-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1252,13 +1208,13 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.7.tgz", - "integrity": "sha512-lQEeetGKfFi0wHbt8ClQrUSUMfEeI3MMm74Z73T9/kuz990yYVtfofjf3NuA42Jy3auFOpbjDyCSiIkTs1VIYw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz", + "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1268,13 +1224,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.7.tgz", - "integrity": "sha512-mgDoQCRjrY3XK95UuV60tZlFCQGXEtMg8H+IsW72ldw1ih1jZhzYXbJvghmAEpg5UVhhnCeia1CkGttUvCkiMQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz", + "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.9", "regenerator-transform": "^0.15.2" }, "engines": { @@ -1284,14 +1240,31 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz", + "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.7.tgz", - "integrity": "sha512-3OfyfRRqiGeOvIWSagcwUTVk2hXBsr/ww7bLn6TRTuXnexA+Udov2icFOxFX9abaj4l96ooYkcNN1qi2Zvqwng==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz", + "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1301,14 +1274,14 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.7.tgz", - "integrity": "sha512-Y9p487tyTzB0yDYQOtWnC+9HGOuogtP3/wNpun1xJXEEvI6vip59BSBTsHnekZLqxmPcgsrAKt46HAAb//xGhg==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.26.8.tgz", + "integrity": "sha512-H0jlQxFMI0Q8SyGPsj9pO3ygVQRxPkIGytsL3m1Zqca8KrCPpMlvh+e2dxknqdfS8LFwBw+PpiYPD9qy/FPQpA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", "babel-plugin-polyfill-corejs2": "^0.4.10", "babel-plugin-polyfill-corejs3": "^0.10.6", "babel-plugin-polyfill-regenerator": "^0.6.1", @@ -1322,13 +1295,13 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.7.tgz", - "integrity": "sha512-uBbxNwimHi5Bv3hUccmOFlUy3ATO6WagTApenHz9KzoIdn0XeACdB12ZJ4cjhuB2WSi80Ez2FWzJnarccriJeA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz", + "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1338,14 +1311,14 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.7.tgz", - "integrity": "sha512-Mm6aeymI0PBh44xNIv/qvo8nmbkpZze1KvR8MkEqbIREDxoiWTi18Zr2jryfRMwDfVZF9foKh060fWgni44luw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz", + "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1355,13 +1328,13 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.7.tgz", - "integrity": "sha512-ZFAeNkpGuLnAQ/NCsXJ6xik7Id+tHuS+NT+ue/2+rn/31zcdnupCdmunOizEaP0JsUmTFSTOPoQY7PkK2pttXw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz", + "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1371,13 +1344,13 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.7.tgz", - "integrity": "sha512-SI274k0nUsFFmyQupiO7+wKATAmMFf8iFgq2O+vVFXZ0SV9lNfT1NGzBEhjquFmD8I9sqHLguH+gZVN3vww2AA==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.26.8.tgz", + "integrity": "sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -1387,13 +1360,13 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.7.tgz", - "integrity": "sha512-OmWmQtTHnO8RSUbL0NTdtpbZHeNTnm68Gj5pA4Y2blFNh+V4iZR68V1qL9cI37J21ZN7AaCnkfdHtLExQPf2uA==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.26.7.tgz", + "integrity": "sha512-jfoTXXZTgGg36BmhqT3cAYK5qkmqvJpvNrPhaK/52Vgjhw4Rq29s9UqpWWV0D6yuRmgiFH/BUVlkl96zJWqnaw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -1403,13 +1376,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.7.tgz", - "integrity": "sha512-BN87D7KpbdiABA+t3HbVqHzKWUDN3dymLaTnPFAMyc8lV+KN3+YzNhVRNdinaCPA4AUqx7ubXbQ9shRjYBl3SQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz", + "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1419,14 +1392,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.7.tgz", - "integrity": "sha512-IWfR89zcEPQGB/iB408uGtSPlQd3Jpq11Im86vUgcmSTcoWAiQMCTOa2K2yNNqFJEBVICKhayctee65Ka8OB0w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz", + "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1436,14 +1409,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.7.tgz", - "integrity": "sha512-8JKfg/hiuA3qXnlLx8qtv5HWRbgyFx2hMMtpDDuU2rTckpKkGu4ycK5yYHwuEa16/quXfoxHBIApEsNyMWnt0g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz", + "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1453,14 +1426,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.7.tgz", - "integrity": "sha512-YRW8o9vzImwmh4Q3Rffd09bH5/hvY0pxg+1H1i0f7APoUeg12G7+HhLj9ZFNIrYkgBXhIijPJ+IXypN0hLTIbw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz", + "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1470,79 +1443,80 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.8.tgz", - "integrity": "sha512-58T2yulDHMN8YMUxiLq5YmWUnlDCyY1FsHM+v12VMx+1/FlrUj5tY50iDCpofFQEM8fMYOaY9YRvym2jcjn1Dg==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.8.tgz", + "integrity": "sha512-um7Sy+2THd697S4zJEfv/U5MHGJzkN2xhtsR3T/SWRbVSic62nbISh51VVfU9JiO/L/Z97QczHTaFVkOU8IzNg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.25.8", - "@babel/helper-compilation-targets": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-validator-option": "^7.25.7", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.7", - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.7", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.7", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.7", + "@babel/compat-data": "^7.26.8", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-import-assertions": "^7.25.7", - "@babel/plugin-syntax-import-attributes": "^7.25.7", + "@babel/plugin-syntax-import-assertions": "^7.26.0", + "@babel/plugin-syntax-import-attributes": "^7.26.0", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.25.7", - "@babel/plugin-transform-async-generator-functions": "^7.25.8", - "@babel/plugin-transform-async-to-generator": "^7.25.7", - "@babel/plugin-transform-block-scoped-functions": "^7.25.7", - "@babel/plugin-transform-block-scoping": "^7.25.7", - "@babel/plugin-transform-class-properties": "^7.25.7", - "@babel/plugin-transform-class-static-block": "^7.25.8", - "@babel/plugin-transform-classes": "^7.25.7", - "@babel/plugin-transform-computed-properties": "^7.25.7", - "@babel/plugin-transform-destructuring": "^7.25.7", - "@babel/plugin-transform-dotall-regex": "^7.25.7", - "@babel/plugin-transform-duplicate-keys": "^7.25.7", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.7", - "@babel/plugin-transform-dynamic-import": "^7.25.8", - "@babel/plugin-transform-exponentiation-operator": "^7.25.7", - "@babel/plugin-transform-export-namespace-from": "^7.25.8", - "@babel/plugin-transform-for-of": "^7.25.7", - "@babel/plugin-transform-function-name": "^7.25.7", - "@babel/plugin-transform-json-strings": "^7.25.8", - "@babel/plugin-transform-literals": "^7.25.7", - "@babel/plugin-transform-logical-assignment-operators": "^7.25.8", - "@babel/plugin-transform-member-expression-literals": "^7.25.7", - "@babel/plugin-transform-modules-amd": "^7.25.7", - "@babel/plugin-transform-modules-commonjs": "^7.25.7", - "@babel/plugin-transform-modules-systemjs": "^7.25.7", - "@babel/plugin-transform-modules-umd": "^7.25.7", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.7", - "@babel/plugin-transform-new-target": "^7.25.7", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.8", - "@babel/plugin-transform-numeric-separator": "^7.25.8", - "@babel/plugin-transform-object-rest-spread": "^7.25.8", - "@babel/plugin-transform-object-super": "^7.25.7", - "@babel/plugin-transform-optional-catch-binding": "^7.25.8", - "@babel/plugin-transform-optional-chaining": "^7.25.8", - "@babel/plugin-transform-parameters": "^7.25.7", - "@babel/plugin-transform-private-methods": "^7.25.7", - "@babel/plugin-transform-private-property-in-object": "^7.25.8", - "@babel/plugin-transform-property-literals": "^7.25.7", - "@babel/plugin-transform-regenerator": "^7.25.7", - "@babel/plugin-transform-reserved-words": "^7.25.7", - "@babel/plugin-transform-shorthand-properties": "^7.25.7", - "@babel/plugin-transform-spread": "^7.25.7", - "@babel/plugin-transform-sticky-regex": "^7.25.7", - "@babel/plugin-transform-template-literals": "^7.25.7", - "@babel/plugin-transform-typeof-symbol": "^7.25.7", - "@babel/plugin-transform-unicode-escapes": "^7.25.7", - "@babel/plugin-transform-unicode-property-regex": "^7.25.7", - "@babel/plugin-transform-unicode-regex": "^7.25.7", - "@babel/plugin-transform-unicode-sets-regex": "^7.25.7", + "@babel/plugin-transform-arrow-functions": "^7.25.9", + "@babel/plugin-transform-async-generator-functions": "^7.26.8", + "@babel/plugin-transform-async-to-generator": "^7.25.9", + "@babel/plugin-transform-block-scoped-functions": "^7.26.5", + "@babel/plugin-transform-block-scoping": "^7.25.9", + "@babel/plugin-transform-class-properties": "^7.25.9", + "@babel/plugin-transform-class-static-block": "^7.26.0", + "@babel/plugin-transform-classes": "^7.25.9", + "@babel/plugin-transform-computed-properties": "^7.25.9", + "@babel/plugin-transform-destructuring": "^7.25.9", + "@babel/plugin-transform-dotall-regex": "^7.25.9", + "@babel/plugin-transform-duplicate-keys": "^7.25.9", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-dynamic-import": "^7.25.9", + "@babel/plugin-transform-exponentiation-operator": "^7.26.3", + "@babel/plugin-transform-export-namespace-from": "^7.25.9", + "@babel/plugin-transform-for-of": "^7.25.9", + "@babel/plugin-transform-function-name": "^7.25.9", + "@babel/plugin-transform-json-strings": "^7.25.9", + "@babel/plugin-transform-literals": "^7.25.9", + "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", + "@babel/plugin-transform-member-expression-literals": "^7.25.9", + "@babel/plugin-transform-modules-amd": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.26.3", + "@babel/plugin-transform-modules-systemjs": "^7.25.9", + "@babel/plugin-transform-modules-umd": "^7.25.9", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-new-target": "^7.25.9", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.26.6", + "@babel/plugin-transform-numeric-separator": "^7.25.9", + "@babel/plugin-transform-object-rest-spread": "^7.25.9", + "@babel/plugin-transform-object-super": "^7.25.9", + "@babel/plugin-transform-optional-catch-binding": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9", + "@babel/plugin-transform-private-methods": "^7.25.9", + "@babel/plugin-transform-private-property-in-object": "^7.25.9", + "@babel/plugin-transform-property-literals": "^7.25.9", + "@babel/plugin-transform-regenerator": "^7.25.9", + "@babel/plugin-transform-regexp-modifiers": "^7.26.0", + "@babel/plugin-transform-reserved-words": "^7.25.9", + "@babel/plugin-transform-shorthand-properties": "^7.25.9", + "@babel/plugin-transform-spread": "^7.25.9", + "@babel/plugin-transform-sticky-regex": "^7.25.9", + "@babel/plugin-transform-template-literals": "^7.26.8", + "@babel/plugin-transform-typeof-symbol": "^7.26.7", + "@babel/plugin-transform-unicode-escapes": "^7.25.9", + "@babel/plugin-transform-unicode-property-regex": "^7.25.9", + "@babel/plugin-transform-unicode-regex": "^7.25.9", + "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.6", + "babel-plugin-polyfill-corejs3": "^0.11.0", "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.38.1", + "core-js-compat": "^3.40.0", "semver": "^6.3.1" }, "engines": { @@ -1552,6 +1526,20 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz", + "integrity": "sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.3", + "core-js-compat": "^3.40.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, "node_modules/@babel/preset-modules": { "version": "0.1.6-no-external-plugins", "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", @@ -1568,9 +1556,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz", - "integrity": "sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==", + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.7.tgz", + "integrity": "sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1581,32 +1569,32 @@ } }, "node_modules/@babel/template": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.7.tgz", - "integrity": "sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.8.tgz", + "integrity": "sha512-iNKaX3ZebKIsCvJ+0jd6embf+Aulaa3vNBqZ41kM7iTWjx5qzWKXGHiJUW3+nTpQ18SG11hdF8OAzKrpXkb96Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.25.7", - "@babel/parser": "^7.25.7", - "@babel/types": "^7.25.7" + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.26.8", + "@babel/types": "^7.26.8" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz", - "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.8.tgz", + "integrity": "sha512-nic9tRkjYH0oB2dzr/JoGIm+4Q6SuYeLEiIiZDwBscRMYFJ+tMAz98fuel9ZnbXViA2I0HVSSRRK8DW5fjXStA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.25.7", - "@babel/generator": "^7.25.7", - "@babel/parser": "^7.25.7", - "@babel/template": "^7.25.7", - "@babel/types": "^7.25.7", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.8", + "@babel/parser": "^7.26.8", + "@babel/template": "^7.26.8", + "@babel/types": "^7.26.8", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1615,15 +1603,14 @@ } }, "node_modules/@babel/types": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.8.tgz", - "integrity": "sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.8.tgz", + "integrity": "sha512-eUuWapzEGWFEpHFxgEaBG8e3n6S8L3MSu0oda755rOfabWPnh0Our1AozNFVUxGFIhbKgd1ksprsoDGMinTOTA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.25.7", - "@babel/helper-validator-identifier": "^7.25.7", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1640,13 +1627,13 @@ } }, "node_modules/@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", + "integrity": "sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=10.0.0" + "node": ">=14.17.0" } }, "node_modules/@jridgewell/gen-mapping": { @@ -1737,6 +1724,28 @@ "@types/node": "*" } }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, "node_modules/@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", @@ -1744,6 +1753,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/gensync": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@types/gensync/-/gensync-1.0.4.tgz", + "integrity": "sha512-C3YYeRQWp2fmq9OryX+FoDy8nXS6scQ7dPptD8LnFDAUNcKWJjXQKDNJD3HVm+kOUsXhTOkpi69vI4EuAr95bA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -1762,73 +1778,73 @@ } }, "node_modules/@webassemblyjs/ast": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", - "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", - "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", - "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.12.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", "dev": true, "license": "MIT", "dependencies": { @@ -1836,9 +1852,9 @@ } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1846,122 +1862,122 @@ } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", "dev": true, "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", - "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-opt": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1", - "@webassemblyjs/wast-printer": "1.12.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", - "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", - "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", - "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", - "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/ast": "1.14.1", "@xtuc/long": "4.2.2" } }, "node_modules/@webpack-cli/configtest": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", - "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-3.0.1.tgz", + "integrity": "sha512-u8d0pJ5YFgneF/GuvEiDA61Tf1VDomHHYMjv/wc9XzYj7nopltpG96nXN5dJRstxZhcNpV1g+nT6CydO7pHbjA==", "dev": true, "license": "MIT", "engines": { - "node": ">=14.15.0" + "node": ">=18.12.0" }, "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" + "webpack": "^5.82.0", + "webpack-cli": "6.x.x" } }, "node_modules/@webpack-cli/info": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", - "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-3.0.1.tgz", + "integrity": "sha512-coEmDzc2u/ffMvuW9aCjoRzNSPDl/XLuhPdlFRpT9tZHmJ/039az33CE7uH+8s0uL1j5ZNtfdv0HkfaKRBGJsQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=14.15.0" + "node": ">=18.12.0" }, "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" + "webpack": "^5.82.0", + "webpack-cli": "6.x.x" } }, "node_modules/@webpack-cli/serve": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", - "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-3.0.1.tgz", + "integrity": "sha512-sbgw03xQaCLiT6gcY/6u3qBDn01CWw/nbaXl3gTdTFuJJ75Gffv3E3DBpgvY2fkkrdS1fpjaXNOmJlnbtKauKg==", "dev": true, "license": "MIT", "engines": { - "node": ">=14.15.0" + "node": ">=18.12.0" }, "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" + "webpack": "^5.82.0", + "webpack-cli": "6.x.x" }, "peerDependenciesMeta": { "webpack-dev-server": { @@ -1998,9 +2014,9 @@ } }, "node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "dev": true, "license": "MIT", "bin": { @@ -2010,16 +2026,6 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^8" - } - }, "node_modules/ajv": { "version": "8.17.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", @@ -2175,19 +2181,6 @@ "node": ">=8" } }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -2422,9 +2415,9 @@ } }, "node_modules/browserslist": { - "version": "4.24.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", - "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", "dev": true, "funding": [ { @@ -2442,9 +2435,9 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001669", - "electron-to-chromium": "^1.5.41", - "node-releases": "^2.0.18", + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", "update-browserslist-db": "^1.1.1" }, "bin": { @@ -2492,9 +2485,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001669", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001669.tgz", - "integrity": "sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==", + "version": "1.0.30001699", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001699.tgz", + "integrity": "sha512-b+uH5BakXZ9Do9iK+CkDmctUSEqZl+SP056vc5usa0PL+ev5OHw003rZXcnjNDv3L8P5j6rwT6C0BPKSikW08w==", "dev": true, "funding": [ { @@ -2512,21 +2505,6 @@ ], "license": "CC-BY-4.0" }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/cheerio": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0.tgz", @@ -2633,23 +2611,6 @@ "node": ">=6" } }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true, - "license": "MIT" - }, "node_modules/colorette": { "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", @@ -2657,6 +2618,16 @@ "dev": true, "license": "MIT" }, + "node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/common-path-prefix": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", @@ -2732,13 +2703,13 @@ } }, "node_modules/core-js-compat": { - "version": "3.38.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", - "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==", + "version": "3.40.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.40.0.tgz", + "integrity": "sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.23.3" + "browserslist": "^4.24.3" }, "funding": { "type": "opencollective", @@ -2770,9 +2741,9 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { @@ -3091,9 +3062,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.42", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.42.tgz", - "integrity": "sha512-gIfKavKDw1mhvic9nbzA5lZw8QSHpdMwLwXc0cWidQz9B15pDoDdDH4boIatuFfeoCatb3a/NGL6CYRVFxGZ9g==", + "version": "1.5.97", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.97.tgz", + "integrity": "sha512-HKLtaH02augM7ZOdYRuO19rWDeY+QSJ1VxnXFa/XDFLf07HvM90pALIJFgrO+UVaajI3+aJMMpojoUTLZyQ7JQ==", "dev": true, "license": "ISC" }, @@ -3260,16 +3231,6 @@ "dev": true, "license": "MIT" }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -3669,16 +3630,6 @@ "dev": true, "license": "ISC" }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/has-property-descriptors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", @@ -4341,9 +4292,9 @@ } }, "node_modules/jasmine-core": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.4.0.tgz", - "integrity": "sha512-T4fio3W++llLd7LGSGsioriDHgWyhoL6YTu4k37uwJLF7DzOzspz7mNxRoM3cQdLWtL/ebazQpIf/yZGJx/gzg==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.6.0.tgz", + "integrity": "sha512-niVlkeYVRwKFpmfWg6suo6H9CrNnydfBLEqefM5UjibYS+UoTjZdmvPJSiuyrRLGnFj1eYRhFd/ch+5hSlsFVA==", "dev": true, "license": "MIT" }, @@ -4800,9 +4751,9 @@ "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", "dev": true, "funding": [ { @@ -4836,9 +4787,9 @@ "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", "dev": true, "license": "MIT" }, @@ -5090,9 +5041,9 @@ "license": "MIT" }, "node_modules/picocolors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", - "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true, "license": "ISC" }, @@ -5157,9 +5108,9 @@ } }, "node_modules/postcss": { - "version": "8.4.47", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", - "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.2.tgz", + "integrity": "sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==", "dev": true, "funding": [ { @@ -5177,8 +5128,8 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.1.0", + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, "engines": { @@ -5414,16 +5365,16 @@ } }, "node_modules/regexpu-core": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.1.1.tgz", - "integrity": "sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", "dev": true, "license": "MIT", "dependencies": { "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.2.0", "regjsgen": "^0.8.0", - "regjsparser": "^0.11.0", + "regjsparser": "^0.12.0", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" }, @@ -5439,9 +5390,9 @@ "license": "MIT" }, "node_modules/regjsparser": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.11.1.tgz", - "integrity": "sha512-1DHODs4B8p/mQHU9kr+jv8+wIC9mtG4eBHxWxIq5mhjE3D5oORhCc6deRKzTjs9DcfRFmj9BHSDguZklqCGFWQ==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -5882,19 +5833,6 @@ "webpack": "^5.27.0" } }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", @@ -6042,16 +5980,6 @@ "node": ">=14.14" } }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -6124,9 +6052,9 @@ } }, "node_modules/undici": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.8.tgz", - "integrity": "sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==", + "version": "6.21.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.1.tgz", + "integrity": "sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ==", "dev": true, "license": "MIT", "engines": { @@ -6326,19 +6254,19 @@ } }, "node_modules/webpack": { - "version": "5.95.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.95.0.tgz", - "integrity": "sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==", + "version": "5.97.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz", + "integrity": "sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "^1.0.5", - "@webassemblyjs/ast": "^1.12.1", - "@webassemblyjs/wasm-edit": "^1.12.1", - "@webassemblyjs/wasm-parser": "^1.12.1", - "acorn": "^8.7.1", - "acorn-import-attributes": "^1.9.5", - "browserslist": "^4.21.10", + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.17.1", "es-module-lexer": "^1.2.1", @@ -6373,43 +6301,40 @@ } }, "node_modules/webpack-cli": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", - "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-6.0.1.tgz", + "integrity": "sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw==", "dev": true, "license": "MIT", "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^2.1.1", - "@webpack-cli/info": "^2.0.2", - "@webpack-cli/serve": "^2.0.5", + "@discoveryjs/json-ext": "^0.6.1", + "@webpack-cli/configtest": "^3.0.1", + "@webpack-cli/info": "^3.0.1", + "@webpack-cli/serve": "^3.0.1", "colorette": "^2.0.14", - "commander": "^10.0.1", + "commander": "^12.1.0", "cross-spawn": "^7.0.3", - "envinfo": "^7.7.3", + "envinfo": "^7.14.0", "fastest-levenshtein": "^1.0.12", "import-local": "^3.0.2", "interpret": "^3.1.1", "rechoir": "^0.8.0", - "webpack-merge": "^5.7.3" + "webpack-merge": "^6.0.1" }, "bin": { "webpack-cli": "bin/cli.js" }, "engines": { - "node": ">=14.15.0" + "node": ">=18.12.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "5.x.x" + "webpack": "^5.82.0" }, "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, "webpack-bundle-analyzer": { "optional": true }, @@ -6418,16 +6343,6 @@ } } }, - "node_modules/webpack-cli/node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - } - }, "node_modules/webpack-cli/node_modules/interpret": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", @@ -6452,18 +6367,18 @@ } }, "node_modules/webpack-cli/node_modules/webpack-merge": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", - "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", + "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", "dev": true, "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", - "wildcard": "^2.0.0" + "wildcard": "^2.0.1" }, "engines": { - "node": ">=10.0.0" + "node": ">=18.0.0" } }, "node_modules/webpack-merge": { diff --git a/src/dashboard/frontend/package.json b/src/dashboard/frontend/package.json index 0c24476fcc..8f7514d8e5 100644 --- a/src/dashboard/frontend/package.json +++ b/src/dashboard/frontend/package.json @@ -4,18 +4,18 @@ "version": "0.0.0", "description": "Dashboard components (Appraisal tab and Transfer browser) for Archivematica", "devDependencies": { - "@babel/core": "^7.25.8", - "@babel/plugin-transform-modules-commonjs": "^7.25.7", - "@babel/plugin-transform-object-assign": "^7.25.7", - "@babel/plugin-transform-runtime": "^7.25.7", - "@babel/preset-env": "^7.25.8", + "@babel/core": "^7.26.8", + "@babel/plugin-transform-modules-commonjs": "^7.26.3", + "@babel/plugin-transform-object-assign": "^7.25.9", + "@babel/plugin-transform-runtime": "^7.26.8", + "@babel/preset-env": "^7.26.8", "angular-gettext-cli": "^1.2.0", "babel-loader": "^9.2.1", "css-loader": "^7.1.2", "html-loader": "^5.1.0", "http-server": "^14.1.1", "imports-loader": "^5.0.0", - "jasmine-core": "^5.4.0", + "jasmine-core": "^5.6.0", "karma": "^6.4.4", "karma-chrome-launcher": "^3.2.0", "karma-firefox-launcher": "^2.1.3", @@ -23,11 +23,11 @@ "karma-junit-reporter": "^2.0.1", "karma-webpack": "^5.0.1", "path-browserify": "^1.0.1", - "postcss": "^8.4.47", + "postcss": "^8.5.2", "shelljs": "^0.8.5", "style-loader": "^4.0.0", - "webpack": "^5.95.0", - "webpack-cli": "^5.1.4" + "webpack": "^5.97.1", + "webpack-cli": "^6.0.1" }, "scripts": { "extract-messages": "angular-gettext-cli --files \"./app/**/*.+(js|html)\" --dest \"./app/locale/extract.pot\" --marker-name \"i18n\"", @@ -50,7 +50,7 @@ "angular-ui-bootstrap": "^0.14.3", "angular-ui-validate": "^1.2.2", "archivematica-browse-helpers": "git+https://github.com/artefactual-labs/archivematica-browse-helpers.git", - "base64-helpers": "github:artefactual-labs/base64-helpers#v0.1.2", + "base64-helpers": "github:artefactual-labs/base64-helpers#v0.1.3", "d3": "^3.5.17", "font-awesome": "^4.7.0", "lodash": "^4.17.21", From 38c089973655e33b5d7c5a30450f977c66b27571 Mon Sep 17 00:00:00 2001 From: Douglas Cerna Date: Fri, 21 Feb 2025 10:36:30 -0600 Subject: [PATCH 12/99] Add tests for FPR event detail commands This adds tests that assert the output of the existing event detail commands in the FPR. The tests assume the MCPClient OS tools are installed in the test runner and call archivematicaCommon's executeOrRun to execute the event detail commands. --- pyproject.toml | 1 + .../lib/clientScripts/compress_aip.py | 2 +- .../0045_update_event_detail_commands.py | 59 ++++++++ tests/MCPClient/test_fpr_commands.py | 139 ++++++++++++++++++ 4 files changed, 200 insertions(+), 1 deletion(-) create mode 100644 src/dashboard/src/fpr/migrations/0045_update_event_detail_commands.py create mode 100644 tests/MCPClient/test_fpr_commands.py diff --git a/pyproject.toml b/pyproject.toml index 3826646624..023da148e4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -77,6 +77,7 @@ module = [ "tests.MCPClient.conftest", "tests.MCPClient.test_characterize_file", "tests.MCPClient.test_create_mets_v2", + "tests.MCPClient.test_fpr_commands", "tests.MCPClient.test_has_packages", "tests.MCPClient.test_identify_file_format", "tests.MCPClient.test_normalize", diff --git a/src/MCPClient/lib/clientScripts/compress_aip.py b/src/MCPClient/lib/clientScripts/compress_aip.py index 0e1123f10e..175519edac 100755 --- a/src/MCPClient/lib/clientScripts/compress_aip.py +++ b/src/MCPClient/lib/clientScripts/compress_aip.py @@ -67,7 +67,7 @@ def compress_aip( tool_info_command = ( r'echo program="7z"\; ' rf'algorithm="{compression_algorithm}"\; ' - 'version="`7z | grep Version`"' + "version=\"`7z | awk 'NR==3 && /^p7zip Version/ {print; exit} NR==2 {line2=$0} NR==3 {print line2 $0}'`\"" ) elif program == "pbzip2": compressed_location = uncompressed_location + ".tar.bz2" diff --git a/src/dashboard/src/fpr/migrations/0045_update_event_detail_commands.py b/src/dashboard/src/fpr/migrations/0045_update_event_detail_commands.py new file mode 100644 index 0000000000..907e5f6460 --- /dev/null +++ b/src/dashboard/src/fpr/migrations/0045_update_event_detail_commands.py @@ -0,0 +1,59 @@ +import uuid + +from django.db import migrations + +OLD_COMMAND_ID = uuid.UUID("914fe3e5-fa45-47c6-858d-e11bc71f5b76") +NEW_COMMAND_ID = uuid.UUID("8f177f1c-5eac-45c4-aa6f-2214107d1a7b") + +COMMANDS = [ + # Extraction -> Extracting 7Zip compatible format. + uuid.UUID("b8864e2c-87a0-4aec-a8cf-a747a073be28"), +] + + +def data_migration_up(apps, schema_editor): + FPCommand = apps.get_model("fpr", "FPCommand") + + # Get the current command. + old_command = FPCommand.objects.get(uuid=OLD_COMMAND_ID) + + # Add a new command that replaces the current one with a new bash script. + new_command = FPCommand.objects.create( + uuid=NEW_COMMAND_ID, + replaces=old_command, + tool=old_command.tool, + enabled=old_command.enabled, + command=r"echo program=\"7z\"\; version=\"`7z | awk 'NR==3 && /^p7zip Version/ {print; exit} NR==2 {line2=$0} NR==3 {print line2 $0}'`\"", + script_type=old_command.script_type, + command_usage=old_command.command_usage, + description=old_command.description, + ) + + # Update extraction commands that use the event detail command. + FPCommand.objects.filter(uuid__in=COMMANDS).update(event_detail_command=new_command) + + # Disable previous command. + FPCommand.objects.filter(uuid=OLD_COMMAND_ID).update(enabled=False) + + +def data_migration_down(apps, schema_editor): + FPCommand = apps.get_model("fpr", "FPCommand") + + # Get previous command. + old_command = FPCommand.objects.get(uuid=OLD_COMMAND_ID) + + # Update extraction commands that use the event detail command. + FPCommand.objects.filter(uuid__in=COMMANDS).update(event_detail_command=old_command) + + # Delete the newest command. + FPCommand.objects.filter(uuid=NEW_COMMAND_ID).delete() + + # Re-enable the previous command. + old_command.enabled = True + old_command.save() + + +class Migration(migrations.Migration): + dependencies = [("fpr", "0044_remove_fits")] + + operations = [migrations.RunPython(data_migration_up, data_migration_down)] diff --git a/tests/MCPClient/test_fpr_commands.py b/tests/MCPClient/test_fpr_commands.py new file mode 100644 index 0000000000..cec134c995 --- /dev/null +++ b/tests/MCPClient/test_fpr_commands.py @@ -0,0 +1,139 @@ +import re +from typing import TypedDict + +import pytest +from executeOrRunSubProcess import executeOrRun +from fpr.models import FPCommand + + +class QueryFilters(TypedDict): + command_usage: str + description: str + + +class EventDetailResult(TypedDict): + programs: list[str] + version: str + + +@pytest.mark.django_db +@pytest.mark.parametrize( + "expected_programs,expected_version_pattern,filters", + [ + ( + ["7z"], + # The event detail command extracts different lines depending on the 7z version. + # Older versions report the version on a line starting with "p7zip Version" + # while more recent versions use a line starting with "7-Zip". + r"(^p7zip Version|^7-Zip)", + { + "command_usage": "event_detail", + "description": "Get event detail text for 7z extraction", + }, + ), + ( + ["convert"], + "^Version: ImageMagick", + { + "command_usage": "event_detail", + "description": "convert event detail", + }, + ), + ( + ["ffmpeg"], + r"^ffmpeg version", + { + "command_usage": "event_detail", + "description": "Get event detail text for ffmpeg extraction", + }, + ), + ( + ["ps2pdf", "Ghostscript"], + r"^\d+\.\d+\.\d+", + { + "command_usage": "event_detail", + "description": "ps2pdf event detail", + }, + ), + ( + ["Ghostscript"], + r"^\d+\.\d+\.\d+", + { + "command_usage": "event_detail", + "description": "Ghostscript event detail", + }, + ), + ( + ["inkscape"], + r"^Inkscape", + { + "command_usage": "event_detail", + "description": "inkscape event detail", + }, + ), + pytest.param( + ["unrar-nonfree"], + "^UNRAR", + { + "command_usage": "event_detail", + "description": "Get event detail text for unrar extraction", + }, + marks=pytest.mark.skip( + reason="Skipping because unrar-nonfree is not installed by default in Archivematica" + ), + ), + ( + ["readpst"], + r"^ReadPST / LibPST", + { + "command_usage": "event_detail", + "description": "readpst event detail", + }, + ), + ], + ids=[ + "7z", + "convert", + "ffmpeg", + "ps2pdf", + "Ghostscript", + "inkscape", + "unrar-nonfree", + "readpst", + ], +) +def test_event_detail_command_returns_tool_version( + expected_programs: list[str], expected_version_pattern: str, filters: QueryFilters +) -> None: + command = FPCommand.active.get(**filters) + + _, output, _ = executeOrRun(command.script_type, command.command) + + result: EventDetailResult = {"programs": [], "version": ""} + + for match in re.finditer( + r'program="(?P.*?)";|version="(?P.*?)"', output + ): + program = match.group("program") + version = match.group("version") + if program is not None: + result["programs"].append(program) + if version is not None: + result["version"] = version + + assert result["programs"] == expected_programs + assert re.search(expected_version_pattern, result["version"]) is not None + + +@pytest.mark.django_db +def test_mbox_event_detail_command_returns_tool_path() -> None: + expected_detail_pattern = r"^/usr/lib/archivematica/transcoder/transcoderScripts/ " + filters = { + "command_usage": "event_detail", + "description": "Transcoding maildir to mbox event detail", + } + command = FPCommand.active.get(**filters) + + _, output, _ = executeOrRun(command.script_type, command.command) + + assert re.search(expected_detail_pattern, output) is not None From 320836d7426fe4b27fcb3d19a60e7cfc93904364 Mon Sep 17 00:00:00 2001 From: "Douglas Cerna (Soy Douglas)" Date: Wed, 19 Feb 2025 14:32:29 +0000 Subject: [PATCH 13/99] Use Ubuntu 24.04 in Docker setups --- .github/workflows/oidc-integration-test.yml | 2 +- .github/workflows/test.yml | 6 +++--- hack/Dockerfile | 9 ++++++++- hack/docker-compose.tests.yml | 2 +- hack/docker-compose.yml | 8 ++++---- tests/integration/docker-compose.yml | 2 +- 6 files changed, 18 insertions(+), 11 deletions(-) diff --git a/.github/workflows/oidc-integration-test.yml b/.github/workflows/oidc-integration-test.yml index 9de9b1bf5f..d9760ccdab 100644 --- a/.github/workflows/oidc-integration-test.yml +++ b/.github/workflows/oidc-integration-test.yml @@ -27,7 +27,7 @@ jobs: env: USER_ID: ${{ steps.user_id.outputs.user_id }} GROUP_ID: ${{ steps.group_id.outputs.group_id }} - UBUNTU_VERSION: "22.04" + UBUNTU_VERSION: "24.04" PYTHON_VERSION: "3.9" COMPOSE_DOCKER_CLI_BUILD: 1 DOCKER_BUILDKIT: 1 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a3aba9f4b9..34655999f7 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -27,7 +27,7 @@ jobs: "archivematica-common", ] ubuntu-version: [ - "22.04", + "24.04", ] python-version: [ "3.9", @@ -37,10 +37,10 @@ jobs: ] include: - rule: "storage-service" - ubuntu-version: "22.04" + ubuntu-version: "24.04" python-version: "3.9" - rule: "migrations" - ubuntu-version: "22.04" + ubuntu-version: "24.04" python-version: "3.9" steps: - name: "Check out repository" diff --git a/hack/Dockerfile b/hack/Dockerfile index c84a54779b..76d5556198 100644 --- a/hack/Dockerfile +++ b/hack/Dockerfile @@ -1,5 +1,5 @@ ARG TARGET=archivematica-mcp-server -ARG UBUNTU_VERSION=22.04 +ARG UBUNTU_VERSION=24.04 ARG USER_ID=1000 ARG GROUP_ID=1000 ARG PYTHON_VERSION=3.9 @@ -17,6 +17,13 @@ ARG PYENV_DIR=/pyenv ENV DEBIAN_FRONTEND=noninteractive ENV PYTHONUNBUFFERED=1 +# Ubuntu 24.04 and later Docker images include a default user with UID (1000) +# and GID (1000). Remove this user to prevent conflicts with the USER_ID and +# GROUP_ID build arguments. +RUN set -ex \ + && id -u ubuntu >/dev/null 2>&1 \ + && userdel --remove ubuntu || true + RUN set -ex \ && apt-get update \ && apt-get install -y --no-install-recommends \ diff --git a/hack/docker-compose.tests.yml b/hack/docker-compose.tests.yml index 3dde27ea80..2e900537e6 100644 --- a/hack/docker-compose.tests.yml +++ b/hack/docker-compose.tests.yml @@ -8,7 +8,7 @@ services: dockerfile: "hack/Dockerfile" args: TARGET: "archivematica-tests" - UBUNTU_VERSION: ${UBUNTU_VERSION:-22.04} + UBUNTU_VERSION: ${UBUNTU_VERSION:-24.04} PYTHON_VERSION: ${PYTHON_VERSION:-3.9} volumes: - "../:/src" diff --git a/hack/docker-compose.yml b/hack/docker-compose.yml index b123bb4d32..f095e25552 100644 --- a/hack/docker-compose.yml +++ b/hack/docker-compose.yml @@ -105,7 +105,7 @@ services: TARGET: "archivematica-mcp-server" USER_ID: ${USER_ID:-1000} GROUP_ID: ${GROUP_ID:-1000} - UBUNTU_VERSION: ${UBUNTU_VERSION:-22.04} + UBUNTU_VERSION: ${UBUNTU_VERSION:-24.04} PYTHON_VERSION: ${PYTHON_VERSION:-3.9} environment: DJANGO_SECRET_KEY: "12345" @@ -133,7 +133,7 @@ services: TARGET: "archivematica-mcp-client" USER_ID: ${USER_ID:-1000} GROUP_ID: ${GROUP_ID:-1000} - UBUNTU_VERSION: ${UBUNTU_VERSION:-22.04} + UBUNTU_VERSION: ${UBUNTU_VERSION:-24.04} PYTHON_VERSION: ${PYTHON_VERSION:-3.9} environment: DJANGO_SECRET_KEY: "12345" @@ -173,7 +173,7 @@ services: TARGET: "archivematica-dashboard" USER_ID: ${USER_ID:-1000} GROUP_ID: ${GROUP_ID:-1000} - UBUNTU_VERSION: ${UBUNTU_VERSION:-22.04} + UBUNTU_VERSION: ${UBUNTU_VERSION:-24.04} PYTHON_VERSION: ${PYTHON_VERSION:-3.9} environment: FORWARDED_ALLOW_IPS: "*" @@ -209,7 +209,7 @@ services: TARGET: "archivematica-storage-service" USER_ID: ${USER_ID:-1000} GROUP_ID: ${GROUP_ID:-1000} - UBUNTU_VERSION: ${UBUNTU_VERSION:-22.04} + UBUNTU_VERSION: ${UBUNTU_VERSION:-24.04} PYTHON_VERSION: ${PYTHON_VERSION:-3.9} environment: FORWARDED_ALLOW_IPS: "*" diff --git a/tests/integration/docker-compose.yml b/tests/integration/docker-compose.yml index b5d522c83a..daf630d866 100644 --- a/tests/integration/docker-compose.yml +++ b/tests/integration/docker-compose.yml @@ -29,7 +29,7 @@ services: TARGET: "archivematica-dashboard-integration-tests" USER_ID: ${USER_ID:-1000} GROUP_ID: ${GROUP_ID:-1000} - UBUNTU_VERSION: ${UBUNTU_VERSION:-22.04} + UBUNTU_VERSION: ${UBUNTU_VERSION:-24.04} PYTHON_VERSION: ${PYTHON_VERSION:-3.9} entrypoint: "" working_dir: "/src" From 1dc0274d6bafa106fb28f174f892315e74a9464f Mon Sep 17 00:00:00 2001 From: "Douglas Cerna (Soy Douglas)" Date: Mon, 24 Feb 2025 13:47:54 +0000 Subject: [PATCH 14/99] Update git submodules --- hack/submodules/archivematica-acceptance-tests | 2 +- hack/submodules/archivematica-storage-service | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/hack/submodules/archivematica-acceptance-tests b/hack/submodules/archivematica-acceptance-tests index c9b1705cef..696271c293 160000 --- a/hack/submodules/archivematica-acceptance-tests +++ b/hack/submodules/archivematica-acceptance-tests @@ -1 +1 @@ -Subproject commit c9b1705cef238d84f8da8cbaa658fe613334b0e4 +Subproject commit 696271c293e23cbd74d483ce34371cf8cd1214ec diff --git a/hack/submodules/archivematica-storage-service b/hack/submodules/archivematica-storage-service index 395df96df7..8e4522299c 160000 --- a/hack/submodules/archivematica-storage-service +++ b/hack/submodules/archivematica-storage-service @@ -1 +1 @@ -Subproject commit 395df96df7838caa15cb140f9833126edcd1d58d +Subproject commit 8e4522299c11bae92901ed09addbd046db6be35a From d273e4c95f39a2ef1f6167da17b589e8432c1d61 Mon Sep 17 00:00:00 2001 From: "Douglas Cerna (Soy Douglas)" Date: Tue, 25 Feb 2025 17:05:39 +0000 Subject: [PATCH 15/99] Remove FPR South migrations --- pyproject.toml | 1 - .../src/fpr/south_migrations/0001_initial.py | 798 ---------- .../src/fpr/south_migrations/0002_api_v2.py | 1317 ----------------- .../src/fpr/south_migrations/__init__.py | 0 .../src/fpr/south_migrations/rawdump.sql | 970 ------------ .../src/fpr/south_migrations/recreateData.sh | 54 - 6 files changed, 3140 deletions(-) delete mode 100644 src/dashboard/src/fpr/south_migrations/0001_initial.py delete mode 100644 src/dashboard/src/fpr/south_migrations/0002_api_v2.py delete mode 100644 src/dashboard/src/fpr/south_migrations/__init__.py delete mode 100644 src/dashboard/src/fpr/south_migrations/rawdump.sql delete mode 100755 src/dashboard/src/fpr/south_migrations/recreateData.sh diff --git a/pyproject.toml b/pyproject.toml index 023da148e4..c951d712d0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,6 @@ norecursedirs = ".svn _build tmp* node_modules bower_components share .tox" omit = [ "**/src/archivematicaCommon/lib/externals/*", "**/migrations/*", - "**/south_migrations/*", "**/management/commands/*", "**/settings/*", "**/tests/*", diff --git a/src/dashboard/src/fpr/south_migrations/0001_initial.py b/src/dashboard/src/fpr/south_migrations/0001_initial.py deleted file mode 100644 index 6af9c76709..0000000000 --- a/src/dashboard/src/fpr/south_migrations/0001_initial.py +++ /dev/null @@ -1,798 +0,0 @@ -from typing import Any - -from south.db import db -from south.v2 import SchemaMigration - - -class Migration(SchemaMigration): - def forwards(self, orm): - # Adding model 'Agent' - db.create_table( - "Agent", - ( - ( - "uuid", - self.gf("django.db.models.fields.CharField")( - max_length=36, primary_key=True, db_column="uuid" - ), - ), - ( - "agentIdentifierType", - self.gf("django.db.models.fields.CharField")(max_length=100), - ), - ( - "agentIdentifierValue", - self.gf("django.db.models.fields.CharField")(max_length=100), - ), - ( - "agentName", - self.gf("django.db.models.fields.CharField")(max_length=100), - ), - ( - "agentType", - self.gf("django.db.models.fields.CharField")(max_length=100), - ), - ( - "clientIP", - self.gf("django.db.models.fields.CharField")(max_length=100), - ), - ), - ) - db.send_create_signal("fpr", ["Agent"]) - - # Adding model 'CommandType' - db.create_table( - "CommandType", - ( - ( - "uuid", - self.gf("django.db.models.fields.CharField")( - max_length=36, primary_key=True, db_column="pk" - ), - ), - ( - "replaces", - self.gf("django.db.models.fields.CharField")( - max_length=50, null=True, db_column="replaces" - ), - ), - ( - "type", - self.gf("django.db.models.fields.TextField")(db_column="type"), - ), - ( - "lastmodified", - self.gf("django.db.models.fields.DateTimeField")( - db_column="lastModified" - ), - ), - ( - "enabled", - self.gf("django.db.models.fields.IntegerField")( - default=1, null=True, db_column="enabled" - ), - ), - ), - ) - db.send_create_signal("fpr", ["CommandType"]) - - # Adding model 'Command' - db.create_table( - "Command", - ( - ( - "uuid", - self.gf("django.db.models.fields.CharField")( - max_length=36, primary_key=True, db_column="pk" - ), - ), - ( - "commandUsage", - self.gf("django.db.models.fields.CharField")(max_length=15), - ), - ( - "commandType", - self.gf("django.db.models.fields.CharField")(max_length=36), - ), - ( - "verificationCommand", - self.gf("django.db.models.fields.CharField")( - max_length=36, null=True - ), - ), - ( - "eventDetailCommand", - self.gf("django.db.models.fields.CharField")( - max_length=36, null=True - ), - ), - ( - "supportedBy", - self.gf("django.db.models.fields.CharField")( - max_length=36, null=True, db_column="supportedBy" - ), - ), - ( - "command", - self.gf("django.db.models.fields.TextField")(db_column="command"), - ), - ( - "outputLocation", - self.gf("django.db.models.fields.TextField")( - null=True, db_column="outputLocation" - ), - ), - ( - "description", - self.gf("django.db.models.fields.TextField")( - db_column="description" - ), - ), - ( - "outputFileFormat", - self.gf("django.db.models.fields.TextField")( - null=True, db_column="outputFileFormat" - ), - ), - ( - "replaces", - self.gf("django.db.models.fields.CharField")( - max_length=36, null=True, db_column="replaces" - ), - ), - ( - "lastmodified", - self.gf("django.db.models.fields.DateTimeField")( - null=True, db_column="lastModified" - ), - ), - ( - "enabled", - self.gf("django.db.models.fields.IntegerField")( - default=1, null=True, db_column="enabled" - ), - ), - ), - ) - db.send_create_signal("fpr", ["Command"]) - - # Adding model 'CommandsSupportedBy' - db.create_table( - "CommandsSupportedBy", - ( - ( - "uuid", - self.gf("django.db.models.fields.CharField")( - max_length=36, primary_key=True, db_column="pk" - ), - ), - ( - "description", - self.gf("django.db.models.fields.TextField")( - null=True, db_column="description" - ), - ), - ( - "replaces", - self.gf("django.db.models.fields.CharField")( - max_length=36, null=True, db_column="replaces" - ), - ), - ( - "lastmodified", - self.gf("django.db.models.fields.DateTimeField")( - db_column="lastModified" - ), - ), - ( - "enabled", - self.gf("django.db.models.fields.IntegerField")( - default=1, null=True, db_column="enabled" - ), - ), - ), - ) - db.send_create_signal("fpr", ["CommandsSupportedBy"]) - - # Adding model 'FileIDType' - db.create_table( - "FileIDType", - ( - ( - "uuid", - self.gf("django.db.models.fields.CharField")( - max_length=36, primary_key=True, db_column="pk" - ), - ), - ( - "description", - self.gf("django.db.models.fields.TextField")( - null=True, db_column="description" - ), - ), - ( - "replaces", - self.gf("django.db.models.fields.CharField")( - max_length=50, null=True, db_column="replaces" - ), - ), - ( - "lastmodified", - self.gf("django.db.models.fields.DateTimeField")( - db_column="lastModified" - ), - ), - ( - "enabled", - self.gf("django.db.models.fields.IntegerField")( - default=1, null=True, db_column="enabled" - ), - ), - ), - ) - db.send_create_signal("fpr", ["FileIDType"]) - - # Adding model 'FileID' - db.create_table( - "FileID", - ( - ( - "uuid", - self.gf("django.db.models.fields.CharField")( - max_length=36, primary_key=True, db_column="pk" - ), - ), - ( - "description", - self.gf("django.db.models.fields.TextField")( - db_column="description" - ), - ), - ( - "validpreservationformat", - self.gf("django.db.models.fields.IntegerField")( - default=0, null=True, db_column="validPreservationFormat" - ), - ), - ( - "validaccessformat", - self.gf("django.db.models.fields.IntegerField")( - default=0, null=True, db_column="validAccessFormat" - ), - ), - ( - "fileidtype", - self.gf("django.db.models.fields.CharField")( - max_length=36, null=True, db_column="fileidtype_id" - ), - ), - ( - "replaces", - self.gf("django.db.models.fields.CharField")( - max_length=36, null=True, db_column="replaces" - ), - ), - ( - "lastmodified", - self.gf("django.db.models.fields.DateTimeField")( - db_column="lastModified" - ), - ), - ( - "enabled", - self.gf("django.db.models.fields.IntegerField")( - default=1, null=True, db_column="enabled" - ), - ), - ), - ) - db.send_create_signal("fpr", ["FileID"]) - - # Adding model 'CommandClassification' - db.create_table( - "CommandClassification", - ( - ( - "uuid", - self.gf("django.db.models.fields.CharField")( - max_length=36, primary_key=True, db_column="pk" - ), - ), - ( - "classification", - self.gf("django.db.models.fields.TextField")( - null=True, db_column="classification" - ), - ), - ( - "replaces", - self.gf("django.db.models.fields.CharField")( - max_length=50, null=True, db_column="replaces" - ), - ), - ( - "lastmodified", - self.gf("django.db.models.fields.DateTimeField")( - db_column="lastModified" - ), - ), - ( - "enabled", - self.gf("django.db.models.fields.IntegerField")( - default=1, null=True, db_column="enabled" - ), - ), - ), - ) - db.send_create_signal("fpr", ["CommandClassification"]) - - # Adding model 'CommandRelationship' - db.create_table( - "CommandRelationship", - ( - ( - "uuid", - self.gf("django.db.models.fields.CharField")( - max_length=36, primary_key=True, db_column="pk" - ), - ), - ( - "commandClassification", - self.gf("django.db.models.fields.CharField")(max_length=36), - ), - ( - "command", - self.gf("django.db.models.fields.CharField")( - max_length=36, null=True - ), - ), - ( - "fileID", - self.gf("django.db.models.fields.CharField")( - max_length=36, null=True - ), - ), - ( - "replaces", - self.gf("django.db.models.fields.CharField")( - max_length=36, null=True - ), - ), - ( - "lastmodified", - self.gf("django.db.models.fields.DateTimeField")( - db_column="lastModified" - ), - ), - ( - "enabled", - self.gf("django.db.models.fields.IntegerField")( - default=1, null=True, db_column="enabled" - ), - ), - ), - ) - db.send_create_signal("fpr", ["CommandRelationship"]) - - # Adding model 'FileIDsBySingleID' - db.create_table( - "FileIDsBySingleID", - ( - ( - "uuid", - self.gf("django.db.models.fields.CharField")( - max_length=36, primary_key=True, db_column="pk" - ), - ), - ( - "fileID", - self.gf("django.db.models.fields.CharField")( - max_length=36, null=True - ), - ), - ("id", self.gf("django.db.models.fields.TextField")(db_column="id")), - ( - "tool", - self.gf("django.db.models.fields.TextField")(db_column="tool"), - ), - ( - "toolVersion", - self.gf("django.db.models.fields.TextField")( - null=True, db_column="toolVersion" - ), - ), - ( - "replaces", - self.gf("django.db.models.fields.CharField")( - max_length=50, null=True, db_column="replaces" - ), - ), - ( - "lastmodified", - self.gf("django.db.models.fields.DateTimeField")( - db_column="lastModified" - ), - ), - ( - "enabled", - self.gf("django.db.models.fields.IntegerField")( - default=1, null=True, db_column="enabled" - ), - ), - ), - ) - db.send_create_signal("fpr", ["FileIDsBySingleID"]) - - def backwards(self, orm): - # Deleting model 'Agent' - db.delete_table("Agent") - - # Deleting model 'CommandType' - db.delete_table("CommandType") - - # Deleting model 'Command' - db.delete_table("Command") - - # Deleting model 'CommandsSupportedBy' - db.delete_table("CommandsSupportedBy") - - # Deleting model 'FileIDType' - db.delete_table("FileIDType") - - # Deleting model 'FileID' - db.delete_table("FileID") - - # Deleting model 'CommandClassification' - db.delete_table("CommandClassification") - - # Deleting model 'CommandRelationship' - db.delete_table("CommandRelationship") - - # Deleting model 'FileIDsBySingleID' - db.delete_table("FileIDsBySingleID") - - models: dict[str, Any] = { - "fpr.agent": { - "Meta": {"object_name": "Agent", "db_table": "u'Agent'"}, - "agentIdentifierType": ( - "django.db.models.fields.CharField", - [], - {"max_length": "100"}, - ), - "agentIdentifierValue": ( - "django.db.models.fields.CharField", - [], - {"max_length": "100"}, - ), - "agentName": ( - "django.db.models.fields.CharField", - [], - {"max_length": "100"}, - ), - "agentType": ( - "django.db.models.fields.CharField", - [], - {"max_length": "100"}, - ), - "clientIP": ( - "django.db.models.fields.CharField", - [], - {"max_length": "100"}, - ), - "uuid": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "primary_key": "True", "db_column": "'uuid'"}, - ), - }, - "fpr.command": { - "Meta": {"object_name": "Command", "db_table": "u'Command'"}, - "command": ( - "django.db.models.fields.TextField", - [], - {"db_column": "'command'"}, - ), - "commandType": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36"}, - ), - "commandUsage": ( - "django.db.models.fields.CharField", - [], - {"max_length": "15"}, - ), - "description": ( - "django.db.models.fields.TextField", - [], - {"db_column": "'description'"}, - ), - "enabled": ( - "django.db.models.fields.IntegerField", - [], - {"default": "1", "null": "True", "db_column": "'enabled'"}, - ), - "eventDetailCommand": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "null": "True"}, - ), - "lastmodified": ( - "django.db.models.fields.DateTimeField", - [], - {"null": "True", "db_column": "'lastModified'"}, - ), - "outputFileFormat": ( - "django.db.models.fields.TextField", - [], - {"null": "True", "db_column": "'outputFileFormat'"}, - ), - "outputLocation": ( - "django.db.models.fields.TextField", - [], - {"null": "True", "db_column": "'outputLocation'"}, - ), - "replaces": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "null": "True", "db_column": "'replaces'"}, - ), - "supportedBy": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "null": "True", "db_column": "'supportedBy'"}, - ), - "uuid": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "primary_key": "True", "db_column": "'pk'"}, - ), - "verificationCommand": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "null": "True"}, - ), - }, - "fpr.commandclassification": { - "Meta": { - "object_name": "CommandClassification", - "db_table": "u'CommandClassification'", - }, - "classification": ( - "django.db.models.fields.TextField", - [], - {"null": "True", "db_column": "'classification'"}, - ), - "enabled": ( - "django.db.models.fields.IntegerField", - [], - {"default": "1", "null": "True", "db_column": "'enabled'"}, - ), - "lastmodified": ( - "django.db.models.fields.DateTimeField", - [], - {"db_column": "'lastModified'"}, - ), - "replaces": ( - "django.db.models.fields.CharField", - [], - {"max_length": "50", "null": "True", "db_column": "'replaces'"}, - ), - "uuid": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "primary_key": "True", "db_column": "'pk'"}, - ), - }, - "fpr.commandrelationship": { - "Meta": { - "object_name": "CommandRelationship", - "db_table": "u'CommandRelationship'", - }, - "command": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "null": "True"}, - ), - "commandClassification": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36"}, - ), - "enabled": ( - "django.db.models.fields.IntegerField", - [], - {"default": "1", "null": "True", "db_column": "'enabled'"}, - ), - "fileID": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "null": "True"}, - ), - "lastmodified": ( - "django.db.models.fields.DateTimeField", - [], - {"db_column": "'lastModified'"}, - ), - "replaces": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "null": "True"}, - ), - "uuid": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "primary_key": "True", "db_column": "'pk'"}, - ), - }, - "fpr.commandssupportedby": { - "Meta": { - "object_name": "CommandsSupportedBy", - "db_table": "u'CommandsSupportedBy'", - }, - "description": ( - "django.db.models.fields.TextField", - [], - {"null": "True", "db_column": "'description'"}, - ), - "enabled": ( - "django.db.models.fields.IntegerField", - [], - {"default": "1", "null": "True", "db_column": "'enabled'"}, - ), - "lastmodified": ( - "django.db.models.fields.DateTimeField", - [], - {"db_column": "'lastModified'"}, - ), - "replaces": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "null": "True", "db_column": "'replaces'"}, - ), - "uuid": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "primary_key": "True", "db_column": "'pk'"}, - ), - }, - "fpr.commandtype": { - "Meta": {"object_name": "CommandType", "db_table": "u'CommandType'"}, - "enabled": ( - "django.db.models.fields.IntegerField", - [], - {"default": "1", "null": "True", "db_column": "'enabled'"}, - ), - "lastmodified": ( - "django.db.models.fields.DateTimeField", - [], - {"db_column": "'lastModified'"}, - ), - "replaces": ( - "django.db.models.fields.CharField", - [], - {"max_length": "50", "null": "True", "db_column": "'replaces'"}, - ), - "type": ("django.db.models.fields.TextField", [], {"db_column": "'type'"}), - "uuid": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "primary_key": "True", "db_column": "'pk'"}, - ), - }, - "fpr.fileid": { - "Meta": {"object_name": "FileID", "db_table": "u'FileID'"}, - "description": ( - "django.db.models.fields.TextField", - [], - {"db_column": "'description'"}, - ), - "enabled": ( - "django.db.models.fields.IntegerField", - [], - {"default": "1", "null": "True", "db_column": "'enabled'"}, - ), - "fileidtype": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "null": "True", "db_column": "'fileidtype_id'"}, - ), - "lastmodified": ( - "django.db.models.fields.DateTimeField", - [], - {"db_column": "'lastModified'"}, - ), - "replaces": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "null": "True", "db_column": "'replaces'"}, - ), - "uuid": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "primary_key": "True", "db_column": "'pk'"}, - ), - "validaccessformat": ( - "django.db.models.fields.IntegerField", - [], - {"default": "0", "null": "True", "db_column": "'validAccessFormat'"}, - ), - "validpreservationformat": ( - "django.db.models.fields.IntegerField", - [], - { - "default": "0", - "null": "True", - "db_column": "'validPreservationFormat'", - }, - ), - }, - "fpr.fileidsbysingleid": { - "Meta": { - "object_name": "FileIDsBySingleID", - "db_table": "u'FileIDsBySingleID'", - }, - "enabled": ( - "django.db.models.fields.IntegerField", - [], - {"default": "1", "null": "True", "db_column": "'enabled'"}, - ), - "fileID": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "null": "True"}, - ), - "id": ("django.db.models.fields.TextField", [], {"db_column": "'id'"}), - "lastmodified": ( - "django.db.models.fields.DateTimeField", - [], - {"db_column": "'lastModified'"}, - ), - "replaces": ( - "django.db.models.fields.CharField", - [], - {"max_length": "50", "null": "True", "db_column": "'replaces'"}, - ), - "tool": ("django.db.models.fields.TextField", [], {"db_column": "'tool'"}), - "toolVersion": ( - "django.db.models.fields.TextField", - [], - {"null": "True", "db_column": "'toolVersion'"}, - ), - "uuid": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "primary_key": "True", "db_column": "'pk'"}, - ), - }, - "fpr.fileidtype": { - "Meta": {"object_name": "FileIDType", "db_table": "u'FileIDType'"}, - "description": ( - "django.db.models.fields.TextField", - [], - {"null": "True", "db_column": "'description'"}, - ), - "enabled": ( - "django.db.models.fields.IntegerField", - [], - {"default": "1", "null": "True", "db_column": "'enabled'"}, - ), - "lastmodified": ( - "django.db.models.fields.DateTimeField", - [], - {"db_column": "'lastModified'"}, - ), - "replaces": ( - "django.db.models.fields.CharField", - [], - {"max_length": "50", "null": "True", "db_column": "'replaces'"}, - ), - "uuid": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "primary_key": "True", "db_column": "'pk'"}, - ), - }, - } - - complete_apps = ["fpr"] diff --git a/src/dashboard/src/fpr/south_migrations/0002_api_v2.py b/src/dashboard/src/fpr/south_migrations/0002_api_v2.py deleted file mode 100644 index 603711fbc4..0000000000 --- a/src/dashboard/src/fpr/south_migrations/0002_api_v2.py +++ /dev/null @@ -1,1317 +0,0 @@ -from typing import Any - -from south.db import db -from south.v2 import SchemaMigration - - -class Migration(SchemaMigration): - def forwards(self, orm): - # Adding model 'FPRule' - db.create_table( - "fpr_fprule", - ( - ("id", self.gf("django.db.models.fields.AutoField")(primary_key=True)), - ( - "replaces", - self.gf("django.db.models.fields.related.ForeignKey")( - to=orm["fpr.FPRule"], to_field="uuid", null=True, blank=True - ), - ), - ( - "enabled", - self.gf("django.db.models.fields.BooleanField")(default=True), - ), - ( - "lastmodified", - self.gf("django.db.models.fields.DateTimeField")( - auto_now_add=True, blank=True - ), - ), - ( - "uuid", - self.gf("django.db.models.fields.CharField")( - unique=True, max_length=36, blank=True - ), - ), - ( - "purpose", - self.gf("django.db.models.fields.CharField")(max_length=32), - ), - ( - "command", - self.gf("django.db.models.fields.related.ForeignKey")( - to=orm["fpr.FPCommand"], to_field="uuid" - ), - ), - ( - "format", - self.gf("django.db.models.fields.related.ForeignKey")( - to=orm["fpr.FormatVersion"], to_field="uuid" - ), - ), - ( - "count_attempts", - self.gf("django.db.models.fields.IntegerField")(default=0), - ), - ( - "count_okay", - self.gf("django.db.models.fields.IntegerField")(default=0), - ), - ( - "count_not_okay", - self.gf("django.db.models.fields.IntegerField")(default=0), - ), - ), - ) - db.send_create_signal("fpr", ["FPRule"]) - - # Adding model 'FPTool' - db.create_table( - "fpr_fptool", - ( - ("id", self.gf("django.db.models.fields.AutoField")(primary_key=True)), - ( - "uuid", - self.gf("django.db.models.fields.CharField")( - unique=True, max_length=36, blank=True - ), - ), - ( - "description", - self.gf("django.db.models.fields.CharField")(max_length=256), - ), - ( - "version", - self.gf("django.db.models.fields.CharField")(max_length=64), - ), - ( - "enabled", - self.gf("django.db.models.fields.BooleanField")(default=True), - ), - ( - "slug", - self.gf("autoslug.fields.AutoSlugField")( - unique_with=(), max_length=50, populate_from="_slug" - ), - ), - ), - ) - db.send_create_signal("fpr", ["FPTool"]) - - # Adding model 'FormatVersion' - db.create_table( - "fpr_formatversion", - ( - ("id", self.gf("django.db.models.fields.AutoField")(primary_key=True)), - ( - "replaces", - self.gf("django.db.models.fields.related.ForeignKey")( - to=orm["fpr.FormatVersion"], - to_field="uuid", - null=True, - blank=True, - ), - ), - ( - "enabled", - self.gf("django.db.models.fields.BooleanField")(default=True), - ), - ( - "lastmodified", - self.gf("django.db.models.fields.DateTimeField")( - auto_now_add=True, blank=True - ), - ), - ( - "uuid", - self.gf("django.db.models.fields.CharField")( - unique=True, max_length=36, blank=True - ), - ), - ( - "format", - self.gf("django.db.models.fields.related.ForeignKey")( - related_name="version_set", - to_field="uuid", - null=True, - to=orm["fpr.Format"], - ), - ), - ( - "version", - self.gf("django.db.models.fields.CharField")( - max_length=10, null=True, blank=True - ), - ), - ( - "pronom_id", - self.gf("django.db.models.fields.CharField")( - max_length=32, null=True, blank=True - ), - ), - ( - "description", - self.gf("django.db.models.fields.CharField")( - max_length=128, null=True, blank=True - ), - ), - ( - "access_format", - self.gf("django.db.models.fields.BooleanField")(default=False), - ), - ( - "preservation_format", - self.gf("django.db.models.fields.BooleanField")(default=False), - ), - ( - "slug", - self.gf("autoslug.fields.AutoSlugField")( - unique_with=("format",), - max_length=50, - populate_from="description", - ), - ), - ), - ) - db.send_create_signal("fpr", ["FormatVersion"]) - - # Adding model 'IDRule' - db.create_table( - "fpr_idrule", - ( - ("id", self.gf("django.db.models.fields.AutoField")(primary_key=True)), - ( - "replaces", - self.gf("django.db.models.fields.related.ForeignKey")( - to=orm["fpr.IDRule"], to_field="uuid", null=True, blank=True - ), - ), - ( - "enabled", - self.gf("django.db.models.fields.BooleanField")(default=True), - ), - ( - "lastmodified", - self.gf("django.db.models.fields.DateTimeField")( - auto_now_add=True, blank=True - ), - ), - ( - "uuid", - self.gf("django.db.models.fields.CharField")( - unique=True, max_length=36, blank=True - ), - ), - ( - "command", - self.gf("django.db.models.fields.related.ForeignKey")( - to=orm["fpr.IDCommand"], to_field="uuid" - ), - ), - ( - "format", - self.gf("django.db.models.fields.related.ForeignKey")( - to=orm["fpr.FormatVersion"], to_field="uuid" - ), - ), - ("command_output", self.gf("django.db.models.fields.TextField")()), - ), - ) - db.send_create_signal("fpr", ["IDRule"]) - - # Adding model 'IDTool' - db.create_table( - "fpr_idtool", - ( - ("id", self.gf("django.db.models.fields.AutoField")(primary_key=True)), - ( - "uuid", - self.gf("django.db.models.fields.CharField")( - unique=True, max_length=36, blank=True - ), - ), - ( - "description", - self.gf("django.db.models.fields.CharField")(max_length=256), - ), - ( - "version", - self.gf("django.db.models.fields.CharField")(max_length=64), - ), - ( - "enabled", - self.gf("django.db.models.fields.BooleanField")(default=True), - ), - ( - "slug", - self.gf("autoslug.fields.AutoSlugField")( - unique_with=(), max_length=50, populate_from="_slug" - ), - ), - ), - ) - db.send_create_signal("fpr", ["IDTool"]) - - # Adding model 'IDCommand' - db.create_table( - "fpr_idcommand", - ( - ("id", self.gf("django.db.models.fields.AutoField")(primary_key=True)), - ( - "replaces", - self.gf("django.db.models.fields.related.ForeignKey")( - to=orm["fpr.IDCommand"], to_field="uuid", null=True, blank=True - ), - ), - ( - "enabled", - self.gf("django.db.models.fields.BooleanField")(default=True), - ), - ( - "lastmodified", - self.gf("django.db.models.fields.DateTimeField")( - auto_now_add=True, blank=True - ), - ), - ( - "uuid", - self.gf("django.db.models.fields.CharField")( - unique=True, max_length=36, blank=True - ), - ), - ( - "description", - self.gf("django.db.models.fields.CharField")(max_length=256), - ), - ("config", self.gf("django.db.models.fields.CharField")(max_length=4)), - ("script", self.gf("django.db.models.fields.TextField")()), - ( - "script_type", - self.gf("django.db.models.fields.CharField")(max_length=16), - ), - ( - "tool", - self.gf("django.db.models.fields.related.ForeignKey")( - to=orm["fpr.IDTool"], to_field="uuid", null=True, blank=True - ), - ), - ), - ) - db.send_create_signal("fpr", ["IDCommand"]) - - # Adding model 'FormatGroup' - db.create_table( - "fpr_formatgroup", - ( - ("id", self.gf("django.db.models.fields.AutoField")(primary_key=True)), - ( - "uuid", - self.gf("django.db.models.fields.CharField")( - unique=True, max_length=36, blank=True - ), - ), - ( - "description", - self.gf("django.db.models.fields.CharField")(max_length=128), - ), - ( - "slug", - self.gf("autoslug.fields.AutoSlugField")( - unique_with=(), max_length=50, populate_from="description" - ), - ), - ), - ) - db.send_create_signal("fpr", ["FormatGroup"]) - - # Adding model 'Format' - db.create_table( - "fpr_format", - ( - ("id", self.gf("django.db.models.fields.AutoField")(primary_key=True)), - ( - "uuid", - self.gf("django.db.models.fields.CharField")( - unique=True, max_length=36, blank=True - ), - ), - ( - "description", - self.gf("django.db.models.fields.CharField")(max_length=128), - ), - ( - "group", - self.gf("django.db.models.fields.related.ForeignKey")( - to=orm["fpr.FormatGroup"], to_field="uuid", null=True - ), - ), - ( - "slug", - self.gf("autoslug.fields.AutoSlugField")( - unique_with=(), max_length=50, populate_from="description" - ), - ), - ), - ) - db.send_create_signal("fpr", ["Format"]) - - # Adding model 'FPCommand' - db.create_table( - "fpr_fpcommand", - ( - ("id", self.gf("django.db.models.fields.AutoField")(primary_key=True)), - ( - "replaces", - self.gf("django.db.models.fields.related.ForeignKey")( - to=orm["fpr.FPCommand"], to_field="uuid", null=True, blank=True - ), - ), - ( - "enabled", - self.gf("django.db.models.fields.BooleanField")(default=True), - ), - ( - "lastmodified", - self.gf("django.db.models.fields.DateTimeField")( - auto_now_add=True, blank=True - ), - ), - ( - "uuid", - self.gf("django.db.models.fields.CharField")( - unique=True, max_length=36, blank=True - ), - ), - ( - "tool", - self.gf("django.db.models.fields.related.ForeignKey")( - to=orm["fpr.FPTool"], to_field="uuid", null=True - ), - ), - ( - "description", - self.gf("django.db.models.fields.CharField")(max_length=256), - ), - ("command", self.gf("django.db.models.fields.TextField")()), - ( - "script_type", - self.gf("django.db.models.fields.CharField")(max_length=16), - ), - ( - "output_location", - self.gf("django.db.models.fields.TextField")(null=True, blank=True), - ), - ( - "output_format", - self.gf("django.db.models.fields.related.ForeignKey")( - to=orm["fpr.FormatVersion"], - to_field="uuid", - null=True, - blank=True, - ), - ), - ( - "command_usage", - self.gf("django.db.models.fields.CharField")(max_length=16), - ), - ( - "verification_command", - self.gf("django.db.models.fields.related.ForeignKey")( - blank=True, - related_name="+", - to_field="uuid", - null=True, - to=orm["fpr.FPCommand"], - ), - ), - ( - "event_detail_command", - self.gf("django.db.models.fields.related.ForeignKey")( - blank=True, - related_name="+", - to_field="uuid", - null=True, - to=orm["fpr.FPCommand"], - ), - ), - ), - ) - db.send_create_signal("fpr", ["FPCommand"]) - - # Adding field 'FileID.format' - db.add_column( - "FileID", - "format", - self.gf("django.db.models.fields.related.ForeignKey")( - to=orm["fpr.FormatVersion"], to_field="uuid", null=True - ), - keep_default=False, - ) - - # Changing field 'FileIDsBySingleID.replaces' - db.alter_column( - "FileIDsBySingleID", - "replaces", - self.gf("django.db.models.fields.CharField")( - max_length=36, null=True, db_column="replaces" - ), - ) - - # Changing field 'CommandClassification.replaces' - db.alter_column( - "CommandClassification", - "replaces", - self.gf("django.db.models.fields.CharField")( - max_length=36, null=True, db_column="replaces" - ), - ) - - # Changing field 'FileIDType.replaces' - db.alter_column( - "FileIDType", - "replaces", - self.gf("django.db.models.fields.CharField")( - max_length=36, null=True, db_column="replaces" - ), - ) - - # Changing field 'CommandType.replaces' - db.alter_column( - "CommandType", - "replaces", - self.gf("django.db.models.fields.CharField")( - max_length=36, null=True, db_column="replaces" - ), - ) - - def backwards(self, orm): - # Deleting model 'FPRule' - db.delete_table("fpr_fprule") - - # Deleting model 'FPTool' - db.delete_table("fpr_fptool") - - # Deleting model 'FormatVersion' - db.delete_table("fpr_formatversion") - - # Deleting model 'IDRule' - db.delete_table("fpr_idrule") - - # Deleting model 'IDTool' - db.delete_table("fpr_idtool") - - # Deleting model 'IDCommand' - db.delete_table("fpr_idcommand") - - # Deleting model 'FormatGroup' - db.delete_table("fpr_formatgroup") - - # Deleting model 'Format' - db.delete_table("fpr_format") - - # Deleting model 'FPCommand' - db.delete_table("fpr_fpcommand") - - # Deleting field 'FileID.format' - db.delete_column("FileID", "format_id") - - # Changing field 'FileIDsBySingleID.replaces' - db.alter_column( - "FileIDsBySingleID", - "replaces", - self.gf("django.db.models.fields.CharField")( - max_length=50, null=True, db_column="replaces" - ), - ) - - # Changing field 'CommandClassification.replaces' - db.alter_column( - "CommandClassification", - "replaces", - self.gf("django.db.models.fields.CharField")( - max_length=50, null=True, db_column="replaces" - ), - ) - - # Changing field 'FileIDType.replaces' - db.alter_column( - "FileIDType", - "replaces", - self.gf("django.db.models.fields.CharField")( - max_length=50, null=True, db_column="replaces" - ), - ) - - # Changing field 'CommandType.replaces' - db.alter_column( - "CommandType", - "replaces", - self.gf("django.db.models.fields.CharField")( - max_length=50, null=True, db_column="replaces" - ), - ) - - models: dict[str, Any] = { - "fpr.agent": { - "Meta": {"object_name": "Agent", "db_table": "u'Agent'"}, - "agentIdentifierType": ( - "django.db.models.fields.CharField", - [], - {"max_length": "100"}, - ), - "agentIdentifierValue": ( - "django.db.models.fields.CharField", - [], - {"max_length": "100"}, - ), - "agentName": ( - "django.db.models.fields.CharField", - [], - {"max_length": "100"}, - ), - "agentType": ( - "django.db.models.fields.CharField", - [], - {"max_length": "100"}, - ), - "clientIP": ( - "django.db.models.fields.CharField", - [], - {"max_length": "100"}, - ), - "uuid": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "primary_key": "True", "db_column": "'uuid'"}, - ), - }, - "fpr.command": { - "Meta": {"object_name": "Command", "db_table": "u'Command'"}, - "command": ( - "django.db.models.fields.TextField", - [], - {"db_column": "'command'"}, - ), - "commandType": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36"}, - ), - "commandUsage": ( - "django.db.models.fields.CharField", - [], - {"max_length": "15"}, - ), - "description": ( - "django.db.models.fields.TextField", - [], - {"db_column": "'description'"}, - ), - "enabled": ( - "django.db.models.fields.IntegerField", - [], - {"default": "1", "null": "True", "db_column": "'enabled'"}, - ), - "eventDetailCommand": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "null": "True"}, - ), - "lastmodified": ( - "django.db.models.fields.DateTimeField", - [], - {"null": "True", "db_column": "'lastModified'"}, - ), - "outputFileFormat": ( - "django.db.models.fields.TextField", - [], - {"null": "True", "db_column": "'outputFileFormat'"}, - ), - "outputLocation": ( - "django.db.models.fields.TextField", - [], - {"null": "True", "db_column": "'outputLocation'"}, - ), - "replaces": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "null": "True", "db_column": "'replaces'"}, - ), - "supportedBy": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "null": "True", "db_column": "'supportedBy'"}, - ), - "uuid": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "primary_key": "True", "db_column": "'pk'"}, - ), - "verificationCommand": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "null": "True"}, - ), - }, - "fpr.commandclassification": { - "Meta": { - "object_name": "CommandClassification", - "db_table": "u'CommandClassification'", - }, - "classification": ( - "django.db.models.fields.TextField", - [], - {"null": "True", "db_column": "'classification'"}, - ), - "enabled": ( - "django.db.models.fields.IntegerField", - [], - {"default": "1", "null": "True", "db_column": "'enabled'"}, - ), - "lastmodified": ( - "django.db.models.fields.DateTimeField", - [], - {"db_column": "'lastModified'"}, - ), - "replaces": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "null": "True", "db_column": "'replaces'"}, - ), - "uuid": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "primary_key": "True", "db_column": "'pk'"}, - ), - }, - "fpr.commandrelationship": { - "Meta": { - "object_name": "CommandRelationship", - "db_table": "u'CommandRelationship'", - }, - "command": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "null": "True"}, - ), - "commandClassification": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36"}, - ), - "enabled": ( - "django.db.models.fields.IntegerField", - [], - {"default": "1", "null": "True", "db_column": "'enabled'"}, - ), - "fileID": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "null": "True"}, - ), - "lastmodified": ( - "django.db.models.fields.DateTimeField", - [], - {"db_column": "'lastModified'"}, - ), - "replaces": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "null": "True"}, - ), - "uuid": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "primary_key": "True", "db_column": "'pk'"}, - ), - }, - "fpr.commandssupportedby": { - "Meta": { - "object_name": "CommandsSupportedBy", - "db_table": "u'CommandsSupportedBy'", - }, - "description": ( - "django.db.models.fields.TextField", - [], - {"null": "True", "db_column": "'description'"}, - ), - "enabled": ( - "django.db.models.fields.IntegerField", - [], - {"default": "1", "null": "True", "db_column": "'enabled'"}, - ), - "lastmodified": ( - "django.db.models.fields.DateTimeField", - [], - {"db_column": "'lastModified'"}, - ), - "replaces": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "null": "True", "db_column": "'replaces'"}, - ), - "uuid": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "primary_key": "True", "db_column": "'pk'"}, - ), - }, - "fpr.commandtype": { - "Meta": {"object_name": "CommandType", "db_table": "u'CommandType'"}, - "enabled": ( - "django.db.models.fields.IntegerField", - [], - {"default": "1", "null": "True", "db_column": "'enabled'"}, - ), - "lastmodified": ( - "django.db.models.fields.DateTimeField", - [], - {"db_column": "'lastModified'"}, - ), - "replaces": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "null": "True", "db_column": "'replaces'"}, - ), - "type": ("django.db.models.fields.TextField", [], {"db_column": "'type'"}), - "uuid": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "primary_key": "True", "db_column": "'pk'"}, - ), - }, - "fpr.fileid": { - "Meta": {"object_name": "FileID", "db_table": "u'FileID'"}, - "description": ( - "django.db.models.fields.TextField", - [], - {"db_column": "'description'"}, - ), - "enabled": ( - "django.db.models.fields.IntegerField", - [], - {"default": "1", "null": "True", "db_column": "'enabled'"}, - ), - "fileidtype": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "null": "True", "db_column": "'fileidtype_id'"}, - ), - "format": ( - "django.db.models.fields.related.ForeignKey", - [], - { - "to": "orm['fpr.FormatVersion']", - "to_field": "'uuid'", - "null": "True", - }, - ), - "lastmodified": ( - "django.db.models.fields.DateTimeField", - [], - {"db_column": "'lastModified'"}, - ), - "replaces": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "null": "True", "db_column": "'replaces'"}, - ), - "uuid": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "primary_key": "True", "db_column": "'pk'"}, - ), - "validaccessformat": ( - "django.db.models.fields.IntegerField", - [], - {"default": "0", "null": "True", "db_column": "'validAccessFormat'"}, - ), - "validpreservationformat": ( - "django.db.models.fields.IntegerField", - [], - { - "default": "0", - "null": "True", - "db_column": "'validPreservationFormat'", - }, - ), - }, - "fpr.fileidsbysingleid": { - "Meta": { - "object_name": "FileIDsBySingleID", - "db_table": "u'FileIDsBySingleID'", - }, - "enabled": ( - "django.db.models.fields.IntegerField", - [], - {"default": "1", "null": "True", "db_column": "'enabled'"}, - ), - "fileID": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "null": "True"}, - ), - "id": ("django.db.models.fields.TextField", [], {"db_column": "'id'"}), - "lastmodified": ( - "django.db.models.fields.DateTimeField", - [], - {"db_column": "'lastModified'"}, - ), - "replaces": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "null": "True", "db_column": "'replaces'"}, - ), - "tool": ("django.db.models.fields.TextField", [], {"db_column": "'tool'"}), - "toolVersion": ( - "django.db.models.fields.TextField", - [], - {"null": "True", "db_column": "'toolVersion'"}, - ), - "uuid": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "primary_key": "True", "db_column": "'pk'"}, - ), - }, - "fpr.fileidtype": { - "Meta": {"object_name": "FileIDType", "db_table": "u'FileIDType'"}, - "description": ( - "django.db.models.fields.TextField", - [], - {"null": "True", "db_column": "'description'"}, - ), - "enabled": ( - "django.db.models.fields.IntegerField", - [], - {"default": "1", "null": "True", "db_column": "'enabled'"}, - ), - "lastmodified": ( - "django.db.models.fields.DateTimeField", - [], - {"db_column": "'lastModified'"}, - ), - "replaces": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "null": "True", "db_column": "'replaces'"}, - ), - "uuid": ( - "django.db.models.fields.CharField", - [], - {"max_length": "36", "primary_key": "True", "db_column": "'pk'"}, - ), - }, - "fpr.format": { - "Meta": {"ordering": "['group', 'description']", "object_name": "Format"}, - "description": ( - "django.db.models.fields.CharField", - [], - {"max_length": "128"}, - ), - "group": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['fpr.FormatGroup']", "to_field": "'uuid'", "null": "True"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "slug": ( - "autoslug.fields.AutoSlugField", - [], - { - "unique_with": "()", - "max_length": "50", - "populate_from": "'description'", - }, - ), - "uuid": ( - "django.db.models.fields.CharField", - [], - {"unique": "True", "max_length": "36", "blank": "True"}, - ), - }, - "fpr.formatgroup": { - "Meta": {"ordering": "['description']", "object_name": "FormatGroup"}, - "description": ( - "django.db.models.fields.CharField", - [], - {"max_length": "128"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "slug": ( - "autoslug.fields.AutoSlugField", - [], - { - "unique_with": "()", - "max_length": "50", - "populate_from": "'description'", - }, - ), - "uuid": ( - "django.db.models.fields.CharField", - [], - {"unique": "True", "max_length": "36", "blank": "True"}, - ), - }, - "fpr.formatversion": { - "Meta": { - "ordering": "['format', 'description']", - "object_name": "FormatVersion", - }, - "access_format": ( - "django.db.models.fields.BooleanField", - [], - {"default": "False"}, - ), - "description": ( - "django.db.models.fields.CharField", - [], - {"max_length": "128", "null": "True", "blank": "True"}, - ), - "enabled": ( - "django.db.models.fields.BooleanField", - [], - {"default": "True"}, - ), - "format": ( - "django.db.models.fields.related.ForeignKey", - [], - { - "related_name": "'version_set'", - "to_field": "'uuid'", - "null": "True", - "to": "orm['fpr.Format']", - }, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "lastmodified": ( - "django.db.models.fields.DateTimeField", - [], - {"auto_now_add": "True", "blank": "True"}, - ), - "preservation_format": ( - "django.db.models.fields.BooleanField", - [], - {"default": "False"}, - ), - "pronom_id": ( - "django.db.models.fields.CharField", - [], - {"max_length": "32", "null": "True", "blank": "True"}, - ), - "replaces": ( - "django.db.models.fields.related.ForeignKey", - [], - { - "to": "orm['fpr.FormatVersion']", - "to_field": "'uuid'", - "null": "True", - "blank": "True", - }, - ), - "slug": ( - "autoslug.fields.AutoSlugField", - [], - { - "unique_with": "('format',)", - "max_length": "50", - "populate_from": "'description'", - }, - ), - "uuid": ( - "django.db.models.fields.CharField", - [], - {"unique": "True", "max_length": "36", "blank": "True"}, - ), - "version": ( - "django.db.models.fields.CharField", - [], - {"max_length": "10", "null": "True", "blank": "True"}, - ), - }, - "fpr.fpcommand": { - "Meta": {"ordering": "['description']", "object_name": "FPCommand"}, - "command": ("django.db.models.fields.TextField", [], {}), - "command_usage": ( - "django.db.models.fields.CharField", - [], - {"max_length": "16"}, - ), - "description": ( - "django.db.models.fields.CharField", - [], - {"max_length": "256"}, - ), - "enabled": ( - "django.db.models.fields.BooleanField", - [], - {"default": "True"}, - ), - "event_detail_command": ( - "django.db.models.fields.related.ForeignKey", - [], - { - "blank": "True", - "related_name": "'+'", - "to_field": "'uuid'", - "null": "True", - "to": "orm['fpr.FPCommand']", - }, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "lastmodified": ( - "django.db.models.fields.DateTimeField", - [], - {"auto_now_add": "True", "blank": "True"}, - ), - "output_format": ( - "django.db.models.fields.related.ForeignKey", - [], - { - "to": "orm['fpr.FormatVersion']", - "to_field": "'uuid'", - "null": "True", - "blank": "True", - }, - ), - "output_location": ( - "django.db.models.fields.TextField", - [], - {"null": "True", "blank": "True"}, - ), - "replaces": ( - "django.db.models.fields.related.ForeignKey", - [], - { - "to": "orm['fpr.FPCommand']", - "to_field": "'uuid'", - "null": "True", - "blank": "True", - }, - ), - "script_type": ( - "django.db.models.fields.CharField", - [], - {"max_length": "16"}, - ), - "tool": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['fpr.FPTool']", "to_field": "'uuid'", "null": "True"}, - ), - "uuid": ( - "django.db.models.fields.CharField", - [], - {"unique": "True", "max_length": "36", "blank": "True"}, - ), - "verification_command": ( - "django.db.models.fields.related.ForeignKey", - [], - { - "blank": "True", - "related_name": "'+'", - "to_field": "'uuid'", - "null": "True", - "to": "orm['fpr.FPCommand']", - }, - ), - }, - "fpr.fprule": { - "Meta": {"object_name": "FPRule"}, - "command": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['fpr.FPCommand']", "to_field": "'uuid'"}, - ), - "count_attempts": ( - "django.db.models.fields.IntegerField", - [], - {"default": "0"}, - ), - "count_not_okay": ( - "django.db.models.fields.IntegerField", - [], - {"default": "0"}, - ), - "count_okay": ( - "django.db.models.fields.IntegerField", - [], - {"default": "0"}, - ), - "enabled": ( - "django.db.models.fields.BooleanField", - [], - {"default": "True"}, - ), - "format": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['fpr.FormatVersion']", "to_field": "'uuid'"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "lastmodified": ( - "django.db.models.fields.DateTimeField", - [], - {"auto_now_add": "True", "blank": "True"}, - ), - "purpose": ("django.db.models.fields.CharField", [], {"max_length": "32"}), - "replaces": ( - "django.db.models.fields.related.ForeignKey", - [], - { - "to": "orm['fpr.FPRule']", - "to_field": "'uuid'", - "null": "True", - "blank": "True", - }, - ), - "uuid": ( - "django.db.models.fields.CharField", - [], - {"unique": "True", "max_length": "36", "blank": "True"}, - ), - }, - "fpr.fptool": { - "Meta": {"object_name": "FPTool"}, - "description": ( - "django.db.models.fields.CharField", - [], - {"max_length": "256"}, - ), - "enabled": ( - "django.db.models.fields.BooleanField", - [], - {"default": "True"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "slug": ( - "autoslug.fields.AutoSlugField", - [], - {"unique_with": "()", "max_length": "50", "populate_from": "'_slug'"}, - ), - "uuid": ( - "django.db.models.fields.CharField", - [], - {"unique": "True", "max_length": "36", "blank": "True"}, - ), - "version": ("django.db.models.fields.CharField", [], {"max_length": "64"}), - }, - "fpr.idcommand": { - "Meta": {"ordering": "['description']", "object_name": "IDCommand"}, - "config": ("django.db.models.fields.CharField", [], {"max_length": "4"}), - "description": ( - "django.db.models.fields.CharField", - [], - {"max_length": "256"}, - ), - "enabled": ( - "django.db.models.fields.BooleanField", - [], - {"default": "True"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "lastmodified": ( - "django.db.models.fields.DateTimeField", - [], - {"auto_now_add": "True", "blank": "True"}, - ), - "replaces": ( - "django.db.models.fields.related.ForeignKey", - [], - { - "to": "orm['fpr.IDCommand']", - "to_field": "'uuid'", - "null": "True", - "blank": "True", - }, - ), - "script": ("django.db.models.fields.TextField", [], {}), - "script_type": ( - "django.db.models.fields.CharField", - [], - {"max_length": "16"}, - ), - "tool": ( - "django.db.models.fields.related.ForeignKey", - [], - { - "to": "orm['fpr.IDTool']", - "to_field": "'uuid'", - "null": "True", - "blank": "True", - }, - ), - "uuid": ( - "django.db.models.fields.CharField", - [], - {"unique": "True", "max_length": "36", "blank": "True"}, - ), - }, - "fpr.idrule": { - "Meta": {"object_name": "IDRule"}, - "command": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['fpr.IDCommand']", "to_field": "'uuid'"}, - ), - "command_output": ("django.db.models.fields.TextField", [], {}), - "enabled": ( - "django.db.models.fields.BooleanField", - [], - {"default": "True"}, - ), - "format": ( - "django.db.models.fields.related.ForeignKey", - [], - {"to": "orm['fpr.FormatVersion']", "to_field": "'uuid'"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "lastmodified": ( - "django.db.models.fields.DateTimeField", - [], - {"auto_now_add": "True", "blank": "True"}, - ), - "replaces": ( - "django.db.models.fields.related.ForeignKey", - [], - { - "to": "orm['fpr.IDRule']", - "to_field": "'uuid'", - "null": "True", - "blank": "True", - }, - ), - "uuid": ( - "django.db.models.fields.CharField", - [], - {"unique": "True", "max_length": "36", "blank": "True"}, - ), - }, - "fpr.idtool": { - "Meta": {"object_name": "IDTool"}, - "description": ( - "django.db.models.fields.CharField", - [], - {"max_length": "256"}, - ), - "enabled": ( - "django.db.models.fields.BooleanField", - [], - {"default": "True"}, - ), - "id": ("django.db.models.fields.AutoField", [], {"primary_key": "True"}), - "slug": ( - "autoslug.fields.AutoSlugField", - [], - {"unique_with": "()", "max_length": "50", "populate_from": "'_slug'"}, - ), - "uuid": ( - "django.db.models.fields.CharField", - [], - {"unique": "True", "max_length": "36", "blank": "True"}, - ), - "version": ("django.db.models.fields.CharField", [], {"max_length": "64"}), - }, - } - - complete_apps = ["fpr"] diff --git a/src/dashboard/src/fpr/south_migrations/__init__.py b/src/dashboard/src/fpr/south_migrations/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/dashboard/src/fpr/south_migrations/rawdump.sql b/src/dashboard/src/fpr/south_migrations/rawdump.sql deleted file mode 100644 index a985ea3eb6..0000000000 --- a/src/dashboard/src/fpr/south_migrations/rawdump.sql +++ /dev/null @@ -1,970 +0,0 @@ -LOCK TABLES `CommandType` WRITE; -/*!40000 ALTER TABLE `CommandType` DISABLE KEYS */; -INSERT INTO `CommandType` (`pk`, `type`, `replaces`, `lastModified`) VALUES ('a5fa09c6-9a8d-40b9-aee2-2641160f969e','bashScript',NULL,'2012-10-02 00:24:58'); -INSERT INTO `CommandType` (`pk`, `type`, `replaces`, `lastModified`) VALUES ('ee6869f7-3ac0-44ed-a5ca-50f0f81cd7c1','pythonScript',NULL,'2012-10-02 00:24:58'); -INSERT INTO `CommandType` (`pk`, `type`, `replaces`, `lastModified`) VALUES ('f3f2dae8-54ed-40b4-8f20-cffb249262cf','command',NULL,'2012-10-02 00:24:58'); -/*!40000 ALTER TABLE `CommandType` ENABLE KEYS */; -UNLOCK TABLES; - -SET FOREIGN_KEY_CHECKS=0; -LOCK TABLES `Command` WRITE; -/*!40000 ALTER TABLE `Command` DISABLE KEYS */; -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('03f67b09-a8e7-44e2-b876-5786d7da09c7','eventDetail','a5fa09c6-9a8d-40b9-aee2-2641160f969e',NULL,'echo program=\\\"ffmpeg\\\"\\; version=\\\"`ffmpeg 2>&1 | grep --ignore-case \"FFmpeg version\"`\\\"','',NULL,'Get event detail text for ffmpeg extraction','ca278b07-8137-4a75-b84f-9b10994ed006','',NULL,'2012-12-19 01:54:26',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('0889b85d-e891-4d18-8e89-33b02783ba7a','eventDetail','a5fa09c6-9a8d-40b9-aee2-2641160f969e',NULL,'echo program=\\\"openOffice\\\"\\; version=\\\"\\\" ','',NULL,'openOffice event detail','ca278b07-8137-4a75-b84f-9b10994ed006','',NULL,'2012-10-02 03:24:59',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('0fd7935a-ed0d-4f67-aa25-1b44684f6aca','eventDetail','a5fa09c6-9a8d-40b9-aee2-2641160f969e',NULL,'echo program=\\\"convert\\\"\\; version=\\\"`convert -version | grep Version:`\\\"','',NULL,'convert event detail','ca278b07-8137-4a75-b84f-9b10994ed006','',NULL,'2012-10-02 03:24:59',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('1628571b-c2cd-4822-afdb-53561400c7c4','command','f3f2dae8-54ed-40b4-8f20-cffb249262cf','a9111dc0-edc9-47f8-85e5-ad4013971361','convert \"%fileFullName%\" -thumbnail 100x100 -layers merge\n \"%outputDirectory%%postfix%.jpg\"','%outputDirectory%%postfix%.jpg','0fd7935a-ed0d-4f67-aa25-1b44684f6aca','Transcoding to jpg thumbnail with convert','ca278b07-8137-4a75-b84f-9b10994ed006','JPEG File Interchange Format',NULL,'2012-10-02 03:24:59',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('1c9728c0-16d3-4db0-81c3-7a51068caa1c','command','a5fa09c6-9a8d-40b9-aee2-2641160f969e','67432cf4-fd33-4943-a1e7-4b4a8c27bb1d','mkdir \"%outputDirectory%\" && readpst -r \"%inputFile%\" -o \"%outputDirectory%\"','%outputDirectory%','42e7fdc3-42c6-4715-b79a-e900df916cab','Extracting pst file','ca278b07-8137-4a75-b84f-9b10994ed006','',NULL,'2012-10-02 03:24:59',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('1db2deea-01dd-43e5-9f27-dc9ed02acdfe','eventDetail','a5fa09c6-9a8d-40b9-aee2-2641160f969e',NULL,'echo program=\\\"inkscape\\\"\\; version=\\\"`inkscape -V`\\\" ','',NULL,'inkscape event detail','ca278b07-8137-4a75-b84f-9b10994ed006','',NULL,'2012-10-02 03:24:59',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('299390fd-24f2-4ed5-9bb6-e270b9e2f64f','command','f3f2dae8-54ed-40b4-8f20-cffb249262cf',NULL,'7z x -bd -o\"%outputDirectory%\" \"%inputFile%\"','%outputDirectory%','914fe3e5-fa45-47c6-858d-e11bc71f5b76','Extracting 7zip compatable file.','ca278b07-8137-4a75-b84f-9b10994ed006','',NULL,'2012-10-02 03:24:59',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('42e7fdc3-42c6-4715-b79a-e900df916cab','eventDetail','a5fa09c6-9a8d-40b9-aee2-2641160f969e',NULL,'echo program=\\\"readpst\\\"\\; version=\\\"`readpst -V`\\\"','',NULL,'readpst event detail','ca278b07-8137-4a75-b84f-9b10994ed006','',NULL,'2012-10-02 03:24:59',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('45a2f264-37d7-4881-b28c-25d628bf2823','eventDetail','a5fa09c6-9a8d-40b9-aee2-2641160f969e',NULL,'echo program=\\\"Ghostscript\\\"\\; version=\\\"`gs --version`\\\" ','',NULL,'Ghostscript event detail','ca278b07-8137-4a75-b84f-9b10994ed006','',NULL,'2012-10-02 03:24:59',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('520f976f-476d-4ec6-be1c-7c448c5c074d','command','a5fa09c6-9a8d-40b9-aee2-2641160f969e','a9111dc0-edc9-47f8-85e5-ad4013971361','ffmpeg -i \"%fileFullName%\" -ac 2 -ab 192000 \"%outputDirectory%%prefix%%fileName%%postfix%.mp3\"','%outputDirectory%%prefix%%fileName%%postfix%.mp3','03f67b09-a8e7-44e2-b876-5786d7da09c7','Transcoding to mp3 with ffmpeg','ca278b07-8137-4a75-b84f-9b10994ed006','MPEG 1/2 Audio Layer 3',NULL,'2012-12-19 01:54:26',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('53d34372-8805-4adf-b940-6c05b835a94f','command','a5fa09c6-9a8d-40b9-aee2-2641160f969e','a9111dc0-edc9-47f8-85e5-ad4013971361','outputExtension=\"pdf\"\nddirname=\"`dirname \"%fileFullName%\"`\"\ndbasename=\"`basename \"%fileFullName%\"`\" \ncd \"$ddirname\"\noutputFile=\"%outputDirectory%%prefix%%fileName%%postfix%.${outputExtension}\"\n\nflock -x /var/lock/documentConversion.lock -c \"soffice --nodefault --nologo --headless --convert-to $outputExtension \\\"${dbasename}\\\"\"\necho The exit code was $?\nset -e\n\necho mv \"%fileDirectory%%fileName%.${outputExtension}\" \"$outputFile\"\nmv \"%fileDirectory%%fileName%.${outputExtension}\" \"$outputFile\"\n','%outputDirectory%%prefix%%fileName%%postfix%.pdf','0889b85d-e891-4d18-8e89-33b02783ba7a','Transcoding to pdf with openOffice','ca278b07-8137-4a75-b84f-9b10994ed006','Acrobat PDF/A - Portable Document Format',NULL,'2012-10-02 03:24:59',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('5c319663-42f6-4a46-b957-f730c5f3ae88','eventDetail','f3f2dae8-54ed-40b4-8f20-cffb249262cf',NULL,'echo \"/usr/lib/archivematica/transcoder/transcoderScripts/\" \"%fileFullName%\" \"%outputDirectory%%prefix%%fileName%%postfix%.mbox\"','',NULL,'Transcoding maildir to mbox event detail','ca278b07-8137-4a75-b84f-9b10994ed006','',NULL,'2012-10-02 03:24:59',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('64c450b4-135c-46d1-a9aa-3f9b15671677','command','a5fa09c6-9a8d-40b9-aee2-2641160f969e','a9111dc0-edc9-47f8-85e5-ad4013971361','sudo /usr/bin/inkscape \"%fileFullName%\" --export-plain-svg=\"%outputDirectory%%prefix%%fileName%%postfix%.svg\"\n sudo chmod 777 \"%outputDirectory%%prefix%%fileName%%postfix%.svg\"','%outputDirectory%%prefix%%fileName%%postfix%.svg','1db2deea-01dd-43e5-9f27-dc9ed02acdfe','Transcoding to plain svg with inkscape','ca278b07-8137-4a75-b84f-9b10994ed006','Scalable Vector Graphics',NULL,'2012-10-02 03:24:59',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('665e6bf4-0c6d-432a-a0c6-04050e1cfae5','command','a5fa09c6-9a8d-40b9-aee2-2641160f969e',NULL,'exitCode=0\nfilesFound=0\nfunction checkDirectory {\n cd \"$1\"\n for f in *; do \n if [ -d \"$f\" ] ; then\n checkDirectory \"$f\" || exitCode=1\n else\n if [ -s \"$f\" ]; then\n filesFound=1\n else\n echo \"0 byte file: $f\"\n exitCode=2\n fi\n fi\n done\n}\n\ncheckDirectory \"%outputLocation%\"\nif [ $filesFound -eq 0 ] ; then\n exit 3\nelse\n exit $exitCode\nfi','',NULL,'Standard directory verification command','ca278b07-8137-4a75-b84f-9b10994ed006','',NULL,'2012-10-02 03:24:59',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('67432cf4-fd33-4943-a1e7-4b4a8c27bb1d','verification','ee6869f7-3ac0-44ed-a5ca-50f0f81cd7c1',NULL,'#!/usr/bin/python\n#\n\nimport os\ndirectory = \"%outputLocation%\"\nextension = \".mbox\"\n\ndef appendExtensionToFilesWithNoExtension(directory, extension, baseDirectory=\"\"):\n for dirname, dirnames, filenames in os.walk(directory):\n for filename in filenames:\n if filename.rfind(\".\") == -1:\n newName = os.path.join(os.path.dirname(filename), \"0-\" + os.path.basename(filename)) + extension\n n=1\n while os.path.exists(os.path.join(dirname, newName)):\n newName = os.path.join(os.path.dirname(filename), \"0-\" + os.path.basename(filename)) + n.__str__() + extension\n n+=1\n print \"Renaming: \", filename, \" -> \" + newName\n os.rename(os.path.join(dirname, filename), os.path.join(dirname, newName))\n\nappendExtensionToFilesWithNoExtension(directory, extension, baseDirectory=directory)\n','',NULL,'append .mbox extension to files without extensions','ca278b07-8137-4a75-b84f-9b10994ed006','',NULL,'2012-10-02 03:24:59',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('6957fdac-a1ed-470f-89f7-fb00be42ea13','command','f3f2dae8-54ed-40b4-8f20-cffb249262cf','a9111dc0-edc9-47f8-85e5-ad4013971361','convert \"%fileFullName%\" -sampling-factor 4:4:4 -quality 60 -layers merge\n \"%outputDirectory%%prefix%%fileName%%postfix%.jpg\"','%outputDirectory%%prefix%%fileName%%postfix%.jpg','0fd7935a-ed0d-4f67-aa25-1b44684f6aca','Transcoding to jpg with convert','ca278b07-8137-4a75-b84f-9b10994ed006','JPEG File Interchange Format',NULL,'2012-10-02 03:24:59',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('69b4ac0a-6e3a-4eaa-bf85-12fb5489a41d','command','a5fa09c6-9a8d-40b9-aee2-2641160f969e','a9111dc0-edc9-47f8-85e5-ad4013971361','outputExtension=\"odp\"\nddirname=\"`dirname \"%fileFullName%\"`\"\ndbasename=\"`basename \"%fileFullName%\"`\" \ncd \"$ddirname\"\noutputFile=\"%outputDirectory%%prefix%%fileName%%postfix%.${outputExtension}\"\n\nflock -x /var/lock/documentConversion.lock -c \"soffice --nodefault --nologo --headless --convert-to $outputExtension \\\"${dbasename}\\\"\"\necho The exit code was $?\nset -e\necho mv \"%fileDirectory%%fileName%.${outputExtension}\" \"$outputFile\"\nmv \"%fileDirectory%%fileName%.${outputExtension}\" \"$outputFile\"\n','%outputDirectory%%prefix%%fileName%%postfix%.odp','0889b85d-e891-4d18-8e89-33b02783ba7a','Transcoding to ODP with openOffice','ca278b07-8137-4a75-b84f-9b10994ed006','OpenDocument Presentation',NULL,'2012-10-02 03:24:59',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('70547204-50b1-4e45-8d36-276fe4510728','command','a5fa09c6-9a8d-40b9-aee2-2641160f969e','a9111dc0-edc9-47f8-85e5-ad4013971361','outputExtension=\"ods\"\nddirname=\"`dirname \"%fileFullName%\"`\"\ndbasename=\"`basename \"%fileFullName%\"`\" \ncd \"$ddirname\"\noutputFile=\"%outputDirectory%%prefix%%fileName%%postfix%.${outputExtension}\"\n\nflock -x /var/lock/documentConversion.lock -c \"soffice --nodefault --nologo --headless --convert-to $outputExtension \\\"${dbasename}\\\"\"\necho The exit code was $?\nset -e\n\necho mv \"%fileDirectory%%fileName%.${outputExtension}\" \"$outputFile\"\nmv \"%fileDirectory%%fileName%.${outputExtension}\" \"$outputFile\"\n','%outputDirectory%%prefix%%fileName%%postfix%.ods','0889b85d-e891-4d18-8e89-33b02783ba7a','Transcoding to ODS with openOffice','ca278b07-8137-4a75-b84f-9b10994ed006','OpenDocument Spreadsheet',NULL,'2012-10-02 03:24:59',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('76fd899e-cd5a-4da3-8752-45c43fc18656','command','a5fa09c6-9a8d-40b9-aee2-2641160f969e','a9111dc0-edc9-47f8-85e5-ad4013971361','#!/bin/bash\n\ninputFile=\"%fileFullName%\"\noutputFile=\"%outputDirectory%%prefix%%fileName%%postfix%.mkv\"\naudioCodec=\"pcm_s16le\"\nvideoCodec=\"ffv1\"\n\ncommand=\"ffmpeg -vsync passthrough -i \\\"${inputFile}\\\" -map 0:v -map 0:a \"\ncommand=\"${command} -vcodec ${videoCodec} -g 1 \"\ncommand=\"${command} -acodec ${audioCodec}\"\n\n\ncommand=\"${command} ${outputFile}\"\n\necho $command\neval $command\n','%outputDirectory%%prefix%%fileName%%postfix%.mkv','77f73d63-7d82-4b61-8dec-6626c3dc224a','Transcoding to mkv with ffmpeg','ca278b07-8137-4a75-b84f-9b10994ed006','FF Video Codec 1 / Pulse Code Modulation in Matroska Media Container',NULL,'2012-12-19 01:54:26',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('77f73d63-7d82-4b61-8dec-6626c3dc224a','eventDetail','a5fa09c6-9a8d-40b9-aee2-2641160f969e',NULL,'echo program=\\\"ffmpeg\\\"\\; version=\\\"`ffmpeg 2>&1 | grep --ignore-case \"FFmpeg version\"`\\\"','',NULL,'Get event detail text for ffmpeg extraction','ca278b07-8137-4a75-b84f-9b10994ed006','',NULL,'2012-12-19 01:54:26',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('814febd9-945b-4580-8381-9b146fd042d9','command','f3f2dae8-54ed-40b4-8f20-cffb249262cf',NULL,'cp -R \"/var/archivematica/sharedDirectory/sharedMicroServiceTasksConfigs/transcoder/defaultIcons/default.jpg\" \"%outputDirectory%%postfix%.jpg\"','%outputDirectory%%postfix%.jpg',NULL,'Using default thumbnail.','ca278b07-8137-4a75-b84f-9b10994ed006','JPEG File Interchange Format',NULL,'2012-10-02 03:24:59',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('90db809f-268c-4b26-988b-b44c103ac655','command','f3f2dae8-54ed-40b4-8f20-cffb249262cf','ef3ea000-0c3c-4cae-adc2-aa2a6ccbffce','\"/usr/lib/archivematica/transcoder/transcoderScripts/archivematicaMaildirToMbox.py\" \"%fileFullName%\" \"%outputDirectory%%prefix%%fileName%%postfix%.mbox\"','%outputDirectory%%prefix%%fileName%%postfix%.mbox','5c319663-42f6-4a46-b957-f730c5f3ae88','Transcoding maildir to mbox','ca278b07-8137-4a75-b84f-9b10994ed006','MBox',NULL,'2012-10-02 03:24:59',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('914fe3e5-fa45-47c6-858d-e11bc71f5b76','eventDetail','a5fa09c6-9a8d-40b9-aee2-2641160f969e',NULL,'echo program=\\\"7z\\\"\\; version=\\\"`7z | grep Version`\\\"','',NULL,'Get event detail text for 7z extraction','ca278b07-8137-4a75-b84f-9b10994ed006','',NULL,'2012-10-02 03:24:59',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('9dc10fcb-5809-4c0b-917a-02517ef4d1c6','command','a5fa09c6-9a8d-40b9-aee2-2641160f969e','a9111dc0-edc9-47f8-85e5-ad4013971361','ffmpeg -i \"%fileFullName%\" \"%outputDirectory%%prefix%%fileName%%postfix%.wav\"','%outputDirectory%%prefix%%fileName%%postfix%.wav','03f67b09-a8e7-44e2-b876-5786d7da09c7','Transcoding to wav with ffmpeg','ca278b07-8137-4a75-b84f-9b10994ed006','Waveform Audio',NULL,'2012-12-19 01:54:26',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('a1921355-58c2-4d6f-9535-a6d227a0be16','command','f3f2dae8-54ed-40b4-8f20-cffb249262cf','a9111dc0-edc9-47f8-85e5-ad4013971361','convert \"%fileFullName%\" -resize 70% \"%outputDirectory%%prefix%%fileName%%postfix%.jpg\"','%outputDirectory%%prefix%%fileName%%postfix%.jpg','0fd7935a-ed0d-4f67-aa25-1b44684f6aca','Transcoding to jpg with convert','ca278b07-8137-4a75-b84f-9b10994ed006','JPEG File Interchange Format',NULL,'2012-10-02 03:24:59',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('a34ddc9b-c922-4bb6-8037-bbe713332175','command','f3f2dae8-54ed-40b4-8f20-cffb249262cf','a9111dc0-edc9-47f8-85e5-ad4013971361','convert \"%fileFullName%\" +compress \"%outputDirectory%%prefix%%fileName%%postfix%.tif\"','%outputDirectory%%prefix%%fileName%%postfix%.tif','0fd7935a-ed0d-4f67-aa25-1b44684f6aca','Transcoding to tif with convert','ca278b07-8137-4a75-b84f-9b10994ed006','Tagged Image File Format',NULL,'2012-10-02 03:24:59',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('a74cbffb-281b-49ee-8e96-fbac2ab54785','command','f3f2dae8-54ed-40b4-8f20-cffb249262cf','a9111dc0-edc9-47f8-85e5-ad4013971361','ps2pdf \"%fileFullName%\" \"%outputDirectory%%prefix%%fileName%%postfix%.pdf\"','%outputDirectory%%prefix%%fileName%%postfix%.pdf','ebe5a085-6039-4c8d-9953-beed5b03c778','Transcoding to pdf with ps2pdf','ca278b07-8137-4a75-b84f-9b10994ed006','Acrobat PDF/A - Portable Document Format',NULL,'2012-10-02 03:24:59',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('a90025a4-9e8b-44b9-a267-9580c7c5460b','command','a5fa09c6-9a8d-40b9-aee2-2641160f969e','b812bf73-7f58-4fa8-84d3-415e2f56daa8','mkdir \"%outputDirectory%\" && readpst -r \"%inputFile%\" -o \"%outputDirectory%\" -S','%outputDirectory%','42e7fdc3-42c6-4715-b79a-e900df916cab','Extracting pst file','ca278b07-8137-4a75-b84f-9b10994ed006','',NULL,'2012-10-02 03:24:59',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('a9111dc0-edc9-47f8-85e5-ad4013971361','verification','f3f2dae8-54ed-40b4-8f20-cffb249262cf',NULL,'test -s \"%outputLocation%\"','',NULL,'Standard verification command (non zero filesize)','ca278b07-8137-4a75-b84f-9b10994ed006','',NULL,'2012-10-02 03:24:59',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('ab17d28b-3f9a-45e2-b6da-fb19cf759c13','command','a5fa09c6-9a8d-40b9-aee2-2641160f969e','a9111dc0-edc9-47f8-85e5-ad4013971361','outputExtension=\"odt\"\nddirname=\"`dirname \"%fileFullName%\"`\"\ndbasename=\"`basename \"%fileFullName%\"`\" \ncd \"$ddirname\"\noutputFile=\"%outputDirectory%%prefix%%fileName%%postfix%.${outputExtension}\"\n\nflock -x /var/lock/documentConversion.lock -c \"soffice --nodefault --nologo --headless --convert-to $outputExtension \\\"${dbasename}\\\"\"\necho The exit code was $?\nset -e\n\necho mv \"%fileDirectory%%fileName%.${outputExtension}\" \"$outputFile\"\nmv \"%fileDirectory%%fileName%.${outputExtension}\" \"$outputFile\"\n','%outputDirectory%%prefix%%fileName%%postfix%.odt','0889b85d-e891-4d18-8e89-33b02783ba7a','Transcoding to ODT with openOffice','ca278b07-8137-4a75-b84f-9b10994ed006','OpenDocument Text',NULL,'2012-10-02 03:24:59',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('b3b3b726-acef-4d58-82e4-ef8875d654ce','command','f3f2dae8-54ed-40b4-8f20-cffb249262cf',NULL,'echo Not including \"%inputFile%\" in DIP.','%inputFile%',NULL,'Don\'t include in DIP.','ca278b07-8137-4a75-b84f-9b10994ed006','',NULL,'2012-10-02 03:24:59',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('b812bf73-7f58-4fa8-84d3-415e2f56daa8','verification','ee6869f7-3ac0-44ed-a5ca-50f0f81cd7c1',NULL,'#!/usr/bin/python\n#\n\nimport os\ndirectory = \"%outputLocation%\"\nextension = \".mboxi\"\n\ndef appendExtensionToFilesWithNoExtension(directory, extension, baseDirectory=\"\"):\n for dirname, dirnames, filenames in os.walk(directory):\n for filename in filenames:\n if filename.rfind(\".\") == -1:\n newName = filename + extension\n n=1\n while os.path.exists(os.path.join(dirname, newName)):\n newName = newName = filename + n.__str__() + extension\n n+=1\n print \"Renaming: \", filename, \" -> \" + newName\n os.rename(os.path.join(dirname, filename), os.path.join(dirname, newName))\n\nappendExtensionToFilesWithNoExtension(directory, extension, baseDirectory=directory)\n','',NULL,'append .mboxi extension to files without extensions','ca278b07-8137-4a75-b84f-9b10994ed006','',NULL,'2012-10-02 03:24:59',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','command','a5fa09c6-9a8d-40b9-aee2-2641160f969e','a9111dc0-edc9-47f8-85e5-ad4013971361','ffmpeg -i \"%fileFullName%\" -vcodec libx264 -pix_fmt yuv420p -preset medium -crf 18 \"%outputDirectory%%prefix%%fileName%%postfix%.mp4\"','%outputDirectory%%prefix%%fileName%%postfix%.mp4','77f73d63-7d82-4b61-8dec-6626c3dc224a','Transcoding to mp4 with ffmpeg','ca278b07-8137-4a75-b84f-9b10994ed006','MPEG-4 Media File',NULL,'2012-12-19 01:54:26',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('c072c3c8-ba0e-480b-b0ee-2f27c6c0653e','eventDetail','a5fa09c6-9a8d-40b9-aee2-2641160f969e',NULL,'echo program=\\\"unrar-nonfree\\\"\\; version=\\\"`unrar-nonfree | grep \'UNRAR\'`\\\"','',NULL,'Get event detail text for unrar extraction','ca278b07-8137-4a75-b84f-9b10994ed006','',NULL,'2012-10-02 03:24:59',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('d6a33093-85d5-4088-83e1-b7a774a826bd','command','f3f2dae8-54ed-40b4-8f20-cffb249262cf','a9111dc0-edc9-47f8-85e5-ad4013971361','gs -dPDFA -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFACompatibilityPolicy=1 -sOutputFile=\"%outputDirectory%%prefix%%fileName%%postfix%.pdf\" \"%fileFullName%\"','%outputDirectory%%prefix%%fileName%%postfix%.pdf','45a2f264-37d7-4881-b28c-25d628bf2823','Transcoding to pdfa with Ghostscript','ca278b07-8137-4a75-b84f-9b10994ed006','Acrobat PDF/A - Portable Document Format',NULL,'2012-10-02 03:24:59',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('d91f0637-b2f6-4492-ac1b-23c155102a3e','command','f3f2dae8-54ed-40b4-8f20-cffb249262cf','a9111dc0-edc9-47f8-85e5-ad4013971361','inkscape -z \"%fileFullName%\" --export-pdf=\"%outputDirectory%%prefix%%fileName%%postfix%.pdf\"','%outputDirectory%%prefix%%fileName%%postfix%.pdf','1db2deea-01dd-43e5-9f27-dc9ed02acdfe','Transcoding to pdf with inkscape','ca278b07-8137-4a75-b84f-9b10994ed006','Acrobat PDF/A - Portable Document Format',NULL,'2012-10-02 03:24:59',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('dc949cb7-ad68-44ba-a795-d2a43a18164f','command','f3f2dae8-54ed-40b4-8f20-cffb249262cf',NULL,'cp -R \"%inputFile%\" \"%outputDirectory%%prefix%%fileName%%postfix%%fileExtensionWithDot%\"','%outputDirectory%%prefix%%fileName%%postfix%%fileExtensionWithDot%',NULL,'Copying file to access directory.','ca278b07-8137-4a75-b84f-9b10994ed006','',NULL,'2012-10-02 03:24:59',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('dd4b3428-134f-4e51-870c-69e71ad58a21','command','a5fa09c6-9a8d-40b9-aee2-2641160f969e',NULL,'mkdir \"%outputDirectory%\" && unrar-nonfree x \"%inputFile%\" \"%outputDirectory%\"','%outputDirectory%','c072c3c8-ba0e-480b-b0ee-2f27c6c0653e','Extracting unrar-nonfree compatable file.','ca278b07-8137-4a75-b84f-9b10994ed006','',NULL,'2012-10-02 03:24:59',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('e96b787d-57f6-41a4-9693-d0634bfacacb','command','f3f2dae8-54ed-40b4-8f20-cffb249262cf','a9111dc0-edc9-47f8-85e5-ad4013971361','ps2pdf -dEPSCrop -dPDFA \"%fileFullName%\" \"%outputDirectory%%prefix%%fileName%%postfix%.pdf\"','%outputDirectory%%prefix%%fileName%%postfix%.pdf','ebe5a085-6039-4c8d-9953-beed5b03c778','Transcoding to pdf with ps2pdf','ca278b07-8137-4a75-b84f-9b10994ed006','Acrobat PDF/A - Portable Document Format',NULL,'2012-10-02 03:24:59',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('ebe5a085-6039-4c8d-9953-beed5b03c778','eventDetail','a5fa09c6-9a8d-40b9-aee2-2641160f969e',NULL,'echo program=\\\"ps2pdf\\\"\\; program=\\\"Ghostscript\\\"\\; version=\\\"`gs --version`\\\" ','',NULL,'ps2pdf event detail','ca278b07-8137-4a75-b84f-9b10994ed006','',NULL,'2012-10-02 03:24:59',1); -INSERT INTO `Command` (`pk`, `commandUsage`, `commandType`, `verificationCommand`, `command`, `outputLocation`, `eventDetailCommand`, `description`, `supportedBy`, `outputFileFormat`, `replaces`, `lastModified`, `enabled`) VALUES ('ef3ea000-0c3c-4cae-adc2-aa2a6ccbffce','verification','f3f2dae8-54ed-40b4-8f20-cffb249262cf',NULL,'test -f \"%outputLocation%\"','',NULL,'Standard verification command (file exists only)','ca278b07-8137-4a75-b84f-9b10994ed006','',NULL,'2012-10-02 03:24:59',1); - -/*!40000 ALTER TABLE `Command` ENABLE KEYS */; -UNLOCK TABLES; - - -LOCK TABLES `FileIDType` WRITE; -/*!40000 ALTER TABLE `FileIDType` DISABLE KEYS */; -INSERT INTO `FileIDType` (`pk`, `description`, `replaces`, `lastModified`, `enabled`) VALUES ('076cce1b-9b46-4343-a193-11c2662c9e02','FileIDByFitsFileUtilityFormat',NULL,'2013-03-11 22:54:24',1); -INSERT INTO `FileIDType` (`pk`, `description`, `replaces`, `lastModified`, `enabled`) VALUES ('16ae42ff-1018-4815-aac8-cceacd8d88a8','Identified by file extension.',NULL,'2013-03-11 22:54:24',1); -INSERT INTO `FileIDType` (`pk`, `description`, `replaces`, `lastModified`, `enabled`) VALUES ('1d8f3bb3-da8a-4ef6-bac7-b65942df83fc','FileIDByTika',NULL,'2013-03-11 22:54:24',1); -INSERT INTO `FileIDType` (`pk`, `description`, `replaces`, `lastModified`, `enabled`) VALUES ('237d393f-aba2-44ae-b61c-76232d383883','FileIDByFitsFileUtilityMimetype',NULL,'2013-03-11 22:54:24',1); -INSERT INTO `FileIDType` (`pk`, `description`, `replaces`, `lastModified`, `enabled`) VALUES ('8e39a076-d359-4c60-b6f4-38f7ae6adcdf','FileIDByFitsFfidentMimetype',NULL,'2013-03-11 22:54:24',1); -INSERT INTO `FileIDType` (`pk`, `description`, `replaces`, `lastModified`, `enabled`) VALUES ('9ffdc6e8-f25a-4e5b-aaca-02769c4e7b7f','FileIDByMediaInfo',NULL,'2013-03-11 22:54:24',1); -INSERT INTO `FileIDType` (`pk`, `description`, `replaces`, `lastModified`, `enabled`) VALUES ('ac5d97dc-df9e-48b2-81c5-4a8b044355fa','FileIDByFitsDROIDIdentificationPUID',NULL,'2013-03-11 22:54:24',1); -INSERT INTO `FileIDType` (`pk`, `description`, `replaces`, `lastModified`, `enabled`) VALUES ('afdbee13-eec5-4182-8c6c-f5638ee290f3','FileIDByFIDO',NULL,'2013-03-11 22:54:24',1); -INSERT INTO `FileIDType` (`pk`, `description`, `replaces`, `lastModified`, `enabled`) VALUES ('b0bcccfb-04bc-4daa-a13c-77c23c2bda85','FileIDByFitsJhoveFormat',NULL,'2013-03-11 22:54:24',1); -INSERT INTO `FileIDType` (`pk`, `description`, `replaces`, `lastModified`, `enabled`) VALUES ('c26227f7-fca8-4d98-9d8e-cfab86a2dd0a','FileIDByFitsFitsMimetype',NULL,'2013-03-11 22:54:24',1); -INSERT INTO `FileIDType` (`pk`, `description`, `replaces`, `lastModified`, `enabled`) VALUES ('cff7437f-20c6-440a-b801-37c647da2cf1','FileIDByFitsFitsFormat',NULL,'2013-03-11 22:54:24',1); -INSERT INTO `FileIDType` (`pk`, `description`, `replaces`, `lastModified`, `enabled`) VALUES ('dc551ed2-9d2f-4c8a-acce-760fb740af48','FileIDByFitsJhoveMimeType',NULL,'2013-03-11 22:54:24',1); -INSERT INTO `FileIDType` (`pk`, `description`, `replaces`, `lastModified`, `enabled`) VALUES ('f794555f-50ad-4fd4-9eab-67bc47c431ab','FileIDByFitsDROIDMimeType',NULL,'2013-03-11 22:54:24',1); -/*!40000 ALTER TABLE `FileIDType` ENABLE KEYS */; -UNLOCK TABLES; - -LOCK TABLES `FileID` WRITE; -/*!40000 ALTER TABLE `FileID` DISABLE KEYS */; -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('00ee1251-c1ec-49cf-95e7-f0c037d23f43','PUID=\"fmt/419\", FormatName=\"Adobe Illustrator\", FormatVersion=\"4.0\", FormatRisk=\"\", Extension=\"ai,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:30',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('01a2674c-850c-46ab-a768-e8593baf9404','A .psd file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('01c97b84-76e0-4b94-9e3b-1e670bd9468b','video/x-ms-wmv',0,0,'f794555f-50ad-4fd4-9eab-67bc47c431ab',NULL,'2012-10-16 18:18:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('0204d3a6-d566-4f90-b298-578eaf6c99f6','PUID=\"fmt/3\", FormatName=\"Graphics Interchange Format\", FormatVersion=\"1987a\", FormatRisk=\"\", Extension=\"gif,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:17',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('0205b77b-4396-4931-95b8-d896a123b0e0','A .m2v file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('02246977-bef6-46da-98c2-de7522111899','A .gif file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('03bb2a7e-47bd-44fa-ab1d-797370bb1ead','PDF',0,1,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-15 21:32:21',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('03bbfaaf-124c-4454-8082-50e0b3d23e57','A .pct file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('05e0d0e9-f51e-45d6-86e5-283f8eeaa00d','PUID=\"x-fmt/390\", FormatName=\"Exchangeable Image File Format (Compressed)\", FormatVersion=\"2.1\", FormatRisk=\"\", Extension=\"jpg,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:15',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('061ec789-c1e9-40af-83b4-a6b0897267d8','audio/x-ms-wma',0,0,'c26227f7-fca8-4d98-9d8e-cfab86a2dd0a',NULL,'2012-10-17 23:15:39',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('065a6379-da8d-4d90-8a6e-8286b31e850f','image/svg+xml',1,0,'c26227f7-fca8-4d98-9d8e-cfab86a2dd0a',NULL,'2012-10-17 23:15:38',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('06b8d06a-aac4-4d09-b0b4-fe67d70faf14','JPEG File Interchange Format',0,1,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:43',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('06e64ff4-3de9-40f6-a9c0-bcf0e5aba5c4','Adobe Photoshop Image, 800 x 533, RGB, 3x 8-bit channels',0,0,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-16 18:26:57',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('074d4c3a-c9d7-4751-b2eb-72e0cb45f69c','image/png',1,0,'f794555f-50ad-4fd4-9eab-67bc47c431ab',NULL,'2012-10-16 18:18:14',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('075bcd44-b926-4a45-b8a1-f75220f5c903','Rich Text Format',1,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:31',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('07cc11b2-5316-4648-a1fb-71d28d9e2200','text/html',1,1,'dc551ed2-9d2f-4c8a-acce-760fb740af48',NULL,'2012-10-16 18:18:19',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('07e990d9-5b60-4cb1-8e83-40e25dcdcdae','A .erf file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('08255d3a-bd85-434e-97a8-14f98b0c4ec8','data',0,0,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-11 23:10:30',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('085d00ca-f8af-43e5-9ef9-6d21dec5aff8','Windows Bitmap',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:41',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('090ff58a-f772-455b-9743-2615e17b6aa8','image/jpeg',0,1,'8e39a076-d359-4c60-b6f4-38f7ae6adcdf',NULL,'2012-10-16 18:18:05',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('095e1f7a-815c-449b-ae7e-b5d96e434f2d','Apple QuickTime movie (fast start)',0,0,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-11 23:10:31',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('0a01c5ed-7e05-4dc8-8082-48fe61bab13d','image/bmp',0,0,'c26227f7-fca8-4d98-9d8e-cfab86a2dd0a',NULL,'2012-10-17 23:15:40',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('0a779ddf-8b63-48fb-a46d-7e2bf32a8b04','A .xls file',1,1,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('0bd0540c-db99-47e2-b63b-12be1c6eafcf','A .pdf file',0,1,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('0c2ad7a0-83b5-4f83-aed9-ee6ad99510b3','Microsoft ASF',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:29',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('0ce828c7-e884-40be-9a6a-51b53cb349c5','PUID=\"x-fmt/396\", FormatName=\"Exchangeable Image File Format (Audio)\", FormatVersion=\"2.2\", FormatRisk=\"\", Extension=\"wav,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:18',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('0cea8124-51f7-49ed-822a-b6b842673c62','Macromedia FLV',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:35',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('0d1861e3-823d-4508-8de4-26bae086efb2','image/jpeg',0,1,'dc551ed2-9d2f-4c8a-acce-760fb740af48',NULL,'2012-10-16 18:18:20',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('0d2065a9-dce6-41d9-8488-e71063bb0e0e','PUID=\"fmt/147\", FormatName=\"Acrobat PDF/X - Portable Document Format - Exchange 2:2003\", FormatVersion=\"\", FormatRisk=\"\", Extension=\"pdf,\"',0,1,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:28',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('0f42eabd-4da2-48ed-aa30-f76b1b6d94b7','fmt/149',0,1,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-10-16 21:33:04',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('0f919e47-d406-4e9c-96c2-0a372c818f73','Targa image data - RGB 1419 x 1001',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-18 22:57:15',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('0f965b92-8f6c-4a52-bffd-a28da459fdf9','image/x-canon-cr2',0,0,'237d393f-aba2-44ae-b61c-76232d383883',NULL,'2012-10-16 18:27:02',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('1087d1e9-3dff-4b6e-b1e2-625141bbf814','PUID=\"fmt/107\", FormatName=\"Macromedia Flash\", FormatVersion=\"4\", FormatRisk=\"\", Extension=\"swf,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:34',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('10d24277-054c-4c20-9774-9cac31b22b42','A .odt file',1,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('114db91c-503f-43c2-a83e-c2de6b817e47','fmt/48',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-10-16 21:32:57',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('120836eb-b7e7-42dc-95f1-1470b8000dec','Microsoft PowerPoint 2007+',1,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:30',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('123481b3-aca7-41ec-97d7-7e6601395d4a','PUID=\"fmt/124\", FormatName=\"Encapsulated PostScript File Format\", FormatVersion=\"3\", FormatRisk=\"\", Extension=\"eps,epsf,ps,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:21',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('15212ba7-3a43-418b-a3b7-d8095c2b77ff','text/plain; charset=US-ASCII',1,0,'dc551ed2-9d2f-4c8a-acce-760fb740af48',NULL,'2012-10-16 17:55:58',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('1567b10b-1474-4df5-a6df-ce3b8a92ee97','Targa image data - RGB 1419 x 1001',0,0,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-18 22:57:04',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('15aceaf6-cf02-4aab-baeb-0f2402e41125','GIF image data, version 89a, 640 x 320',0,0,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-16 18:26:58',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('16d79ccc-4f77-44d7-8b25-054915b289c5','PUID=\"fmt/53\", FormatName=\"Rich Text Format\", FormatVersion=\"1.8\", FormatRisk=\"\", Extension=\"rtf,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:29',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('16d9ada5-08b6-48cc-b4f8-723327803581','PUID=\"fmt/19\", FormatName=\"Acrobat PDF 1.5 - Portable Document Format\", FormatVersion=\"1.5\", FormatRisk=\"\", Extension=\"pdf,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:25',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('17d1046c-71bd-4c90-9291-6744e5f2fa38','Waveform Audio',1,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:42',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('180a7231-0444-44c9-8371-81825a2be339','image/x-raw',0,0,'c26227f7-fca8-4d98-9d8e-cfab86a2dd0a',NULL,'2012-10-17 23:15:35',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('1887c956-1e50-4bae-8cb5-3a5a68d2ef80','video/quicktime',0,0,'8e39a076-d359-4c60-b6f4-38f7ae6adcdf',NULL,'2012-10-15 21:30:49',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('18d00a54-6b22-4434-8563-e66f80431e9d','A .ac3 file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('1984ade9-588b-4817-8460-9dfea763cd23','PUID=\"fmt/1\", FormatName=\"Broadcast WAVE\", FormatVersion=\"0\", FormatRisk=\"\", Extension=\"wav,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:18',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('19d7d449-99c3-4a3d-98cb-428665cf25d1','A .3fr file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('1b801662-0446-4bf5-bbd5-b093b27a1cef','image/svg+xml',1,0,'237d393f-aba2-44ae-b61c-76232d383883',NULL,'2012-10-16 18:18:02',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('1d0b3087-b43f-412f-8e10-2063b912ed81','PUID=\"fmt/143\", FormatName=\"Waveform Audio (WAVEFORMATEXTENSIBLE)\", FormatVersion=\"\", FormatRisk=\"\", Extension=\"wav,wave,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:19',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('1d21c442-22b6-490d-b84a-07311da373c1','PUID=\"fmt/276\", FormatName=\"Acrobat PDF 1.7 - Portable Document Format\", FormatVersion=\"1.7\", FormatRisk=\"\", Extension=\"pdf,\"',0,1,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:25',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('1d283460-e24c-4cbb-8476-2a66df560456','application/octet-stream',0,0,'237d393f-aba2-44ae-b61c-76232d383883',NULL,'2012-10-16 17:55:52',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('1d31b54e-1745-4b37-9468-d35e8e317d05','PNG image data, 757 x 957, 8-bit/color RGB, non-interlaced',1,0,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-16 18:18:00',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('1db0ee9f-a668-45f2-ad79-50e395a9e171','Microsoft PowerPoint 2007+',1,0,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-11 23:10:30',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('1ddbfa77-0390-4905-aeda-58d2984db924','PUID=\"fmt/106\", FormatName=\"Macromedia Flash\", FormatVersion=\"3\", FormatRisk=\"\", Extension=\"swf,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:34',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('1ded295a-3065-4da7-8ba7-42edef36a1db','Windows Media Video',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:29',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('1f8df48d-ce76-49e4-80ed-cc0d0ce65d2a','PUID=\"x-fmt/203\", FormatName=\"WordPerfect for Windows Document\", FormatVersion=\"5.2\", FormatRisk=\"\", Extension=\"w52,wp,wpd,wp5,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:14',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('1f968676-81a2-4cd4-8d3d-ee86342e5a57','fmt/47',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-10-16 21:32:57',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('1fd534f6-139f-41ed-80dd-2b6b7fee6768','PUID=\"fmt/145\", FormatName=\"Acrobat PDF/X - Portable Document Format - Exchange 1:2001\", FormatVersion=\"\", FormatRisk=\"\", Extension=\"pdf,\"',0,1,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:27',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('20109b15-39c8-4d10-bac5-617ae2850e22','x-fmt/135',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-10-16 21:32:58',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('209d95fb-25be-471f-902d-dd08fe5be83f','PUID=\"fmt/354\", FormatName=\"Acrobat PDF/A - Portable Document Format\", FormatVersion=\"1b\", FormatRisk=\"\", Extension=\"pdf,\"',0,1,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:25',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('21749616-c014-4e81-84d5-f90af82532b7','RAF EXIF',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:33',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('2184c88b-bbe4-41a1-9a21-281f5cf55433','PUID=\"fmt/480\", FormatName=\"Acrobat PDF/A - Portable Document Format\", FormatVersion=\"3b\", FormatRisk=\"\", Extension=\"pdf,\"',0,1,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:26',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('21b07ca7-b9e9-490a-a4db-39081a306862','fmt/49',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-10-16 21:32:58',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('23dca992-ea19-4731-8e96-20739509851c','PUID=\"fmt/402\", FormatName=\"Truevision TGA Bitmap\", FormatVersion=\"2.0\", FormatRisk=\"\", Extension=\"tga,icb,vda,vst,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:15',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('23e376ee-554b-4ac0-b34a-86031f77e526','audio/mpeg',0,0,'8e39a076-d359-4c60-b6f4-38f7ae6adcdf',NULL,'2012-10-15 21:30:50',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('24237983-b248-4d0d-b1d2-04ca8e469198','Portable Network Graphics',1,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:36',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('24950d29-e3c6-408e-89e4-28f689239a13','audio/x-flac',0,0,'237d393f-aba2-44ae-b61c-76232d383883',NULL,'2012-10-16 18:27:00',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('24b9aa78-7055-4776-910d-da124b1863f9','KDC EXIF',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:41',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('257c711a-6d38-4b8c-8c54-6c25dc5a4d43','PUID=\"fmt/104\", FormatName=\"Macromedia Flash\", FormatVersion=\"1\", FormatRisk=\"\", Extension=\"swf,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:33',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('268c57bc-edfc-4da7-b01a-c1ebb2438022','fmt/131',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-10-16 21:32:58',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('26a45d64-5e4d-4afc-8297-265f1a4f86bc','Microsoft Excel 2007+',1,1,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-11 23:10:31',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('26fcd232-8685-40ea-a1b3-e845662d9a51','PUID=\"fmt/437\", FormatName=\"Digital Negative Format (DNG)\", FormatVersion=\"1.2\", FormatRisk=\"\", Extension=\"dng,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:20',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('274e16c7-1b68-498b-8290-e339d4197136','MPEG',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:40',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('2797e915-0097-40f6-ba05-ecf94ab34dc5','A .arw file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('27d6e866-3b9d-487b-b3b7-5a1bc4e72a3f','text/html',1,1,'8e39a076-d359-4c60-b6f4-38f7ae6adcdf',NULL,'2012-10-16 18:18:03',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('27f6b2b1-0c93-4b79-9f2e-7f10639d8987','application/msword',1,0,'c26227f7-fca8-4d98-9d8e-cfab86a2dd0a',NULL,'2012-10-17 23:15:36',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('288aaae9-9513-4bf3-99c3-b5fd26ed85af','A .nef file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('2898de0d-0bae-45ec-a915-05d92d1df637','TIFF image data, little-endian',0,0,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-16 18:26:58',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('2aab64ea-9bbd-4715-a6bf-ad3ee5ea7072','WAVE',1,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-15 21:32:22',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('2b6c2412-b978-4478-8d09-b91ed4c6dc6a','PUID=\"fmt/11\", FormatName=\"Portable Network Graphics\", FormatVersion=\"1.0\", FormatRisk=\"\", Extension=\"png,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:21',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('2bb14a8d-7eac-4c93-9060-726b4acefbc9','video/quicktime',0,0,'c26227f7-fca8-4d98-9d8e-cfab86a2dd0a',NULL,'2012-10-17 23:15:39',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('2c0fbd65-f7ba-452d-bd93-a40b371e2a68','Audio Interchange File Format',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:33',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('2c2c85ee-1437-4beb-82fb-0c7fca51c49a','PUID=\"fmt/38\", FormatName=\"Microsoft Word for Windows Document\", FormatVersion=\"2.0\", FormatRisk=\"\", Extension=\"doc,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:33',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('2c3058ab-a357-4c26-9157-8f11028e63bb','PUID=\"fmt/215\", FormatName=\"Microsoft Powerpoint for Windows\", FormatVersion=\"2007 onwards\", FormatRisk=\"\", Extension=\"pptx,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:14',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('2f652af9-abd4-4048-ab58-0873a3912d95','PUID=\"fmt/353\", FormatName=\"Tagged Image File Format\", FormatVersion=\"\", FormatRisk=\"\", Extension=\"tif,tiff,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:29',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('30ad24b9-3d4a-4cf8-9986-f45c12210aea','PUID=\"fmt/6\", FormatName=\"Waveform Audio\", FormatVersion=\"\", FormatRisk=\"\", Extension=\"wav,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:19',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('3128ebc0-b3bc-4a96-b420-d64327e099ff','PUID=\"x-fmt/386\", FormatName=\"MPEG-2 Video Format\", FormatVersion=\"\", FormatRisk=\"\", Extension=\"mpeg,mpg,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:14',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('315e3d93-22df-4993-955a-73d30a11f7d7','Targa image data - Mono - RLE 128 x 128',0,0,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-16 18:17:59',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('31868203-8848-4644-92c7-27307c5e5ba0','image/vnd.adobe.photoshop',0,0,'237d393f-aba2-44ae-b61c-76232d383883',NULL,'2012-10-16 18:27:00',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('31a79d37-ac13-4d6f-ba7d-49c9493959c9','PUID=\"fmt/152\", FormatName=\"Digital Negative Format (DNG)\", FormatVersion=\"1.1\", FormatRisk=\"\", Extension=\"dng,tif,tiff,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:20',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('32846451-1dbe-44c0-b599-cfd3bdc73b0e','application/pdf',0,1,'8e39a076-d359-4c60-b6f4-38f7ae6adcdf',NULL,'2012-10-15 21:30:49',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('33da3559-86b0-4db0-8e3f-7339155cc559','audio/x-aiff',0,0,'dc551ed2-9d2f-4c8a-acce-760fb740af48',NULL,'2012-10-16 17:55:59',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('34c42eda-b9e6-4a35-b483-a791bd04718d','Foveon X3F raw image data, version 2.1, 2268x1512',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:42',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('350b7514-7b5c-4b83-913f-b56122423dc5','text/rtf',1,0,'8e39a076-d359-4c60-b6f4-38f7ae6adcdf',NULL,'2012-10-15 21:30:50',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('35b9e3c0-9670-4775-9e9a-cf56d973440b','Windows Media Audio',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:37',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('35c9fd79-c9b4-4a0c-84dd-6a9a6a05453a','ARW EXIF',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:42',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('3651eff9-0c05-4077-8f26-a9dfb915465a','TIFF',1,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-16 18:18:17',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('369eeb06-b520-4566-b9c5-1f7a2277a450','bytestream',1,1,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-15 21:32:21',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('36e43181-0b2d-45d7-939f-491cdd04d7b3','PUID=\"x-fmt/129\", FormatName=\"Microsoft Word for Macintosh Document\", FormatVersion=\"X\", FormatRisk=\"\", Extension=\"doc,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:31',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('37384927-53f5-4ac7-8425-94a110c081ce','image/tiff',1,0,'f794555f-50ad-4fd4-9eab-67bc47c431ab',NULL,'2012-10-16 18:18:14',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('37b9babb-af84-4da8-9c2a-2c03087de2e4','application/vnd.oasis.opendocument.text',1,0,'c26227f7-fca8-4d98-9d8e-cfab86a2dd0a',NULL,'2012-10-17 23:15:34',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('3840a1dc-df0f-4a41-a3df-6eb612491571','PDF document, version 1.6',0,1,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-11 23:10:30',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('38903006-89e2-4d59-b0d5-dbf8614500c4','PUID=\"fmt/18\", FormatName=\"Acrobat PDF 1.4 - Portable Document Format\", FormatVersion=\"1.4\", FormatRisk=\"\", Extension=\"pdf,\"',0,1,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:25',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('38de9fcc-4200-462e-a4d3-70350fc6b7c9','PUID=\"x-fmt/391\", FormatName=\"Exchangeable Image File Format (Compressed)\", FormatVersion=\"2.2\", FormatRisk=\"\", Extension=\"jpg,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:15',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('3b8ba73b-9cbd-4a6c-b9ae-6fbd9c5f5104','ATSC A/52 aka AC-3 aka Dolby Digital stream, 48 kHz,, complete main (CM) 3 front/2 rear, LFE on,, 448 kbit/s not Dolby Surround encoded',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:48',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('3bc97a96-a507-4c9c-8033-d7f212a9badb','PUID=\"fmt/441\", FormatName=\"Windows Media Video 9 Advanced Profile (WVC1)\", FormatVersion=\"9 Advanced Profile (WVC1)\", FormatRisk=\"\", Extension=\"wmv,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:16',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('3cdd3f9e-a093-4c0d-8aef-ef7ba86f765b','image/gif',0,0,'dc551ed2-9d2f-4c8a-acce-760fb740af48',NULL,'2012-10-16 18:18:20',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('3da83571-5d77-4edb-9782-859138ac1ed3','application/vnd.ms-powerpoint',1,0,'f794555f-50ad-4fd4-9eab-67bc47c431ab',NULL,'2012-10-16 18:04:55',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('3dfac762-1463-4914-a5c3-00d751159b52','TIFF EXIF',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:47',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('3ffcbbac-7b49-433b-8ffa-275ff81aba00','TIFF image data, big-endian',1,0,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-16 18:17:59',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('4021ed21-c101-42d4-83a8-3ff714eccb17','PUID=\"x-fmt/44\", FormatName=\"WordPerfect for MS-DOS/Windows Document\", FormatVersion=\"6.0\", FormatRisk=\"\", Extension=\"doc,wpd,wp6,wp,w60,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:14',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('40259ade-4e78-47c9-a8b8-d66e2aa121af','PUID=\"x-fmt/276\", FormatName=\"Microsoft Word for MS-DOS Document\", FormatVersion=\"5.5\", FormatRisk=\"\", Extension=\"doc,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:32',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('40597064-f02e-4bc6-9efa-b2d214925b73','A maildir email file',1,1,NULL,NULL,'2012-10-02 00:24:56',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('40e2177a-2219-445b-bd97-56f2ebacfe62','Portable Document Format',1,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:35',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('40f0c13e-f8ef-4a50-94cd-f1a2d95ca886','A .cr2 file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('4133c4d3-979c-4ef0-80f1-13ebc7553ac0','Thumbnail normalization failed',0,0,NULL,NULL,'2012-10-02 00:24:56',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('4137d40c-0130-4277-b726-61bc76f4fdef','application/msword',1,0,'237d393f-aba2-44ae-b61c-76232d383883',NULL,'2012-10-16 17:55:51',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('41f460dc-3272-497f-bed4-77e67d459612','application/pdf',0,1,'237d393f-aba2-44ae-b61c-76232d383883',NULL,'2012-10-16 17:55:52',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('420813eb-03e3-4a3a-97ca-84894f08af88','fmt/9',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-10-16 21:33:00',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('435bcdbe-75b2-44d2-94ef-2710edcf9eb3','PUID=\"fmt/91\", FormatName=\"Scalable Vector Graphics\", FormatVersion=\"1.0\", FormatRisk=\"\", Extension=\"svg,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:19',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('438ae824-987a-4641-9767-9291b26fbc1e','A .odg file',1,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('44da7e78-68c9-41ca-8441-26f882a463c4','PUID=\"x-fmt/88\", FormatName=\"Microsoft Powerpoint Presentation\", FormatVersion=\"4.0\", FormatRisk=\"\", Extension=\"ppt,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:16',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('454214be-1ae6-4bdc-8396-a4355bdbc618','A .avi file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('45984389-977d-4064-8d46-c0df6e791880','image/jpeg',0,1,'f794555f-50ad-4fd4-9eab-67bc47c431ab',NULL,'2012-10-18 22:57:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('4648baa2-24e0-4ebd-a31a-2417e4175ad3','PUID=\"fmt/138\", FormatName=\"OpenDocument Presentation\", FormatVersion=\"1.0\", FormatRisk=\"\", Extension=\"odp,otp,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:33',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('4690e672-6b5f-42ac-9cf8-d0a3bafeeaa9','JPEG image data, JFIF standard 1.01',0,1,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-16 18:26:58',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('473e1574-954b-4b54-a641-8dda3659ddc1','PUID=\"fmt/179\", FormatName=\"Microsoft PowerPoint for Macintosh\", FormatVersion=\"4.0\", FormatRisk=\"\", Extension=\"ppt,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:16',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('477b16c1-28b7-4685-9391-51bbaca936b7','text/plain',1,1,'237d393f-aba2-44ae-b61c-76232d383883',NULL,'2012-10-16 18:27:01',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('47cd293b-5789-4084-8e9b-6d0404e15a77','PUID=\"fmt/420\", FormatName=\"Adobe Illustrator\", FormatVersion=\"5.0 / 5.5\", FormatRisk=\"\", Extension=\"ai,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:30',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('480b7fb6-f10b-4631-97f4-f40e0385cdca','Quicktime',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:39',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('4818b5a3-6975-483a-b2a2-7be4de3fbc31','unrar-nonfreeCompatable',0,0,NULL,NULL,'2012-10-02 00:24:56',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('48ddd2b7-7841-4731-a28b-5ebe84a0ff8b','image/gif',0,0,'c26227f7-fca8-4d98-9d8e-cfab86a2dd0a',NULL,'2012-10-17 23:15:42',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('4953b2ca-d1f2-4905-a8d4-bf95abd54930','application/octet-stream',1,0,'dc551ed2-9d2f-4c8a-acce-760fb740af48',NULL,'2012-10-16 17:55:58',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('4988d669-fe70-404c-8e0b-c297d2eb9ad2','PUID=\"fmt/423\", FormatName=\"Adobe Illustrator\", FormatVersion=\"7.0\", FormatRisk=\"\", Extension=\"ai,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:30',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('49f8cfb5-afac-44ca-8d47-b408881954e0','PDF document, version 1.4',0,1,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-11 23:10:30',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('4aa31d07-d726-499f-b3ec-afe2995abedb','A .mp3 file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('4ac74345-b1d9-47d8-bed7-3f41b2bdbc36','A .wav file',1,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('4ae6d5e4-1cd1-481e-8469-eae98f9adb36','PUID=\"x-fmt/367\", FormatName=\"Truevision TGA Bitmap\", FormatVersion=\"1.0\", FormatRisk=\"\", Extension=\"tga,icb,vda,vst,afi,bpx,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:15',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('4bbcd493-2035-4567-80e8-218dd24201e7','Macintosh PICT Image',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:48',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('4bc4b72c-8183-4a14-8066-47d7b0d2a827','fmt/10',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-10-16 21:33:00',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('4bcc5156-f3c7-4a5f-a99d-006eb61c4ba1','(Corel/WP)',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:30',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('4c451f8c-9af3-468a-ae57-f4ce393eba80','HTML',1,1,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-16 18:18:17',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('4c9c49f4-ca45-40bc-b7a2-119bfa76cf23','A .kdc file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('4cd6ff3b-2508-47ac-9d5b-2fcdb61ab1cd','PUID=\"fmt/421\", FormatName=\"Adobe Illustrator\", FormatVersion=\"Japan\", FormatRisk=\"\", Extension=\"ai,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:31',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('4d2748e9-7233-4106-b7a1-83e7cfdbff24','image/vnd.adobe.photoshop',0,0,'c26227f7-fca8-4d98-9d8e-cfab86a2dd0a',NULL,'2012-10-17 23:15:39',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('4d399247-7598-403d-bb17-8d9230bacb0d','image/jp2',1,0,'dc551ed2-9d2f-4c8a-acce-760fb740af48',NULL,'2012-10-16 18:18:19',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('4d82500c-bfb5-4ddd-bb9e-40733cbe72be','A .orf file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('4e5c2d3d-0802-432b-9e52-2a98e8e18e8d','image/x-olympus-orf',0,0,'c26227f7-fca8-4d98-9d8e-cfab86a2dd0a',NULL,'2012-10-17 23:15:39',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('4e6f9641-ba13-4855-9385-be92209a245e','PUID=\"x-fmt/385\", FormatName=\"MPEG-1 Video Format\", FormatVersion=\"\", FormatRisk=\"\", Extension=\"mpeg,mpg,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:14',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('4f31deac-0130-4dc8-9a6b-b2ac3bbc343f','PUID=\"fmt/417\", FormatName=\"Adobe Illustrator\", FormatVersion=\"88\", FormatRisk=\"\", Extension=\"ai,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:30',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('4f982c49-6962-463b-ae20-1b5494fc7671','image/x-canon-crw',0,0,'237d393f-aba2-44ae-b61c-76232d383883',NULL,'2012-10-16 18:27:03',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('4fb85f9a-831d-49ff-a554-4c80a792232b','Olympus ORF raw image data, little-endian',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:38',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('51f80b0a-7a4b-4c68-ac7a-b41ef9c9aaba','application/vnd.ms-asf',0,0,'c26227f7-fca8-4d98-9d8e-cfab86a2dd0a',NULL,'2012-10-17 23:15:36',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('52b25353-f40f-453c-bb26-854d2cf29b7f','PUID=\"fmt/133\", FormatName=\"Windows Media Video\", FormatVersion=\"\", FormatRisk=\"\", Extension=\"asf,wmv,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:16',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('53b462db-42b5-41e6-94fa-a98974bcfd5b','Quicktime video',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:39',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('53bff439-5ff6-4fe9-a87a-8745da64b5e6','Microsoft Office Document',1,1,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-11 23:10:30',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('54762702-b427-4b75-95a3-faa17a90d1b5','PUID=\"x-fmt/270\", FormatName=\"OS/2 Bitmap\", FormatVersion=\"2.0\", FormatRisk=\"\", Extension=\"bmp,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:22',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('54e14752-4a89-413a-9ac1-dbb519f61e2a','PUID=\"fmt/40\", FormatName=\"Microsoft Word Document\", FormatVersion=\"97-2003\", FormatRisk=\"\", Extension=\"doc,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:31',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('573c6a20-1076-4234-a728-0bce8405f097','Advanced Systems Format',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:34',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('574474c0-6023-4a99-ac26-301495d79194','Do not include in archivematica DIP',0,1,NULL,NULL,'2012-10-02 00:24:56',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('57eeece7-6b2a-4dad-9684-b05c96a57988','GIF',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-16 18:18:18',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('580f3cbb-7604-4775-8776-2dcfc5651139','PUID=\"fmt/39\", FormatName=\"Microsoft Word Document\", FormatVersion=\"6.0/95\", FormatRisk=\"\", Extension=\"doc,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:31',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('58a160ea-d3a2-4bef-8238-ae36f4e9a013','Microsoft Word',1,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:34',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('58e8909c-4c51-489e-bae0-410d82191d6c','A .xlsx file',1,1,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('59160936-d126-49a2-a275-86f9359c0e89','video/x-ms-asf',0,0,'c26227f7-fca8-4d98-9d8e-cfab86a2dd0a',NULL,'2012-10-17 23:15:33',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('599cb14f-dbc5-4f45-8e94-24fdb881fbbf','NEF EXIF',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:41',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('5abb795d-02e4-4d63-87cb-61fbc7b70be8','Scalable Vector Graphics (SVG)',1,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:36',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('5b3a71d1-5a3b-46a4-a558-a785a10ca262','PUID=\"x-fmt/392\", FormatName=\"JP2 (JPEG 2000 part 1)\", FormatVersion=\"\", FormatRisk=\"\", Extension=\"jp2,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:29',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('5b553136-e75f-4512-b988-689db706fd50','PUID=\"fmt/422\", FormatName=\"Adobe Illustrator\", FormatVersion=\"6.0\", FormatRisk=\"\", Extension=\"ai,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:30',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('5c4a8eeb-3536-4b43-8eb7-33ee6472c63c','MOV',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:39',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('5c998398-3340-4d36-8b34-2cbe7eca1010','PUID=\"fmt/4\", FormatName=\"Graphics Interchange Format\", FormatVersion=\"1989a\", FormatRisk=\"\", Extension=\"gif,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:17',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('5cad3529-600c-4b7f-aa68-375a5dc9912e','PUID=\"fmt/92\", FormatName=\"Scalable Vector Graphics\", FormatVersion=\"1.1\", FormatRisk=\"\", Extension=\"svg,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:19',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('5cb9e13e-9abe-4258-9c94-f79c6136f577','image/x-x3f',0,0,'c26227f7-fca8-4d98-9d8e-cfab86a2dd0a',NULL,'2012-10-17 23:15:41',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('5dd411c8-9ce3-4293-9862-11d526b32725','application/vnd.ms-excel',1,1,'8e39a076-d359-4c60-b6f4-38f7ae6adcdf',NULL,'2012-10-15 21:30:49',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('5df9d93b-5e4d-41a3-89b5-301bf009ee9a','CR2 EXIF',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:47',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('5e7fbaac-1441-46e6-aedf-c65763e9fbf1','ERF EXIF',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:46',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('5ebc8427-124d-4615-83fb-4326749745e3','Microsoft ASF',0,0,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-11 23:10:29',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('5f43abcb-ddeb-439a-a80f-fb62dd2f042e','A .flv file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('5f46c34d-7a26-47eb-b977-1be976205050','audio/x-wave',1,0,'c26227f7-fca8-4d98-9d8e-cfab86a2dd0a',NULL,'2012-10-17 23:15:40',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('5fc9e48c-f29d-4a98-b381-a8cccafc02af','PUID=\"x-fmt/20\", FormatName=\"Adobe Illustrator\", FormatVersion=\"1.0 / 1.1\", FormatRisk=\"\", Extension=\"ai,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:29',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('5ff09d4f-217a-4610-8495-7089859d1452','image/svg+xml',1,0,'f794555f-50ad-4fd4-9eab-67bc47c431ab',NULL,'2012-10-16 18:18:14',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('61137b8e-803f-4f04-835c-1718670cebc1','PUID=\"fmt/14\", FormatName=\"Acrobat PDF 1.0 - Portable Document Format\", FormatVersion=\"1.0\", FormatRisk=\"\", Extension=\"pdf,\"',0,1,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:24',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('61629eaa-2dd4-47d9-9f7b-3ff94db4482a','PUID=\"x-fmt/274\", FormatName=\"Microsoft Word for MS-DOS Document\", FormatVersion=\"4.0\", FormatRisk=\"\", Extension=\"doc,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:32',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('61d45a28-5271-48e8-810d-c83b4bf6b24f','image/x-canon-crw',0,0,'c26227f7-fca8-4d98-9d8e-cfab86a2dd0a',NULL,'2012-10-17 23:15:43',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('62ad9422-842f-437e-b388-620abbbfe876','Encapsulated PostScript File Format',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:37',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('62be2403-d1ee-4d70-bab4-28bfd161f8e0','application/octet-stream',0,0,'8e39a076-d359-4c60-b6f4-38f7ae6adcdf',NULL,'2012-10-15 21:30:49',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('632a5374-bc44-4d75-a9f6-e53edb87e316','image/tiff',1,0,'8e39a076-d359-4c60-b6f4-38f7ae6adcdf',NULL,'2012-10-16 18:18:03',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('65b74b06-6bda-433b-b993-f09810cdcbca','audio/x-aiff',0,0,'237d393f-aba2-44ae-b61c-76232d383883',NULL,'2012-10-16 17:55:51',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('66120b2d-0c89-4304-815b-6c8cec94647b','image/jpeg',0,1,'237d393f-aba2-44ae-b61c-76232d383883',NULL,'2012-10-16 18:27:01',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('66be432b-20a6-4dbc-8d52-5857f559c40d','PUID=\"fmt/202\", FormatName=\"Nikon Digital SLR Camera Raw Image File\", FormatVersion=\"\", FormatRisk=\"\", Extension=\"nef,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:20',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('66ff18ac-f825-49be-8b4f-d48ead99278a','Microsoft Word 2007+',1,1,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-11 23:10:31',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('675e8fdb-67e9-41a8-a505-823cd8348cb9','text/plain',1,0,'c26227f7-fca8-4d98-9d8e-cfab86a2dd0a',NULL,'2012-10-17 23:15:34',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('67621d17-25ea-4cef-863d-1431b3946640','A .jp2 file',1,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('68d7dce7-17c4-4407-b648-83efa8870d3e','Foveon X3F raw image data, version 2.1, 2268x1512',0,0,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-16 18:26:58',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('6a609c8f-29e9-4c04-9586-6d395def0275','Microsoft Excel 2007+',1,1,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:41',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('6a7c543e-1d68-4ab1-8ab0-4898d0d204e4','application/pdf',0,1,'f794555f-50ad-4fd4-9eab-67bc47c431ab',NULL,'2012-10-16 18:04:54',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('6a939182-d012-48ce-b495-5648eaf06e1c','PUID=\"fmt/37\", FormatName=\"Microsoft Word for Windows Document\", FormatVersion=\"1.0\", FormatRisk=\"\", Extension=\"doc,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:32',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('6ba6316f-7372-4dfc-a573-9db78af2b3ed','Access Defaults',0,0,NULL,NULL,'2012-10-02 00:24:56',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('6c1064bb-f40f-4413-84e5-d40270f6c96b','application/rtf, text/rtf',1,0,'f794555f-50ad-4fd4-9eab-67bc47c431ab',NULL,'2012-10-16 18:04:54',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('6ce73de0-e573-4f2f-9a54-28c440210c2c','fmt/8',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-10-16 21:32:59',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('6e0f164c-6f87-4f2a-9ebe-23089c33cc46','PUID=\"fmt/41\", FormatName=\"Raw JPEG Stream\", FormatVersion=\"\", FormatRisk=\"\", Extension=\"jpe,jpg,jpeg,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:15',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('6f4e7eff-7204-468e-bfb2-2943688d282f','Macromedia Flash Video',0,0,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-16 18:17:59',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('705e9509-6393-481f-8dd5-f4753abcfead','ATSC A/52 aka AC-3 aka Dolby Digital stream, 48 kHz,, complete main (CM) 3 front/2 rear, LFE on,, 448 kbit/s reserved Dolby Surround mode',0,0,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-16 18:26:57',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('736176b4-73b4-48fa-803c-0846a5f0760e','x-fmt/111',1,1,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-10-16 21:33:04',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('73d4a167-f8c1-4466-8f1e-10ce9ab0851f','RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 44100 Hz',1,0,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-11 23:10:30',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('73e92bb3-23a0-4fc7-a7e6-4da8b0984506','Flash Video (FLV)',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:34',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('74455ff3-647d-4d29-a71a-be28fa97a289','image/png',1,0,'8e39a076-d359-4c60-b6f4-38f7ae6adcdf',NULL,'2012-10-16 18:18:04',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('74fa9f99-573c-4c76-964b-4456ac234715','PUID=\"x-fmt/275\", FormatName=\"Microsoft Word for MS-DOS Document\", FormatVersion=\"5.0\", FormatRisk=\"\", Extension=\"doc,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:32',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('78640195-eaae-405f-b3bc-304b806977f9','JPEG 2000 JP2',1,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:33',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('78b2cb5f-7b0f-450e-95fe-dd2e8de13770','PUID=\"fmt/144\", FormatName=\"Acrobat PDF/X - Portable Document Format - Exchange 1:1999\", FormatVersion=\"\", FormatRisk=\"\", Extension=\"pdf,\"',0,1,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:27',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('79103108-9ea9-4ed0-a777-37af444867b6','DOS EPS Binary File Postscript starts at byte 32 length 159320 TIFF starts at byte 159352 length 881762',0,0,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-16 18:26:57',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('799d35d1-0125-4d6b-8e92-df7cad508426','PC bitmap, Windows 3.x format, 799 x 599 x 24',0,0,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-16 18:26:58',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('7a0ab3c1-8ab0-4aac-b064-bff7e6e88f64','PUID=\"fmt/115\", FormatName=\"Windows Bitmap\", FormatVersion=\"2.0\", FormatRisk=\"\", Extension=\"bmp,dib,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:22',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('7a171a9b-49d8-45c7-bb5f-52d9c3157de0','A .giff file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('7a8f358d-9b31-4d29-b258-7d668db64631','PUID=\"x-fmt/389\", FormatName=\"Exchangeable Image File Format (Audio)\", FormatVersion=\"2.1\", FormatRisk=\"\", Extension=\"wav,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:18',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('7abfb7c5-3f55-466e-bd43-1f886e6a884c','PUID=\"fmt/192\", FormatName=\"Kodak Digital Camera Raw Image File\", FormatVersion=\"\", FormatRisk=\"\", Extension=\"dcr,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('7b2ab804-b73e-4700-96ca-61ebc9c3576e','Tagged Image File Format',1,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:35',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('7c5095aa-a9c0-46d7-a67d-e95d628edda8','image/png',1,0,'237d393f-aba2-44ae-b61c-76232d383883',NULL,'2012-10-16 18:18:02',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('7d02f6c1-eab0-418a-a633-fba5abce7f8c','PUID=\"fmt/136\", FormatName=\"OpenDocument Text\", FormatVersion=\"1.0\", FormatRisk=\"\", Extension=\"odt,ott,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:17',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('7efc3875-3bd2-4615-9b1f-83d7fc8131d0','PUID=\"x-fmt/273\", FormatName=\"Microsoft Word for MS-DOS Document\", FormatVersion=\"3.0\", FormatRisk=\"\", Extension=\"doc,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:32',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('7ff7e6cf-5a65-4e2f-9fc3-6f702374b470','A .wbk file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('805785fd-4001-4ef7-9d10-1ef52fcbc9c0','Microsoft Office Document Microsoft Word Document',1,0,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-11 23:10:31',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('808520c8-c588-40a0-9c32-8518110c0e33','XML',1,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-16 18:18:17',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('82bc2ee5-86e9-4bcb-bb65-90fb1b656754','fmt/96',1,1,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-10-16 21:32:59',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('82f879a7-fdda-4b3f-a79f-55c1605a85ce','image/jpeg',0,1,'c26227f7-fca8-4d98-9d8e-cfab86a2dd0a',NULL,'2012-10-17 23:15:41',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('8309414c-b081-4342-b20b-eea126a97e26','application/vnd.ms-powerpoint',1,0,'237d393f-aba2-44ae-b61c-76232d383883',NULL,'2012-10-16 17:55:50',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('833952ec-7936-4a3e-979a-a2b705c31a9d','PUID=\"x-fmt/393\", FormatName=\"WordPerfect for MS-DOS Document\", FormatVersion=\"5.0\", FormatRisk=\"\", Extension=\"wp,wp5,wpd,w50,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:14',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('833cc7c2-c155-45b6-b927-98fdb20ae86f','video/quicktime',0,0,'f794555f-50ad-4fd4-9eab-67bc47c431ab',NULL,'2012-10-16 18:04:54',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('83e32dd9-e3ac-4953-8f8e-756ac56d4480','PUID=\"fmt/109\", FormatName=\"Macromedia Flash\", FormatVersion=\"6\", FormatRisk=\"\", Extension=\"swf,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:35',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('8479526a-fdab-44af-97de-920bea73237e','image/png',1,0,'c26227f7-fca8-4d98-9d8e-cfab86a2dd0a',NULL,'2012-10-17 23:15:38',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('84bcc45a-f840-4645-9ae3-1f480ab74589','audio/x-aiff',0,0,'f794555f-50ad-4fd4-9eab-67bc47c431ab',NULL,'2012-10-16 18:04:54',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('84c9fb23-9a6c-4fad-832e-0cc3de838d70','video/x-flv',0,0,'c26227f7-fca8-4d98-9d8e-cfab86a2dd0a',NULL,'2012-10-17 23:15:36',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('84e0b908-bd9e-4442-ae34-bc9743b43348','text/html',1,1,'f794555f-50ad-4fd4-9eab-67bc47c431ab',NULL,'2012-10-16 18:18:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('8533521f-82c8-408f-9499-194e45d50154','image/x-canon-cr2',0,0,'c26227f7-fca8-4d98-9d8e-cfab86a2dd0a',NULL,'2012-10-17 23:15:42',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('860d9543-4d04-4be9-9fed-ff1e35648d28','PUID=\"x-fmt/382\", FormatName=\"Macromedia FLV\", FormatVersion=\"1\", FormatRisk=\"\", Extension=\"flv,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:31',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('8612b1de-9825-4cb9-b9bb-0b3b97bbe6b6','PUID=\"fmt/141\", FormatName=\"Waveform Audio (PCMWAVEFORMAT)\", FormatVersion=\"\", FormatRisk=\"\", Extension=\"wav,wav,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:19',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('86ce68f3-b264-4e49-a44e-c58144703700','audio/mpeg',0,0,'f794555f-50ad-4fd4-9eab-67bc47c431ab',NULL,'2012-10-16 18:04:55',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('875a88e8-3fd0-48e9-a184-5f62459a468f','PUID=\"fmt/180\", FormatName=\"Microsoft PowerPoint for Macintosh\", FormatVersion=\"98\", FormatRisk=\"\", Extension=\"ppt,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:16',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('881214c5-642f-4a87-b4a5-3c8b6b8436d2','A .mp4 file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('88bb6c02-f537-4879-89dc-8e5e7e257156','Plain text',1,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:31',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('88f61e4e-ce58-4bc3-9bc8-91d6c3cfcabe','PUID=\"fmt/116\", FormatName=\"Windows Bitmap\", FormatVersion=\"3.0\", FormatRisk=\"\", Extension=\"dib,bmp,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:23',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('8a0b7119-633e-4f74-a499-8b5535158860','image/x-olympus-orf',0,0,'237d393f-aba2-44ae-b61c-76232d383883',NULL,'2012-10-16 18:27:00',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('8a0cc11d-d1ec-4e0d-a895-ac037c9d94f8','A .pef file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('8aa97c5e-1cf5-4b1b-a20f-58e21598a5fd','RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, stereo 44100 Hz',1,0,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-16 18:26:59',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('8c334402-efc2-4585-958c-540cedf32936','PUID=\"fmt/114\", FormatName=\"Windows Bitmap\", FormatVersion=\"1.0\", FormatRisk=\"\", Extension=\"ddb,bmp,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:23',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('8cacccb8-d2d5-46d4-a3f5-805ae1fc68cd','PUID=\"fmt/119\", FormatName=\"Windows Bitmap\", FormatVersion=\"5.0\", FormatRisk=\"\", Extension=\"bmp,dib,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:23',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('8d6f16a1-d41d-4f6b-9da6-fa06ce5ebe54','PUID=\"fmt/2\", FormatName=\"Broadcast WAVE\", FormatVersion=\"1\", FormatRisk=\"\", Extension=\"wav,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:18',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('8d8ad28c-4bf2-4258-a7f1-d2c04df7b125','JPEG 2000 image data',1,0,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-16 18:17:58',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('8ef30615-ebf0-4877-a521-64457b598158','A .archivematicaMaildir file',1,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('8f063f36-f64c-479e-b37a-2491e99feb6a','image/bmp',0,0,'8e39a076-d359-4c60-b6f4-38f7ae6adcdf',NULL,'2012-10-16 18:18:05',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('8f34c0fe-0d12-4dda-bef0-fb952990cb71','Plain text',1,0,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-11 23:10:29',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('9086cec8-a28e-4723-9f31-e2e68e173c6a','A .dng file',1,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('9118731f-b1bb-46ed-9d6c-1d070a5e7bf6','Targa image data - Mono - RLE 128 x 128',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:36',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('92526fe4-93e8-48c0-ab29-be50bc832bf5','A .aiff file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('92ba8d67-0170-4f39-8f29-316b44522112','A .mov file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('92ec6955-b6ca-4acb-b8d4-a475efcd8c73','PUID=\"fmt/16\", FormatName=\"Acrobat PDF 1.2 - Portable Document Format\", FormatVersion=\"1.2\", FormatRisk=\"\", Extension=\"pdf,\"',0,1,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:24',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('93020f07-2a16-450e-b0fc-e03446952c02','PUID=\"fmt/20\", FormatName=\"Acrobat PDF 1.6 - Portable Document Format\", FormatVersion=\"1.6\", FormatRisk=\"\", Extension=\"pdf,\"',0,1,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:25',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('931ba3fb-e82b-467a-a349-0320feac9a97','application/vnd.ms-asf',0,0,'f794555f-50ad-4fd4-9eab-67bc47c431ab',NULL,'2012-10-16 18:04:54',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('937e5e30-e054-4e65-972e-9c5b4b4f8f5f','PUID=\"fmt/17\", FormatName=\"Acrobat PDF 1.3 - Portable Document Format\", FormatVersion=\"1.3\", FormatRisk=\"\", Extension=\"pdf,\"',0,1,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:25',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('9548e247-c91d-4e39-99b1-26456cc7ce22','PUID=\"fmt/105\", FormatName=\"Macromedia Flash\", FormatVersion=\"2\", FormatRisk=\"\", Extension=\"swf,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:34',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('95d261ff-13dd-4c42-8c83-f69a7b1cd6ba','image/tiff',1,0,'c26227f7-fca8-4d98-9d8e-cfab86a2dd0a',NULL,'2012-10-17 23:15:37',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('9621ea57-5c9c-48dd-8a7f-1a7dc3f7e107','PUID=\"fmt/118\", FormatName=\"Windows Bitmap\", FormatVersion=\"4.0\", FormatRisk=\"\", Extension=\"bmp,dib,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:22',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('976dc56c-c92a-4253-ac88-f69cae251794','image/gif',0,0,'237d393f-aba2-44ae-b61c-76232d383883',NULL,'2012-10-16 18:27:01',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('9796ae62-3ee9-445c-a7d6-867fa5fae36d','A .mpeg file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('97f8b89c-5aed-4c41-97ec-72516fe0df51','PUID=\"fmt/292\", FormatName=\"OpenDocument Presentation\", FormatVersion=\"1.1\", FormatRisk=\"\", Extension=\"odp,otp,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:33',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('983398c1-423c-4e88-99be-da3ad56d2d7c','AIFF',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-15 21:32:21',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('983636ce-8bfb-4e06-b5f5-a2994af8ccc9','ORF EXIF',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:38',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('9862f025-b370-4ed0-96a1-0d81813ac256','A .raf file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('99818e34-6fe4-455c-81df-cca3b0e70932','Canon CR2 raw image data, version 2.0',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:47',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('99c1ab3a-dc50-4186-8828-df989f8d3d50','A .pptx file',1,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('9a8285cc-f383-4a1b-bf64-60749f065603','fmt/7',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-10-16 21:32:59',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('9c1ef1bf-7ac0-431e-bfaa-0490b199d2c3','A .tga file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('9d14b564-3571-4a71-81a0-9b937c61df41','PUID=\"x-fmt/398\", FormatName=\"Exchangeable Image File Format (Compressed)\", FormatVersion=\"2.0\", FormatRisk=\"\", Extension=\"jpg,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:15',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('9e447d46-e845-4abb-b562-e73b3a716ab4','audio/x-aiff',0,0,'c26227f7-fca8-4d98-9d8e-cfab86a2dd0a',NULL,'2012-10-17 23:15:35',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('9e55df2f-6153-4d2b-a156-863b1c0148e2','video/quicktime',0,0,'237d393f-aba2-44ae-b61c-76232d383883',NULL,'2012-10-16 17:55:52',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('9f11626e-4664-49d6-9604-5c2ee9f4f299','A .x3f file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('9f66ca0d-34eb-4820-9679-0704fecb73f6','A .wpd file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('9f97ee78-98ae-4a3e-9989-50ca598fee65','video/x-flv',0,0,'237d393f-aba2-44ae-b61c-76232d383883',NULL,'2012-10-16 18:18:01',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('9ff3de86-38cd-4c4a-816d-048f95ec4f51','A .mkv file',1,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('a010a604-78c2-4656-846b-d265b95ae771','PUID=\"fmt/191\", FormatName=\"Sony RAW Image File\", FormatVersion=\"\", FormatRisk=\"\", Extension=\"arw,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('a0af674f-4e72-496b-bf4e-4f126eab7372','AIFF',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:32',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('a14579f5-81f1-4d0e-b1f2-a63c7c0c94af','PUID=\"fmt/478\", FormatName=\"Acrobat PDF/A - Portable Document Format\", FormatVersion=\"2u\", FormatRisk=\"\", Extension=\"pdf,\"',0,1,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:26',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('a1bd442c-44f7-431a-9eb3-cfb962872c31','Free Lossless Audio Codec',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:37',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('a1e102fe-de95-4fc5-9bff-a1cc7058e1cd','A .wmv file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('a1f09e48-b4d7-426f-b186-b7bdd258f0f3','Microsoft Excel Format',1,1,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:42',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('a269e764-da36-445a-b6a4-e4cc3fac4f88','PUID=\"fmt/481\", FormatName=\"Acrobat PDF/A - Portable Document Format\", FormatVersion=\"3u\", FormatRisk=\"\", Extension=\"pdf,\"',0,1,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:27',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('a30af6e0-195d-46a8-a46a-cc1682d04896','image/tiff',1,0,'dc551ed2-9d2f-4c8a-acce-760fb740af48',NULL,'2012-10-16 18:18:19',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('a359b55f-70af-43c8-a6d1-42f0801c0155','PUID=\"fmt/293\", FormatName=\"OpenDocument Presentation\", FormatVersion=\"1.2\", FormatRisk=\"\", Extension=\"odp,otp,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:33',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('a3698ee9-8770-41d4-b4a2-c8cbafb972bc','PUID=\"fmt/42\", FormatName=\"JPEG File Interchange Format\", FormatVersion=\"1.00\", FormatRisk=\"\", Extension=\"jpeg,jpe,jpg,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:15',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('a3797587-2fde-418a-a73c-62541ca30275','audio/x-wave',1,0,'dc551ed2-9d2f-4c8a-acce-760fb740af48',NULL,'2012-10-16 17:55:59',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('a38ef10a-1dab-4643-b93c-dec589951c70','PUID=\"fmt/158\", FormatName=\"Acrobat PDF/X - Portable Document Format - Exchange 3:2002\", FormatVersion=\"\", FormatRisk=\"\", Extension=\"pdf,\"',0,1,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:28',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('a3f41b86-152e-4feb-878a-c83d486b57cf','ASCII',1,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-15 21:32:22',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('a487dde7-8bc6-475c-9b7c-35cd163c5845','fmt/46',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-10-16 21:32:57',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('a5b94581-b1b5-40c4-975c-0ea11870c237','IFF data, AIFF audio',0,0,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-11 23:10:30',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('a5cdb910-3eea-4f59-9319-d2c51b6658fd','PUID=\"fmt/110\", FormatName=\"Macromedia Flash\", FormatVersion=\"7\", FormatRisk=\"\", Extension=\"swf,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:35',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('a6a4884a-f8e5-4909-905b-df8825040cef','image/x-x3f',0,0,'237d393f-aba2-44ae-b61c-76232d383883',NULL,'2012-10-16 18:27:01',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('a86b0683-25af-4e39-9aa3-e0e4a1e7b395','FLAC audio bitstream data, 24 bit, 6 channels, 96 kHz, 28369692 samples',0,0,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-16 18:26:56',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('a973a41b-d90a-4081-b0ac-6eeef52d2893','text/xml',1,0,'dc551ed2-9d2f-4c8a-acce-760fb740af48',NULL,'2012-10-16 18:18:19',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('a974079d-0865-49ef-afd8-0ec91174d323','PUID=\"x-fmt/394\", FormatName=\"WordPerfect for MS-DOS/Windows Document\", FormatVersion=\"5.1\", FormatRisk=\"\", Extension=\"wp5,wpd,w51,wp,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:14',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('aa3515c1-bd03-4555-9e98-723ca14f74a9','A .eps file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('aa9e07d4-53ce-45c0-b72f-dfbbcb40829f','A .mpg file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('aaf1a292-b2e7-4624-8119-a6805bc6702c','A .jpg file',0,1,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('aaf970b7-31ef-40f0-a493-187298baa1b1','PUID=\"x-fmt/384\", FormatName=\"Quicktime\", FormatVersion=\"\", FormatRisk=\"\", Extension=\"mov,qtm,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('abc707f1-48f6-4e0c-acba-67c818ccdc85','PUID=\"fmt/148\", FormatName=\"Acrobat PDF/X - Portable Document Format - Exchange 3:2003\", FormatVersion=\"\", FormatRisk=\"\", Extension=\"pdf,\"',0,1,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:28',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('adac68c6-1483-430c-ab2e-b594660ae4d6','Audio file with ID3 version 2.3.0, contains: MPEG ADTS, layer III, v1, 128 kbps, 44.1 kHz, JntStereo',0,0,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-11 23:10:29',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('adfa26bc-e276-4d69-85f3-63c8bd046d3f','A .bmp file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('aed7e281-17ad-4834-aa9e-96fdc19ea2f1','Hypertext Markup Language',1,1,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:34',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('af5504e8-0bdb-4e97-8dea-08892fb928ca','A .odp file',1,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('afea3d12-379b-47ef-a395-0e162e37d90b','image/gif',0,0,'f794555f-50ad-4fd4-9eab-67bc47c431ab',NULL,'2012-10-16 18:18:16',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('b0bfcd0e-3194-4292-b78a-cea6a356a4d8','A .mboxi file',1,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('b155a460-4722-4dcf-81fa-3a4c65557cef','fmt/111',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-10-16 21:32:58',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('b155afa2-038e-42dc-beee-f89e5a3ce41f','A .tif file',1,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('b339460f-c9b6-43a2-a78d-9d8aaea9c8f2','PUID=\"fmt/157\", FormatName=\"Acrobat PDF/X - Portable Document Format - Exchange 1a:2001\", FormatVersion=\"\", FormatRisk=\"\", Extension=\"pdf,\"',0,1,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:27',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('b3df6777-cc46-4d03-8766-9c1eb0893ee9','A .xml file',1,1,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('b43d2871-487f-4d31-aaa1-e9bea8dd86fa','PUID=\"fmt/355\", FormatName=\"Rich Text Format\", FormatVersion=\"1.9\", FormatRisk=\"\", Extension=\"rtf,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:29',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('b47ed36b-9e71-4516-ba3a-cb4c91718d8c','JPEG 2000',1,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-16 18:18:17',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('b50f44c8-1d3d-4d0b-b17d-9ab0005ee224','Canon CR2 raw image data, version 2.0',0,0,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-16 18:26:59',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('b5d57def-9d34-4851-89f9-62b4646ad605','ATSC A/52 aka AC-3 aka Dolby Digital stream, 48 kHz,, complete main (CM) 3 front/2 rear, LFE on,, 448 kbit/s not Dolby Surround encoded',0,0,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-16 18:26:59',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('b60d9ce6-7f94-4c2d-b1b0-04d74644b48b','A .ods file',1,1,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('b63fd011-1df4-4478-86df-da93f3fc1955','PUID=\"fmt/112\", FormatName=\"Still Picture Interchange File Format\", FormatVersion=\"1.0\", FormatRisk=\"\", Extension=\"spf,jpg,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:15',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('b7463782-e37e-447e-90cd-2703deeb21e2','text/html',1,1,'237d393f-aba2-44ae-b61c-76232d383883',NULL,'2012-10-16 18:18:01',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('b7996d48-fbd6-4f41-9b0e-30ab67feb511','text/rtf',1,0,'c26227f7-fca8-4d98-9d8e-cfab86a2dd0a',NULL,'2012-10-17 23:15:35',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('b7b89065-c83b-48f0-bf23-136c6c092dfd','application/vnd.ms-excel',1,1,'c26227f7-fca8-4d98-9d8e-cfab86a2dd0a',NULL,'2012-10-17 23:15:40',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('b7c6ba3f-b139-4451-b0ce-2e534a088d56','PUID=\"fmt/44\", FormatName=\"JPEG File Interchange Format\", FormatVersion=\"1.02\", FormatRisk=\"\", Extension=\"jpg,jpe,jpeg,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:15',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('b83c3a3d-7feb-4677-b38c-1ecd5118c3f4','Microsoft Powerpoint Presentation',1,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:40',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('b8668b4d-abbf-4a4e-8646-0640f2baa787','PDF document, version 1.5',1,0,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-16 18:17:59',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('b8863dbf-f999-4c0f-889f-ccc18b6a6e71','video/x-ms-asf',0,0,'237d393f-aba2-44ae-b61c-76232d383883',NULL,'2012-10-16 17:55:51',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('b89940da-f3c3-4dad-9eb6-86bd2ba380ab','A .ai file',1,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('b8b6dfa3-beca-4667-a279-cf78d610a0b6','video/x-flv',0,0,'f794555f-50ad-4fd4-9eab-67bc47c431ab',NULL,'2012-10-16 18:18:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('b95d9944-b9f3-4dba-bd83-86c6fe3a9ca0','PUID=\"fmt/108\", FormatName=\"Macromedia Flash\", FormatVersion=\"5\", FormatRisk=\"\", Extension=\"swf,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:34',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('badbed99-3113-45e7-bf87-40bf5354f88d','A .wma file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('baecde96-ebee-426c-bc77-3ec8dc653261','A .jpeg file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('bbfbbed7-11fa-4cb1-9819-89284ff7d80a','text/rtf',1,0,'237d393f-aba2-44ae-b61c-76232d383883',NULL,'2012-10-16 17:55:51',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('bc0a4930-5a62-4e38-92ae-c7b0b024fecd','A .log file',1,1,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('bc6c161a-3f61-4890-9492-90ad25567b6b','PUID=\"fmt/290\", FormatName=\"OpenDocument Text\", FormatVersion=\"1.1\", FormatRisk=\"\", Extension=\"odt,ott,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:17',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('bc9e29c0-cf88-497c-a9da-76956e4dc08e','PUID=\"fmt/199\", FormatName=\"MPEG-4 Media File\", FormatVersion=\"\", FormatRisk=\"\", Extension=\"mp4,m4v,m4a,f4v,f4a,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:17',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('bc9e9d1b-9112-4336-ac8e-c2c0b614777b','A .tiff file',1,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('bd3002cb-5404-4590-9481-c62d5d638bf6','fmt/189',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-10-16 21:32:56',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('bd4305e4-73dc-41e8-a63c-11dabe86bad4','text/html',1,1,'c26227f7-fca8-4d98-9d8e-cfab86a2dd0a',NULL,'2012-10-17 23:15:36',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('bdb7edf8-255d-4fe5-a457-50e93fad0211','PUID=\"fmt/95\", FormatName=\"Acrobat PDF/A - Portable Document Format\", FormatVersion=\"1a\", FormatRisk=\"\", Extension=\"pdf,\"',0,1,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:25',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('bfefbf36-c506-403d-896f-3a2eac356e0c','audio/x-wav',1,0,'237d393f-aba2-44ae-b61c-76232d383883',NULL,'2012-10-16 17:55:52',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('bff92855-162c-4d4e-abb3-0db3388cf7ae','A .mbox file',1,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('c02e25ee-16f0-4020-80f7-8c378c398dc4','PUID=\"fmt/122\", FormatName=\"Encapsulated PostScript File Format\", FormatVersion=\"1.2\", FormatRisk=\"\", Extension=\"eps,epsf,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:21',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('c0540086-8d61-4684-b8a8-ed11594c5abf','application/rtf, text/rtf',1,0,'c26227f7-fca8-4d98-9d8e-cfab86a2dd0a',NULL,'2012-10-17 23:15:35',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('c0971b7e-06eb-4d4b-856b-5ffb7d2843d6','image/jp2',1,0,'f794555f-50ad-4fd4-9eab-67bc47c431ab',NULL,'2012-10-16 18:18:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('c219f204-5418-4f45-b148-8216d2a15e88','A .dcr file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('c24abbeb-3318-4ec0-ab40-f272a26800ad','PUID=\"x-fmt/2\", FormatName=\"Microsoft Word for Macintosh Document\", FormatVersion=\"6.0\", FormatRisk=\"\", Extension=\"doc,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:31',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('c285590a-914f-4c36-a0a2-624fa25d028d','Canon CIFF raw image data, version 1.2',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:48',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('c458b319-6779-4426-a1a1-b01c0cb46194','JPEG',0,1,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-16 18:18:18',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('c57451a7-13f9-4483-94af-5290f7a2bd87','application/vnd.ms-excel',1,1,'237d393f-aba2-44ae-b61c-76232d383883',NULL,'2012-10-16 17:55:53',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('c5e493af-195e-4b64-9331-4f716a16eac9','A .pst file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('c687dcf9-2069-4027-8c00-98f4b66fc2e2','A .rtf file',1,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('c789e8b6-9d94-47f4-9be5-5a118cd13c0d','PUID=\"fmt/182\", FormatName=\"Microsoft PowerPoint for Macintosh\", FormatVersion=\"v.X\", FormatRisk=\"\", Extension=\"ppt,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:16',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('c79e680d-ce6f-44bb-aa6f-91ac2e94dedb','PUID=\"fmt/43\", FormatName=\"JPEG File Interchange Format\", FormatVersion=\"1.01\", FormatRisk=\"\", Extension=\"jpg,jpe,jpeg,\"',0,1,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:15',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('c82bc722-a02c-42d5-b894-e45baa4badb2','application/msword',1,0,'8e39a076-d359-4c60-b6f4-38f7ae6adcdf',NULL,'2012-10-15 21:30:49',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('c8e9d29a-13ca-4f03-9d2c-5834667f54ea','(Corel/WP)',0,0,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-16 18:17:58',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('c90cae9f-04e4-48d5-8c7f-ddaed3bc64ac','PUID=\"fmt/414\", FormatName=\"Audio Interchange File Format\", FormatVersion=\"1.2\", FormatRisk=\"\", Extension=\"aif,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:33',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('c9d79a74-a58f-4c71-8977-1129c10f3a5d','application/zip',1,1,'8e39a076-d359-4c60-b6f4-38f7ae6adcdf',NULL,'2012-10-15 21:30:49',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('cabd97ec-12fc-442a-9952-54a9250c6e8c','image/bmp',0,0,'f794555f-50ad-4fd4-9eab-67bc47c431ab',NULL,'2012-10-16 18:18:16',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('cb2d39d3-9f00-41c1-b0ef-99d5c57a900c','ATSC A/52 aka AC-3 aka Dolby Digital stream, 48 kHz,, complete main (CM) 3 front/2 rear, LFE on,, 448 kbit/s reserved Dolby Surround mode',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:40',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('cba89043-1ac9-4e3c-a140-2ac74377c3b0','A .mrw file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('cba8d14c-a8a8-4676-b1d2-3cd726528825','PUID=\"fmt/13\", FormatName=\"Portable Network Graphics\", FormatVersion=\"1.2\", FormatRisk=\"\", Extension=\"png,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:21',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('cc23bcb7-221b-4ef0-98ab-40726b5aee4b','PUID=\"fmt/5\", FormatName=\"Audio/Video Interleaved Format\", FormatVersion=\"\", FormatRisk=\"\", Extension=\"avi,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:29',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('ce23cf3b-6ee1-4392-9d11-e088cde97864','A .swf file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('ce25ed99-6365-4cc9-a8f7-1b0f8428d271','Access normalization failed',0,0,NULL,NULL,'2012-10-02 00:24:56',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('d189342e-a551-4f77-a45c-6f3482e3dce3','Canon CIFF raw image data, version 1.2',0,0,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-16 18:26:59',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('d2941b3f-38e2-491d-947b-f6e07802595c','image/gif',0,0,'8e39a076-d359-4c60-b6f4-38f7ae6adcdf',NULL,'2012-10-16 18:18:06',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('d3e84d02-ec80-459d-bba2-2517d9732c3b','PUID=\"fmt/341\", FormatName=\"Macintosh PICT Image\", FormatVersion=\"2.0\", FormatRisk=\"\", Extension=\"pct,pict,pic,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:17',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('d407dc6e-52ae-4fec-a1f6-9708d87af938','application/octet-stream',0,0,'c26227f7-fca8-4d98-9d8e-cfab86a2dd0a',NULL,'2012-10-17 23:15:34',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('d4e1477a-ed22-48a3-b1f0-751e5bfa6b5a','PUID=\"fmt/12\", FormatName=\"Portable Network Graphics\", FormatVersion=\"1.1\", FormatRisk=\"\", Extension=\"png,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:21',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('d4e6b67d-331c-428b-964f-8303ca7eafe5','text/plain',1,1,'f794555f-50ad-4fd4-9eab-67bc47c431ab',NULL,'2012-10-16 18:18:16',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('d5719ffd-c663-44dd-946e-0818c31629a6','PUID=\"fmt/126\", FormatName=\"Microsoft Powerpoint Presentation\", FormatVersion=\"97-2002\", FormatRisk=\"\", Extension=\"ppt,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:17',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('d63f2b5e-736c-4b85-ba35-ec6cc58be2a2','PUID=\"fmt/477\", FormatName=\"Acrobat PDF/A - Portable Document Format\", FormatVersion=\"2b\", FormatRisk=\"\", Extension=\"pdf,\"',0,1,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:26',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('d6d087d6-ace3-49ad-882d-67267cd29721','PUID=\"fmt/132\", FormatName=\"Windows Media Audio\", FormatVersion=\"\", FormatRisk=\"\", Extension=\"wma,asf,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:28',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('d72473f6-d239-448b-acfc-c3f177f65aa2','PUID=\"x-fmt/397\", FormatName=\"Exchangeable Image File Format (Audio)\", FormatVersion=\"2.0\", FormatRisk=\"\", Extension=\"wav,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:18',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('d80f1e2e-a75b-4492-8f7b-e541e3980fb7','application/pdf',1,0,'c26227f7-fca8-4d98-9d8e-cfab86a2dd0a',NULL,'2012-10-17 23:15:37',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('d82eff8d-ade2-4c27-a5f9-afe1fedd6b10','PUID=\"fmt/52\", FormatName=\"Rich Text Format\", FormatVersion=\"1.7\", FormatRisk=\"\", Extension=\"rtf,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:29',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('d95f4962-a8cd-4357-a0bc-4f2ffd408f2d','PUID=\"x-fmt/80\", FormatName=\"Macintosh PICT Image\", FormatVersion=\"1.0\", FormatRisk=\"\", Extension=\"pct,pict,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:17',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('daf70773-a281-4620-9c75-73350150512e','PUID=\"fmt/117\", FormatName=\"Windows Bitmap\", FormatVersion=\"3.0 NT\", FormatRisk=\"\", Extension=\"dib,bmp,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:23',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('db10b9f5-1c41-4638-bf7b-e8f5c214903c','PUID=\"fmt/479\", FormatName=\"Acrobat PDF/A - Portable Document Format\", FormatVersion=\"3a\", FormatRisk=\"\", Extension=\"pdf,\"',0,1,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:26',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('dbad8e78-b7af-4039-8aa2-b501c42b7eeb','PUID=\"fmt/438\", FormatName=\"Digital Negative Format (DNG)\", FormatVersion=\"1.3\", FormatRisk=\"\", Extension=\"dng,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:20',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('dc4be07b-03cc-4d6d-95e5-2bd6f49b8b8b','audio/x-wav',1,0,'f794555f-50ad-4fd4-9eab-67bc47c431ab',NULL,'2012-10-16 18:04:55',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('dcc00ef2-f22c-4796-87e5-f8b728a6a0dd','PUID=\"fmt/436\", FormatName=\"Digital Negative Format (DNG)\", FormatVersion=\"1.0\", FormatRisk=\"\", Extension=\"dng,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:20',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('dcd1f9aa-d544-4ff7-a90a-d7dafc162897','CRW',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:49',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('dee6f452-c658-46e1-9fbc-f3dd3727479c','A .docx file',1,1,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('e01e5dc0-37da-451a-9644-22309e5cb21e','audio/mpeg',0,0,'237d393f-aba2-44ae-b61c-76232d383883',NULL,'2012-10-16 17:55:52',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('e0c40516-1727-47b5-89cd-ff8e36764442','A .HTML file',1,1,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('e0e6ab6e-dd08-4b2a-9267-8ed7500655f6','text/xml',1,0,'8e39a076-d359-4c60-b6f4-38f7ae6adcdf',NULL,'2012-10-16 18:18:04',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('e10c64e0-105a-44f5-83da-a4a10379d802','PUID=\"fmt/134\", FormatName=\"MPEG 1/2 Audio Layer 3\", FormatVersion=\"\", FormatRisk=\"\", Extension=\"mp3,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:20',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('e112c95a-5d2e-4b07-89fb-8775e48514d5','PUID=\"fmt/146\", FormatName=\"Acrobat PDF/X - Portable Document Format - Exchange 1a:2003\", FormatVersion=\"\", FormatRisk=\"\", Extension=\"pdf,\"',0,1,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:28',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('e2421d0b-edfe-44fc-b404-f88f4e3ac522','SVG Scalable Vector Graphics image',1,0,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-16 18:18:00',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('e2e6315f-7469-410d-8532-628d933f1508','PUID=\"x-fmt/92\", FormatName=\"Adobe Photoshop\", FormatVersion=\"\", FormatRisk=\"\", Extension=\"psd,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:31',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('e326db2c-7da9-40c4-81a2-613c979efcbf','audio/x-ms-wma',0,0,'f794555f-50ad-4fd4-9eab-67bc47c431ab',NULL,'2012-10-16 18:18:15',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('e342d908-5dd2-4ea3-9291-288339829a8c','video/mpeg',0,0,'c26227f7-fca8-4d98-9d8e-cfab86a2dd0a',NULL,'2012-10-17 23:15:40',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('e3bb38be-25d8-4831-b583-84c20ee371a9','A .css file',1,1,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('e45b3f8d-6116-48a5-b671-031cc0f9ab6b','7ZipCompatable',0,0,NULL,NULL,'2012-10-02 00:24:56',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('e4c15807-3cb1-4e86-a659-03b56b3e1fb5','A .aif file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('e4f2ee35-9d5c-4d2a-a251-0bbe5979d6d1','application/postscript',0,0,'f794555f-50ad-4fd4-9eab-67bc47c431ab',NULL,'2012-10-16 18:18:15',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('e549810e-8a45-4d3b-9f7a-97ce7f11e853','Adobe Photoshop Image, 800 x 533, RGB, 3x 8-bit channels',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:38',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('e5b5b610-e9dd-471f-b2c9-08455a23ddfe','application/pdf',0,1,'dc551ed2-9d2f-4c8a-acce-760fb740af48',NULL,'2012-10-16 17:55:59',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('e5ebd621-9c56-4ab6-a698-75a89b044102','PUID=\"fmt/142\", FormatName=\"Waveform Audio (WAVEFORMATEX)\", FormatVersion=\"\", FormatRisk=\"\", Extension=\"wav,wave,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:19',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('e65c2ac3-db3d-412e-ad84-021efeca4991','A .mxf file',1,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('e793325f-df0f-4e64-9ef9-cf1b08bf29ee','PUID=\"fmt/125\", FormatName=\"Microsoft Powerpoint Presentation\", FormatVersion=\"95\", FormatRisk=\"\", Extension=\"ppt,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:17',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('e7c2b9b8-8c8f-42f7-86c6-2011cc2678a4','A .doc file',1,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('e7cb481d-e08b-4389-9819-e6bd6e12295c','A .ppt file',1,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('e88a46ca-5372-4314-a51c-ec83ac9ef4b4','audio/mpeg',0,0,'c26227f7-fca8-4d98-9d8e-cfab86a2dd0a',NULL,'2012-10-17 23:15:41',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('e8e6949d-f0ae-4001-b8d0-91bfd45a1b47','image/jp2',1,0,'c26227f7-fca8-4d98-9d8e-cfab86a2dd0a',NULL,'2012-10-17 23:15:35',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('eaf3f239-4e9b-42bd-b618-2cad78793b36','A .crw file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('eb10b29a-689c-45ca-9ea5-d92c275d0258','Olympus ORF raw image data, little-endian',0,0,'076cce1b-9b46-4343-a193-11c2662c9e02',NULL,'2012-10-16 18:26:57',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('eb216a3d-72a4-459b-8686-6aebab26bbb7','A .svg file',1,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('ebc1e69b-0209-4abe-b22e-6d5660fab576','PUID=\"fmt/15\", FormatName=\"Acrobat PDF 1.1 - Portable Document Format\", FormatVersion=\"1.1\", FormatRisk=\"\", Extension=\"pdf,\"',0,1,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:24',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('ec0a162a-90d3-4731-90c8-6c7ef3396f5c','PUID=\"fmt/45\", FormatName=\"Rich Text Format\", FormatVersion=\"1.0-1.4\", FormatRisk=\"\", Extension=\"rtf,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:28',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('ed15e649-7843-494a-a100-fc2571193f02','OpenDocument Text',1,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:30',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('ed5607ba-10de-4e96-902b-8eaf4dacf249','application/vnd.ms-powerpoint',1,0,'c26227f7-fca8-4d98-9d8e-cfab86a2dd0a',NULL,'2012-10-17 23:15:34',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('ee907131-8b73-4dab-9978-97fa820b01fe','A .png file',1,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('ef02e784-10d9-4ff1-b4ea-b0e4636ba2b6','PUID=\"fmt/418\", FormatName=\"Adobe Illustrator\", FormatVersion=\"3.0 / 3.2\", FormatRisk=\"\", Extension=\"ai,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:29',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('f048d680-916b-4631-a19e-2b4c292f010e','PUID=\"fmt/291\", FormatName=\"OpenDocument Text\", FormatVersion=\"1.2\", FormatRisk=\"\", Extension=\"odt,ott,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:18',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('f1abb661-2418-4d3a-8d41-aef1a0f57bdc','EPS EXIF',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:37',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('f3fa999a-ba70-482a-a660-f732d27a882e','Apple QuickTime movie (fast start)',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:38',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('f520ade0-4fe7-4000-8bb5-061a222cb923','A .txt file',1,1,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('f869b28f-c712-48b5-b095-27dc19c94d09','video/x-ms-wmv',0,0,'c26227f7-fca8-4d98-9d8e-cfab86a2dd0a',NULL,'2012-10-17 23:15:34',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('f86d6829-9a80-4348-9869-36b11517e74e','MPEG 1/2 Audio Layer 3',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:42',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('f991f719-4fe8-43d7-b032-2e4a52de8d53','image/tiff',1,0,'237d393f-aba2-44ae-b61c-76232d383883',NULL,'2012-10-16 18:18:01',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('f99c8abb-3364-44d6-b2da-bbcaad58e2ce','A .xsl file',1,1,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('fa1980ea-578a-44f0-9cca-fd9b80f52af2','Graphics Interchange Format',0,0,'b0bcccfb-04bc-4daa-a13c-77c23c2bda85',NULL,'2012-10-17 23:13:45',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('fb06ea33-20d5-4a3b-96fe-a7f654e63c03','audio/x-flac',0,0,'c26227f7-fca8-4d98-9d8e-cfab86a2dd0a',NULL,'2012-10-17 23:15:38',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('fb5fca7c-0a75-4a94-8dc2-0dba6d66747f','image/x-ms-bmp',0,0,'237d393f-aba2-44ae-b61c-76232d383883',NULL,'2012-10-16 18:27:00',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('fbae3a6d-5b98-4974-888a-85bf48b793fe','PUID=\"fmt/181\", FormatName=\"Microsoft PowerPoint for Macintosh\", FormatVersion=\"2001\", FormatRisk=\"\", Extension=\"ppt,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:16',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('fbcf2ae7-4893-4771-833d-8eee20d91f3b','A .raw file',0,0,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('fc865a65-2cae-4062-a63d-0c6a54877c0e','application/postscript',0,0,'c26227f7-fca8-4d98-9d8e-cfab86a2dd0a',NULL,'2012-10-17 23:15:39',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('fd394578-5b76-4eb9-b40f-f116ec11a09e','PUID=\"fmt/476\", FormatName=\"Acrobat PDF/A - Portable Document Format\", FormatVersion=\"2a\", FormatRisk=\"\", Extension=\"pdf,\"',0,1,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:26',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('fe2dfde9-d4b8-4e1f-bcc0-262ec7710c3c','A .cvs file',1,1,'16ae42ff-1018-4815-aac8-cceacd8d88a8',NULL,'2012-10-09 23:16:13',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('fedd6582-993f-498c-86c3-991e758a795f','PUID=\"fmt/50\", FormatName=\"Rich Text Format\", FormatVersion=\"1.5-1.6\", FormatRisk=\"\", Extension=\"rtf,\"',1,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:28',1); -INSERT INTO `FileID` (`pk`, `description`, `validPreservationFormat`, `validAccessFormat`, `fileidtype_id`, `replaces`, `lastModified`, `enabled`) VALUES ('ff33f793-b071-4362-a13d-18225470ea98','PUID=\"fmt/123\", FormatName=\"Encapsulated PostScript File Format\", FormatVersion=\"2.0\", FormatRisk=\"\", Extension=\"eps,epsf,\"',0,0,'ac5d97dc-df9e-48b2-81c5-4a8b044355fa',NULL,'2012-11-09 23:17:21',1); -/*!40000 ALTER TABLE `FileID` ENABLE KEYS */; -UNLOCK TABLES; - -INSERT INTO `CommandClassification` (`pk`, `classification`, `replaces`, `lastModified`) VALUES ('27c2969b-b6a0-441d-888d-85292b692064','thumbnail',NULL,'2012-10-02 00:24:57'); -INSERT INTO `CommandClassification` (`pk`, `classification`, `replaces`, `lastModified`) VALUES ('3141bc6f-7f77-4809-9244-116b235e7330','access',NULL,'2012-10-02 00:24:57'); -INSERT INTO `CommandClassification` (`pk`, `classification`, `replaces`, `lastModified`) VALUES ('3d1b570f-f500-4b3c-bbbc-4c58aad05c27','preservation',NULL,'2012-10-02 00:24:57'); -INSERT INTO `CommandClassification` (`pk`, `classification`, `replaces`, `lastModified`) VALUES ('5934dd0b-9f7c-4091-8607-47f519f5c095','extract',NULL,'2012-10-02 00:24:57'); - -LOCK TABLES `CommandRelationship` WRITE; -/*!40000 ALTER TABLE `CommandRelationship` DISABLE KEYS */; -INSERT INTO `CommandRelationship` (`pk`, `commandClassification`, `command`, `fileId`, `replaces`, `lastModified`) VALUES ('005ccb08-212f-4f38-a570-8124054fbbaa','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','e326db2c-7da9-40c4-81a2-613c979efcbf',NULL,'2012-10-17 01:18:15'),('00e17703-53c5-4349-9f34-7b62f45f8de6','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','4953b2ca-d1f2-4905-a8d4-bf95abd54930',NULL,'2012-10-17 00:55:59'),('00f81dcf-8b45-4bf2-acfc-9b8a023c5015','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','a5cdb910-3eea-4f59-9319-d2c51b6658fd',NULL,'2012-11-10 07:17:35'),('022e019a-c910-4318-b414-c6c0b97c32b8','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','74fa9f99-573c-4c76-964b-4456ac234715',NULL,'2012-11-10 07:17:32'),('02b1e102-f4f4-44c6-baf5-887403dde742','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','f3fa999a-ba70-482a-a660-f732d27a882e',NULL,'2012-10-18 06:13:39'),('0432646a-83ea-4411-b873-6b4e47f53835','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','afea3d12-379b-47ef-a395-0e162e37d90b',NULL,'2012-10-17 01:18:16'),('044b0127-10a0-417e-9ece-308252f7211b','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','64c450b4-135c-46d1-a9aa-3f9b15671677','79103108-9ea9-4ed0-a777-37af444867b6',NULL,'2012-10-17 01:26:57'),('0496cb64-3e26-420a-81e6-c6b39c83e580','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','95d261ff-13dd-4c42-8c83-f69a7b1cd6ba',NULL,'2012-10-18 06:15:37'),('04984e2e-27f1-49f5-bbc4-1a3f8fc02c38','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','573c6a20-1076-4234-a728-0bce8405f097',NULL,'2012-10-18 06:13:34'),('04a475bc-53b9-4cf2-b2a0-dfd3123ca434','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','705e9509-6393-481f-8dd5-f4753abcfead',NULL,'2012-10-17 01:26:58'),('04aadda9-2bcc-4adb-b4b9-63a38d348801','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','a30af6e0-195d-46a8-a46a-cc1682d04896',NULL,'2012-10-17 01:18:19'),('04b41cc3-3b8c-4681-bdd4-d595f63a1502','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','a487dde7-8bc6-475c-9b7c-35cd163c5845',NULL,'2012-10-17 04:32:57'),('05218f18-5400-4dda-a96c-ce1c25e8c930','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','1567b10b-1474-4df5-a6df-ce3b8a92ee97',NULL,'2012-10-19 05:57:04'),('05321f60-fcbd-44a6-92cc-0591862e72df','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','f86d6829-9a80-4348-9869-36b11517e74e',NULL,'2012-10-18 06:13:42'),('05766805-3412-42af-bdc0-5ffd5383b197','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','c789e8b6-9d94-47f4-9be5-5a118cd13c0d',NULL,'2012-11-10 07:17:16'),('05df4917-f3b3-41b4-876e-9ba92b852730','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','369eeb06-b520-4566-b9c5-1f7a2277a450',NULL,'2012-10-17 01:18:17'),('07153824-b553-4db8-884d-a4669c927ee9','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','8479526a-fdab-44af-97de-920bea73237e',NULL,'2012-10-18 06:15:38'),('07621790-06a8-49cf-be93-822072279885','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','21749616-c014-4e81-84d5-f90af82532b7',NULL,'2012-10-18 06:13:33'),('07a22467-a6a2-4621-8e6c-cf80b8d58c8a','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','08255d3a-bd85-434e-97a8-14f98b0c4ec8',NULL,'2012-10-17 01:26:59'),('088d506d-d71a-42fd-bcfb-c95bfaf2dfa5','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','881214c5-642f-4a87-b4a5-3c8b6b8436d2',NULL,'2012-10-02 07:24:59'),('08b8152a-10cf-4ace-8ac8-8a422b29eef2','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','480b7fb6-f10b-4631-97f4-f40e0385cdca',NULL,'2012-10-18 06:13:39'),('08d37a19-7939-49e6-ade6-3ea0220ad88b','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','0f919e47-d406-4e9c-96c2-0a372c818f73',NULL,'2012-10-19 05:57:15'),('08ff0f76-ea48-4310-aa74-e4d09e6ecfdb','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','dcd1f9aa-d544-4ff7-a90a-d7dafc162897',NULL,'2012-10-18 06:13:49'),('097e8e92-ba61-4d86-a945-666766f0eaf9','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','f3fa999a-ba70-482a-a660-f732d27a882e',NULL,'2012-10-18 06:13:39'),('098dd2f9-8440-4d18-b37f-e4e2ab859498','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','4d2748e9-7233-4106-b7a1-83e7cfdbff24',NULL,'2012-10-18 06:15:39'),('0a0b5dc9-661f-477e-8acb-c45ae4ab7062','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','d6a33093-85d5-4088-83e1-b7a774a826bd','32846451-1dbe-44c0-b599-cfd3bdc73b0e',NULL,'2012-11-21 06:37:15'),('0aea272d-5ba8-4599-ae27-2a773335ee86','3141bc6f-7f77-4809-9244-116b235e7330','d91f0637-b2f6-4492-ac1b-23c155102a3e','e0e6ab6e-dd08-4b2a-9267-8ed7500655f6',NULL,'2012-11-21 06:37:15'),('0b34951f-715f-4572-9903-5578baabedf2','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','fbcf2ae7-4893-4771-833d-8eee20d91f3b',NULL,'2012-10-02 07:24:59'),('0bb6dfd3-b9ff-422e-a651-567bd6ef71f1','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','b47ed36b-9e71-4516-ba3a-cb4c91718d8c',NULL,'2012-10-17 01:18:17'),('0c459459-21d7-4d79-b84b-c127301c9d37','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','4c9c49f4-ca45-40bc-b7a2-119bfa76cf23',NULL,'2012-10-02 07:24:59'),('0caae796-cb9b-4e2f-bfd5-59f267eff991','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','9862f025-b370-4ed0-96a1-0d81813ac256',NULL,'2012-10-02 07:24:59'),('0e27288b-1d52-4f3f-a53e-f1bdd8973f33','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','420813eb-03e3-4a3a-97ca-84894f08af88',NULL,'2012-10-17 04:33:02'),('0e472be8-84f9-4e1c-98d6-8e1ce5aeabee','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','f991f719-4fe8-43d7-b032-2e4a52de8d53',NULL,'2012-10-17 01:18:02'),('0e5fe48d-6579-49a0-843e-40433219dd98','3141bc6f-7f77-4809-9244-116b235e7330','d91f0637-b2f6-4492-ac1b-23c155102a3e','435bcdbe-75b2-44d2-94ef-2710edcf9eb3',NULL,'2012-10-17 04:33:01'),('0e961118-9d44-4cec-ad68-5ece6cc7fa1a','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','d6a33093-85d5-4088-83e1-b7a774a826bd','e112c95a-5d2e-4b07-89fb-8775e48514d5',NULL,'2012-11-10 07:17:28'),('0ea97891-93a8-4ac8-b453-e9fcb1094f2d','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','9118731f-b1bb-46ed-9d6c-1d070a5e7bf6',NULL,'2012-10-18 06:13:36'),('0ebadba7-4eb9-4937-aa5f-42dcddbe3388','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','59160936-d126-49a2-a275-86f9359c0e89',NULL,'2012-10-18 06:15:36'),('0f764862-d980-4838-a6b0-d0de7d659333','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','e10c64e0-105a-44f5-83da-a4a10379d802',NULL,'2012-10-17 04:33:05'),('0fbfd7bc-dde6-4435-90ea-640547bdff2e','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','7b2ab804-b73e-4700-96ca-61ebc9c3576e',NULL,'2012-10-18 06:13:41'),('1008bda5-2d9d-47f9-a05f-01e7e0716ab9','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','1ddbfa77-0390-4905-aeda-58d2984db924',NULL,'2012-11-10 07:17:34'),('10dd2122-74cf-4e5d-adaf-6bfb650a5458','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','d95f4962-a8cd-4357-a0bc-4f2ffd408f2d',NULL,'2012-10-17 04:33:05'),('11422576-5eba-4b51-aad5-b9e31c70ff48','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','976dc56c-c92a-4253-ac88-f69cae251794',NULL,'2012-10-17 01:27:02'),('11c8d32c-e555-41a7-abba-9640fada41ca','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','d407dc6e-52ae-4fec-a1f6-9708d87af938',NULL,'2012-10-18 06:15:40'),('1328a142-2dc3-4dbe-848e-3166dba0c3e5','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','d6a33093-85d5-4088-83e1-b7a774a826bd','a269e764-da36-445a-b6a4-e4cc3fac4f88',NULL,'2012-11-10 07:17:27'),('1387adf6-657c-4a8a-9c6f-89b14cc0d7b0','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','2b6c2412-b978-4478-8d09-b91ed4c6dc6a',NULL,'2012-10-17 04:33:00'),('13e648a7-4e57-4e54-a0c7-e0e8a502c3ec','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','3651eff9-0c05-4077-8f26-a9dfb915465a',NULL,'2012-10-17 01:18:18'),('144ed0a5-ed7b-4543-8092-f1d4b8acca02','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','a0af674f-4e72-496b-bf4e-4f126eab7372',NULL,'2012-10-18 06:13:33'),('14929c16-4cc7-4ce4-b809-54868020a7cc','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','4690e672-6b5f-42ac-9cf8-d0a3bafeeaa9',NULL,'2012-10-17 01:26:58'),('149d0f47-1538-4832-885e-7287c3241fed','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','64c450b4-135c-46d1-a9aa-3f9b15671677','e4f2ee35-9d5c-4d2a-a251-0bbe5979d6d1',NULL,'2012-10-17 01:18:15'),('14ba299c-8e37-4407-bb9e-c0fd1ffab13d','3141bc6f-7f77-4809-9244-116b235e7330','e96b787d-57f6-41a4-9693-d0634bfacacb','369eeb06-b520-4566-b9c5-1f7a2277a450',NULL,'2012-10-17 01:18:18'),('14ea0110-1a05-47a9-9a66-75881cd88490','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','cc23bcb7-221b-4ef0-98ab-40726b5aee4b',NULL,'2012-11-10 07:17:29'),('152c53d0-546c-4c9d-8e17-7cca83c20b28','3141bc6f-7f77-4809-9244-116b235e7330','d91f0637-b2f6-4492-ac1b-23c155102a3e','e2421d0b-edfe-44fc-b404-f88f4e3ac522',NULL,'2012-10-17 01:18:00'),('1535c347-9e09-4282-9cc5-b14971303b45','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','0f919e47-d406-4e9c-96c2-0a372c818f73',NULL,'2012-10-19 05:57:15'),('154f81f6-d830-4cc1-9fe1-3335a0718d43','3141bc6f-7f77-4809-9244-116b235e7330','a74cbffb-281b-49ee-8e96-fbac2ab54785','4f31deac-0130-4dc8-9a6b-b2ac3bbc343f',NULL,'2012-11-10 07:17:30'),('15e340bd-72fa-4ba1-b7ad-1702df0b0f1f','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','b155a460-4722-4dcf-81fa-3a4c65557cef',NULL,'2012-10-17 04:32:58'),('15e54d71-1fbe-40cc-b3ac-6485878457c4','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','c285590a-914f-4c36-a0a2-624fa25d028d',NULL,'2012-10-18 06:13:48'),('15f2e4cc-ce68-423e-baaf-9cb095d16576','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','8d8ad28c-4bf2-4258-a7f1-d2c04df7b125',NULL,'2012-10-17 01:17:59'),('15fbe8c4-1bc2-4d5d-b2fa-9db597dd99f3','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','180a7231-0444-44c9-8371-81825a2be339',NULL,'2012-10-18 06:15:35'),('160ab252-75e9-4cab-9577-2b6292c9bceb','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','adfa26bc-e276-4d69-85f3-63c8bd046d3f',NULL,'2013-01-05 07:02:50'),('160b833d-4424-434d-892e-06f349c89146','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','b8b6dfa3-beca-4667-a279-cf78d610a0b6',NULL,'2012-10-17 01:18:13'),('16124a22-522f-4bd1-8a96-758b823aea83','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','3651eff9-0c05-4077-8f26-a9dfb915465a',NULL,'2012-10-17 01:18:17'),('1656da41-2aa7-4549-9537-cf173e526397','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','51f80b0a-7a4b-4c68-ac7a-b41ef9c9aaba',NULL,'2012-10-18 06:15:36'),('168457f7-e929-401f-a6b6-82a94363763f','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','9118731f-b1bb-46ed-9d6c-1d070a5e7bf6',NULL,'2012-10-18 06:13:36'),('17416d8a-df62-47c7-b0d7-4b8bbff9b5a0','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','daf70773-a281-4620-9c75-73350150512e',NULL,'2012-11-10 07:17:23'),('17ab8559-00c2-4bd1-8c3d-a5fac515a1a0','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','274e16c7-1b68-498b-8290-e339d4197136',NULL,'2012-10-18 06:13:40'),('1886c600-80c7-4e1b-801f-8b1925df0db0','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','a359b55f-70af-43c8-a6d1-42f0801c0155',NULL,'2012-11-10 07:17:33'),('18c9ae2f-1488-4b0c-800d-19f6e4b226c6','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','62be2403-d1ee-4d70-bab4-28bfd161f8e0',NULL,'2012-11-21 06:37:15'),('18d3ae40-bd3f-4a7e-9e5c-331a864060d9','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','badbed99-3113-45e7-bf87-40bf5354f88d',NULL,'2012-10-02 07:24:59'),('18d91784-c60c-427e-a64f-1fa79d557810','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','92ba8d67-0170-4f39-8f29-316b44522112',NULL,'2012-10-02 07:24:59'),('18e49104-5c65-472b-9a05-2b478a63a073','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','62be2403-d1ee-4d70-bab4-28bfd161f8e0',NULL,'2012-11-21 06:37:15'),('193b956c-fbc2-4e8d-8384-2e3c9bd2c15e','3141bc6f-7f77-4809-9244-116b235e7330','b3b3b726-acef-4d58-82e4-ef8875d654ce','b0bfcd0e-3194-4292-b78a-cea6a356a4d8',NULL,'2012-10-02 07:24:59'),('19581229-5fa8-43d6-905a-0e873c2d6d1b','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','95d261ff-13dd-4c42-8c83-f69a7b1cd6ba',NULL,'2012-10-18 06:15:40'),('199a5fad-35ba-482a-b760-dc631be40384','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','65b74b06-6bda-433b-b993-f09810cdcbca',NULL,'2012-10-17 00:55:51'),('19ffd84b-ceef-4d72-8f97-3f52659fb27a','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','8d6f16a1-d41d-4f6b-9da6-fa06ce5ebe54',NULL,'2012-11-10 07:17:18'),('1a0b956f-0ec1-44c1-90c8-5dad38c606fe','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','d6a33093-85d5-4088-83e1-b7a774a826bd','937e5e30-e054-4e65-972e-9c5b4b4f8f5f',NULL,'2012-11-10 07:17:25'),('1a568224-f6a0-4806-8c89-1763c0e93027','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','6f4e7eff-7204-468e-bfb2-2943688d282f',NULL,'2012-10-17 01:17:59'),('1a7154cf-bdf0-4425-8172-454a4cb3c608','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','833cc7c2-c155-45b6-b927-98fdb20ae86f',NULL,'2012-10-17 01:04:54'),('1a9a9bcb-7f60-4e9f-9b1b-5a863bd5d676','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','d407dc6e-52ae-4fec-a1f6-9708d87af938',NULL,'2012-10-18 06:15:38'),('1aa6f89b-1235-46eb-8082-0c3e7060d260','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','0c2ad7a0-83b5-4f83-aed9-ee6ad99510b3',NULL,'2012-10-18 06:13:29'),('1b3eff03-d413-43f6-adf4-9c9e866c6da7','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','b43d2871-487f-4d31-aaa1-e9bea8dd86fa',NULL,'2012-11-10 07:17:29'),('1be21d30-dbe7-4020-bc7f-18044959a5ee','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','9086cec8-a28e-4723-9f31-e2e68e173c6a',NULL,'2012-10-02 07:24:59'),('1c4365f5-17a1-49fe-a2ea-5b8fc5e0cac7','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','d2941b3f-38e2-491d-947b-f6e07802595c',NULL,'2012-11-21 06:37:15'),('1dd2099a-ed85-4900-a3aa-0d870365d44c','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','ce23cf3b-6ee1-4392-9d11-e088cde97864',NULL,'2012-10-02 07:24:59'),('1f0bac1b-ef44-457e-9c31-54aa64d43b8a','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','cba89043-1ac9-4e3c-a140-2ac74377c3b0',NULL,'2012-10-02 07:24:59'),('1f28a34a-61ca-4f96-900d-1747fb02d9e2','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','d6a33093-85d5-4088-83e1-b7a774a826bd','d63f2b5e-736c-4b85-ba35-ec6cc58be2a2',NULL,'2012-11-10 07:17:26'),('1fb93a40-b118-498e-b9ae-647ebfd03ab1','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','82f879a7-fdda-4b3f-a79f-55c1605a85ce',NULL,'2012-10-18 06:15:42'),('1fe3366d-adf4-4a29-84b6-81cf935b7ae7','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','86ce68f3-b264-4e49-a44e-c58144703700',NULL,'2012-10-17 01:04:55'),('1feac350-33dc-4b2f-8b98-34ec6643e13b','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','dcc00ef2-f22c-4796-87e5-f8b728a6a0dd',NULL,'2012-11-10 07:17:20'),('20539d55-6bc3-4155-bc5e-4bb91838199b','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','1d31b54e-1745-4b37-9468-d35e8e317d05',NULL,'2012-10-17 01:18:00'),('20797682-64ea-418a-84a3-283a34344167','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','5cb9e13e-9abe-4258-9c94-f79c6136f577',NULL,'2012-10-18 06:15:41'),('20ad2ae7-ddba-4dd0-900b-445521f62dac','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','64c450b4-135c-46d1-a9aa-3f9b15671677','fc865a65-2cae-4062-a63d-0c6a54877c0e',NULL,'2012-10-18 06:15:39'),('20e94d3b-45cd-42e6-9036-abeaa6f7768e','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','315e3d93-22df-4993-955a-73d30a11f7d7',NULL,'2012-10-17 01:17:59'),('20f37e74-23f2-48de-a3ed-5ca04c44120c','5934dd0b-9f7c-4091-8607-47f519f5c095','1c9728c0-16d3-4db0-81c3-7a51068caa1c','c5e493af-195e-4b64-9331-4f716a16eac9',NULL,'2012-10-02 07:24:59'),('214b2af6-fc8c-495b-b6bb-5ed3a641a78e','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','d6a33093-85d5-4088-83e1-b7a774a826bd','bdb7edf8-255d-4fe5-a457-50e93fad0211',NULL,'2012-11-10 07:17:25'),('216d494f-90bd-4957-a7f2-644699cd2636','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','4bcc5156-f3c7-4a5f-a99d-006eb61c4ba1',NULL,'2012-10-18 06:13:31'),('21844439-e82d-4329-97a5-b982399018bf','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','59160936-d126-49a2-a275-86f9359c0e89',NULL,'2012-10-18 06:15:36'),('21f2e375-495e-416d-b371-79a97fcf8a38','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','88f61e4e-ce58-4bc3-9bc8-91d6c3cfcabe',NULL,'2012-10-17 04:33:03'),('221f7b01-2c6b-40f0-b3ac-a35235ef93d6','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','4d2748e9-7233-4106-b7a1-83e7cfdbff24',NULL,'2012-10-18 06:15:39'),('22535c1a-8672-4cb7-b4c8-f7952773a58a','3141bc6f-7f77-4809-9244-116b235e7330','a74cbffb-281b-49ee-8e96-fbac2ab54785','5b553136-e75f-4512-b988-689db706fd50',NULL,'2012-11-10 07:17:30'),('2265a4f7-4e31-4746-a702-ba4ed2f4090c','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','1087d1e9-3dff-4b6e-b1e2-625141bbf814',NULL,'2012-11-10 07:17:34'),('228278af-11ca-456b-a658-4cb603e11978','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','d407dc6e-52ae-4fec-a1f6-9708d87af938',NULL,'2012-10-18 06:15:38'),('23c3c94a-b029-4cce-b80d-f939dc1e98f0','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','e7c2b9b8-8c8f-42f7-86c6-2011cc2678a4',NULL,'2012-12-13 05:41:55'),('24a8db76-c08f-458f-bd7d-c7046639dd11','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','64c450b4-135c-46d1-a9aa-3f9b15671677','369eeb06-b520-4566-b9c5-1f7a2277a450',NULL,'2012-10-17 01:18:18'),('258b90af-eca6-4a08-b1c7-584a3e539984','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','40259ade-4e78-47c9-a8b8-d66e2aa121af',NULL,'2012-11-10 07:17:32'),('25a2ce1e-e3a6-4c5a-97a1-54a58f9b4b21','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','adac68c6-1483-430c-ab2e-b594660ae4d6',NULL,'2012-10-12 06:10:29'),('25ec0f09-98f0-4aad-bf27-aa56315c0d88','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','a1e102fe-de95-4fc5-9bff-a1cc7058e1cd',NULL,'2012-10-02 07:24:59'),('2669a2db-94cb-42d5-af0d-6068f3be7202','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','e549810e-8a45-4d3b-9f7a-97ce7f11e853',NULL,'2012-10-18 06:13:38'),('26737641-50eb-4263-aba4-2ccadd84b822','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','d189342e-a551-4f77-a45c-6f3482e3dce3',NULL,'2012-10-17 01:26:59'),('27ec83cb-456f-4053-865e-2e478aaf5206','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','b5d57def-9d34-4851-89f9-62b4646ad605',NULL,'2012-10-17 01:26:59'),('27febcd5-1a1b-4257-be4d-dee9ae5959d5','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','03bbfaaf-124c-4454-8082-50e0b3d23e57',NULL,'2012-10-02 07:24:59'),('27ff07c7-a565-479b-b695-49c9bd33bc8b','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','d6a33093-85d5-4088-83e1-b7a774a826bd','92ec6955-b6ca-4acb-b8d4-a475efcd8c73',NULL,'2012-11-10 07:17:24'),('28461679-496e-47db-8d53-26b021fb490d','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','66120b2d-0c89-4304-815b-6c8cec94647b',NULL,'2012-10-17 01:27:01'),('2886ae01-89ab-4572-9ef5-f3ca047f95cd','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','e01e5dc0-37da-451a-9644-22309e5cb21e',NULL,'2012-10-17 00:55:52'),('291e67c7-a628-4d3e-89e9-91be995168be','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','51f80b0a-7a4b-4c68-ac7a-b41ef9c9aaba',NULL,'2012-10-18 06:15:42'),('2958fdb6-8c5f-49dc-99a8-1f73cf5ef8b6','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','8a0cc11d-d1ec-4e0d-a895-ac037c9d94f8',NULL,'2012-10-02 07:24:59'),('297ca89d-2d05-4277-b359-d2427f4b7b22','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','86ce68f3-b264-4e49-a44e-c58144703700',NULL,'2012-10-17 01:18:16'),('29ae437b-fd54-4c76-ab8e-0adda93970c3','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','88bb6c02-f537-4879-89dc-8e5e7e257156',NULL,'2012-10-18 06:13:31'),('29cf8c74-5bba-4778-b39e-e7d0ab1ecfd0','3141bc6f-7f77-4809-9244-116b235e7330','a74cbffb-281b-49ee-8e96-fbac2ab54785','03bb2a7e-47bd-44fa-ab1d-797370bb1ead',NULL,'2012-10-17 01:18:17'),('29f7848c-3118-440c-b182-8c7084dc90f9','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','120836eb-b7e7-42dc-95f1-1470b8000dec',NULL,'2012-10-18 06:13:30'),('2a4e657b-f3cf-4c07-b3ff-46f106c49c3a','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','64c450b4-135c-46d1-a9aa-3f9b15671677','435bcdbe-75b2-44d2-94ef-2710edcf9eb3',NULL,'2012-10-17 04:33:01'),('2a6031aa-247f-427d-bcea-3490fe38afc3','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','bd3002cb-5404-4590-9481-c62d5d638bf6',NULL,'2012-10-17 04:32:56'),('2ae64e63-eb3c-4dbb-b2c4-045649aae19e','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','1d283460-e24c-4cbb-8476-2a66df560456',NULL,'2012-10-17 01:18:02'),('2b66444d-f00a-4bc3-b289-d4f2d36f1fe8','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','d407dc6e-52ae-4fec-a1f6-9708d87af938',NULL,'2012-10-18 06:15:38'),('2bdfab41-575f-4d8c-9949-24a01a0471d3','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','01c97b84-76e0-4b94-9e3b-1e670bd9468b',NULL,'2012-10-17 01:18:13'),('2bf3175a-0ee7-466f-a331-dbc871888130','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','24237983-b248-4d0d-b1d2-04ca8e469198',NULL,'2012-10-18 06:13:36'),('2bfd2630-e769-4617-8eef-d06080d988d8','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','baecde96-ebee-426c-bc77-3ec8dc653261',NULL,'2012-10-02 07:24:59'),('2c753d1d-0889-4b86-964f-591cc5ac0ca1','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','16d79ccc-4f77-44d7-8b25-054915b289c5',NULL,'2012-10-17 04:33:04'),('2c98c9e4-c0f7-420a-bcc8-56e03c5b7974','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','fedd6582-993f-498c-86c3-991e758a795f',NULL,'2012-11-10 07:17:29'),('2da25c12-863a-4f48-8118-6ee170ae1eb0','3141bc6f-7f77-4809-9244-116b235e7330','e96b787d-57f6-41a4-9693-d0634bfacacb','62ad9422-842f-437e-b388-620abbbfe876',NULL,'2012-10-18 06:13:37'),('2e5339fd-85f0-4139-bbf7-d9936492f0a7','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','d6a33093-85d5-4088-83e1-b7a774a826bd','209d95fb-25be-471f-902d-dd08fe5be83f',NULL,'2012-11-10 07:17:25'),('2e7125ec-0926-44fa-9a95-40f6d5586dda','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','15aceaf6-cf02-4aab-baeb-0f2402e41125',NULL,'2012-10-17 01:26:59'),('2e743e60-1573-4684-932f-6cebae2eaf51','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','f86d6829-9a80-4348-9869-36b11517e74e',NULL,'2012-10-18 06:13:42'),('2ea443cc-23bf-4767-b59c-30e76f73c543','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','983398c1-423c-4e88-99be-da3ad56d2d7c',NULL,'2012-10-16 04:32:22'),('2f242e5e-31ca-4393-a1fc-e26ab5d22646','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','a30af6e0-195d-46a8-a46a-cc1682d04896',NULL,'2012-10-17 01:18:19'),('2f384d1a-d795-47a0-9815-e3b4518b006f','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','799d35d1-0125-4d6b-8e92-df7cad508426',NULL,'2012-10-17 01:26:58'),('2f52ecb3-1d2f-4c1d-b7d2-f12ba62034fd','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','21b07ca7-b9e9-490a-a4db-39081a306862',NULL,'2012-10-17 04:32:58'),('2fb55e38-bbed-4da0-bad5-447025e2fbf9','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','b155afa2-038e-42dc-beee-f89e5a3ce41f',NULL,'2013-01-05 07:02:50'),('3017f9eb-b2a6-46de-9638-3cffc0936892','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','9e447d46-e845-4abb-b562-e73b3a716ab4',NULL,'2012-10-18 06:15:35'),('3020dca3-8984-4053-85a1-107efe2d0364','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','37b9babb-af84-4da8-9c2a-2c03087de2e4',NULL,'2012-10-18 06:15:34'),('302eaad4-7748-4609-a9cc-fd4d2aae536d','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','420813eb-03e3-4a3a-97ca-84894f08af88',NULL,'2012-10-17 04:33:00'),('3048eb16-116e-4e80-a018-2e555e3033ac','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','9a8285cc-f383-4a1b-bf64-60749f065603',NULL,'2012-10-17 04:33:02'),('306868e3-127b-4bd1-9d46-f407ec883b59','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','7b2ab804-b73e-4700-96ca-61ebc9c3576e',NULL,'2012-10-18 06:13:36'),('30692241-6ba2-4863-841c-5a1c3e402b03','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','92526fe4-93e8-48c0-ab29-be50bc832bf5',NULL,'2012-10-02 07:24:59'),('30b9cc98-05dc-49cf-9a54-ea0baeaa4313','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','23dca992-ea19-4731-8e96-20739509851c',NULL,'2012-11-10 07:17:15'),('31622348-6e1e-4f2f-b139-dc29f74cea49','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','599cb14f-dbc5-4f45-8e94-24fdb881fbbf',NULL,'2012-10-18 06:13:41'),('31b658d1-5622-4718-8f43-5137f03b9c87','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','62be2403-d1ee-4d70-bab4-28bfd161f8e0',NULL,'2012-11-21 06:37:15'),('31bb80ad-794c-48a2-99d3-fcb2e616222f','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','4ae6d5e4-1cd1-481e-8469-eae98f9adb36',NULL,'2012-10-17 04:33:00'),('31f580e9-3d54-414c-a203-64b525b35523','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','40f0c13e-f8ef-4a50-94cd-f1a2d95ca886',NULL,'2012-10-02 07:24:59'),('327f9451-7e2b-4fd8-a3b6-b69e7af30328','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','580f3cbb-7604-4775-8776-2dcfc5651139',NULL,'2012-11-10 07:17:31'),('32d67c6d-0975-4389-ade6-b29a69c85bad','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','64c450b4-135c-46d1-a9aa-3f9b15671677','4953b2ca-d1f2-4905-a8d4-bf95abd54930',NULL,'2012-10-17 01:18:19'),('32d9daf9-e794-4eba-92e3-a643cb6262ed','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','bc9e9d1b-9112-4336-ac8e-c2c0b614777b',NULL,'2012-10-02 07:24:59'),('332d076c-057b-4f28-8479-3526e345dd26','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','10d24277-054c-4c20-9774-9cac31b22b42',NULL,'2012-10-02 07:24:59'),('338f94cc-0ded-4129-bdb7-13b349679991','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','0f965b92-8f6c-4a52-bffd-a28da459fdf9',NULL,'2012-10-17 01:27:03'),('3443c0ed-6eeb-479a-887f-cbcfd2638474','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','d6a33093-85d5-4088-83e1-b7a774a826bd','78b2cb5f-7b0f-450e-95fe-dd2e8de13770',NULL,'2012-11-10 07:17:27'),('34d3bf8d-d704-4ade-8ea9-91409aa80d16','3141bc6f-7f77-4809-9244-116b235e7330','dc949cb7-ad68-44ba-a795-d2a43a18164f','6ba6316f-7372-4dfc-a573-9db78af2b3ed',NULL,'2013-01-05 07:02:50'),('352c79e5-90ad-4eb2-82de-4e4f901685fa','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','4648baa2-24e0-4ebd-a31a-2417e4175ad3',NULL,'2012-11-10 07:17:33'),('353659c1-f664-4fd5-9496-1e13b5bc9dab','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','c219f204-5418-4f45-b148-8216d2a15e88',NULL,'2012-10-02 07:24:59'),('35578541-2946-4a48-a769-7c493dc8d508','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','1ded295a-3065-4da7-8ba7-42edef36a1db',NULL,'2012-10-18 06:13:29'),('35d403c7-da1b-4805-922e-eb0e28eacda6','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','8cacccb8-d2d5-46d4-a3f5-805ae1fc68cd',NULL,'2012-11-10 07:17:23'),('364c6353-f200-403a-88fc-6bbc60df80df','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','d6a33093-85d5-4088-83e1-b7a774a826bd','2184c88b-bbe4-41a1-9a21-281f5cf55433',NULL,'2012-11-10 07:17:26'),('37271457-06e0-41e9-a0ea-5a48e508274d','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','d2941b3f-38e2-491d-947b-f6e07802595c',NULL,'2012-11-21 06:37:15'),('372b5bcd-89e7-4cb9-a0ae-ec154c382527','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','315e3d93-22df-4993-955a-73d30a11f7d7',NULL,'2012-10-17 01:17:59'),('37315e65-c380-4531-b73a-900c715dc4ca','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','075bcd44-b926-4a45-b8a1-f75220f5c903',NULL,'2012-10-18 06:13:32'),('373c315c-c922-4af0-a82a-1f9e9fb21297','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','8f063f36-f64c-479e-b37a-2491e99feb6a',NULL,'2012-11-21 06:37:15'),('378d7215-c54e-46f1-b6f7-bf6badde35d1','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','4d82500c-bfb5-4ddd-bb9e-40733cbe72be',NULL,'2012-10-02 07:24:59'),('37a67bd8-214c-478d-8c4e-eba6a4b45905','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','095e1f7a-815c-449b-ae7e-b5d96e434f2d',NULL,'2012-10-12 06:10:31'),('380bc9fc-7aba-441f-978d-ed4620e66618','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','aaf1a292-b2e7-4624-8119-a6805bc6702c',NULL,'2013-01-05 07:02:50'),('385c2749-f719-47ab-90b9-85df76fe8599','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','9f11626e-4664-49d6-9604-5c2ee9f4f299',NULL,'2012-10-02 07:24:59'),('385c8489-1d29-4620-b86e-b20aadbc95e6','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','dbad8e78-b7af-4039-8aa2-b501c42b7eeb',NULL,'2012-11-10 07:17:20'),('386fb7e7-ba3a-44e6-beb3-eb86372f4e1f','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','31868203-8848-4644-92c7-27307c5e5ba0',NULL,'2012-10-17 01:27:00'),('387a9cfc-5f0f-4387-8c7e-c595735cb442','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','4fb85f9a-831d-49ff-a554-4c80a792232b',NULL,'2012-10-18 06:13:38'),('38c11b7e-6699-47c4-ac17-736029d05cb7','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','1ddbfa77-0390-4905-aeda-58d2984db924',NULL,'2012-11-10 07:17:34'),('38f08986-484a-427a-b2ea-507b15722c93','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','31a79d37-ac13-4d6f-ba7d-49c9493959c9',NULL,'2012-11-10 07:17:20'),('38fff51d-9377-4847-be85-f3bcb7f4bc57','3141bc6f-7f77-4809-9244-116b235e7330','e96b787d-57f6-41a4-9693-d0634bfacacb','fc865a65-2cae-4062-a63d-0c6a54877c0e',NULL,'2012-10-18 06:15:39'),('39433733-15fd-4ad6-85a6-b3fc68b94818','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','4d399247-7598-403d-bb17-8d9230bacb0d',NULL,'2012-10-17 01:18:19'),('39656572-91ff-48bf-8ed2-962653f90ae1','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','53bff439-5ff6-4fe9-a87a-8745da64b5e6',NULL,'2012-10-12 06:10:30'),('3a446915-a1ac-4706-9a92-2244d8f098a8','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','8479526a-fdab-44af-97de-920bea73237e',NULL,'2012-10-18 06:15:38'),('3a58f65d-afd1-425e-a9af-6b54eee2691f','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','35c9fd79-c9b4-4a0c-84dd-6a9a6a05453a',NULL,'2012-10-18 06:13:42'),('3a66f468-87fa-4589-8f55-2a09982f5f72','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','8533521f-82c8-408f-9499-194e45d50154',NULL,'2012-10-18 06:15:42'),('3a85647b-4456-4485-8e13-d5178df1a9eb','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','64c450b4-135c-46d1-a9aa-3f9b15671677','123481b3-aca7-41ec-97d7-7e6601395d4a',NULL,'2012-10-17 04:33:01'),('3a9e84ec-8d72-4b0c-8b40-55a6aad546c6','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','ab17d28b-3f9a-45e2-b6da-fb19cf759c13','a974079d-0865-49ef-afd8-0ec91174d323',NULL,'2012-11-10 07:17:14'),('3ab592dc-f203-496e-9834-5758fd049e35','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','3651eff9-0c05-4077-8f26-a9dfb915465a',NULL,'2012-10-17 01:18:17'),('3b97490c-339c-4e11-a0b9-c9ab93625539','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','1d0b3087-b43f-412f-8e10-2063b912ed81',NULL,'2012-11-10 07:17:19'),('3b97994e-5e53-4905-9c27-ad6a4152cb19','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','632a5374-bc44-4d75-a9f6-e53edb87e316',NULL,'2012-11-21 06:37:15'),('3c4589ca-115a-429d-8f86-b6b9af324622','3141bc6f-7f77-4809-9244-116b235e7330','e96b787d-57f6-41a4-9693-d0634bfacacb','aa3515c1-bd03-4555-9e98-723ca14f74a9',NULL,'2013-01-05 07:02:50'),('3c84588b-2bfb-454a-8131-c77942d99e86','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','369eeb06-b520-4566-b9c5-1f7a2277a450',NULL,'2012-10-16 04:32:21'),('3cc51efd-794e-486b-95fb-eb4fdcc44cca','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','fbcf2ae7-4893-4771-833d-8eee20d91f3b',NULL,'2012-10-02 07:24:59'),('3d10277a-5ca4-48cc-a254-7d1e04350264','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','0f42eabd-4da2-48ed-aa30-f76b1b6d94b7',NULL,'2012-10-17 04:33:04'),('3d33cae3-a09e-4d61-af0b-8756a4b899d0','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','84c9fb23-9a6c-4fad-832e-0cc3de838d70',NULL,'2012-10-18 06:15:37'),('3d955fdb-7708-4ae4-9810-eec4bf84c2f3','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','fb5fca7c-0a75-4a94-8dc2-0dba6d66747f',NULL,'2012-10-17 01:27:01'),('3dff549d-ae61-48fc-a11d-db5afaf64e26','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','15212ba7-3a43-418b-a3b7-d8095c2b77ff',NULL,'2012-10-17 00:55:58'),('3e3d94ad-54db-4938-8615-e320c8debe85','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','d3e84d02-ec80-459d-bba2-2517d9732c3b',NULL,'2012-11-10 07:17:17'),('3ebb77ac-c953-4f50-af10-05df787490e5','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','54762702-b427-4b75-95a3-faa17a90d1b5',NULL,'2012-11-10 07:17:22'),('3ec20363-19b4-4cb6-9efc-209f7e0fcf9c','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','805785fd-4001-4ef7-9d10-1ef52fcbc9c0',NULL,'2012-10-12 06:10:31'),('3f0f9655-ad95-4a8d-a4b2-d14ddc2c34be','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','64c450b4-135c-46d1-a9aa-3f9b15671677','e0e6ab6e-dd08-4b2a-9267-8ed7500655f6',NULL,'2012-11-21 06:37:15'),('3f6b067a-4cb6-4136-9a66-bc07d76623f0','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','0d1861e3-823d-4508-8de4-26bae086efb2',NULL,'2012-10-17 01:18:20'),('3f8302e6-f952-442b-b6c9-7cc500cca045','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','37384927-53f5-4ac7-8425-94a110c081ce',NULL,'2012-10-17 01:18:14'),('3f9b0789-92a9-4c64-b359-13a22357202f','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','64c450b4-135c-46d1-a9aa-3f9b15671677','aa3515c1-bd03-4555-9e98-723ca14f74a9',NULL,'2013-01-05 07:02:50'),('3fce7420-7ba2-440c-8349-f469e8ba7cac','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','369eeb06-b520-4566-b9c5-1f7a2277a450',NULL,'2012-10-17 01:18:17'),('3fd44655-2050-4640-a42c-34215fabc3b0','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','bc6c161a-3f61-4890-9492-90ad25567b6b',NULL,'2012-11-10 07:17:18'),('4113a10a-4b0b-44dc-9938-d16db4c264da','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','573c6a20-1076-4234-a728-0bce8405f097',NULL,'2012-10-18 06:13:47'),('4140787d-230f-410d-9311-6fba190ba799','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','274e16c7-1b68-498b-8290-e339d4197136',NULL,'2012-10-18 06:13:40'),('414c044c-f6e0-44ec-bda6-ce002011b6c5','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','d6a33093-85d5-4088-83e1-b7a774a826bd','38903006-89e2-4d59-b0d5-dbf8614500c4',NULL,'2012-10-17 04:33:01'),('41d59166-c408-4a47-bb4d-79beafecc48a','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','1f968676-81a2-4cd4-8d3d-ee86342e5a57',NULL,'2012-10-17 04:32:57'),('43420e1a-9d5f-4451-a643-c55e11964d8d','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','7a171a9b-49d8-45c7-bb5f-52d9c3157de0',NULL,'2012-10-02 07:24:59'),('4373da33-9d64-43e8-ba28-8452acfc8c91','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','adfa26bc-e276-4d69-85f3-63c8bd046d3f',NULL,'2013-01-05 07:02:50'),('444f692f-a951-425b-a9c4-b3b08ec12dbb','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','4ae6d5e4-1cd1-481e-8469-eae98f9adb36',NULL,'2012-10-17 04:33:00'),('44640874-804b-43bc-8e23-02d80deaa7f5','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','baecde96-ebee-426c-bc77-3ec8dc653261',NULL,'2012-10-02 07:24:59'),('44ce3c60-c156-4f8d-856e-3b87d240e432','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','fa1980ea-578a-44f0-9cca-fd9b80f52af2',NULL,'2012-10-18 06:13:46'),('44e47868-729e-429d-81c1-3a6a937d80bd','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','473e1574-954b-4b54-a641-8dda3659ddc1',NULL,'2012-11-10 07:17:16'),('44fdc6fd-55e2-4df7-9299-43241a2e7afe','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','02246977-bef6-46da-98c2-de7522111899',NULL,'2013-01-05 07:02:50'),('450e0358-8a48-41f4-aed2-fe7c6efac1d0','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','d3e84d02-ec80-459d-bba2-2517d9732c3b',NULL,'2012-11-10 07:17:17'),('450e62c2-82fa-426c-b077-db22ff0d8d5a','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','dcd1f9aa-d544-4ff7-a90a-d7dafc162897',NULL,'2012-10-18 06:13:49'),('4525c5f0-7c2a-4f69-a922-1901ee79732e','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','48ddd2b7-7841-4731-a28b-5ebe84a0ff8b',NULL,'2012-10-18 06:15:42'),('45262c25-854d-4c50-a186-1b6f1967df82','27c2969b-b6a0-441d-888d-85292b692064','814febd9-945b-4580-8381-9b146fd042d9','6ba6316f-7372-4dfc-a573-9db78af2b3ed',NULL,'2013-01-05 07:51:02'),('46397729-1992-476d-92fa-755edf7d3c46','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','3dfac762-1463-4914-a5c3-00d751159b52',NULL,'2012-10-18 06:13:47'),('463a7e78-e0f8-4d0e-ba6c-2d4b02552b2c','27c2969b-b6a0-441d-888d-85292b692064','814febd9-945b-4580-8381-9b146fd042d9','4133c4d3-979c-4ef0-80f1-13ebc7553ac0',NULL,'2012-10-02 07:24:59'),('463bd1c9-7726-4d19-9d8f-c7bf7d1a456d','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','d5719ffd-c663-44dd-946e-0818c31629a6',NULL,'2012-10-17 04:33:02'),('464faad7-eab7-45cc-aee7-ca062aab7b0c','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','ab17d28b-3f9a-45e2-b6da-fb19cf759c13','4bcc5156-f3c7-4a5f-a99d-006eb61c4ba1',NULL,'2012-10-18 06:13:31'),('46559f01-6955-4592-a978-7ebdb86ebbeb','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','8f063f36-f64c-479e-b37a-2491e99feb6a',NULL,'2012-11-21 06:37:15'),('46c8bf07-677e-4888-8be3-a831e26a15a1','3141bc6f-7f77-4809-9244-116b235e7330','e96b787d-57f6-41a4-9693-d0634bfacacb','f1abb661-2418-4d3a-8d41-aef1a0f57bdc',NULL,'2012-10-18 06:13:37'),('46dfdd44-8724-46a9-ad58-5217185791cb','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','976dc56c-c92a-4253-ac88-f69cae251794',NULL,'2012-10-17 01:27:01'),('478b514d-2d99-4acb-8447-16c401088179','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','74455ff3-647d-4d29-a71a-be28fa97a289',NULL,'2012-11-21 06:37:15'),('47a296c9-096c-4311-90f4-b79f57e0b739','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','ab17d28b-3f9a-45e2-b6da-fb19cf759c13','c8e9d29a-13ca-4f03-9d2c-5834667f54ea',NULL,'2012-10-17 01:17:58'),('48023675-bce9-4b18-8081-ea17f0484c23','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','b50f44c8-1d3d-4d0b-b17d-9ab0005ee224',NULL,'2012-10-17 01:26:59'),('480f84db-255d-4553-9c2a-8d2c1ce42ffe','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','d6a33093-85d5-4088-83e1-b7a774a826bd','e5b5b610-e9dd-471f-b2c9-08455a23ddfe',NULL,'2012-10-17 00:55:59'),('48454fb9-60a0-49bf-86b1-32dd8f3fc8e2','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','c0971b7e-06eb-4d4b-856b-5ffb7d2843d6',NULL,'2012-10-17 01:18:13'),('48742063-b3d8-4609-9b42-2be13b0cadb6','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','c82bc722-a02c-42d5-b894-e45baa4badb2',NULL,'2012-10-16 04:30:49'),('4888a9a7-27a9-4ee2-b12e-68c687e0e5d4','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','61d45a28-5271-48e8-810d-c83b4bf6b24f',NULL,'2012-10-18 06:15:43'),('48c3b3b2-283f-40a6-85d5-a97257967897','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','73e92bb3-23a0-4fc7-a7e6-4da8b0984506',NULL,'2012-10-18 06:13:34'),('490d983d-4653-408d-920a-cc048b2933da','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','257c711a-6d38-4b8c-8c54-6c25dc5a4d43',NULL,'2012-11-10 07:17:34'),('4ad74917-0ee9-4243-87a5-5f445cf7ba22','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','83e32dd9-e3ac-4953-8f8e-756ac56d4480',NULL,'2012-11-10 07:17:35'),('4b55ad67-39b5-44d9-b40b-4c4c2eb16fb4','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','5e7fbaac-1441-46e6-aedf-c65763e9fbf1',NULL,'2012-10-18 06:13:47'),('4bb853a7-51ce-4796-bfad-da4d2cd9b9ef','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','aa9e07d4-53ce-45c0-b72f-dfbbcb40829f',NULL,'2012-10-02 07:24:59'),('4bc08d71-e06a-4b0b-bc08-636227bd061e','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','c458b319-6779-4426-a1a1-b01c0cb46194',NULL,'2012-10-17 01:18:18'),('4bfc19f3-4e92-406d-a9a0-7fbcd98c41f3','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','8cacccb8-d2d5-46d4-a3f5-805ae1fc68cd',NULL,'2012-11-10 07:17:23'),('4c3b0fd8-2a9a-45eb-9317-7d815ae681c9','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','c219f204-5418-4f45-b148-8216d2a15e88',NULL,'2012-10-02 07:24:59'),('4c62336b-4ca7-4ea1-ad12-d941689a3583','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','6ce73de0-e573-4f2f-9a54-28c440210c2c',NULL,'2012-10-17 04:33:00'),('4c711428-b84d-4f6a-82f0-46e30c351b67','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','7c5095aa-a9c0-46d7-a67d-e95d628edda8',NULL,'2012-10-17 01:18:02'),('4c802e9f-7e6e-4713-b1f8-a6ec0ad5408b','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','3b8ba73b-9cbd-4a6c-b9ae-6fbd9c5f5104',NULL,'2012-10-18 06:13:48'),('4cb85d5a-405f-4d14-bb1c-f8deede43397','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','e5ebd621-9c56-4ab6-a698-75a89b044102',NULL,'2012-11-10 07:17:19'),('4d021b90-14ae-44be-8ae3-e460b024f17a','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','2aab64ea-9bbd-4715-a6bf-ad3ee5ea7072',NULL,'2012-10-16 04:32:22'),('4d3af35e-e99e-40ff-bf39-8dca1f3b5452','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','4953b2ca-d1f2-4905-a8d4-bf95abd54930',NULL,'2012-10-17 00:55:59'),('4d40d067-9e3c-400f-8d19-4ce6a1b53d16','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','99818e34-6fe4-455c-81df-cca3b0e70932',NULL,'2012-10-18 06:13:47'),('4d782998-67e6-44cb-a289-1765453e7d33','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','d6a33093-85d5-4088-83e1-b7a774a826bd','a38ef10a-1dab-4643-b93c-dec589951c70',NULL,'2012-11-10 07:17:28'),('4ef49c18-149c-4f57-b6a3-072be12c32f8','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','d6a33093-85d5-4088-83e1-b7a774a826bd','41f460dc-3272-497f-bed4-77e67d459612',NULL,'2012-10-17 00:55:52'),('4f0e84bb-cdf1-454c-b5a2-5bed2308c19b','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','64c450b4-135c-46d1-a9aa-3f9b15671677','ff33f793-b071-4362-a13d-18225470ea98',NULL,'2012-11-10 07:17:21'),('4f399515-126c-4e88-a5ac-12ceb6c8b8b7','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','20109b15-39c8-4d10-bac5-617ae2850e22',NULL,'2012-10-17 04:32:58'),('4f7134c4-387f-4a5b-a1fa-077dc92954ea','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','86ce68f3-b264-4e49-a44e-c58144703700',NULL,'2012-10-17 01:18:16'),('4fa368dc-ceaf-4261-a5cc-c04f10bb76c5','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','66be432b-20a6-4dbc-8d52-5857f559c40d',NULL,'2012-11-10 07:17:21'),('5015627d-ee04-4a4e-8b1e-91d1b43cb00e','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','9f97ee78-98ae-4a3e-9989-50ca598fee65',NULL,'2012-10-17 01:18:01'),('50282008-83ba-49c1-8c81-488f75d88969','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','9ff3de86-38cd-4c4a-816d-048f95ec4f51',NULL,'2012-10-02 07:24:59'),('51a6067a-7e58-475d-9e75-0a4a354a9cea','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','0205b77b-4396-4931-95b8-d896a123b0e0',NULL,'2012-10-02 07:24:59'),('528790b9-61ac-4666-a6d3-d0fd6061f8ef','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','1d283460-e24c-4cbb-8476-2a66df560456',NULL,'2012-10-17 00:55:52'),('541e68b2-068a-40c0-a2e7-947633c8ae86','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','40f0c13e-f8ef-4a50-94cd-f1a2d95ca886',NULL,'2012-10-02 07:24:59'),('542c8529-ce29-48bf-9799-b3b34625c2ff','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','e8e6949d-f0ae-4001-b8d0-91bfd45a1b47',NULL,'2012-10-18 06:15:36'),('544aec1b-2162-409d-92fc-88dcbde575eb','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','bc9e9d1b-9112-4336-ac8e-c2c0b614777b',NULL,'2012-10-02 07:24:59'),('547fb52d-7f1f-46df-91a8-447265413577','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','9796ae62-3ee9-445c-a7d6-867fa5fae36d',NULL,'2012-10-02 07:24:59'),('54bdfb92-2060-485b-a338-95d5ef9ec02e','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','5f43abcb-ddeb-439a-a80f-fb62dd2f042e',NULL,'2012-10-02 07:24:59'),('54e0a7af-c438-493f-b656-fb9bb7212171','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','82f879a7-fdda-4b3f-a79f-55c1605a85ce',NULL,'2012-10-18 06:15:42'),('553ebe80-cb56-42c8-8573-882eac065c3a','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','d6d087d6-ace3-49ad-882d-67267cd29721',NULL,'2012-10-17 04:33:01'),('5553419e-974d-4f93-b0e5-f3703beec2a4','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','350b7514-7b5c-4b83-913f-b56122423dc5',NULL,'2012-10-16 04:30:50'),('55c7c9e2-ddd7-43f9-8b35-cbe8f6474774','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','67621d17-25ea-4cef-863d-1431b3946640',NULL,'2013-01-05 07:02:50'),('55e9b625-98d1-469c-bb2c-1554f0d779a7','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','cba89043-1ac9-4e3c-a140-2ac74377c3b0',NULL,'2012-10-02 07:24:59'),('56753555-594e-4149-a1e3-87f327b1a7ab','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','08255d3a-bd85-434e-97a8-14f98b0c4ec8',NULL,'2012-10-17 01:26:59'),('56c7a2f2-ad0f-465c-b671-5deb22a0d814','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','d2941b3f-38e2-491d-947b-f6e07802595c',NULL,'2012-11-21 06:37:15'),('578dac8c-6756-48ec-ae73-ec3cb421a9df','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','9c1ef1bf-7ac0-431e-bfaa-0490b199d2c3',NULL,'2013-01-05 07:02:50'),('5799f974-014c-42e9-8b19-9c406f9c2f54','3141bc6f-7f77-4809-9244-116b235e7330','e96b787d-57f6-41a4-9693-d0634bfacacb','e4f2ee35-9d5c-4d2a-a251-0bbe5979d6d1',NULL,'2012-10-17 01:18:15'),('57ccba32-331b-49a2-a5e9-0c25373b2d49','3141bc6f-7f77-4809-9244-116b235e7330','dc949cb7-ad68-44ba-a795-d2a43a18164f','ce25ed99-6365-4cc9-a8f7-1b0f8428d271',NULL,'2012-10-02 07:24:59'),('583fb1e2-d623-4f1d-9f3a-0c88cd6f128f','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','52b25353-f40f-453c-bb26-854d2cf29b7f',NULL,'2012-10-17 04:32:56'),('58a531b2-65ab-481b-83ef-a4a312c4dddb','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','58a160ea-d3a2-4bef-8238-ae36f4e9a013',NULL,'2012-10-18 06:13:34'),('58b5081d-4e2a-4f13-a675-63bc113ecbe9','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','e88a46ca-5372-4314-a51c-ec83ac9ef4b4',NULL,'2012-10-18 06:15:41'),('594ac222-1f9a-47d6-8677-2d0ab03adead','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','0cea8124-51f7-49ed-822a-b6b842673c62',NULL,'2012-10-18 06:13:35'),('5955d80e-ddba-46ec-9bfa-0bd772b86b8c','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','bc9e29c0-cf88-497c-a9da-76956e4dc08e',NULL,'2012-11-10 07:17:17'),('5996298f-f215-426c-973a-104e5b85078b','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','ce23cf3b-6ee1-4392-9d11-e088cde97864',NULL,'2012-10-02 07:24:59'),('59c59b7f-ff59-4f8d-bb69-c8f8d0885d4e','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','085d00ca-f8af-43e5-9ef9-6d21dec5aff8',NULL,'2012-10-18 06:13:41'),('5a1263eb-3af1-4da9-9bd2-4da7a684bc2b','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','b155afa2-038e-42dc-beee-f89e5a3ce41f',NULL,'2013-01-05 07:02:50'),('5a358ca3-9980-49e1-9fc8-e2adeaed85d1','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','d95f4962-a8cd-4357-a0bc-4f2ffd408f2d',NULL,'2012-10-17 04:33:05'),('5a99f3f0-7daf-43b0-9de4-69f625f998af','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','fbae3a6d-5b98-4974-888a-85bf48b793fe',NULL,'2012-11-10 07:17:16'),('5aac5ee8-f95b-4191-9fbc-0f65f2c26bae','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','d6a33093-85d5-4088-83e1-b7a774a826bd','16d9ada5-08b6-48cc-b4f8-723327803581',NULL,'2012-11-10 07:17:25'),('5ae7157f-867d-4223-9467-546bd307db8f','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','2797e915-0097-40f6-ba05-ecf94ab34dc5',NULL,'2012-10-02 07:24:59'),('5b1afdc6-4805-457a-8d4a-53df5fa730ba','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','454214be-1ae6-4bdc-8396-a4355bdbc618',NULL,'2012-10-02 07:24:59'),('5b99b744-22ca-4cd1-9186-a8df3773ee7e','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','9c1ef1bf-7ac0-431e-bfaa-0490b199d2c3',NULL,'2013-01-05 07:02:50'),('5b9a9b0c-2e79-4895-bcfe-f5238cb091b9','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','97f8b89c-5aed-4c41-97ec-72516fe0df51',NULL,'2012-11-10 07:17:33'),('5bbf5eb3-d70d-4a5d-863a-ec2c2e444271','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','03bbfaaf-124c-4454-8082-50e0b3d23e57',NULL,'2012-10-02 07:24:59'),('5bddccdd-5540-4585-9ce6-60b7cd3a377d','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','2bb14a8d-7eac-4c93-9060-726b4acefbc9',NULL,'2012-10-18 06:15:40'),('5be1ab97-a65a-4376-bb3d-0ea213f0264e','3141bc6f-7f77-4809-9244-116b235e7330','d91f0637-b2f6-4492-ac1b-23c155102a3e','808520c8-c588-40a0-9c32-8518110c0e33',NULL,'2012-10-17 01:18:18'),('5cfcaea6-ee58-4a13-9983-a99aa61b94c0','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','1984ade9-588b-4817-8460-9dfea763cd23',NULL,'2012-11-10 07:17:18'),('5d31fa7f-47dc-4c7e-94d3-eb449f3c2a60','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','315e3d93-22df-4993-955a-73d30a11f7d7',NULL,'2012-10-17 01:17:59'),('5d369df4-52f2-49c3-856c-791c67169423','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','dbad8e78-b7af-4039-8aa2-b501c42b7eeb',NULL,'2012-11-10 07:17:20'),('5d7ea504-091a-4f96-b821-324f1de67216','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','36e43181-0b2d-45d7-939f-491cdd04d7b3',NULL,'2012-11-10 07:17:32'),('5dfe9c1a-187b-4505-8b56-11b68e7bd214','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','34c42eda-b9e6-4a35-b483-a791bd04718d',NULL,'2012-10-18 06:13:43'),('5e9ffc6e-0457-4c3f-a877-49d5f387d36b','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','d6a33093-85d5-4088-83e1-b7a774a826bd','6a7c543e-1d68-4ab1-8ab0-4898d0d204e4',NULL,'2012-10-17 01:04:54'),('5ed5d7e4-fdd4-489c-86d0-16debcbea4b6','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','4953b2ca-d1f2-4905-a8d4-bf95abd54930',NULL,'2012-10-17 00:55:59'),('5eea2c0c-b01f-4229-b9f3-1a0362020b81','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','5c998398-3340-4d36-8b34-2cbe7eca1010',NULL,'2012-10-17 04:33:05'),('5f8bcd7b-98af-4a96-b019-0dbbf143b0c5','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','ab17d28b-3f9a-45e2-b6da-fb19cf759c13','4021ed21-c101-42d4-83a8-3ff714eccb17',NULL,'2012-10-17 04:32:56'),('602a3ecb-26b6-4ab6-ae79-ae29d489ad6d','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','8c334402-efc2-4585-958c-540cedf32936',NULL,'2012-11-10 07:17:23'),('61e20e1d-e2d9-4a73-9f20-49b15ef0effe','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','73d4a167-f8c1-4466-8f1e-10ce9ab0851f',NULL,'2012-10-12 06:10:31'),('6218ab72-3e73-4a1b-a0aa-1befa28f13b2','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','5c998398-3340-4d36-8b34-2cbe7eca1010',NULL,'2012-10-17 04:33:05'),('62223a4f-8e0a-47ee-8594-00ed642db598','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','b5d57def-9d34-4851-89f9-62b4646ad605',NULL,'2012-10-17 01:26:59'),('62467f2c-fa65-4013-80de-00aa13b937e7','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','31868203-8848-4644-92c7-27307c5e5ba0',NULL,'2012-10-17 01:27:00'),('629f5bb6-8890-4c18-8588-3791bc3b4e65','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','d6a33093-85d5-4088-83e1-b7a774a826bd','1d21c442-22b6-490d-b84a-07311da373c1',NULL,'2012-11-10 07:17:25'),('63259e8a-340d-4cc6-938e-a80abb1e645b','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','8c334402-efc2-4585-958c-540cedf32936',NULL,'2012-11-10 07:17:23'),('63526eab-1461-4131-817c-1547717255ef','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','b95d9944-b9f3-4dba-bd83-86c6fe3a9ca0',NULL,'2012-11-10 07:17:35'),('636adabf-5df8-4ce0-9d99-e90bc4ba1eff','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','daf70773-a281-4620-9c75-73350150512e',NULL,'2012-11-10 07:17:24'),('63907c8a-51e9-467e-b6f2-c88cca86565f','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','5ebc8427-124d-4615-83fb-4326749745e3',NULL,'2012-10-12 06:10:31'),('63b28ee7-4015-4bc9-ae2a-672dff655a4d','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','d407dc6e-52ae-4fec-a1f6-9708d87af938',NULL,'2012-10-18 06:15:40'),('6415ac63-aed2-45ef-9ed7-4bef5c161f81','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','8612b1de-9825-4cb9-b9bb-0b3b97bbe6b6',NULL,'2012-11-10 07:17:19'),('64c560dc-16e2-4102-b260-730b2c84e7ef','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','35b9e3c0-9670-4775-9e9a-cf56d973440b',NULL,'2012-10-18 06:13:38'),('652ee2f3-4b3d-4f6e-a1f4-58852f7495c7','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','62be2403-d1ee-4d70-bab4-28bfd161f8e0',NULL,'2012-11-21 06:37:15'),('65835b3f-6ea9-47d6-90b4-5ea44586ad26','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','4953b2ca-d1f2-4905-a8d4-bf95abd54930',NULL,'2012-10-17 01:18:19'),('66121dd1-57e5-4661-bec6-092d3cc01b56','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','48ddd2b7-7841-4731-a28b-5ebe84a0ff8b',NULL,'2012-10-18 06:15:42'),('6633308c-3533-4e7b-97d2-13aa9efbb347','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','a0af674f-4e72-496b-bf4e-4f126eab7372',NULL,'2012-10-18 06:13:32'),('665fe589-6851-4f33-8dba-70cfedfe2b91','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','4bbcd493-2035-4567-80e8-218dd24201e7',NULL,'2012-10-18 06:13:48'),('66a6c2a4-4c79-4fb7-b23d-749798937a49','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','2c0fbd65-f7ba-452d-bd93-a40b371e2a68',NULL,'2012-10-18 06:13:33'),('67614a14-9944-43aa-9b4e-3a1880bd02b4','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','45984389-977d-4064-8d46-c0df6e791880',NULL,'2012-10-19 05:57:13'),('67daa613-04d4-4075-81f9-50e5b4179afe','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','9621ea57-5c9c-48dd-8a7f-1a7dc3f7e107',NULL,'2012-11-10 07:17:22'),('68bf2dfb-2cad-4aac-ba39-7989039dc75e','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','1567b10b-1474-4df5-a6df-ce3b8a92ee97',NULL,'2012-10-19 05:57:04'),('6977f221-ce07-4309-b36d-b9ddd8c1ee39','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','9f11626e-4664-49d6-9604-5c2ee9f4f299',NULL,'2012-10-02 07:24:59'),('69ec4a3a-e424-4b7b-b523-9997afd1e947','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','afea3d12-379b-47ef-a395-0e162e37d90b',NULL,'2012-10-17 01:18:16'),('69efca90-9c54-4118-bb7c-e9596d6d43df','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','15aceaf6-cf02-4aab-baeb-0f2402e41125',NULL,'2012-10-17 01:26:59'),('6a21f45c-f7fa-4e0a-af7b-67a45505a9b0','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','3cdd3f9e-a093-4c0d-8aef-ef7ba86f765b',NULL,'2012-10-17 01:18:20'),('6a7b9fa2-d15a-4189-86a3-6f320efa052d','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','1d283460-e24c-4cbb-8476-2a66df560456',NULL,'2012-10-17 01:27:00'),('6aa46d42-d1ed-4071-9790-885597ec92e3','3141bc6f-7f77-4809-9244-116b235e7330','e96b787d-57f6-41a4-9693-d0634bfacacb','4953b2ca-d1f2-4905-a8d4-bf95abd54930',NULL,'2012-10-17 01:18:19'),('6b0ad244-494d-4438-a2d9-06f02d87755e','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','3ffcbbac-7b49-433b-8ffa-275ff81aba00',NULL,'2012-10-17 01:26:58'),('6b1fe249-95d6-41e9-a716-b8064c6b4ed8','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','268c57bc-edfc-4da7-b01a-c1ebb2438022',NULL,'2012-10-17 04:32:59'),('6b56c9af-5540-424e-b2b1-a82fff2f51ec','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','5f46c34d-7a26-47eb-b977-1be976205050',NULL,'2012-10-18 06:15:41'),('6c0d6cf5-59bb-45ba-b95b-5cca3a7e3084','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','01a2674c-850c-46ab-a768-e8593baf9404',NULL,'2012-10-02 07:24:59'),('6c30a13c-e23d-4814-aaa8-f7d877f6509c','3141bc6f-7f77-4809-9244-116b235e7330','a74cbffb-281b-49ee-8e96-fbac2ab54785','5fc9e48c-f29d-4a98-b381-a8cccafc02af',NULL,'2012-11-10 07:17:29'),('6cb9fe9c-9c8c-47d2-aa22-c8f5059bf5fc','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','24237983-b248-4d0d-b1d2-04ca8e469198',NULL,'2012-10-18 06:13:36'),('6d1652e4-8dcf-498d-b9c8-e05bd32cbcb0','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','085d00ca-f8af-43e5-9ef9-6d21dec5aff8',NULL,'2012-10-18 06:13:42'),('6d3dc4c6-dd9c-48d3-af79-e6fbfb1e9c33','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','3ffcbbac-7b49-433b-8ffa-275ff81aba00',NULL,'2012-10-17 01:17:59'),('6d790cb1-d7cd-48a6-a05e-746890064618','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','454214be-1ae6-4bdc-8396-a4355bdbc618',NULL,'2012-10-02 07:24:59'),('6dbfd612-300d-4ee1-8db5-cc0bed7f7f9b','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','573c6a20-1076-4234-a728-0bce8405f097',NULL,'2012-10-18 06:13:48'),('6eb28044-6258-4319-8f68-88f92b3fc1a6','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','78640195-eaae-405f-b3bc-304b806977f9',NULL,'2012-10-18 06:13:34'),('6f2afda5-503c-4db3-8cdb-4ebadedfe1a0','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','e10c64e0-105a-44f5-83da-a4a10379d802',NULL,'2012-10-17 04:33:04'),('6f2b67e5-1658-49a3-83a3-776e54771c8b','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','833952ec-7936-4a3e-979a-a2b705c31a9d',NULL,'2012-11-10 07:17:14'),('6ffb8bd2-c682-4089-b5ca-44d218438d4a','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','7a0ab3c1-8ab0-4aac-b064-bff7e6e88f64',NULL,'2012-11-10 07:17:22'),('700d305a-b0bf-4c08-89e2-1cfec77219f2','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','fa1980ea-578a-44f0-9cca-fd9b80f52af2',NULL,'2012-10-18 06:13:45'),('710f4f1c-7bba-47b2-935e-1dafa8c8b101','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','84bcc45a-f840-4645-9ae3-1f480ab74589',NULL,'2012-10-17 01:04:54'),('720d2a8f-dddf-4f1f-8771-438a55d4bab2','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','599cb14f-dbc5-4f45-8e94-24fdb881fbbf',NULL,'2012-10-18 06:13:41'),('725b81c8-db6e-4452-980c-63262d2f8efa','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','23e376ee-554b-4ac0-b34a-86031f77e526',NULL,'2012-10-16 04:30:50'),('72fcc6a6-bd10-4ae8-866e-57e44038fcbc','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','d6a33093-85d5-4088-83e1-b7a774a826bd','db10b9f5-1c41-4638-bf7b-e8f5c214903c',NULL,'2012-11-10 07:17:26'),('731047c5-7220-43c9-b600-af12df014d65','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','931ba3fb-e82b-467a-a349-0320feac9a97',NULL,'2012-10-17 01:04:54'),('7330137b-0bd4-4ceb-a719-5f9da7fae2f0','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','64c450b4-135c-46d1-a9aa-3f9b15671677','a973a41b-d90a-4081-b0ac-6eeef52d2893',NULL,'2012-10-17 01:18:19'),('7332502a-063b-4045-b939-5f4bc033099e','3141bc6f-7f77-4809-9244-116b235e7330','a74cbffb-281b-49ee-8e96-fbac2ab54785','d80f1e2e-a75b-4492-8f7b-e541e3980fb7',NULL,'2012-10-18 06:15:37'),('73b34d01-545c-4986-bb6f-d9bc6ce0f0c7','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','64c450b4-135c-46d1-a9aa-3f9b15671677','eb216a3d-72a4-459b-8686-6aebab26bbb7',NULL,'2013-01-05 07:02:50'),('73b48315-54c1-43aa-b15c-799da16825b1','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','1d283460-e24c-4cbb-8476-2a66df560456',NULL,'2012-10-17 00:55:52'),('75337495-ea0c-40e7-affd-65a41b4d7422','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','4ae6d5e4-1cd1-481e-8469-eae98f9adb36',NULL,'2012-10-17 04:33:00'),('7551672d-ecbc-4001-9771-472f57c07745','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','d4e1477a-ed22-48a3-b1f0-751e5bfa6b5a',NULL,'2012-11-10 07:17:21'),('75839015-87e4-43ea-a5bd-7cb209e62abb','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','37384927-53f5-4ac7-8425-94a110c081ce',NULL,'2012-10-17 01:18:14'),('7613db8a-279c-4e77-a8b8-e74f4b14864d','3141bc6f-7f77-4809-9244-116b235e7330','a74cbffb-281b-49ee-8e96-fbac2ab54785','b8668b4d-abbf-4a4e-8646-0640f2baa787',NULL,'2012-10-17 01:17:59'),('76b943d1-e2ed-419c-a9b9-f6b09e34efc3','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','5c998398-3340-4d36-8b34-2cbe7eca1010',NULL,'2012-10-17 04:33:05'),('76ce950e-8fd3-42fb-941a-f0910d188c63','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','86ce68f3-b264-4e49-a44e-c58144703700',NULL,'2012-10-17 01:04:55'),('7731ac3d-b1e8-4b24-ae40-dd630c43da27','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','4953b2ca-d1f2-4905-a8d4-bf95abd54930',NULL,'2012-10-17 01:18:18'),('7758daa3-cfa0-4cd3-abab-10f126b3e1fa','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','9a8285cc-f383-4a1b-bf64-60749f065603',NULL,'2012-10-17 04:32:59'),('7773bda3-05aa-4cc7-bf8c-2e63f2800e3d','3141bc6f-7f77-4809-9244-116b235e7330','e96b787d-57f6-41a4-9693-d0634bfacacb','62be2403-d1ee-4d70-bab4-28bfd161f8e0',NULL,'2012-11-21 06:37:15'),('7789250a-49dc-4233-870e-e5f4b40e349e','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','9621ea57-5c9c-48dd-8a7f-1a7dc3f7e107',NULL,'2012-11-10 07:17:23'),('782ccbeb-ddc2-4b77-86a0-a712fbc108b7','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','62be2403-d1ee-4d70-bab4-28bfd161f8e0',NULL,'2012-11-21 06:37:15'),('784d480e-f192-4a5b-82c0-9fe500a5f788','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','95d261ff-13dd-4c42-8c83-f69a7b1cd6ba',NULL,'2012-10-18 06:15:37'),('785bdc45-a27f-4deb-a090-26fd8af8211e','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','b8b6dfa3-beca-4667-a279-cf78d610a0b6',NULL,'2012-10-17 01:18:13'),('789fbc83-04cd-41b8-a20c-bfcbc9758106','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','2bb14a8d-7eac-4c93-9060-726b4acefbc9',NULL,'2012-10-18 06:15:39'),('78ac25a2-276c-45fc-a87f-e6687907e8dc','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','64c450b4-135c-46d1-a9aa-3f9b15671677','065a6379-da8d-4d90-8a6e-8286b31e850f',NULL,'2012-10-18 06:15:38'),('78ea0176-8554-4d38-94d4-3729ef01aac6','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','27f6b2b1-0c93-4b79-9f2e-7f10639d8987',NULL,'2012-10-18 06:15:36'),('799465c6-5e3c-4afa-a95c-b9933be613fe','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','e793325f-df0f-4e64-9ef9-cf1b08bf29ee',NULL,'2012-11-10 07:17:17'),('79bd22a6-7eb5-4d30-a51e-c08f257a7ca5','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','f991f719-4fe8-43d7-b032-2e4a52de8d53',NULL,'2012-10-17 01:18:02'),('79f676b5-e64e-4bc9-84bd-ca2d664790df','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','aa9e07d4-53ce-45c0-b72f-dfbbcb40829f',NULL,'2012-10-02 07:24:59'),('7a12451e-1e50-4871-bf2d-aed0a92da31b','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','02246977-bef6-46da-98c2-de7522111899',NULL,'2013-01-05 07:02:50'),('7a17e715-d160-43a1-b492-6cf0a49c32fb','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','e7cb481d-e08b-4389-9819-e6bd6e12295c',NULL,'2012-11-21 06:37:15'),('7a5d8438-1d85-4714-8142-91fd1a8fdd6b','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','d3e84d02-ec80-459d-bba2-2517d9732c3b',NULL,'2012-11-10 07:17:17'),('7a7aaeb3-f59a-48f9-9da0-086caff8a206','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','d189342e-a551-4f77-a45c-6f3482e3dce3',NULL,'2012-10-17 01:26:59'),('7ae413f2-e1a2-4afd-bcd6-b471038fe4a7','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','84c9fb23-9a6c-4fad-832e-0cc3de838d70',NULL,'2012-10-18 06:15:37'),('7b22508c-172c-4520-83ce-e34bcc728083','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','5cb9e13e-9abe-4258-9c94-f79c6136f577',NULL,'2012-10-18 06:15:41'),('7b4db543-c2c6-455a-a27d-64e50bb88bdf','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','61629eaa-2dd4-47d9-9f7b-3ff94db4482a',NULL,'2012-11-10 07:17:32'),('7bdcee53-08ef-468a-9603-f70858d71ae5','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','875a88e8-3fd0-48e9-a184-5f62459a468f',NULL,'2012-11-10 07:17:16'),('7be5ab1c-c69a-4fe5-a48a-23dfcde99dbc','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','e342d908-5dd2-4ea3-9291-288339829a8c',NULL,'2012-10-18 06:15:40'),('7bf74d74-6b37-44fc-aa0d-e70f39158d74','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','976dc56c-c92a-4253-ac88-f69cae251794',NULL,'2012-10-17 01:27:02'),('7c59dc04-a096-47ea-975f-8ddf97bd4106','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','99818e34-6fe4-455c-81df-cca3b0e70932',NULL,'2012-10-18 06:13:47'),('7c6158a7-fc1d-4820-9fbe-e8c40ac6bac2','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','53b462db-42b5-41e6-94fa-a98974bcfd5b',NULL,'2012-10-18 06:13:39'),('7cfd956a-85ac-45c5-b8e2-f8a6fdff2648','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','23e376ee-554b-4ac0-b34a-86031f77e526',NULL,'2012-10-16 04:30:50'),('7d34971a-ac4d-422c-b80d-f75faba289c2','5934dd0b-9f7c-4091-8607-47f519f5c095','299390fd-24f2-4ed5-9bb6-e270b9e2f64f','e45b3f8d-6116-48a5-b671-031cc0f9ab6b',NULL,'2012-12-07 03:33:04'),('7d55b95f-d506-4f56-b1be-31a7942ad2b6','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','62be2403-d1ee-4d70-bab4-28bfd161f8e0',NULL,'2012-11-21 06:37:15'),('7d5a141f-7ea2-433f-9a6e-d51df5a48803','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','badbed99-3113-45e7-bf87-40bf5354f88d',NULL,'2012-10-02 07:24:59'),('7db3c2ca-bb41-4bdb-9631-a9f8eb38498d','3141bc6f-7f77-4809-9244-116b235e7330','d91f0637-b2f6-4492-ac1b-23c155102a3e','065a6379-da8d-4d90-8a6e-8286b31e850f',NULL,'2012-10-18 06:15:38'),('7dc7f5b1-1558-4947-a0de-07ba8f2669d4','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','3cdd3f9e-a093-4c0d-8aef-ef7ba86f765b',NULL,'2012-10-17 01:18:20'),('7e295ddf-5ac1-49a1-a81d-93768eba98bc','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','b7996d48-fbd6-4f41-9b0e-30ab67feb511',NULL,'2012-10-18 06:15:35'),('7e5a43cd-87f6-4256-a61e-9553b5edb4a0','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','6ce73de0-e573-4f2f-9a54-28c440210c2c',NULL,'2012-10-17 04:33:02'),('7e64dfb8-4f3a-49fb-8810-a0c0dfa110fa','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','8f34c0fe-0d12-4dda-bef0-fb952990cb71',NULL,'2012-10-12 06:10:29'),('7e7e0805-6316-4ff7-81d8-1552bf6863ff','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','4bbcd493-2035-4567-80e8-218dd24201e7',NULL,'2012-10-18 06:13:48'),('7ea41d67-c5f4-4cde-b99b-bb4f14877088','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','4ac74345-b1d9-47d8-bed7-3f41b2bdbc36',NULL,'2012-10-02 07:24:59'),('7f34ef0a-c49b-4bb8-aad2-f472d2b33c17','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','fb5fca7c-0a75-4a94-8dc2-0dba6d66747f',NULL,'2012-10-17 01:27:01'),('7f475cbd-17db-4fc3-9a1a-6957279ece01','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','92ba8d67-0170-4f39-8f29-316b44522112',NULL,'2012-10-02 07:24:59'),('7f4b32a1-4339-4e37-b874-b4b96bd341d5','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','fb5fca7c-0a75-4a94-8dc2-0dba6d66747f',NULL,'2012-10-17 01:27:01'),('7f6c3a67-e3ae-488e-b3a5-61cb21db6225','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','5df9d93b-5e4d-41a3-89b5-301bf009ee9a',NULL,'2012-10-18 06:13:47'),('7f7c6c85-ce1f-48da-a641-dd77c3346ee9','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','1f8df48d-ce76-49e4-80ed-cc0d0ce65d2a',NULL,'2012-11-10 07:17:14'),('7f94adce-caaa-403a-ba0e-6140aac65231','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','d407dc6e-52ae-4fec-a1f6-9708d87af938',NULL,'2012-10-18 06:15:34'),('7fb7335a-c72a-4bc9-aeeb-eca362adb4e7','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','adac68c6-1483-430c-ab2e-b594660ae4d6',NULL,'2012-10-12 06:10:29'),('800d0249-e5ed-4606-b215-9209743a9ae1','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','18d00a54-6b22-4434-8563-e66f80431e9d',NULL,'2012-10-02 07:24:59'),('8032c5df-f2ea-49f5-866c-582b5067b787','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','6f4e7eff-7204-468e-bfb2-2943688d282f',NULL,'2012-10-17 01:17:59'),('8077515b-71dd-4741-9e57-34a49a647abd','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','99c1ab3a-dc50-4186-8828-df989f8d3d50',NULL,'2012-12-19 06:54:45'),('815c3275-8053-4784-878c-6b3083dac4b2','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','68d7dce7-17c4-4407-b648-83efa8870d3e',NULL,'2012-10-17 01:26:58'),('8228c808-5068-4da1-813b-529cbedc54b4','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','4021ed21-c101-42d4-83a8-3ff714eccb17',NULL,'2012-10-17 04:32:56'),('8233e840-0d1f-466c-ac11-5d59be1e2a4d','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','f869b28f-c712-48b5-b095-27dc19c94d09',NULL,'2012-10-18 06:15:34'),('82782038-7472-4566-8afd-fcbd090226bb','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','64c450b4-135c-46d1-a9aa-3f9b15671677','1b801662-0446-4bf5-bbd5-b093b27a1cef',NULL,'2012-10-17 01:18:02'),('8295d964-8c51-4742-810c-ee685424ca76','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','7abfb7c5-3f55-466e-bd43-1f886e6a884c',NULL,'2012-11-10 07:17:13'),('82b25d8c-da57-431d-818d-45acd9f2d7ad','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','4690e672-6b5f-42ac-9cf8-d0a3bafeeaa9',NULL,'2012-10-17 01:26:58'),('82bc13e8-96c4-4ff8-a91e-86bafb60068e','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','06b8d06a-aac4-4d09-b0b4-fe67d70faf14',NULL,'2012-10-18 06:13:45'),('8309ec2e-4f6d-4351-a85b-0e4a24f0ca23','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','b83c3a3d-7feb-4677-b38c-1ecd5118c3f4',NULL,'2012-10-18 06:13:40'),('831508b9-a42d-467e-9128-12dfed902cc2','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','57eeece7-6b2a-4dad-9684-b05c96a57988',NULL,'2012-10-17 01:18:18'),('83528ac8-3b2b-449d-82ee-b48fc43540f3','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','6c1064bb-f40f-4413-84e5-d40270f6c96b',NULL,'2012-10-17 01:04:54'),('83b534da-5d4b-4783-9907-1dd566b12a57','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','19d7d449-99c3-4a3d-98cb-428665cf25d1',NULL,'2012-10-02 07:24:59'),('83cfd228-6b80-4bda-84ab-2becc2798182','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','bc9e29c0-cf88-497c-a9da-76956e4dc08e',NULL,'2012-11-10 07:17:17'),('8428ee12-91dd-463a-863a-139907a14ed6','5934dd0b-9f7c-4091-8607-47f519f5c095','dd4b3428-134f-4e51-870c-69e71ad58a21','4818b5a3-6975-483a-b2a2-7be4de3fbc31',NULL,'2012-10-02 07:24:59'),('843872a2-e687-42aa-a8f2-2e6b8ed23ebb','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','0205b77b-4396-4931-95b8-d896a123b0e0',NULL,'2012-10-02 07:24:59'),('84ee6558-a351-4214-8e5d-8a07209b17ae','3141bc6f-7f77-4809-9244-116b235e7330','b3b3b726-acef-4d58-82e4-ef8875d654ce','574474c0-6023-4a99-ac26-301495d79194',NULL,'2012-10-02 07:24:59'),('855e353e-d026-4068-a849-417550806f05','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','cc23bcb7-221b-4ef0-98ab-40726b5aee4b',NULL,'2012-11-10 07:17:29'),('85d38dce-c306-42f3-83ab-a5e5ae54310b','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','ab17d28b-3f9a-45e2-b6da-fb19cf759c13','833952ec-7936-4a3e-979a-a2b705c31a9d',NULL,'2012-11-10 07:17:14'),('867dfbfd-4ed0-4042-bee0-389acfb07d03','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','52b25353-f40f-453c-bb26-854d2cf29b7f',NULL,'2012-10-17 04:32:56'),('86b36fe7-0342-416b-9d0d-816e403f23be','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','983636ce-8bfb-4e06-b5f5-a2994af8ccc9',NULL,'2012-10-18 06:13:38'),('86b858d8-b867-4846-b3ff-83e2e141e967','3141bc6f-7f77-4809-9244-116b235e7330','a74cbffb-281b-49ee-8e96-fbac2ab54785','e5b5b610-e9dd-471f-b2c9-08455a23ddfe',NULL,'2012-10-17 01:18:19'),('86d587ed-9c3b-473d-988d-0692788d33e8','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','420813eb-03e3-4a3a-97ca-84894f08af88',NULL,'2012-10-17 04:33:00'),('86fdabeb-2b7c-4b3e-9315-033bf1aead11','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','35b9e3c0-9670-4775-9e9a-cf56d973440b',NULL,'2012-10-18 06:13:38'),('8732c0d6-d9a2-4625-9153-572a3fc2df16','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','bbfbbed7-11fa-4cb1-9819-89284ff7d80a',NULL,'2012-10-17 00:55:51'),('8789ab6d-424a-4a4f-852f-f927ca0fcff6','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','cba8d14c-a8a8-4676-b1d2-3cd726528825',NULL,'2012-11-10 07:17:22'),('87c0e805-c71a-4083-91d8-e04b9d1936bc','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','53b462db-42b5-41e6-94fa-a98974bcfd5b',NULL,'2012-10-18 06:13:40'),('88d63709-5154-40b0-8363-3677ae51952e','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','369eeb06-b520-4566-b9c5-1f7a2277a450',NULL,'2012-10-16 04:32:21'),('8902304b-c1a0-486e-a3a6-684699312536','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','4d2748e9-7233-4106-b7a1-83e7cfdbff24',NULL,'2012-10-18 06:15:39'),('894d9942-b6ee-48ad-8811-e7d2daf6be4c','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','3ffcbbac-7b49-433b-8ffa-275ff81aba00',NULL,'2012-10-17 01:17:59'),('89fa08d3-c8aa-4735-a314-0f94cd9c68a8','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','c285590a-914f-4c36-a0a2-624fa25d028d',NULL,'2012-10-18 06:13:48'),('8a24dd43-e75e-4829-a57a-12d30fb75ab3','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','64c450b4-135c-46d1-a9aa-3f9b15671677','f1abb661-2418-4d3a-8d41-aef1a0f57bdc',NULL,'2012-10-18 06:13:37'),('8af04291-77e8-4302-9558-c36ef7c30b93','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','3dfac762-1463-4914-a5c3-00d751159b52',NULL,'2012-10-18 06:13:47'),('8c9509c1-4426-4280-8eb7-252e23341734','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','ed5607ba-10de-4e96-902b-8eaf4dacf249',NULL,'2012-10-18 06:15:34'),('8ce7afbc-0a52-4a9f-b982-123fafddfe61','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','b8863dbf-f999-4c0f-889f-ccc18b6a6e71',NULL,'2012-10-17 00:55:53'),('8d1333d4-48d2-4a26-81db-aef054f3d900','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','1ded295a-3065-4da7-8ba7-42edef36a1db',NULL,'2012-10-18 06:13:29'),('8d5a91d4-b3fd-4d3d-8575-633eca54e2af','3141bc6f-7f77-4809-9244-116b235e7330','a74cbffb-281b-49ee-8e96-fbac2ab54785','16d9ada5-08b6-48cc-b4f8-723327803581',NULL,'2012-10-17 04:32:59'),('8d5f2a73-fe1a-4fdf-9251-ac7577098245','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','7a0ab3c1-8ab0-4aac-b064-bff7e6e88f64',NULL,'2012-11-10 07:17:22'),('8d76bbc0-8f45-4682-b422-f9d1e9215706','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','adfa26bc-e276-4d69-85f3-63c8bd046d3f',NULL,'2013-01-05 07:02:50'),('8d7c66be-3913-457a-ab7d-6fe5229f4876','3141bc6f-7f77-4809-9244-116b235e7330','d91f0637-b2f6-4492-ac1b-23c155102a3e','5abb795d-02e4-4d63-87cb-61fbc7b70be8',NULL,'2012-10-18 06:13:37'),('8d7e8180-ff06-43d5-8404-be25fe7cdc55','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','a30af6e0-195d-46a8-a46a-cc1682d04896',NULL,'2012-10-17 01:18:19'),('8d95f8e4-abd7-45b4-9279-caec11d2291a','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','b8863dbf-f999-4c0f-889f-ccc18b6a6e71',NULL,'2012-10-17 00:55:51'),('8dd465b8-f3ee-43f9-9bc9-ad44d802435d','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','5c4a8eeb-3536-4b43-8eb7-33ee6472c63c',NULL,'2012-10-18 06:13:39'),('8e2237ca-1677-4982-9fe3-e3b06920a393','3141bc6f-7f77-4809-9244-116b235e7330','a74cbffb-281b-49ee-8e96-fbac2ab54785','41f460dc-3272-497f-bed4-77e67d459612',NULL,'2012-10-17 01:18:01'),('8f3aab8c-ca7d-4f67-bdc2-d6c2e6807255','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','aaf970b7-31ef-40f0-a493-187298baa1b1',NULL,'2012-10-17 04:33:02'),('8f5d3548-057c-49ec-bc6f-51ff26f45643','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','08255d3a-bd85-434e-97a8-14f98b0c4ec8',NULL,'2012-10-12 06:10:30'),('8fa93b16-0532-4a92-b4dd-13cddbaaf34f','3141bc6f-7f77-4809-9244-116b235e7330','d91f0637-b2f6-4492-ac1b-23c155102a3e','5cad3529-600c-4b7f-aa68-375a5dc9912e',NULL,'2012-11-10 07:17:20'),('8ff223d0-208a-4bd7-a52e-8ad0837f432c','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','3bc97a96-a507-4c9c-8033-d7f212a9badb',NULL,'2012-11-10 07:17:16'),('8ffbae3e-24fa-460e-840a-e7407cc3684b','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','288aaae9-9513-4bf3-99c3-b5fd26ed85af',NULL,'2012-10-02 07:24:59'),('8ffbaeb3-87ea-404a-808f-37fa585cc092','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','54e14752-4a89-413a-9ac1-dbb519f61e2a',NULL,'2012-11-10 07:17:31'),('90305915-e27f-4372-b469-d7a97d60bbb3','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','480b7fb6-f10b-4631-97f4-f40e0385cdca',NULL,'2012-10-18 06:13:39'),('906de2a3-d112-474e-b0cf-1e5139067aa2','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','0c2ad7a0-83b5-4f83-aed9-ee6ad99510b3',NULL,'2012-10-18 06:13:34'),('90844def-e35d-4e1d-a231-a1be5485ba59','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','e10c64e0-105a-44f5-83da-a4a10379d802',NULL,'2012-10-17 04:33:05'),('911e3eae-1005-4a88-b324-4c6a2656bbda','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','d6a33093-85d5-4088-83e1-b7a774a826bd','1fd534f6-139f-41ed-80dd-2b6b7fee6768',NULL,'2012-11-10 07:17:27'),('913ef119-d8fa-4e18-884b-4d5bbddf69c7','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','2797e915-0097-40f6-ba05-ecf94ab34dc5',NULL,'2012-10-02 07:24:59'),('919b855f-c89a-4d09-85d7-1cc9da7b977f','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','573c6a20-1076-4234-a728-0bce8405f097',NULL,'2012-10-18 06:13:34'),('921d12ba-37b9-4e64-bd4a-04b8c2759ca4','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','1db0ee9f-a668-45f2-ad79-50e395a9e171',NULL,'2012-10-12 06:10:30'),('92a0b44c-4fb4-4c2f-8490-23365e578974','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','06e64ff4-3de9-40f6-a9c0-bcf0e5aba5c4',NULL,'2012-10-17 01:26:57'),('92ea14a6-3ef1-4546-9ec6-eebafb5a7205','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','4bbcd493-2035-4567-80e8-218dd24201e7',NULL,'2012-10-18 06:13:48'),('92f35636-3c2a-4894-8e4b-123d06082829','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','4bc4b72c-8183-4a14-8066-47d7b0d2a827',NULL,'2012-10-17 04:33:02'),('931afde0-8a80-481e-940b-985f53719108','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','07e990d9-5b60-4cb1-8e83-40e25dcdcdae',NULL,'2012-10-02 07:24:59'),('93ae048b-fce9-4f35-8ecf-3392ae80e3d3','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','23dca992-ea19-4731-8e96-20739509851c',NULL,'2012-11-10 07:17:15'),('93aecac3-9ab6-4b40-a579-2a9229cab628','3141bc6f-7f77-4809-9244-116b235e7330','e96b787d-57f6-41a4-9693-d0634bfacacb','123481b3-aca7-41ec-97d7-7e6601395d4a',NULL,'2012-10-17 04:33:01'),('9449ad16-3528-476e-9fe8-eafd9d72b5cf','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','074d4c3a-c9d7-4751-b2eb-72e0cb45f69c',NULL,'2012-10-17 01:18:14'),('95225644-6afb-41c1-a6d8-619c44bef8cc','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','5ebc8427-124d-4615-83fb-4326749745e3',NULL,'2012-10-12 06:10:29'),('9542abc3-b611-42c7-aca3-e9ab5bd0ebd4','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','2c3058ab-a357-4c26-9157-8f11028e63bb',NULL,'2012-11-10 07:17:14'),('95a93190-8a9f-41a8-acb9-b817b27024b4','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','66be432b-20a6-4dbc-8d52-5857f559c40d',NULL,'2012-11-10 07:17:21'),('95e74733-a04b-4551-8cef-7d8a4313e13f','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','6a939182-d012-48ce-b495-5648eaf06e1c',NULL,'2012-11-10 07:17:33'),('95e87a08-4c4c-4497-b1e3-465ea36fbfce','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','1887c956-1e50-4bae-8cb5-3a5a68d2ef80',NULL,'2012-10-16 04:30:49'),('9600b136-6028-44ce-972d-81de005c690f','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','c8e9d29a-13ca-4f03-9d2c-5834667f54ea',NULL,'2012-10-17 01:17:58'),('96f4d696-d2e6-4b99-8102-6cb8667cca18','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','7efc3875-3bd2-4615-9b1f-83d7fc8131d0',NULL,'2012-11-10 07:17:32'),('972d0dcb-2f51-4c4b-b903-61c1f5d88b43','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','860d9543-4d04-4be9-9fed-ff1e35648d28',NULL,'2012-10-17 04:32:59'),('97807527-189b-4aaf-b928-8a601c2ecaae','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','17d1046c-71bd-4c90-9291-6744e5f2fa38',NULL,'2012-10-18 06:13:42'),('97852b80-4746-4384-b8c7-5890d7157971','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','a3f41b86-152e-4feb-878a-c83d486b57cf',NULL,'2012-10-16 04:32:22'),('9889648d-1508-406c-87d5-c4fd8c79c14e','3141bc6f-7f77-4809-9244-116b235e7330','90db809f-268c-4b26-988b-b44c103ac655','8ef30615-ebf0-4877-a521-64457b598158',NULL,'2012-10-02 07:24:59'),('989e5ac0-1a3b-4639-9162-98b78c56a2fe','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','02246977-bef6-46da-98c2-de7522111899',NULL,'2013-01-05 07:02:50'),('98bdbcfb-cac3-490f-a6e0-d6a9626456bc','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','d4e1477a-ed22-48a3-b1f0-751e5bfa6b5a',NULL,'2012-11-10 07:17:21'),('98bdd72a-4867-4a3c-b3e8-f7e620e5be8c','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','dc4be07b-03cc-4d6d-95e5-2bd6f49b8b8b',NULL,'2012-10-17 01:04:55'),('98ec9e0a-3a33-4900-95a2-e7f79aecef01','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','f86d6829-9a80-4348-9869-36b11517e74e',NULL,'2012-10-18 06:13:48'),('9938ac11-b96e-4a97-be3f-8a80d11d49f3','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','aaf1a292-b2e7-4624-8119-a6805bc6702c',NULL,'2013-01-05 07:02:50'),('99a966d7-6195-488c-83e3-a42bf27479e1','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','d6a33093-85d5-4088-83e1-b7a774a826bd','61137b8e-803f-4f04-835c-1718670cebc1',NULL,'2012-11-10 07:17:24'),('99ae41cc-3f84-4fd8-9465-10a6577098ae','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','a6a4884a-f8e5-4909-905b-df8825040cef',NULL,'2012-10-17 01:27:01'),('99bf3316-dbc8-4a4e-9c5a-11d3164f8026','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','369eeb06-b520-4566-b9c5-1f7a2277a450',NULL,'2012-10-16 04:32:22'),('9a69467b-7510-453f-879d-e95bf305d6a9','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','0a01c5ed-7e05-4dc8-8082-48fe61bab13d',NULL,'2012-10-18 06:15:40'),('9ad92801-31f8-4c30-a429-1f6262804f69','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','9548e247-c91d-4e39-99b1-26456cc7ce22',NULL,'2012-11-10 07:17:34'),('9b8248ba-9b7b-4965-aa73-9a82b15a957f','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','7abfb7c5-3f55-466e-bd43-1f886e6a884c',NULL,'2012-11-10 07:17:13'),('9bbcac01-e742-43bb-877e-a2935411c886','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','cabd97ec-12fc-442a-9952-54a9250c6e8c',NULL,'2012-10-17 01:18:16'),('9c1aac62-f712-44a6-9fec-37618ad4f409','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','08255d3a-bd85-434e-97a8-14f98b0c4ec8',NULL,'2012-10-17 01:17:58'),('9c1c9864-8e5a-40e9-8465-2b2fd8847fad','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','59160936-d126-49a2-a275-86f9359c0e89',NULL,'2012-10-18 06:15:34'),('9c5fa409-5302-49e2-be7a-296f681ed8ba','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','57eeece7-6b2a-4dad-9684-b05c96a57988',NULL,'2012-10-17 01:18:18'),('9c73f3ff-3ab6-4165-ae86-967746076dc3','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','9086cec8-a28e-4723-9f31-e2e68e173c6a',NULL,'2012-10-02 07:24:59'),('9ca85780-974a-417b-a399-295420c0cff8','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','d72473f6-d239-448b-acfc-c3f177f65aa2',NULL,'2012-11-10 07:17:18'),('9cf741ad-1cce-4b8d-aa60-35303be10b7b','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','799d35d1-0125-4d6b-8e92-df7cad508426',NULL,'2012-10-17 01:26:58'),('9d19cccd-6447-4b6d-ba3d-d9bdf7c2f62a','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','bfefbf36-c506-403d-896f-3a2eac356e0c',NULL,'2012-10-17 00:55:52'),('9d28cda9-eb95-48b9-81be-b88841712fb1','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','c687dcf9-2069-4027-8c00-98f4b66fc2e2',NULL,'2012-11-21 06:37:15'),('9d4cb0ce-21b2-4049-926e-dd84934a0734','3141bc6f-7f77-4809-9244-116b235e7330','d91f0637-b2f6-4492-ac1b-23c155102a3e','eb216a3d-72a4-459b-8686-6aebab26bbb7',NULL,'2013-01-05 07:02:50'),('9dea4de3-96bb-40c2-bdf7-67714b3298e5','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','daf70773-a281-4620-9c75-73350150512e',NULL,'2012-11-10 07:17:24'),('9e35f2bf-b56e-4786-9d8c-65942555dbad','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','6ce73de0-e573-4f2f-9a54-28c440210c2c',NULL,'2012-10-17 04:32:59'),('9e69143b-1773-46ce-8630-859a438823d7','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','57eeece7-6b2a-4dad-9684-b05c96a57988',NULL,'2012-10-17 01:18:18'),('9e6921a1-cde7-47dd-b1a5-37df8aef29f2','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','1d283460-e24c-4cbb-8476-2a66df560456',NULL,'2012-10-17 01:18:01'),('9e75e80a-b70e-42ca-9a38-d3bc3f5d2e04','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','e2e6315f-7469-410d-8532-628d933f1508',NULL,'2012-10-17 04:33:02'),('9f732852-d9d1-4f5a-abb5-0358290a6abe','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','62be2403-d1ee-4d70-bab4-28bfd161f8e0',NULL,'2012-11-21 06:37:15'),('9fff3cb0-d49e-4115-b9bd-05ffb554f2e5','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','9e55df2f-6153-4d2b-a156-863b1c0148e2',NULL,'2012-10-17 00:55:52'),('a000b0b0-244b-4ee1-9972-51f04044e490','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','2898de0d-0bae-45ec-a915-05d92d1df637',NULL,'2012-10-17 01:26:58'),('a00b22f1-a5f4-474f-b77b-910f3a7fe8d0','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','78640195-eaae-405f-b3bc-304b806977f9',NULL,'2012-10-18 06:13:34'),('a0c5c2bb-e678-49d9-9833-7918f11d6b73','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','ab17d28b-3f9a-45e2-b6da-fb19cf759c13','7ff7e6cf-5a65-4e2f-9fc3-6f702374b470',NULL,'2012-10-02 07:24:59'),('a0ec60dc-8b77-4b91-9b80-106911995d01','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','03bbfaaf-124c-4454-8082-50e0b3d23e57',NULL,'2012-10-02 07:24:59'),('a13b4500-a4b3-4991-937c-1d6f84933f84','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','7b2ab804-b73e-4700-96ca-61ebc9c3576e',NULL,'2012-10-18 06:13:35'),('a13c324a-44f6-49d0-ade7-5f55efc9eea3','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','8aa97c5e-1cf5-4b1b-a20f-58e21598a5fd',NULL,'2012-10-17 01:26:59'),('a17c0167-739c-4636-8b66-e3ad0a52c7e5','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','01c97b84-76e0-4b94-9e3b-1e670bd9468b',NULL,'2012-10-17 01:18:13'),('a1f88ffb-d7ad-4a93-8505-fe07d26b09dd','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','931ba3fb-e82b-467a-a349-0320feac9a97',NULL,'2012-10-17 01:04:55'),('a24e0f96-36f8-4ba0-ac52-6f55fd81841c','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','c24abbeb-3318-4ec0-ab40-f272a26800ad',NULL,'2012-11-10 07:17:31'),('a2cf25ba-366e-41b2-8afd-2a13e8d9936c','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','62be2403-d1ee-4d70-bab4-28bfd161f8e0',NULL,'2012-11-21 06:37:15'),('a350ec04-198e-4a46-a125-519ff1e3d868','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','19d7d449-99c3-4a3d-98cb-428665cf25d1',NULL,'2012-10-02 07:24:59'),('a3b4f130-b4be-49ee-a871-40dc9f7a8aee','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','ab17d28b-3f9a-45e2-b6da-fb19cf759c13','62be2403-d1ee-4d70-bab4-28bfd161f8e0',NULL,'2012-11-21 06:37:15'),('a4cf9433-b0b5-4891-a16b-a96d6d279eef','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','4e5c2d3d-0802-432b-9e52-2a98e8e18e8d',NULL,'2012-10-18 06:15:39'),('a52df418-89b7-4f86-bc3f-d29827a16492','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','881214c5-639f-4a87-b4a5-3c8b6b8436d2',NULL,'2012-10-02 07:24:59'),('a593ec92-eacd-4587-8cf3-770a9226cd6f','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','268c57bc-edfc-4da7-b01a-c1ebb2438022',NULL,'2012-10-17 04:32:59'),('a5badc7d-c8cf-4e74-998e-652e8fc8dced','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','f86d6829-9a80-4348-9869-36b11517e74e',NULL,'2012-10-18 06:13:48'),('a5d862d5-125d-4e5a-8b2f-7e5716201f15','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','e01e5dc0-37da-451a-9644-22309e5cb21e',NULL,'2012-10-17 00:55:53'),('a5f835e6-c6d8-4ba6-a08a-5f1bf523313d','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','d6a33093-85d5-4088-83e1-b7a774a826bd','03bb2a7e-47bd-44fa-ab1d-797370bb1ead',NULL,'2012-10-16 04:32:21'),('a5fe454a-70a6-4461-8fe4-a660f04887d9','5934dd0b-9f7c-4091-8607-47f519f5c095','a90025a4-9e8b-44b9-a267-9580c7c5460b','c5e493af-195e-4b64-9331-4f716a16eac9',NULL,'2012-10-02 07:24:59'),('a66dc580-3107-4655-b0ab-9cbf84240847','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','b8863dbf-f999-4c0f-889f-ccc18b6a6e71',NULL,'2012-10-17 00:55:53'),('a6cec38d-8488-46d0-908a-a1e846df388d','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','33da3559-86b0-4db0-8e3f-7339155cc559',NULL,'2012-10-17 00:55:59'),('a6d1191b-d805-4f92-be3d-f9412bc4a970','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','5df9d93b-5e4d-41a3-89b5-301bf009ee9a',NULL,'2012-10-18 06:13:47'),('a7fd0033-ad64-45a1-8398-1cb02056526b','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','4aa31d07-d726-499f-b3ec-afe2995abedb',NULL,'2012-10-02 07:24:59'),('a955ab0e-c1bd-4ea9-8e9a-f7493e2c14e9','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','c9d79a74-a58f-4c71-8977-1129c10f3a5d',NULL,'2012-10-16 04:30:50'),('a98f90c0-d274-4c38-9ac7-e260af25afb4','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','06e64ff4-3de9-40f6-a9c0-bcf0e5aba5c4',NULL,'2012-10-17 01:26:57'),('aa067fe5-ca47-4746-8103-d7c91356b881','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','30ad24b9-3d4a-4cf8-9986-f45c12210aea',NULL,'2012-10-17 04:33:03'),('aa27e81c-db91-4960-80ae-5ff6df3d2a99','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','1d283460-e24c-4cbb-8476-2a66df560456',NULL,'2012-10-17 01:27:00'),('aa3838ae-4612-46e7-bedb-aaec9478156e','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','1d283460-e24c-4cbb-8476-2a66df560456',NULL,'2012-10-17 01:18:01'),('aa9363e5-53b0-471d-84c0-7fb239263269','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','9a8285cc-f383-4a1b-bf64-60749f065603',NULL,'2012-10-17 04:32:59'),('aac646d7-b643-4655-93c0-921ca7d3bfba','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','931ba3fb-e82b-467a-a349-0320feac9a97',NULL,'2012-10-17 01:04:54'),('ab4b4d8a-6aa8-4b5e-81b7-7455c94c527e','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','0a01c5ed-7e05-4dc8-8082-48fe61bab13d',NULL,'2012-10-18 06:15:40'),('ab7de0db-a13c-4f61-9084-29b6547f53fe','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','b47ed36b-9e71-4516-ba3a-cb4c91718d8c',NULL,'2012-10-17 01:18:17'),('ab9df566-7bd4-46e7-a51b-eea22ededce9','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','eaf3f239-4e9b-42bd-b618-2cad78793b36',NULL,'2012-10-02 07:24:59'),('abd6d986-39a8-490a-bbb8-2e4a873a1a8e','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','4f982c49-6962-463b-ae20-1b5494fc7671',NULL,'2012-10-17 01:27:03'),('abf3fa20-8aa5-4a7c-9b4d-2fa8f30647d7','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','e4c15807-3cb1-4e86-a659-03b56b3e1fb5',NULL,'2012-10-02 07:24:59'),('ac5034fe-563d-41f3-b80f-b39258db5be1','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','84bcc45a-f840-4645-9ae3-1f480ab74589',NULL,'2012-10-17 01:04:54'),('acd78426-4224-4578-b2cf-976ad25ac788','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','d6a33093-85d5-4088-83e1-b7a774a826bd','ebc1e69b-0209-4abe-b22e-6d5660fab576',NULL,'2012-11-10 07:17:24'),('acf85022-3160-4f39-b4af-a2d2ee22edd0','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','cb2d39d3-9f00-41c1-b0ef-99d5c57a900c',NULL,'2012-10-18 06:13:40'),('ad35da19-6807-498f-afab-884ded63e4f9','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','4137d40c-0130-4277-b726-61bc76f4fdef',NULL,'2012-10-17 00:55:52'),('ad3e3a53-0cda-46f7-aa17-d5e3701cfb75','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','1d283460-e24c-4cbb-8476-2a66df560456',NULL,'2012-10-17 01:18:01'),('ad6105ef-ef6b-4a73-902b-1df9e80e837e','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','d6a33093-85d5-4088-83e1-b7a774a826bd','93020f07-2a16-450e-b0fc-e03446952c02',NULL,'2012-10-17 04:33:04'),('ad6cae68-4537-41b3-bc49-9e7c837ecc58','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','288aaae9-9513-4bf3-99c3-b5fd26ed85af',NULL,'2012-10-02 07:24:59'),('ad71dfd5-624d-4cde-90b6-f29a7698c965','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','a6a4884a-f8e5-4909-905b-df8825040cef',NULL,'2012-10-17 01:27:01'),('adcea1b8-1c31-4441-a924-b897831bd759','3141bc6f-7f77-4809-9244-116b235e7330','a74cbffb-281b-49ee-8e96-fbac2ab54785','00ee1251-c1ec-49cf-95e7-f0c037d23f43',NULL,'2012-11-10 07:17:30'),('ae99e470-5c3f-46c4-be27-8f6bf7d3e707','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','4953b2ca-d1f2-4905-a8d4-bf95abd54930',NULL,'2012-10-17 01:18:19'),('ae9e5663-5795-44c1-b03e-17e659638f61','3141bc6f-7f77-4809-9244-116b235e7330','a74cbffb-281b-49ee-8e96-fbac2ab54785','6a7c543e-1d68-4ab1-8ab0-4898d0d204e4',NULL,'2012-10-17 01:18:14'),('aef413ef-62d4-405a-887e-b6d0339e7ce9','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','bc9e9d1b-9112-4336-ac8e-c2c0b614777b',NULL,'2012-10-02 07:24:59'),('af752dec-a607-44e9-9dd9-c49ef0ec7e34','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','8533521f-82c8-408f-9499-194e45d50154',NULL,'2012-10-18 06:15:42'),('b03ae32f-dc8b-4365-84b8-5d2cda600f40','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','51f80b0a-7a4b-4c68-ac7a-b41ef9c9aaba',NULL,'2012-10-18 06:15:36'),('b04fae89-1307-4e35-aca1-b544bb76451c','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','35c9fd79-c9b4-4a0c-84dd-6a9a6a05453a',NULL,'2012-10-18 06:13:42'),('b05cf453-abb3-4fa5-b0e4-68f53cce95bf','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','5ebc8427-124d-4615-83fb-4326749745e3',NULL,'2012-10-12 06:10:31'),('b1a246ef-7739-4679-8264-c1e98c551760','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','67621d17-25ea-4cef-863d-1431b3946640',NULL,'2013-01-05 07:02:50'),('b2870513-62a2-4a8d-81de-5f1b88dbb6f1','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','983398c1-423c-4e88-99be-da3ad56d2d7c',NULL,'2012-10-16 04:32:21'),('b352b2e6-31eb-4a0f-8b2b-57805e210ad8','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','9548e247-c91d-4e39-99b1-26456cc7ce22',NULL,'2012-11-10 07:17:34'),('b3610e83-0b77-4d92-9388-a4697f78a341','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','4f982c49-6962-463b-ae20-1b5494fc7671',NULL,'2012-10-17 01:27:03'),('b38dc22c-8504-4b3e-afbd-bf6c818f6c3c','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','7b2ab804-b73e-4700-96ca-61ebc9c3576e',NULL,'2012-10-18 06:13:36'),('b3ae5bd3-88ad-4de7-b4c2-62d2c1eef9fd','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','369eeb06-b520-4566-b9c5-1f7a2277a450',NULL,'2012-10-16 04:32:22'),('b3c63fef-ee0f-4e46-9d2c-2b8d59d77630','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','34c42eda-b9e6-4a35-b483-a791bd04718d',NULL,'2012-10-18 06:13:43'),('b40db546-938e-449c-ac4d-b3c27b52780a','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','e549810e-8a45-4d3b-9f7a-97ce7f11e853',NULL,'2012-10-18 06:13:38'),('b440608f-fd3d-466c-8446-8fb3a217db56','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','a5cdb910-3eea-4f59-9319-d2c51b6658fd',NULL,'2012-11-10 07:17:35'),('b48a0068-5dc3-4454-8450-6bccd9c1ebce','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','e88a46ca-5372-4314-a51c-ec83ac9ef4b4',NULL,'2012-10-18 06:15:42'),('b4ab22b6-3829-49cc-ac2a-384fd1c31038','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','4c9c49f4-ca45-40bc-b7a2-119bfa76cf23',NULL,'2012-10-02 07:24:59'),('b4b7ab19-2836-46c1-a7f1-c36eb85daf48','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','f048d680-916b-4631-a19e-2b4c292f010e',NULL,'2012-11-10 07:17:18'),('b53321de-fb89-4112-a01a-4df6d522f4f2','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','d6a33093-85d5-4088-83e1-b7a774a826bd','d80f1e2e-a75b-4492-8f7b-e541e3980fb7',NULL,'2012-10-18 06:15:39'),('b57c0591-cb9e-4005-a05d-99bb3855e1f8','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','06e64ff4-3de9-40f6-a9c0-bcf0e5aba5c4',NULL,'2012-10-17 01:26:57'),('b5ab1809-a30d-4979-9911-f520b0b5f6e0','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','9862f025-b370-4ed0-96a1-0d81813ac256',NULL,'2012-10-02 07:24:59'),('b6430b4d-205e-4126-b515-be556d11160a','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','180a7231-0444-44c9-8371-81825a2be339',NULL,'2012-10-18 06:15:35'),('b6552d4d-d02f-41c1-acb2-ee099a9a02be','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','4fb85f9a-831d-49ff-a554-4c80a792232b',NULL,'2012-10-18 06:13:38'),('b6634d6a-c880-4a57-93f6-3c1006a949a1','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','a30af6e0-195d-46a8-a46a-cc1682d04896',NULL,'2012-10-17 01:18:19'),('b70dda0d-7d43-4b7e-911e-45ac833f0474','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','0d1861e3-823d-4508-8de4-26bae086efb2',NULL,'2012-10-17 01:18:20'),('b7817d7d-7cab-4873-bd36-1bf8de8f8811','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','b95d9944-b9f3-4dba-bd83-86c6fe3a9ca0',NULL,'2012-11-10 07:17:35'),('b7a2b291-33be-4f84-bda1-59fa6a905a02','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','3cdd3f9e-a093-4c0d-8aef-ef7ba86f765b',NULL,'2012-10-17 01:18:20'),('b7a59434-7159-4a17-874a-173e11c4ab32','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','26fcd232-8685-40ea-a1b3-e845662d9a51',NULL,'2012-11-10 07:17:20'),('b82aeea6-631a-412e-a159-baac1e50fc48','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','074d4c3a-c9d7-4751-b2eb-72e0cb45f69c',NULL,'2012-10-17 01:18:14'),('b8861735-8843-49ef-9608-32c47079421e','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','aaf970b7-31ef-40f0-a493-187298baa1b1',NULL,'2012-10-17 04:33:02'),('b8de84f3-62c6-4628-8225-36091f8c2530','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','8309414c-b081-4342-b20b-eea126a97e26',NULL,'2012-10-17 00:55:51'),('b938ed9b-fddb-4596-a586-0deb85a370a8','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','d6d087d6-ace3-49ad-882d-67267cd29721',NULL,'2012-10-17 04:33:01'),('b9f00571-24b8-4d3b-b9df-8953228b7265','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','0f42eabd-4da2-48ed-aa30-f76b1b6d94b7',NULL,'2012-10-17 04:33:04'),('ba04958b-c721-4efc-8c08-7dac2e5f2a16','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','1087d1e9-3dff-4b6e-b1e2-625141bbf814',NULL,'2012-11-10 07:17:34'),('ba0f52cc-7502-4440-907f-4a5b808b7c66','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','1887c956-1e50-4bae-8cb5-3a5a68d2ef80',NULL,'2012-10-16 04:30:49'),('ba171eaa-14c1-4ac5-b662-447a48a014fc','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','d6a33093-85d5-4088-83e1-b7a774a826bd','abc707f1-48f6-4e0c-acba-67c818ccdc85',NULL,'2012-11-10 07:17:28'),('ba8b4eb4-ed9f-4763-a88f-8d7cfcb258fb','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','64c450b4-135c-46d1-a9aa-3f9b15671677','1d283460-e24c-4cbb-8476-2a66df560456',NULL,'2012-10-17 01:27:00'),('ba8fc177-7253-4727-85bc-5f6122f36bab','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','ab17d28b-3f9a-45e2-b6da-fb19cf759c13','d407dc6e-52ae-4fec-a1f6-9708d87af938',NULL,'2012-10-18 06:15:34'),('ba939c9d-fc24-4df5-bf98-3f34c5d2071d','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','eaf3f239-4e9b-42bd-b618-2cad78793b36',NULL,'2012-10-02 07:24:59'),('baad37d3-ac4d-480c-8a87-de764937d7cc','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','931ba3fb-e82b-467a-a349-0320feac9a97',NULL,'2012-10-17 01:04:55'),('bab00a17-687f-4c0a-b0c6-b1c434d81b6c','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','7a171a9b-49d8-45c7-bb5f-52d9c3157de0',NULL,'2012-10-02 07:24:59'),('bab6a10f-fda7-4b4c-ab4c-bb8894056277','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','eb10b29a-689c-45ca-9ea5-d92c275d0258',NULL,'2012-10-17 01:26:57'),('bad7c18d-f4c2-4ad7-9496-16c9083e7bec','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','e342d908-5dd2-4ea3-9291-288339829a8c',NULL,'2012-10-18 06:15:40'),('bb5fce41-7926-4146-9e60-8c0cc7de92c2','3141bc6f-7f77-4809-9244-116b235e7330','d91f0637-b2f6-4492-ac1b-23c155102a3e','1b801662-0446-4bf5-bbd5-b093b27a1cef',NULL,'2012-10-17 01:18:02'),('bb6646cd-c75d-4c46-b5d6-521a05c0a612','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','92526fe4-93e8-48c0-ab29-be50bc832bf5',NULL,'2012-10-02 07:24:59'),('bb739d73-f628-41d0-ba7e-be12673c9d7c','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','ab17d28b-3f9a-45e2-b6da-fb19cf759c13','1f8df48d-ce76-49e4-80ed-cc0d0ce65d2a',NULL,'2012-11-10 07:17:14'),('bb7e0128-d894-43a8-8a35-8eb4c6b5cc99','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','44da7e78-68c9-41ca-8441-26f882a463c4',NULL,'2012-11-10 07:17:17'),('bbe339e6-723f-49c0-9538-e9f1ef4dd538','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','0cea8124-51f7-49ed-822a-b6b842673c62',NULL,'2012-10-18 06:13:35'),('bc1872de-9787-4cda-a863-61a7bd3aa21a','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','cabd97ec-12fc-442a-9952-54a9250c6e8c',NULL,'2012-10-17 01:18:16'),('bd369d95-b686-4904-9c28-5c5e04fc5e76','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','73e92bb3-23a0-4fc7-a7e6-4da8b0984506',NULL,'2012-10-18 06:13:35'),('bd723b9f-8ad3-47b8-8a35-19861cbea436','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','0f919e47-d406-4e9c-96c2-0a372c818f73',NULL,'2012-10-19 05:57:15'),('bda4d788-69d5-43b1-8188-c55f9dff6504','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','f869b28f-c712-48b5-b095-27dc19c94d09',NULL,'2012-10-18 06:15:34'),('bde6aea4-0f8c-4bf6-bcb2-e8f89c3b1d03','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','62be2403-d1ee-4d70-bab4-28bfd161f8e0',NULL,'2012-11-21 06:37:15'),('be46024e-11ed-437a-bb7d-ec80ef7f3a7d','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','061ec789-c1e9-40af-83b4-a6b0897267d8',NULL,'2012-10-18 06:15:39'),('beafae6c-f9ad-4d67-98ce-095b5d3784ae','3141bc6f-7f77-4809-9244-116b235e7330','a74cbffb-281b-49ee-8e96-fbac2ab54785','b89940da-f3c3-4dad-9eb6-86bd2ba380ab',NULL,'2013-01-05 07:02:50'),('bfd892ba-e785-46a9-9f92-179f24f09db4','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','f991f719-4fe8-43d7-b032-2e4a52de8d53',NULL,'2012-10-17 01:27:00'),('bfda4a32-cc8b-4e1b-8fe9-6dcf708ffdd7','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','ee907131-8b73-4dab-9978-97fa820b01fe',NULL,'2013-01-05 07:02:50'),('bfe09702-16b1-4103-8012-57d1872855c7','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','af5504e8-0bdb-4e97-8dea-08892fb928ca',NULL,'2012-10-02 07:24:59'),('bfe1189d-0afc-4cdb-9750-c281353583a5','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','8d8ad28c-4bf2-4258-a7f1-d2c04df7b125',NULL,'2012-10-17 01:17:59'),('c002a501-dde7-4476-b3ec-dcecb1d76305','3141bc6f-7f77-4809-9244-116b235e7330','a74cbffb-281b-49ee-8e96-fbac2ab54785','32846451-1dbe-44c0-b599-cfd3bdc73b0e',NULL,'2012-11-21 06:37:15'),('c0c3378e-7388-4403-94b9-af48845a7424','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','54762702-b427-4b75-95a3-faa17a90d1b5',NULL,'2012-11-10 07:17:22'),('c0d6df16-b9ff-476e-ad3c-c2be65e57f01','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','061ec789-c1e9-40af-83b4-a6b0897267d8',NULL,'2012-10-18 06:15:39'),('c0db6f3e-abcf-4c24-b200-e4f35b75611d','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','ab17d28b-3f9a-45e2-b6da-fb19cf759c13','4953b2ca-d1f2-4905-a8d4-bf95abd54930',NULL,'2012-10-17 01:18:18'),('c0ffb52b-c1a1-4fa1-86f7-905a71601aab','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','9118731f-b1bb-46ed-9d6c-1d070a5e7bf6',NULL,'2012-10-18 06:13:36'),('c116bdf2-eeaa-4772-88da-a0cd4fa58579','3141bc6f-7f77-4809-9244-116b235e7330','a74cbffb-281b-49ee-8e96-fbac2ab54785','4988d669-fe70-404c-8e0b-c297d2eb9ad2',NULL,'2012-11-10 07:17:30'),('c168bcbb-f9dc-42ab-8605-364ed5d06697','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','705e9509-6393-481f-8dd5-f4753abcfead',NULL,'2012-10-17 01:26:57'),('c186d9a0-8e1b-4530-b945-4da2f1963b2a','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','8a0cc11d-d1ec-4e0d-a895-ac037c9d94f8',NULL,'2012-10-02 07:24:59'),('c2042398-40ae-4a77-838b-32774f5f0250','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','9f97ee78-98ae-4a3e-9989-50ca598fee65',NULL,'2012-10-17 01:18:01'),('c214459a-095a-4ff9-9e05-d48ddb730381','3141bc6f-7f77-4809-9244-116b235e7330','e96b787d-57f6-41a4-9693-d0634bfacacb','ff33f793-b071-4362-a13d-18225470ea98',NULL,'2012-11-10 07:17:21'),('c23c04e8-8ccb-4ea6-b7a3-98ffc6a0f2b8','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','64c450b4-135c-46d1-a9aa-3f9b15671677','62be2403-d1ee-4d70-bab4-28bfd161f8e0',NULL,'2012-11-21 06:37:15'),('c3931afc-6cf7-4f95-b8f5-811174b816b1','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','d6a33093-85d5-4088-83e1-b7a774a826bd','a14579f5-81f1-4d0e-b1f2-a63c7c0c94af',NULL,'2012-11-10 07:17:26'),('c3a0e55e-49ed-4c62-a84e-cffa71c3fcd8','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','51f80b0a-7a4b-4c68-ac7a-b41ef9c9aaba',NULL,'2012-10-18 06:15:42'),('c3daaccc-dc33-4813-93b3-87e3c69fd328','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','4aa31d07-d726-499f-b3ec-afe2995abedb',NULL,'2012-10-02 07:24:59'),('c467fbbc-3145-4094-82f7-637d4e27c056','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','31a79d37-ac13-4d6f-ba7d-49c9493959c9',NULL,'2012-11-10 07:17:20'),('c583a438-c961-48f3-8606-d3b85ff3b153','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','ee907131-8b73-4dab-9978-97fa820b01fe',NULL,'2013-01-05 07:02:50'),('c5aa0e46-4a34-4cea-b021-94a9c79bc8a8','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','31868203-8848-4644-92c7-27307c5e5ba0',NULL,'2012-10-17 01:27:00'),('c5b5141d-b229-417f-a948-1f0113d76ef1','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','d6a33093-85d5-4088-83e1-b7a774a826bd','0d2065a9-dce6-41d9-8488-e71063bb0e0e',NULL,'2012-11-10 07:17:28'),('c5d76260-9d73-4b57-a9da-7a2264319f4f','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','64c450b4-135c-46d1-a9aa-3f9b15671677','5abb795d-02e4-4d63-87cb-61fbc7b70be8',NULL,'2012-10-18 06:13:37'),('c5deed01-1463-46f5-ad82-cffd66a825e7','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','c79e680d-ce6f-44bb-aa6f-91ac2e94dedb',NULL,'2012-10-19 05:57:13'),('c5e10a73-d033-4510-bd75-51461fa03133','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','dcc00ef2-f22c-4796-87e5-f8b728a6a0dd',NULL,'2012-11-10 07:17:20'),('c61b4aec-a187-4c3f-a761-46bda76c7606','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','7ff7e6cf-5a65-4e2f-9fc3-6f702374b470',NULL,'2012-10-02 07:24:59'),('c636c83e-8daa-4871-945d-6745bbb82084','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','24b9aa78-7055-4776-910d-da124b1863f9',NULL,'2012-10-18 06:13:41'),('c66a7567-aaf9-4a20-a34f-c149809c82c6','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','085d00ca-f8af-43e5-9ef9-6d21dec5aff8',NULL,'2012-10-18 06:13:42'),('c67a474d-a5db-4ab3-8eaf-979bdb514b5b','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','4bc4b72c-8183-4a14-8066-47d7b0d2a827',NULL,'2012-10-17 04:33:00'),('c6bbb8a8-4496-476a-8954-36c0ad1949b5','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','08255d3a-bd85-434e-97a8-14f98b0c4ec8',NULL,'2012-10-17 01:17:58'),('c7363744-e8ec-46a5-ae0c-1134b3a069db','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','799d35d1-0125-4d6b-8e92-df7cad508426',NULL,'2012-10-17 01:26:58'),('c7d6dae6-83af-42d6-8200-528a6316020d','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','9ff3de86-38cd-4c4a-816d-048f95ec4f51',NULL,'2012-10-02 07:24:59'),('c8b9dc7b-f8ec-442f-a17a-892c5af9f999','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','08255d3a-bd85-434e-97a8-14f98b0c4ec8',NULL,'2012-10-12 06:10:30'),('c92bd606-edf8-4be3-93b3-f4719ab1c338','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','e2e6315f-7469-410d-8532-628d933f1508',NULL,'2012-10-17 04:33:02'),('c9637721-c282-47ab-99c3-2e6547bfe484','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','d6a33093-85d5-4088-83e1-b7a774a826bd','40e2177a-2219-445b-bd97-56f2ebacfe62',NULL,'2012-10-18 06:13:37'),('c99fae8d-bb56-4a10-a833-2b2b90f6f64e','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','983636ce-8bfb-4e06-b5f5-a2994af8ccc9',NULL,'2012-10-18 06:13:38'),('ca0bae49-550f-4482-aca1-0c568980f356','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','0ce828c7-e884-40be-9a6a-51b53cb349c5',NULL,'2012-11-10 07:17:19'),('cb133f47-bac5-4975-be2d-cc7822227f0c','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','5b3a71d1-5a3b-46a4-a558-a785a10ca262',NULL,'2012-10-17 04:32:58'),('cb354ef7-0331-4d79-b532-dec5ced387b0','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','4d82500c-bfb5-4ddd-bb9e-40733cbe72be',NULL,'2012-10-02 07:24:59'),('cb73efed-848e-4fcd-ab84-58726ddf27bb','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','07e990d9-5b60-4cb1-8e83-40e25dcdcdae',NULL,'2012-10-02 07:24:59'),('cbde7ffb-360c-44a9-8ef0-ed85eb30d687','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','b8863dbf-f999-4c0f-889f-ccc18b6a6e71',NULL,'2012-10-17 00:55:51'),('cbf632b8-6d02-40bb-a5ff-c3d7943693fa','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','9e55df2f-6153-4d2b-a156-863b1c0148e2',NULL,'2012-10-17 00:55:52'),('cd3f01b6-132c-4287-9c6a-0a845b5732ca','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','cba8d14c-a8a8-4676-b1d2-3cd726528825',NULL,'2012-11-10 07:17:22'),('cd8545e4-ed0b-42b1-8913-fb6cde0d5079','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','ec0a162a-90d3-4731-90c8-6c7ef3396f5c',NULL,'2012-10-17 04:32:57'),('ce11dddf-9c9a-4b43-bc74-86de7a53a07b','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','9e447d46-e845-4abb-b562-e73b3a716ab4',NULL,'2012-10-18 06:15:35'),('ce9c443a-2d51-494e-a296-939722833b5d','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','369eeb06-b520-4566-b9c5-1f7a2277a450',NULL,'2012-10-17 01:18:17'),('ce9dca63-c4e2-463d-bae7-81af2b497c2f','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','c458b319-6779-4426-a1a1-b01c0cb46194',NULL,'2012-10-17 01:18:18'),('cef67349-f2c5-4ac0-83a7-38eff130cb4e','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','fa1980ea-578a-44f0-9cca-fd9b80f52af2',NULL,'2012-10-18 06:13:46'),('cef70ced-3b1b-4b51-a2cd-14ce3ef7c892','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','5f43abcb-ddeb-439a-a80f-fb62dd2f042e',NULL,'2012-10-02 07:24:59'),('cf9ba72d-e353-4416-a8f8-2197047b211c','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','d6a33093-85d5-4088-83e1-b7a774a826bd','fd394578-5b76-4eb9-b40f-f116ec11a09e',NULL,'2012-11-10 07:17:26'),('cfb3ecf0-991a-4f81-b40a-b86fcc4229e1','3141bc6f-7f77-4809-9244-116b235e7330','d91f0637-b2f6-4492-ac1b-23c155102a3e','a973a41b-d90a-4081-b0ac-6eeef52d2893',NULL,'2012-10-17 01:18:19'),('d00f34f9-fa7a-4978-9bc1-e92c2f648c71','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','d6a33093-85d5-4088-83e1-b7a774a826bd','b339460f-c9b6-43a2-a78d-9d8aaea9c8f2',NULL,'2012-11-10 07:17:27'),('d03df513-e933-4137-a32b-e207ec8c9680','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','8c334402-efc2-4585-958c-540cedf32936',NULL,'2012-11-10 07:17:23'),('d09d91a5-f9b1-4862-ad4f-789bf785be43','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','61d45a28-5271-48e8-810d-c83b4bf6b24f',NULL,'2012-10-18 06:15:43'),('d0a16995-1f00-4f05-8848-8baad8b23aba','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','e88a46ca-5372-4314-a51c-ec83ac9ef4b4',NULL,'2012-10-18 06:15:42'),('d1a62f4a-e954-404b-b491-b62a4869d11f','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','d95f4962-a8cd-4357-a0bc-4f2ffd408f2d',NULL,'2012-10-17 04:33:05'),('d23d5976-f590-49fa-8660-43f89d5f49cd','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','a974079d-0865-49ef-afd8-0ec91174d323',NULL,'2012-11-10 07:17:14'),('d24828bc-d3a5-4f63-b3c7-7c4bd29e51e0','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','7a171a9b-49d8-45c7-bb5f-52d9c3157de0',NULL,'2012-10-02 07:24:59'),('d264d6ba-bf94-4522-9c94-461d8a195167','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','833cc7c2-c155-45b6-b927-98fdb20ae86f',NULL,'2012-10-17 01:04:54'),('d307a274-1781-416b-ada6-b9716b41f39f','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','e8e6949d-f0ae-4001-b8d0-91bfd45a1b47',NULL,'2012-10-18 06:15:36'),('d3937b4b-389e-4cd4-b644-57a45e3f1676','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','cb2d39d3-9f00-41c1-b0ef-99d5c57a900c',NULL,'2012-10-18 06:13:40'),('d3ffc829-3264-4f2d-869e-a7ac245f7043','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','5b3a71d1-5a3b-46a4-a558-a785a10ca262',NULL,'2012-10-17 04:32:58'),('d410d9b1-94b1-48f5-9efd-672e546121d4','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','3651eff9-0c05-4077-8f26-a9dfb915465a',NULL,'2012-10-17 01:18:17'),('d4180635-3669-415e-966b-ecfb8dc0b653','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','2c2c85ee-1437-4beb-82fb-0c7fca51c49a',NULL,'2012-11-10 07:17:33'),('d4bf7f40-d875-4187-9b92-c8d6bc6c9644','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','3b8ba73b-9cbd-4a6c-b9ae-6fbd9c5f5104',NULL,'2012-10-18 06:13:48'),('d4c57ce9-edce-418f-8465-4849ffe951f6','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','64c450b4-135c-46d1-a9aa-3f9b15671677','5cad3529-600c-4b7f-aa68-375a5dc9912e',NULL,'2012-11-10 07:17:20'),('d59994f3-e547-4103-a5c1-96a97868ff1c','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','9a8285cc-f383-4a1b-bf64-60749f065603',NULL,'2012-10-17 04:32:59'),('d65f17cf-adee-46db-ae60-bddf3db29ee0','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','420813eb-03e3-4a3a-97ca-84894f08af88',NULL,'2012-10-17 04:33:00'),('d7254336-83ed-4c89-a4af-cee2fe43027f','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','257c711a-6d38-4b8c-8c54-6c25dc5a4d43',NULL,'2012-11-10 07:17:34'),('d7b00caf-3014-4a41-8446-883d01c38cb5','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','06b8d06a-aac4-4d09-b0b4-fe67d70faf14',NULL,'2012-10-18 06:13:45'),('d841335c-ce92-43ec-8579-b164cbfd4b4e','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','66120b2d-0c89-4304-815b-6c8cec94647b',NULL,'2012-10-17 01:27:01'),('d8720dc1-3c04-4a4f-97ba-fd8c69b3a8e8','3141bc6f-7f77-4809-9244-116b235e7330','a74cbffb-281b-49ee-8e96-fbac2ab54785','40e2177a-2219-445b-bd97-56f2ebacfe62',NULL,'2012-10-18 06:13:35'),('d8b1cda5-7e73-4b2e-b9ab-d65954474921','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','8f063f36-f64c-479e-b37a-2491e99feb6a',NULL,'2012-11-21 06:37:15'),('d8fef6ca-b5da-433d-a9b7-93e6b3d4c680','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','ab17d28b-3f9a-45e2-b6da-fb19cf759c13','369eeb06-b520-4566-b9c5-1f7a2277a450',NULL,'2012-10-17 01:18:17'),('da46d971-584a-4881-a0fb-fb2824db4da1','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','4bc4b72c-8183-4a14-8066-47d7b0d2a827',NULL,'2012-10-17 04:33:00'),('db04e52e-93e1-4eeb-84cf-53850532e4ae','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','e2e6315f-7469-410d-8532-628d933f1508',NULL,'2012-10-17 04:33:01'),('db097570-ffa7-4ea7-b7bd-6691a497a8a4','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','18d00a54-6b22-4434-8563-e66f80431e9d',NULL,'2012-10-02 07:24:59'),('db3b772c-acff-456d-9e25-d285ed33ab48','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','4953b2ca-d1f2-4905-a8d4-bf95abd54930',NULL,'2012-10-17 01:18:19'),('dbe51385-ab5f-456c-8570-8bd878f55f22','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','a010a604-78c2-4656-846b-d265b95ae771',NULL,'2012-11-10 07:17:14'),('dc67f301-d64d-4f09-8f3b-40a1d4e02b1b','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','54762702-b427-4b75-95a3-faa17a90d1b5',NULL,'2012-11-10 07:17:22'),('dce52ebe-9e73-49a2-b180-7165f1892f50','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','15aceaf6-cf02-4aab-baeb-0f2402e41125',NULL,'2012-10-17 01:26:59'),('dd3413d9-54e9-4817-8f57-43d462d35b9e','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','64c450b4-135c-46d1-a9aa-3f9b15671677','5ff09d4f-217a-4610-8495-7089859d1452',NULL,'2012-10-17 01:18:14'),('dd39ec0e-b8c8-4dff-b8d3-96468b1848ce','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','33da3559-86b0-4db0-8e3f-7339155cc559',NULL,'2012-10-17 00:55:59'),('dd52d00e-dc01-4292-bca9-bc48e0d8a9b1','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','e10c64e0-105a-44f5-83da-a4a10379d802',NULL,'2012-10-17 04:33:04'),('dd6b72f3-6152-4964-8c0b-2f6dcfeab071','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','4e5c2d3d-0802-432b-9e52-2a98e8e18e8d',NULL,'2012-10-18 06:15:39'),('dd936cf5-a97c-4587-8ee9-7756d52f7853','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','4953b2ca-d1f2-4905-a8d4-bf95abd54930',NULL,'2012-10-17 00:55:58'),('dde03552-30d6-4957-bb50-5eaa1ccab517','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','06f8bd90-7731-479e-ab53-f56c4c95db80',NULL,'2012-10-13 06:42:48'),('dde74aed-0572-4049-91c5-95514533b002','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','369eeb06-b520-4566-b9c5-1f7a2277a450',NULL,'2012-10-17 01:18:17'),('de731b52-ce20-4e41-b2c7-dc0ca68c2597','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','24b9aa78-7055-4776-910d-da124b1863f9',NULL,'2012-10-18 06:13:41'),('dee94080-e629-4786-8541-46a3e74ad826','3141bc6f-7f77-4809-9244-116b235e7330','a74cbffb-281b-49ee-8e96-fbac2ab54785','47cd293b-5789-4084-8e9b-6d0404e15a77',NULL,'2012-11-10 07:17:30'),('df58c34a-9e46-47e2-8ad4-1e7784f035e8','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','a5b94581-b1b5-40c4-975c-0ea11870c237',NULL,'2012-10-12 06:10:30'),('df87cea5-c8d7-42f8-a8b4-2c4d5e99ac07','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','afea3d12-379b-47ef-a395-0e162e37d90b',NULL,'2012-10-17 01:18:16'),('dfdac623-c73d-45d2-a3b6-732a331f6bb7','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','9c1ef1bf-7ac0-431e-bfaa-0490b199d2c3',NULL,'2013-01-05 07:02:50'),('dfe9a466-a289-40c6-be37-29aa1fca64be','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','9621ea57-5c9c-48dd-8a7f-1a7dc3f7e107',NULL,'2012-11-10 07:17:22'),('e00fd21d-41d0-4d2a-9156-038ef19a4abd','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','65b74b06-6bda-433b-b993-f09810cdcbca',NULL,'2012-10-17 00:55:51'),('e0ac28f5-8480-4443-880a-311d046d7e23','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','64c450b4-135c-46d1-a9aa-3f9b15671677','808520c8-c588-40a0-9c32-8518110c0e33',NULL,'2012-10-17 01:18:18'),('e11b0e80-d28a-47d8-a2e0-85ae571ff33f','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','2c0fbd65-f7ba-452d-bd93-a40b371e2a68',NULL,'2012-10-18 06:13:33'),('e18c1382-31ea-45be-ba86-94e074f44f3a','3141bc6f-7f77-4809-9244-116b235e7330','e96b787d-57f6-41a4-9693-d0634bfacacb','1d283460-e24c-4cbb-8476-2a66df560456',NULL,'2012-10-17 01:27:00'),('e19e53a5-9f3f-492f-9c5b-f761f399a7f2','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','1567b10b-1474-4df5-a6df-ce3b8a92ee97',NULL,'2012-10-19 05:57:04'),('e2160ecb-a245-4b65-92f3-f360a7c4d9e4','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','5e7fbaac-1441-46e6-aedf-c65763e9fbf1',NULL,'2012-10-18 06:13:47'),('e2d36fd5-0e6a-4650-8f50-d8f0f8b4a017','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','8cacccb8-d2d5-46d4-a3f5-805ae1fc68cd',NULL,'2012-11-10 07:17:23'),('e34df219-4ed4-4d6e-862f-a105bb3810a8','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','83e32dd9-e3ac-4953-8f8e-756ac56d4480',NULL,'2012-11-10 07:17:35'),('e43b2308-8809-4379-9d14-74ef648830d7','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','45984389-977d-4064-8d46-c0df6e791880',NULL,'2012-10-19 05:57:13'),('e4458c56-0b80-428d-b95d-ab762b28b7a6','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','b155afa2-038e-42dc-beee-f89e5a3ce41f',NULL,'2013-01-05 07:02:50'),('e4885958-7e2a-4daf-83db-d2c18a456f27','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','68d7dce7-17c4-4407-b648-83efa8870d3e',NULL,'2012-10-17 01:26:58'),('e4b81413-36ca-411d-90c8-b30df261920d','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','3ffcbbac-7b49-433b-8ffa-275ff81aba00',NULL,'2012-10-17 01:17:59'),('e4c1dc9c-bdb8-41ec-980f-eab7f9226f9a','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','e4c15807-3cb1-4e86-a659-03b56b3e1fb5',NULL,'2012-10-02 07:24:59'),('e4cce67c-cf77-42b8-9689-a9742270c725','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','21749616-c014-4e81-84d5-f90af82532b7',NULL,'2012-10-18 06:13:33'),('e4fcea82-c052-4b70-983a-a04a543bf52a','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','b50f44c8-1d3d-4d0b-b17d-9ab0005ee224',NULL,'2012-10-17 01:26:59'),('e51fa409-4594-4c15-afbb-3488c709de93','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','7a0ab3c1-8ab0-4aac-b064-bff7e6e88f64',NULL,'2012-11-10 07:17:22'),('e55ee0a5-5f40-42d1-aa35-b7046ddad8b3','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','a3797587-2fde-418a-a73c-62541ca30275',NULL,'2012-10-17 00:55:59'),('e5c55989-cbc0-4c71-94ab-c2365c9894e7','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','ab17d28b-3f9a-45e2-b6da-fb19cf759c13','9f66ca0d-34eb-4820-9679-0704fecb73f6',NULL,'2012-10-02 07:24:59'),('e5c9d1fc-55bc-4642-9ffe-f63e406d7744','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','06f8bd90-7731-479e-ab53-f56c4c95db80',NULL,'2012-10-13 06:42:48'),('e5db7c98-9726-4f91-86be-4ae08571d05e','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','e88a46ca-5372-4314-a51c-ec83ac9ef4b4',NULL,'2012-10-18 06:15:41'),('e61b126f-f747-4a9d-a459-a0a63b1ce812','3141bc6f-7f77-4809-9244-116b235e7330','b3b3b726-acef-4d58-82e4-ef8875d654ce','c5e493af-195e-4b64-9331-4f716a16eac9',NULL,'2012-10-02 07:24:59'),('e6351083-46f5-4e57-8df0-465264cada29','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','59160936-d126-49a2-a275-86f9359c0e89',NULL,'2012-10-18 06:15:34'),('e675f4db-2927-4214-bdc1-f2aae737f674','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','3da83571-5d77-4edb-9782-859138ac1ed3',NULL,'2012-10-17 01:04:55'),('e679ba29-5084-4899-9e60-c64ce77fc129','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','095e1f7a-815c-449b-ae7e-b5d96e434f2d',NULL,'2012-10-12 06:10:31'),('e740e108-1a5f-4c0b-92a1-06f7d787f7f2','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','c79e680d-ce6f-44bb-aa6f-91ac2e94dedb',NULL,'2012-10-19 05:57:13'),('e825052e-0128-44f7-b874-97a7fc7ff32a','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','0f965b92-8f6c-4a52-bffd-a28da459fdf9',NULL,'2012-10-17 01:27:03'),('e8605ebc-ca01-4e4f-924a-ac5a885d8292','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','64c450b4-135c-46d1-a9aa-3f9b15671677','c02e25ee-16f0-4020-80f7-8c378c398dc4',NULL,'2012-11-10 07:17:21'),('e87389ed-ae39-49f5-8796-d8296a2c94c1','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','114db91c-503f-43c2-a83e-c2de6b817e47',NULL,'2012-10-17 04:32:58'),('e95b2b31-5731-4ce7-b927-d08513f6a4c1','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','88f61e4e-ce58-4bc3-9bc8-91d6c3cfcabe',NULL,'2012-10-17 04:33:03'),('e9b38318-f496-47ed-a23f-3b6749b943a3','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','8a0b7119-633e-4f74-a499-8b5535158860',NULL,'2012-10-17 01:27:00'),('e9cb44f2-97d1-4d6b-bbc9-9955dbecddf5','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','3bc97a96-a507-4c9c-8033-d7f212a9badb',NULL,'2012-11-10 07:17:16'),('ea9574f6-10a2-4c11-89b9-deff6bcfa136','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','9f66ca0d-34eb-4820-9679-0704fecb73f6',NULL,'2012-10-02 07:24:59'),('eab75cdd-50cd-4bcb-99f7-f900ad572a2b','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','01a2674c-850c-46ab-a768-e8593baf9404',NULL,'2012-10-02 07:24:59'),('eb14f61d-546e-4cf0-b471-5b2773c03c05','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','4d399247-7598-403d-bb17-8d9230bacb0d',NULL,'2012-10-17 01:18:19'),('eb1cfe5e-1261-4ac6-8596-2f443f84d198','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','f991f719-4fe8-43d7-b032-2e4a52de8d53',NULL,'2012-10-17 01:18:02'),('eb377c40-2583-4966-8759-1fd10a78d660','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','e326db2c-7da9-40c4-81a2-613c979efcbf',NULL,'2012-10-17 01:18:15'),('eb589ed3-503e-4412-8044-e4f4e811d3f7','3141bc6f-7f77-4809-9244-116b235e7330','e96b787d-57f6-41a4-9693-d0634bfacacb','c02e25ee-16f0-4020-80f7-8c378c398dc4',NULL,'2012-11-10 07:17:21'),('eb63b3ba-a588-46a9-b72d-1f778c281614','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','4bc4b72c-8183-4a14-8066-47d7b0d2a827',NULL,'2012-10-17 04:33:00'),('eb693c0e-8844-46fe-88cd-6639f03cff7b','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','0c2ad7a0-83b5-4f83-aed9-ee6ad99510b3',NULL,'2012-10-18 06:13:34'),('ebf41562-4bed-4eba-9b2c-4cd3688f5f85','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','a010a604-78c2-4656-846b-d265b95ae771',NULL,'2012-11-10 07:17:14'),('ec8ca2e6-3580-48bb-a0a9-dbed4a718ba5','3141bc6f-7f77-4809-9244-116b235e7330','e96b787d-57f6-41a4-9693-d0634bfacacb','79103108-9ea9-4ed0-a777-37af444867b6',NULL,'2012-10-17 01:26:57'),('ec8d63f1-3fc7-401c-b7c8-1027d5ae17c1','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','632a5374-bc44-4d75-a9f6-e53edb87e316',NULL,'2012-11-21 06:37:15'),('eda4c911-81c9-42c8-b936-afdd184353d1','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','7d02f6c1-eab0-418a-a633-fba5abce7f8c',NULL,'2012-11-10 07:17:17'),('edc01ead-f89c-4637-8526-bfe303c2e1b8','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','e549810e-8a45-4d3b-9f7a-97ce7f11e853',NULL,'2012-10-18 06:13:38'),('edc5102f-f93c-4d51-a74b-739f2645158a','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','eb10b29a-689c-45ca-9ea5-d92c275d0258',NULL,'2012-10-17 01:26:57'),('eddecae5-9422-46f3-a115-70d65374e316','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','d6a33093-85d5-4088-83e1-b7a774a826bd','0bd0540c-db99-47e2-b63b-12be1c6eafcf',NULL,'2012-12-13 05:41:55'),('ee331274-9838-4bfd-86cc-2a093229621a','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','64c450b4-135c-46d1-a9aa-3f9b15671677','62ad9422-842f-437e-b388-620abbbfe876',NULL,'2012-10-18 06:13:37'),('ee589368-49c7-4c10-9ba7-d71e98ca3ae4','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','95d261ff-13dd-4c42-8c83-f69a7b1cd6ba',NULL,'2012-10-18 06:15:37'),('ee8e0da7-17fd-4d7a-9a2d-ad117742c666','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','26fcd232-8685-40ea-a1b3-e845662d9a51',NULL,'2012-11-10 07:17:20'),('ee92c445-e1ea-490a-ae9b-0f4077aae25b','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','2b6c2412-b978-4478-8d09-b91ed4c6dc6a',NULL,'2012-10-17 04:33:00'),('eea1e9cd-02f0-41c9-a1f2-de479ce5abb5','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','48ddd2b7-7841-4731-a28b-5ebe84a0ff8b',NULL,'2012-10-18 06:15:42'),('eea37c20-720a-433b-b898-4b633cf46601','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','d82eff8d-ade2-4c27-a5f9-afe1fedd6b10',NULL,'2012-10-17 04:33:03'),('eecbf307-6f7a-42da-b715-3f2f8c27e195','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','369eeb06-b520-4566-b9c5-1f7a2277a450',NULL,'2012-10-16 04:32:21'),('eee0e1bf-a83a-4b42-ae17-90aed2122f6a','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','37384927-53f5-4ac7-8425-94a110c081ce',NULL,'2012-10-17 01:18:16'),('ef71b3f4-e724-447d-9155-ce8038016aa3','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','268c57bc-edfc-4da7-b01a-c1ebb2438022',NULL,'2012-10-17 04:33:05'),('f03f6665-1a75-425b-9abd-a8b5800563c6','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','a5b94581-b1b5-40c4-975c-0ea11870c237',NULL,'2012-10-12 06:10:30'),('f0b34de4-ef6b-41b0-864b-6469af6c295d','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','23dca992-ea19-4731-8e96-20739509851c',NULL,'2012-11-10 07:17:15'),('f15b930e-5ad4-49f5-a76e-90f04e2c8e0e','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','090ff58a-f772-455b-9743-2615e17b6aa8',NULL,'2012-11-21 06:37:15'),('f15ed09a-2439-43cc-ba7f-663b534eb495','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','d6a33093-85d5-4088-83e1-b7a774a826bd','49f8cfb5-afac-44ca-8d47-b408881954e0',NULL,'2012-10-12 06:10:30'),('f204fbec-9c62-4bdf-b3fa-3ced615b2fdd','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','7c5095aa-a9c0-46d7-a67d-e95d628edda8',NULL,'2012-10-17 01:18:02'),('f2ea1037-21b0-4013-9265-b60ef2adf2f3','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','2898de0d-0bae-45ec-a915-05d92d1df637',NULL,'2012-10-17 01:26:58'),('f3124cec-d5a4-40a0-a319-6ebaff24f33e','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','0a01c5ed-7e05-4dc8-8082-48fe61bab13d',NULL,'2012-10-18 06:15:40'),('f3e0e982-1dd6-4366-be58-eb284c3e55af','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','268c57bc-edfc-4da7-b01a-c1ebb2438022',NULL,'2012-10-17 04:33:05'),('f4142bcf-9ab6-41f2-8e36-4b44ce6f1b34','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','d6a33093-85d5-4088-83e1-b7a774a826bd','3840a1dc-df0f-4a41-a3df-6eb612491571',NULL,'2012-10-12 06:10:30'),('f4b47fb2-7431-4469-a442-6a3679890154','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','cabd97ec-12fc-442a-9952-54a9250c6e8c',NULL,'2012-10-17 01:18:16'),('f57e5e1a-2119-4f04-9ca2-7133089b99c1','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','74455ff3-647d-4d29-a71a-be28fa97a289',NULL,'2012-11-21 06:37:15'),('f5e50daa-f19f-4a9e-b6f5-6bf8c344ddb5','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','c0971b7e-06eb-4d4b-856b-5ffb7d2843d6',NULL,'2012-10-17 01:18:13'),('f697bca1-9eb9-4e2e-a37b-60f8e066c6b4','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','5ebc8427-124d-4615-83fb-4326749745e3',NULL,'2012-10-12 06:10:29'),('f69d174e-3be8-4fb9-bb02-b4fe49242a8f','3141bc6f-7f77-4809-9244-116b235e7330','d91f0637-b2f6-4492-ac1b-23c155102a3e','5ff09d4f-217a-4610-8495-7089859d1452',NULL,'2012-10-17 01:18:15'),('f77bb023-2770-4be3-a5df-34b1c7ce2514','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','1d283460-e24c-4cbb-8476-2a66df560456',NULL,'2012-10-17 00:55:52'),('f7b65c87-6e89-4d04-aec4-01a05917a43d','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','a1e102fe-de95-4fc5-9bff-a1cc7058e1cd',NULL,'2012-10-02 07:24:59'),('f8ca25f2-d271-49d8-80dd-2889dfb7eda0','3141bc6f-7f77-4809-9244-116b235e7330','a74cbffb-281b-49ee-8e96-fbac2ab54785','ef02e784-10d9-4ff1-b4ea-b0e4636ba2b6',NULL,'2012-11-10 07:17:30'),('f9745e55-b227-487e-b41d-d6bcc7228c2a','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','860d9543-4d04-4be9-9fed-ff1e35648d28',NULL,'2012-10-17 04:32:59'),('fa27685c-d412-47d6-8cd1-fa0adc9beef9','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','01a2674c-850c-46ab-a768-e8593baf9404',NULL,'2012-10-02 07:24:59'),('fac42ff8-e742-48f7-ac2f-591d58fa5924','3141bc6f-7f77-4809-9244-116b235e7330','a1921355-58c2-4d6f-9535-a6d227a0be16','632a5374-bc44-4d75-a9f6-e53edb87e316',NULL,'2012-11-21 06:37:15'),('fb25756e-898d-4ea0-9f4d-0b3d61ed184c','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','64c450b4-135c-46d1-a9aa-3f9b15671677','e2421d0b-edfe-44fc-b404-f88f4e3ac522',NULL,'2012-10-17 01:18:00'),('fbede329-c8e8-4813-b2e1-1e174e22a36c','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','c0540086-8d61-4684-b8a8-ed11594c5abf',NULL,'2012-10-18 06:15:35'),('fbf5bcc2-4741-42b0-ab9c-09e5422024bb','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','9dc10fcb-5809-4c0b-917a-02517ef4d1c6','4953b2ca-d1f2-4905-a8d4-bf95abd54930',NULL,'2012-10-17 00:55:59'),('fc3d022b-3de5-4e05-a8fc-0784dbc6d974','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','a34ddc9b-c922-4bb6-8037-bbe713332175','632a5374-bc44-4d75-a9f6-e53edb87e316',NULL,'2012-11-21 06:37:15'),('fc954c0e-5e41-4da5-bd7e-b5e5e5b0cc4a','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','ab17d28b-3f9a-45e2-b6da-fb19cf759c13','1d283460-e24c-4cbb-8476-2a66df560456',NULL,'2012-10-17 01:18:01'),('fcb4380d-629c-4e8b-919c-9fd213e1c83e','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','ed15e649-7843-494a-a100-fc2571193f02',NULL,'2012-10-18 06:13:30'),('fd03e85e-45f4-4a3b-9566-dcced71ddac6','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','20109b15-39c8-4d10-bac5-617ae2850e22',NULL,'2012-10-17 04:32:58'),('fd3d2b07-c103-45ba-84a8-b65ec36e9c77','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','0c2ad7a0-83b5-4f83-aed9-ee6ad99510b3',NULL,'2012-10-18 06:13:29'),('fd76ecf2-0eb7-4beb-8a04-7a344832a5be','3d1b570f-f500-4b3c-bbbc-4c58aad05c27','76fd899e-cd5a-4da3-8752-45c43fc18656','9796ae62-3ee9-445c-a7d6-867fa5fae36d',NULL,'2012-10-02 07:24:59'),('fd9c93cb-3363-4fad-9735-49aaa5b877ea','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','8a0b7119-633e-4f74-a499-8b5535158860',NULL,'2012-10-17 01:27:00'),('fd9f78fc-2916-4331-a3ec-c6367f358a72','3141bc6f-7f77-4809-9244-116b235e7330','a74cbffb-281b-49ee-8e96-fbac2ab54785','4cd6ff3b-2508-47ac-9d5b-2fcdb61ab1cd',NULL,'2012-11-10 07:17:31'),('fddc163f-621a-4ccf-bdf8-8183983e506d','3141bc6f-7f77-4809-9244-116b235e7330','b3b3b726-acef-4d58-82e4-ef8875d654ce','40597064-f02e-4bc6-9efa-b2d214925b73',NULL,'2012-10-02 07:24:59'),('fe0242c1-b6e7-4138-afef-b7560b9de587','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','88f61e4e-ce58-4bc3-9bc8-91d6c3cfcabe',NULL,'2012-10-17 04:33:02'),('fe074dcb-e45c-4a9e-a52a-aef93e402d4e','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','06f8bd90-7731-479e-ab53-f56c4c95db80',NULL,'2012-10-13 06:42:47'),('fe8031d8-03bf-488f-a6b0-ed8fc44c50c6','3141bc6f-7f77-4809-9244-116b235e7330','6957fdac-a1ed-470f-89f7-fb00be42ea13','6ce73de0-e573-4f2f-9a54-28c440210c2c',NULL,'2012-10-17 04:33:00'),('fe881f60-e2e6-40e7-bbc3-d54588e2ec8f','3141bc6f-7f77-4809-9244-116b235e7330','53d34372-8805-4adf-b940-6c05b835a94f','675e8fdb-67e9-41a8-a505-823cd8348cb9',NULL,'2012-10-18 06:15:34'),('fed3ffba-cc26-426c-83bc-d42b0b71a686','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','37384927-53f5-4ac7-8425-94a110c081ce',NULL,'2012-10-17 01:18:14'),('fee0554c-549b-4b93-a62c-ce1393abc8de','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','1d31b54e-1745-4b37-9468-d35e8e317d05',NULL,'2012-10-17 01:18:00'),('ff7fcb5c-5ab5-49c2-a0f0-f7612b526d69','3141bc6f-7f77-4809-9244-116b235e7330','520f976f-476d-4ec6-be1c-7c448c5c074d','7a8f358d-9b31-4d29-b258-7d668db64631',NULL,'2012-11-10 07:17:18'),('ff905955-0428-4f8e-b91b-0463a0337c4e','27c2969b-b6a0-441d-888d-85292b692064','1628571b-c2cd-4822-afdb-53561400c7c4','090ff58a-f772-455b-9743-2615e17b6aa8',NULL,'2012-11-21 06:37:15'),('ff98e0ef-473f-4733-9704-00772c51ecea','3141bc6f-7f77-4809-9244-116b235e7330','bb5a6da2-4b89-4f8c-96e3-ca36c55d3337','5c4a8eeb-3536-4b43-8eb7-33ee6472c63c',NULL,'2012-10-18 06:13:39'); -/*!40000 ALTER TABLE `CommandRelationship` ENABLE KEYS */; -UNLOCK TABLES; -LOCK TABLES `FileIDsBySingleID` WRITE; -/*!40000 ALTER TABLE `FileIDsBySingleID` DISABLE KEYS */; -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('00cfad8d-b4bc-4cad-a5dd-e1160905573c','88bb6c02-f537-4879-89dc-8e5e7e257156','Plain text',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:10'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('01db40ed-980c-4c24-9d87-be078a2adc47','21b07ca7-b9e9-490a-a4db-39081a306862','fmt/49',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:04'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('02bcfb5e-ef06-4bc7-8e47-0ced2adffc0f','24b9aa78-7055-4776-910d-da124b1863f9','KDC EXIF',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:10'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('03ea1222-339b-445a-80f4-fc9a5fc12a68','c24abbeb-3318-4ec0-ab40-f272a26800ad','x-fmt/2',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:31'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('048dd909-34f8-475d-9f87-4db3c67e2615','4137d40c-0130-4277-b726-61bc76f4fdef','application/msword',NULL,'FileIDsByFitsFileUtilityMimetype','5.09','2012-10-26 18:38:09'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('0493044d-0ed6-4069-8f42-9f6ca8b21974','a359b55f-70af-43c8-a6d1-42f0801c0155','fmt/293',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:33'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('05109d04-3d50-4e83-bd27-33394b24e563','54762702-b427-4b75-95a3-faa17a90d1b5','x-fmt/270',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:22'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('05175d02-cb07-4d5b-96fe-6279a30b6249','d2941b3f-38e2-491d-947b-f6e07802595c','image/gif',NULL,'FileIDsByFitsFfidentMimetype','0.2','2012-10-26 18:38:07'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('05e6b62e-e65e-4630-8723-0a4cd12a763f','15aceaf6-cf02-4aab-baeb-0f2402e41125','GIF image data, version 89a, 640 x 320',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:07'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('06e12b77-19cf-4f8e-a07e-e5795c968c96','4021ed21-c101-42d4-83a8-3ff714eccb17','x-fmt/44',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:04'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('06ecb656-652d-4be3-b1ae-73e90f7c7a5e','937e5e30-e054-4e65-972e-9c5b4b4f8f5f','fmt/17',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:25'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('072180c4-2275-4f8c-ab5a-56b79b283f54','4d82500c-bfb5-4ddd-bb9e-40733cbe72be','orf',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:28'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('07e470a4-9186-4811-8186-2e8c66f0de0f','5df9d93b-5e4d-41a3-89b5-301bf009ee9a','CR2 EXIF',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:11'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('07ec7018-2604-4495-9b44-98b5f0f8125c','02246977-bef6-46da-98c2-de7522111899','gif',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:28'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('0824f2e1-b8ab-475e-9c42-9047922ef588','599cb14f-dbc5-4f45-8e94-24fdb881fbbf','NEF EXIF',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:11'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('08732870-6a9b-4ad4-ac97-b2badfce9570','6f4e7eff-7204-468e-bfb2-2943688d282f','Macromedia Flash Video',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:08'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('08effc83-379e-4ab6-964b-f00bdbcb3f2b','a1f09e48-b4d7-426f-b186-b7bdd258f0f3','Microsoft Excel Format',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:11'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('08fdff90-cbfe-4aca-ba07-bc4b04b38bfe','dcd1f9aa-d544-4ff7-a90a-d7dafc162897','CRW',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:11'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('0910460b-fde6-44a5-9f5e-c783c3f31935','53bff439-5ff6-4fe9-a87a-8745da64b5e6','Microsoft Office Document',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:08'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('09351452-e937-427f-8eeb-ca4ca281466f','52b25353-f40f-453c-bb26-854d2cf29b7f','fmt/133',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:04'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('0a5160e5-9488-428c-9182-e8d4ed09c8dd','53b462db-42b5-41e6-94fa-a98974bcfd5b','Quicktime video',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:11'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('0a850d28-91a9-48d6-aea8-b4171dbf6bdf','061ec789-c1e9-40af-83b4-a6b0897267d8','audio/x-ms-wma',NULL,'FileIDsByFitsFitsMimetype','0.6.1','2012-10-26 18:38:13'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('0a9a13dc-715b-451c-b2ef-bafd22e5e879','0cea8124-51f7-49ed-822a-b6b842673c62','Macromedia FLV',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:11'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('0b870553-f0fc-453f-8ef7-86ed187f5fcd','03bbfaaf-124c-4454-8082-50e0b3d23e57','pct',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:28'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('0b9fd719-58b7-44e9-b7e1-774aadb2a8c3','7efc3875-3bd2-4615-9b1f-83d7fc8131d0','x-fmt/273',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:32'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('0c5515c5-0ad6-4085-a966-3853ee4512d5','4d399247-7598-403d-bb17-8d9230bacb0d','image/jp2',NULL,'FileIDsByFitsJhoveMimeType','1.5','2012-10-26 18:38:16'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('0cb0eac1-7146-42b1-ae5b-3aef53a81b99','ed5607ba-10de-4e96-902b-8eaf4dacf249','application/vnd.ms-powerpoint',NULL,'FileIDsByFitsFitsMimetype','0.6.1','2012-10-26 18:38:13'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('0cb9cdda-c1c0-442d-9f51-d47e385027da','b155a460-4722-4dcf-81fa-3a4c65557cef','fmt/111',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:04'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('0ceb728d-68ad-4848-a98e-a723b17ab792','e4f2ee35-9d5c-4d2a-a251-0bbe5979d6d1','application/postscript',NULL,'FileIDsByFitsDROIDMimeType','3.0','2012-10-26 18:38:06'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('0d4c93bc-80a3-40f8-9a05-8e22b9b15c8d','cb2d39d3-9f00-41c1-b0ef-99d5c57a900c','ATSC A/52 aka AC-3 aka Dolby Digital stream, 48 kHz,, complete main (CM) 3 front/2 rear, LFE on,, 448 kbit/s reserved Dolby Surround mode',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:11'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('0ecaeb44-3633-4616-8d4e-fa7f2909b689','4bc4b72c-8183-4a14-8066-47d7b0d2a827','fmt/10',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:04'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('0ee88860-132d-42c4-ba0f-1a149fcbb131','6ce73de0-e573-4f2f-9a54-28c440210c2c','fmt/8',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:04'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('0f0f4d25-3841-471b-965b-c57951c5aa20','36e43181-0b2d-45d7-939f-491cdd04d7b3','x-fmt/129',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:31'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('0f11fcd7-9035-441d-afbb-abf96b9a53b8','8d6f16a1-d41d-4f6b-9da6-fa06ce5ebe54','fmt/2',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:18'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('0fd44cb8-2da0-4163-9ad8-e24f8ab4a0f0','bdb7edf8-255d-4fe5-a457-50e93fad0211','fmt/95',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:25'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('10565386-3e60-45ab-8084-a8aa1cfdf5d7','799d35d1-0125-4d6b-8e92-df7cad508426','PC bitmap, Windows 3.x format, 799 x 599 x 24',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:08'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('10d4a50b-b5ad-4e7e-ab63-099c1c239003','0f42eabd-4da2-48ed-aa30-f76b1b6d94b7','fmt/149',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:04'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('1173ad57-8d50-4e1c-bace-e703e82b01e6','0f919e47-d406-4e9c-96c2-0a372c818f73','Targa image data - RGB 1419 x 1001',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:11'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('1315c1b3-1913-4bea-bcf4-a2f6621f8d1b','bd3002cb-5404-4590-9481-c62d5d638bf6','fmt/189',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:04'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('1451a098-e696-4a93-92b3-e90df08bd497','a14579f5-81f1-4d0e-b1f2-a63c7c0c94af','fmt/478',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:26'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('14688790-9072-4fb3-9612-ae58ad865d76','aa3515c1-bd03-4555-9e98-723ca14f74a9','eps',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:28'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('14c5a5f5-2514-43ce-a33a-8704dde30cf5','3dfac762-1463-4914-a5c3-00d751159b52','TIFF EXIF',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:11'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('1595f156-7097-4026-87ad-36473ef71c9b','45984389-977d-4064-8d46-c0df6e791880','image/jpeg',NULL,'FileIDsByFitsDROIDMimeType','3.0','2012-10-26 18:38:06'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('15d5af2e-0bad-4190-a0ec-d767b3e46b41','0205b77b-4396-4931-95b8-d896a123b0e0','m2v',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:28'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('15debe56-18ee-4aa6-b1c8-9e4e7e38f339','6a939182-d012-48ce-b495-5648eaf06e1c','fmt/37',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:33'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('15ec791c-0e8b-466e-948f-de32356cd77b','6a609c8f-29e9-4c04-9586-6d395def0275','Microsoft Excel 2007+',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:11'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('16804138-397d-4f1a-ba16-674fd01f1f0e','62be2403-d1ee-4d70-bab4-28bfd161f8e0','application/octet-stream',NULL,'FileIDsByFitsFfidentMimetype','0.2','2012-10-26 18:38:07'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('17198e18-05ef-4159-b2f2-5d6a493a67a0','120836eb-b7e7-42dc-95f1-1470b8000dec','Microsoft PowerPoint 2007+',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:11'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('1a6ea6ba-7126-47ea-8306-59b25d13d2ff','438ae824-987a-4641-9767-9291b26fbc1e','odg',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:28'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('1affb692-f036-468f-b478-f376a96f04e2','095e1f7a-815c-449b-ae7e-b5d96e434f2d','Apple QuickTime movie (fast start)',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:08'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('1b00d40f-2900-4c54-ae9c-1a963aa8ef7c','bfefbf36-c506-403d-896f-3a2eac356e0c','audio/x-wav',NULL,'FileIDsByFitsFileUtilityMimetype','5.09','2012-10-26 18:38:09'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('1b412c29-6cb2-4bfe-9920-972d5d1858ab','4f31deac-0130-4dc8-9a6b-b2ac3bbc343f','fmt/417',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:30'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('1b530f99-503a-49a0-a75b-f53bbd619d9e','bc6c161a-3f61-4890-9492-90ad25567b6b','fmt/290',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:18'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('1b68cc35-cb3b-43e6-b492-10c623bb9eb2','dc4be07b-03cc-4d6d-95e5-2bd6f49b8b8b','audio/x-wav',NULL,'FileIDsByFitsDROIDMimeType','3.0','2012-10-26 18:38:06'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('1c710166-a1d1-40c1-b8fb-fab711a7b2bb','fbae3a6d-5b98-4974-888a-85bf48b793fe','fmt/181',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:16'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('1e3b4fa1-d600-4175-b7b9-99471dcce0d9','95d261ff-13dd-4c42-8c83-f69a7b1cd6ba','image/tiff',NULL,'FileIDsByFitsFitsMimetype','0.6.1','2012-10-26 18:38:13'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('1e4e293b-8f85-4780-9821-e725d8db622f','c90cae9f-04e4-48d5-8c7f-ddaed3bc64ac','fmt/414',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:33'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('1f000949-b429-4782-909d-cd0dc7211cbb','4bbcd493-2035-4567-80e8-218dd24201e7','Macintosh PICT Image',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:11'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('2071274c-2fd9-4033-aab8-16cfe2463741','3128ebc0-b3bc-4a96-b420-d64327e099ff','x-fmt/386',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:14'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('2161c0a4-ceb6-4482-9b0f-18741939acf6','baecde96-ebee-426c-bc77-3ec8dc653261','jpeg',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:28'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('236a6305-6278-425b-8b0c-5c9e94596406','e326db2c-7da9-40c4-81a2-613c979efcbf','audio/x-ms-wma',NULL,'FileIDsByFitsDROIDMimeType','3.0','2012-10-26 18:38:06'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('23c48165-5b31-4fbc-9b43-d328a1f5c610','9f11626e-4664-49d6-9604-5c2ee9f4f299','x3f',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:28'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('249a2695-b5a7-418d-922c-f57cdd7ff174','a487dde7-8bc6-475c-9b7c-35cd163c5845','fmt/46',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:04'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('249ef230-d60f-4b30-b289-9ed6dd192da7','0a779ddf-8b63-48fb-a46d-7e2bf32a8b04','xls',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:28'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('24cf0f8d-be07-4353-b5cd-adc5752029a5','fc865a65-2cae-4062-a63d-0c6a54877c0e','application/postscript',NULL,'FileIDsByFitsFitsMimetype','0.6.1','2012-10-26 18:38:13'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('24e1cbe3-28dc-40f1-bc95-9475ea0702bf','f86d6829-9a80-4348-9869-36b11517e74e','MPEG 1/2 Audio Layer 3',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:11'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('25bfdf9d-1031-44a6-bb62-671df0aa7c51','37b9babb-af84-4da8-9c2a-2c03087de2e4','application/vnd.oasis.opendocument.text',NULL,'FileIDsByFitsFitsMimetype','0.6.1','2012-10-26 18:38:13'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('26be78f5-7ef7-4c7a-aa06-1ac3d9c9611c','01c97b84-76e0-4b94-9e3b-1e670bd9468b','video/x-ms-wmv',NULL,'FileIDsByFitsDROIDMimeType','3.0','2012-10-26 18:38:06'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('26dbbf82-5e71-4405-9494-e33b79a0e1dc','af5504e8-0bdb-4e97-8dea-08892fb928ca','odp',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:28'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('26fcf182-9a6f-4ff5-86e0-c4f54c051a0a','61629eaa-2dd4-47d9-9f7b-3ff94db4482a','x-fmt/274',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:32'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('27689ddd-7b9a-474c-9639-98fdf0f189cb','21749616-c014-4e81-84d5-f90af82532b7','RAF EXIF',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:11'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('27ebf3c7-fcd9-4af8-ae74-fd3e2e70cad3','99c1ab3a-dc50-4186-8828-df989f8d3d50','pptx',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:28'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('28a55813-24a1-41b3-bc0a-44d2590bf031','d407dc6e-52ae-4fec-a1f6-9708d87af938','application/octet-stream',NULL,'FileIDsByFitsFitsMimetype','0.6.1','2012-10-26 18:38:13'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('28a8b142-d45e-4fa2-b771-74c20f28cc83','afea3d12-379b-47ef-a395-0e162e37d90b','image/gif',NULL,'FileIDsByFitsDROIDMimeType','3.0','2012-10-26 18:38:06'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('29f06bb1-7da0-4ba9-ab68-07761adc3e58','881214c5-642f-4a87-b4a5-3c8b6b8436d2','mp4',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:28'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('2a213953-6ce9-4f8c-8070-14e69aea66b7','c79e680d-ce6f-44bb-aa6f-91ac2e94dedb','fmt/43',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:04'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('2a2b09a1-d345-40f1-868e-0508111c90ec','4aa31d07-d726-499f-b3ec-afe2995abedb','mp3',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:28'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('2a61b455-1daa-44a0-befc-ce344d9551c4','01a2674c-850c-46ab-a768-e8593baf9404','psd',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:28'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('2b864240-7a70-4548-bfca-f8f89d7c531e','1fd534f6-139f-41ed-80dd-2b6b7fee6768','fmt/145',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:27'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('2d85a057-ea3e-4e95-b2ab-01a845c8fb4a','5abb795d-02e4-4d63-87cb-61fbc7b70be8','Scalable Vector Graphics (SVG)',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:11'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('2daa5b6a-ecdf-41ac-aaf3-9dd165d015df','e01e5dc0-37da-451a-9644-22309e5cb21e','audio/mpeg',NULL,'FileIDsByFitsFileUtilityMimetype','5.09','2012-10-26 18:38:09'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('2dd25c6d-73e1-41a6-b7c6-6b71737a5973','c285590a-914f-4c36-a0a2-624fa25d028d','Canon CIFF raw image data, version 1.2',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:11'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('2e582b0d-3e0d-4d3d-9865-9857fde66e8c','03bb2a7e-47bd-44fa-ab1d-797370bb1ead','PDF',NULL,'FileIDsByFitsJhoveFormat','1.5','2012-10-26 18:38:15'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('2ec87b00-7aff-4faa-87c9-367930092050','b3df6777-cc46-4d03-8766-9c1eb0893ee9','xml',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:28'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('30007b4f-14b5-495c-9d96-f285aaf4c8fb','d63f2b5e-736c-4b85-ba35-ec6cc58be2a2','fmt/477',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:26'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('302b65bc-05bd-4af4-b9d7-f563a6e374d5','8479526a-fdab-44af-97de-920bea73237e','image/png',NULL,'FileIDsByFitsFitsMimetype','0.6.1','2012-10-26 18:38:13'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('30eb12e7-fb1c-430b-b7fa-15bdd19405e6','ebc1e69b-0209-4abe-b22e-6d5660fab576','fmt/15',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:24'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('3158b6b9-d236-43a2-8aa6-1b9800d39c3d','5cb9e13e-9abe-4258-9c94-f79c6136f577','image/x-x3f',NULL,'FileIDsByFitsFitsMimetype','0.6.1','2012-10-26 18:38:14'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('31841d63-2d28-4b19-8ebf-c733b201381f','e4c15807-3cb1-4e86-a659-03b56b3e1fb5','aif',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:28'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('334d255a-921d-4c77-a975-daa085deecff','075bcd44-b926-4a45-b8a1-f75220f5c903','Rich Text Format',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:11'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('33e37fe8-42c3-4c2e-a988-900963aa7c94','34c42eda-b9e6-4a35-b483-a791bd04718d','Foveon X3F raw image data, version 2.1, 2268x1512',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:11'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('33e57fbd-dd11-4243-843a-9b79d5b71c55','35b9e3c0-9670-4775-9e9a-cf56d973440b','Windows Media Audio',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:11'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('342a18bd-cb87-4f15-9968-0f91aab9833b','d189342e-a551-4f77-a45c-6f3482e3dce3','Canon CIFF raw image data, version 1.2',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:08'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('344c95d4-300d-41d5-8fcd-2d46b3cbdf32','a269e764-da36-445a-b6a4-e4cc3fac4f88','fmt/481',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:27'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('34c5ae07-ddb7-4037-b247-9e1671c4549e','ce23cf3b-6ee1-4392-9d11-e088cde97864','swf',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:28'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('34de2fbe-5914-42a3-86be-a99d06322c3a','51f80b0a-7a4b-4c68-ac7a-b41ef9c9aaba','application/vnd.ms-asf',NULL,'FileIDsByFitsFitsMimetype','0.6.1','2012-10-26 18:38:14'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('35694c56-9aad-4647-b374-f3cf70eb1ef8','66120b2d-0c89-4304-815b-6c8cec94647b','image/jpeg',NULL,'FileIDsByFitsFileUtilityMimetype','5.09','2012-10-26 18:38:09'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('35d3bc97-0325-4708-a156-35d950a39235','b0bfcd0e-3194-4292-b78a-cea6a356a4d8','mboxi',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:28'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('35f916f0-171a-4ee1-931f-0a0763331c1d','9621ea57-5c9c-48dd-8a7f-1a7dc3f7e107','fmt/118',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:22'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('35fb7091-3ba3-4cd5-bf75-7f392bc6cbdb','3bc97a96-a507-4c9c-8033-d7f212a9badb','fmt/441',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:16'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('36ff33b5-ece1-4a3d-8861-e9d7260a5f67','e793325f-df0f-4e64-9ef9-cf1b08bf29ee','fmt/125',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:17'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('387ffd3d-d264-4caf-b728-72aa678e6be2','6a7c543e-1d68-4ab1-8ab0-4898d0d204e4','application/pdf',NULL,'FileIDsByFitsDROIDMimeType','3.0','2012-10-26 18:38:06'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('391223a3-25b0-4b20-b938-0cb2dfb4d6d2','e7c2b9b8-8c8f-42f7-86c6-2011cc2678a4','doc',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:28'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('3c26c5e7-4f3b-467a-8098-3ad9931ed577','5ebc8427-124d-4615-83fb-4326749745e3','Microsoft ASF',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:08'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('3c687bef-9cbc-4ed2-8592-884efa615819','983398c1-423c-4e88-99be-da3ad56d2d7c','AIFF',NULL,'FileIDsByFitsJhoveFormat','1.5','2012-10-26 18:38:15'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('3cddfa18-cb5d-4a1c-ae6e-45f6b3114703','65b74b06-6bda-433b-b993-f09810cdcbca','audio/x-aiff',NULL,'FileIDsByFitsFileUtilityMimetype','5.09','2012-10-26 18:38:09'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('3d5e64a2-7978-42e5-a6bc-a21187bbe254','eb10b29a-689c-45ca-9ea5-d92c275d0258','Olympus ORF raw image data, little-endian',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:08'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('3d6e7cab-fd40-4813-b100-095eeb252059','b8668b4d-abbf-4a4e-8646-0640f2baa787','PDF document, version 1.5',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:08'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('3d875715-46cb-4e1e-a167-4f096b607d4f','61d45a28-5271-48e8-810d-c83b4bf6b24f','image/x-canon-crw',NULL,'FileIDsByFitsFitsMimetype','0.6.1','2012-10-26 18:38:14'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('3e60d025-4f0e-4ee1-9002-c8747f982765','9e447d46-e845-4abb-b562-e73b3a716ab4','audio/x-aiff',NULL,'FileIDsByFitsFitsMimetype','0.6.1','2012-10-26 18:38:14'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('3f9316e2-71e6-4c0e-9fbb-83d06dbc30ff','632a5374-bc44-4d75-a9f6-e53edb87e316','image/tiff',NULL,'FileIDsByFitsFfidentMimetype','0.2','2012-10-26 18:38:07'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('4116dbe6-b432-4630-b786-864f2d8b30c8','07e990d9-5b60-4cb1-8e83-40e25dcdcdae','erf',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:28'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('42869764-0620-4dd0-bb74-c1c60bf58d39','5fc9e48c-f29d-4a98-b381-a8cccafc02af','x-fmt/20',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:29'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('42cd210e-869c-4c94-bc5e-12ad18bef12d','1ddbfa77-0390-4905-aeda-58d2984db924','fmt/106',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:34'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('4361ab17-09b5-470a-810f-d3f3f329fde9','074d4c3a-c9d7-4751-b2eb-72e0cb45f69c','image/png',NULL,'FileIDsByFitsDROIDMimeType','3.0','2012-10-26 18:38:06'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('438f8297-c922-422d-ad78-d4f58e8a4a67','420813eb-03e3-4a3a-97ca-84894f08af88','fmt/9',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:05'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('43ff10c3-0a66-4488-8a0c-509e813b5256','5c4a8eeb-3536-4b43-8eb7-33ee6472c63c','MOV',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:11'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('4496e165-8e75-4429-8c37-890227a08e95','ef02e784-10d9-4ff1-b4ea-b0e4636ba2b6','fmt/418',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:30'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('44b4a764-c709-445f-b333-b11220964063','10d24277-054c-4c20-9774-9cac31b22b42','odt',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:28'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('4538c76c-a3c8-4c60-a3d6-fa4affb2c3d1','8c334402-efc2-4585-958c-540cedf32936','fmt/114',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:23'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('45e47eba-3e95-4108-a7fa-e6a68ee7ea06','e2421d0b-edfe-44fc-b404-f88f4e3ac522','SVG Scalable Vector Graphics image',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:08'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('466fbbd9-616a-4e95-a0cf-d4fd703eeb75','d82eff8d-ade2-4c27-a5f9-afe1fedd6b10','fmt/52',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:05'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('470dcb96-0077-4737-9e4a-d734908a5852','79103108-9ea9-4ed0-a777-37af444867b6','DOS EPS Binary File Postscript starts at byte 32 length 159320 TIFF starts at byte 159352 length 881762',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:08'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('47847a60-45ba-4e56-80b3-e940e1a05db1','84bcc45a-f840-4645-9ae3-1f480ab74589','audio/x-aiff',NULL,'FileIDsByFitsDROIDMimeType','3.0','2012-10-26 18:38:06'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('4839eae2-551e-4961-a861-5a85c100612b','288aaae9-9513-4bf3-99c3-b5fd26ed85af','nef',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:28'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('48848bc9-44e5-4b00-b87d-9d4b015576bc','e10c64e0-105a-44f5-83da-a4a10379d802','fmt/134',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:05'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('48bf63ca-a4af-42a1-8ea7-5af705662011','2898de0d-0bae-45ec-a915-05d92d1df637','TIFF image data, little-endian',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:08'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('490e9bde-ff9f-46a0-b661-722efc13e22e','9118731f-b1bb-46ed-9d6c-1d070a5e7bf6','Targa image data - Mono - RLE 128 x 128',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:11'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('4a1ce2bb-a707-4a8a-abc7-429b8a662b35','59160936-d126-49a2-a275-86f9359c0e89','video/x-ms-asf',NULL,'FileIDsByFitsFitsMimetype','0.6.1','2012-10-26 18:38:14'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('4a9cb021-67ee-40b5-ac70-e10f99b76b23','e2e6315f-7469-410d-8532-628d933f1508','x-fmt/92',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:05'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('4af68905-08d1-4bec-8fad-fe8024053e3b','4c9c49f4-ca45-40bc-b7a2-119bfa76cf23','kdc',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:28'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('4b6de988-f8b9-49b7-8677-711aa73682a4','8f34c0fe-0d12-4dda-bef0-fb952990cb71','Plain text',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:08'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('4bd59917-59ec-4aa7-8a1d-333769bc6183','b7c6ba3f-b139-4451-b0ce-2e534a088d56','fmt/44',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:15'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('4d0b6832-0bf0-44da-bcee-e4952d1dd1bb','d95f4962-a8cd-4357-a0bc-4f2ffd408f2d','x-fmt/80',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:05'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('4de7d193-996f-4eb2-9a33-4e08cf2dd467','9086cec8-a28e-4723-9f31-e2e68e173c6a','dng',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:29'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('4e996919-6d88-4a4b-880d-5b810705d40b','8612b1de-9825-4cb9-b9bb-0b3b97bbe6b6','fmt/141',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:19'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('4ec79527-6356-42af-87a0-b21192464190','4cd6ff3b-2508-47ac-9d5b-2fcdb61ab1cd','fmt/421',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:31'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('4f48511c-5241-41e1-9818-b7f484da6bb4','7abfb7c5-3f55-466e-bd43-1f886e6a884c','fmt/192',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:13'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('4f6cbeeb-856a-4c12-9fec-2759c3efdbd4','bc9e9d1b-9112-4336-ac8e-c2c0b614777b','tiff',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:29'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('50877889-aab9-47d8-8fbe-7d68fe5e91a8','4c451f8c-9af3-468a-ae57-f4ce393eba80','HTML',NULL,'FileIDsByFitsJhoveFormat','1.5','2012-10-26 18:38:15'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('517cf3c4-dbea-487a-a2e4-a3d4868fea1a','9a8285cc-f383-4a1b-bf64-60749f065603','fmt/7',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:05'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('51a3a233-1cd0-40d6-ae8e-78f4b449bdd7','06b8d06a-aac4-4d09-b0b4-fe67d70faf14','JPEG File Interchange Format',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:11'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('5201ef8b-bc95-4cd0-862f-32597f09d206','3cdd3f9e-a093-4c0d-8aef-ef7ba86f765b','image/gif',NULL,'FileIDsByFitsJhoveMimeType','1.5','2012-10-26 18:38:16'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('5238abe1-28cd-4d3b-b35a-ae241a6f35c3','d72473f6-d239-448b-acfc-c3f177f65aa2','x-fmt/397',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:18'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('5286cc46-aca2-4227-9898-b3fb38d4ceed','5f43abcb-ddeb-439a-a80f-fb62dd2f042e','flv',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:29'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('533f8057-e56d-402d-85c4-6808cde014d3','a973a41b-d90a-4081-b0ac-6eeef52d2893','text/xml',NULL,'FileIDsByFitsJhoveMimeType','1.5','2012-10-26 18:38:16'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('54d62544-2a54-46b9-a081-6b0380ede966','40259ade-4e78-47c9-a8b8-d66e2aa121af','x-fmt/276',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:32'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('55bd6657-d247-42fe-8441-d6f1e3ded242','875a88e8-3fd0-48e9-a184-5f62459a468f','fmt/180',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:16'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('55d42b3e-f9e4-49ce-a300-68c534076945','eb216a3d-72a4-459b-8686-6aebab26bbb7','svg',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:29'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('566dbf38-31df-464c-a657-07a3259763dc','bbfbbed7-11fa-4cb1-9819-89284ff7d80a','text/rtf',NULL,'FileIDsByFitsFileUtilityMimetype','5.09','2012-10-26 18:38:09'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('568c4a9c-1c0e-43a0-9378-19c9886b0c80','99818e34-6fe4-455c-81df-cca3b0e70932','Canon CR2 raw image data, version 2.0',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:11'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('570ba6a0-bdbe-4ce0-b45f-b647aad273aa','7a8f358d-9b31-4d29-b258-7d668db64631','x-fmt/389',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:18'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('5715b2ca-3677-4459-bd0e-44138705142b','4f982c49-6962-463b-ae20-1b5494fc7671','image/x-canon-crw',NULL,'FileIDsByFitsFileUtilityMimetype','5.09','2012-10-26 18:38:10'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('572d4940-de04-4c0f-8de8-628b0f521ad2','24237983-b248-4d0d-b1d2-04ca8e469198','Portable Network Graphics',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:12'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('577530e0-26ac-41cf-9275-e0624c6ba9b5','61137b8e-803f-4f04-835c-1718670cebc1','fmt/14',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:24'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('57dbdda5-c48d-434c-bce2-31abd992b45d','c219f204-5418-4f45-b148-8216d2a15e88','dcr',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:29'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('592df4a5-4835-46d9-8bcc-fea6a772a204','e342d908-5dd2-4ea3-9291-288339829a8c','video/mpeg',NULL,'FileIDsByFitsFitsMimetype','0.6.1','2012-10-26 18:38:14'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('5c4875f3-1da0-475d-89af-c672ec07dd86','369eeb06-b520-4566-b9c5-1f7a2277a450','bytestream',NULL,'FileIDsByFitsJhoveFormat','1.5','2012-10-26 18:38:15'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('5db2324c-f553-4c41-ba74-ada9ed5eafb9','daf70773-a281-4620-9c75-73350150512e','fmt/117',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:23'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('5f4fb4ac-2707-4bd0-b0c2-b6e286af3e7b','1d0b3087-b43f-412f-8e10-2063b912ed81','fmt/143',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:19'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('5f81e440-41be-4bf5-8a7e-4084df92c5f8','8f063f36-f64c-479e-b37a-2491e99feb6a','image/bmp',NULL,'FileIDsByFitsFfidentMimetype','0.2','2012-10-26 18:38:07'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('5f91605a-074c-439f-af3f-91bc423e5023','d4e1477a-ed22-48a3-b1f0-751e5bfa6b5a','fmt/12',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:21'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('5f9d4ccb-bf73-44f9-9d17-bbc0fb208ff7','6c1064bb-f40f-4413-84e5-d40270f6c96b','application/rtf, text/rtf',NULL,'FileIDsByFitsDROIDMimeType','3.0','2012-10-26 18:38:06'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('603661a6-306c-4eb7-ac42-7146cbb498bf','1f8df48d-ce76-49e4-80ed-cc0d0ce65d2a','x-fmt/203',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:14'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('605c65fb-5eae-4f47-83cf-0b07f5d57630','9c1ef1bf-7ac0-431e-bfaa-0490b199d2c3','tga',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:29'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('60c520ac-ddd2-4747-9e84-6810579cf414','41f460dc-3272-497f-bed4-77e67d459612','application/pdf',NULL,'FileIDsByFitsFileUtilityMimetype','5.09','2012-10-26 18:38:10'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('61218cb5-186b-468e-b6d6-6bc2cc25b2c3','5b3a71d1-5a3b-46a4-a558-a785a10ca262','x-fmt/392',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:05'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('6130cc11-2638-4ec7-b908-26d21cd96099','580f3cbb-7604-4775-8776-2dcfc5651139','fmt/39',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:31'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('62690593-79b9-4b43-a558-a5547292ffbd','b8863dbf-f999-4c0f-889f-ccc18b6a6e71','video/x-ms-asf',NULL,'FileIDsByFitsFileUtilityMimetype','5.09','2012-10-26 18:38:10'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('635b4877-6d55-42b3-b4a0-c0897c2023d4','32846451-1dbe-44c0-b599-cfd3bdc73b0e','application/pdf',NULL,'FileIDsByFitsFfidentMimetype','0.2','2012-10-26 18:38:07'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('6454b91b-a492-4a8b-9afc-79a3f2b45002','58a160ea-d3a2-4bef-8238-ae36f4e9a013','Microsoft Word',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:12'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('64901097-0060-4970-b016-031f2c981182','8533521f-82c8-408f-9499-194e45d50154','image/x-canon-cr2',NULL,'FileIDsByFitsFitsMimetype','0.6.1','2012-10-26 18:38:14'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('64ede5d8-a169-4090-b174-e6131cb7588f','15212ba7-3a43-418b-a3b7-d8095c2b77ff','text/plain; charset=US-ASCII',NULL,'FileIDsByFitsJhoveMimeType','1.5','2012-10-26 18:38:16'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('654da8ca-bfdb-4d28-8d69-7940cc2e9f23','48ddd2b7-7841-4731-a28b-5ebe84a0ff8b','image/gif',NULL,'FileIDsByFitsFitsMimetype','0.6.1','2012-10-26 18:38:14'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('65dc107f-e2ab-4d82-8bdd-41cf69bb47a1','a38ef10a-1dab-4643-b93c-dec589951c70','fmt/158',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:28'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('65f493b0-397f-4671-9529-bd410759d4c7','f048d680-916b-4631-a19e-2b4c292f010e','fmt/291',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:18'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('670a10a6-5252-4bf2-8918-aa74b6299d33','68d7dce7-17c4-4407-b648-83efa8870d3e','Foveon X3F raw image data, version 2.1, 2268x1512',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:08'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('681943dc-fa51-4928-be5b-2e498616a5d1','0c2ad7a0-83b5-4f83-aed9-ee6ad99510b3','Microsoft ASF',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:12'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('6867abc3-4bba-47a6-a6eb-64f893872f70','92526fe4-93e8-48c0-ab29-be50bc832bf5','aiff',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:29'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('6889c62f-121c-457c-a617-6a93227bf4cc','983636ce-8bfb-4e06-b5f5-a2994af8ccc9','ORF EXIF',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:12'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('68bbc28d-055a-400c-8f2f-c29eb122c3b4','92ba8d67-0170-4f39-8f29-316b44522112','mov',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:29'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('6a23f98c-22cc-4e27-bf30-301a96fa6429','0f965b92-8f6c-4a52-bffd-a28da459fdf9','image/x-canon-cr2',NULL,'FileIDsByFitsFileUtilityMimetype','5.09','2012-10-26 18:38:10'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('6ab4ac19-e851-4ecb-b8eb-3b8cd48cb2c5','2aab64ea-9bbd-4715-a6bf-ad3ee5ea7072','WAVE',NULL,'FileIDsByFitsJhoveFormat','1.5','2012-10-26 18:38:15'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('6b5f73b1-d0e4-4118-b3da-ccef52e6a502','9f66ca0d-34eb-4820-9679-0704fecb73f6','wpd',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:29'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('6b6dc773-9afe-46a2-b84e-3932c21cfe71','7a0ab3c1-8ab0-4aac-b064-bff7e6e88f64','fmt/115',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:22'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('6bccb910-0a66-4e5b-bd13-fd5aeddc3fd4','e549810e-8a45-4d3b-9f7a-97ce7f11e853','Adobe Photoshop Image, 800 x 533, RGB, 3x 8-bit channels',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:12'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('6d473c49-1c64-4be7-8428-331f5de0bb2f','3da83571-5d77-4edb-9782-859138ac1ed3','application/vnd.ms-powerpoint',NULL,'FileIDsByFitsDROIDMimeType','3.0','2012-10-26 18:38:06'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('6d64c940-81f9-41df-851f-a5aad69dd970','860d9543-4d04-4be9-9fed-ff1e35648d28','x-fmt/382',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:05'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('6dc078d4-2d47-4739-a613-a31521601595','26a45d64-5e4d-4afc-8297-265f1a4f86bc','Microsoft Excel 2007+',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:08'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('6ddd9abf-cc24-481e-a4ed-95b879271d9c','f99c8abb-3364-44d6-b2da-bbcaad58e2ce','xsl',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:29'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('6e0e82c8-3ee5-429c-a1db-fcf535f8cd7c','f991f719-4fe8-43d7-b032-2e4a52de8d53','image/tiff',NULL,'FileIDsByFitsFileUtilityMimetype','5.09','2012-10-26 18:38:10'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('6f2d8b01-d05b-4dbb-a64f-53e9feb2cc1b','88f61e4e-ce58-4bc3-9bc8-91d6c3cfcabe','fmt/116',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:05'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('6f9d85e9-6176-4d05-a997-04ab02aaa1e3','3651eff9-0c05-4077-8f26-a9dfb915465a','TIFF',NULL,'FileIDsByFitsJhoveFormat','1.5','2012-10-26 18:38:15'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('71b1aace-dce0-429b-81a9-34b72fef951d','74455ff3-647d-4d29-a71a-be28fa97a289','image/png',NULL,'FileIDsByFitsFfidentMimetype','0.2','2012-10-26 18:38:07'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('71d1d681-4c27-416e-a54c-b9c55352eaeb','aaf1a292-b2e7-4624-8119-a6805bc6702c','jpg',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:29'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('71eec4b6-8be4-4d3f-91cb-24a8891dc60d','8a0cc11d-d1ec-4e0d-a895-ac037c9d94f8','pef',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:29'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('726f3b41-8d8c-4146-9dc0-53ed124ef6f5','cba89043-1ac9-4e3c-a140-2ac74377c3b0','mrw',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:29'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('72d36e83-dddc-4f8e-8d76-3bb869acdc22','480b7fb6-f10b-4631-97f4-f40e0385cdca','Quicktime',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:12'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('731f81d5-a8a1-4fbc-ad9a-db6c7f6e13e1','9e55df2f-6153-4d2b-a156-863b1c0148e2','video/quicktime',NULL,'FileIDsByFitsFileUtilityMimetype','5.09','2012-10-26 18:38:10'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('747f08af-58df-4b27-b40c-3c78c64396dd','cba8d14c-a8a8-4676-b1d2-3cd726528825','fmt/13',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:22'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('759cb63e-0434-4070-9ef0-edec412b1591','675e8fdb-67e9-41a8-a505-823cd8348cb9','text/plain',NULL,'FileIDsByFitsFitsMimetype','0.6.1','2012-10-26 18:38:14'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('772df9f6-60dc-49a8-b465-e52720c17c2a','257c711a-6d38-4b8c-8c54-6c25dc5a4d43','fmt/104',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:34'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('77b3c9da-90a8-4ad8-a6bb-a3742959035d','b7463782-e37e-447e-90cd-2703deeb21e2','text/html',NULL,'FileIDsByFitsFileUtilityMimetype','5.09','2012-10-26 18:38:10'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('7857ceaf-2c7a-41db-8133-ad74130f67a2','f520ade0-4fe7-4000-8bb5-061a222cb923','txt',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:29'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('78731108-55cb-47e3-8b2c-95036d4532b9','d5719ffd-c663-44dd-946e-0818c31629a6','fmt/126',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:05'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('788dd63f-da3b-4421-89b1-764cad6e50a5','b339460f-c9b6-43a2-a78d-9d8aaea9c8f2','fmt/157',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:27'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('78af54c2-d2e0-4fa4-a67e-c5cb2a3d513e','c5e493af-195e-4b64-9331-4f716a16eac9','pst',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:29'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('790ace69-333a-4d40-bb71-5b254d98eaf5','b8b6dfa3-beca-4667-a279-cf78d610a0b6','video/x-flv',NULL,'FileIDsByFitsDROIDMimeType','3.0','2012-10-26 18:38:06'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('79267853-99a8-4f0e-aa37-cf21141d53b3','b63fd011-1df4-4478-86df-da93f3fc1955','fmt/112',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:16'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('797fde6c-48c4-42d7-802f-f99eda4f7158','1db0ee9f-a668-45f2-ad79-50e395a9e171','Microsoft PowerPoint 2007+',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:08'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('7a547d8a-bed0-4ac3-b7e8-18f608a23738','8309414c-b081-4342-b20b-eea126a97e26','application/vnd.ms-powerpoint',NULL,'FileIDsByFitsFileUtilityMimetype','5.09','2012-10-26 18:38:10'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('7aa434d9-6d19-4613-939d-83bddd902fdf','cabd97ec-12fc-442a-9952-54a9250c6e8c','image/bmp',NULL,'FileIDsByFitsDROIDMimeType','3.0','2012-10-26 18:38:06'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('7adbd693-754a-46cf-b8b3-01b0b58857c6','e0e6ab6e-dd08-4b2a-9267-8ed7500655f6','text/xml',NULL,'FileIDsByFitsFfidentMimetype','0.2','2012-10-26 18:38:07'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('7b3d1009-1879-4de8-978f-8615cb18f2b9','2c0fbd65-f7ba-452d-bd93-a40b371e2a68','Audio Interchange File Format',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:12'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('7b3d2084-d73b-4553-a67f-6f870c36bb5d','4e6f9641-ba13-4855-9385-be92209a245e','x-fmt/385',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:14'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('7b3e2599-05e9-43c3-b8c6-c182835b3a41','38de9fcc-4200-462e-a4d3-70350fc6b7c9','x-fmt/391',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:15'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('7bcfc7ea-394d-46d4-a292-17f51c06147e','2184c88b-bbe4-41a1-9a21-281f5cf55433','fmt/480',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:26'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('7c5637c8-d87e-40ef-b2f9-82fa087ccae3','4ae6d5e4-1cd1-481e-8469-eae98f9adb36','x-fmt/367',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:05'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('7c79e05c-e596-4a6a-8040-87055ecf8aef','123481b3-aca7-41ec-97d7-7e6601395d4a','fmt/124',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:05'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('7cc247a2-13bb-4960-8e5f-28f9d59c28ed','40f0c13e-f8ef-4a50-94cd-f1a2d95ca886','cr2',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:29'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('7ec27a59-6f0d-4aaf-9935-779934709485','2c3058ab-a357-4c26-9157-8f11028e63bb','fmt/215',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:14'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('7f51b5a9-0db3-45d6-b262-4dab55a8777e','1b801662-0446-4bf5-bbd5-b093b27a1cef','image/svg+xml',NULL,'FileIDsByFitsFileUtilityMimetype','5.09','2012-10-26 18:38:10'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('7f81e609-c058-4025-8029-62e6dcfe050b','f3fa999a-ba70-482a-a660-f732d27a882e','Apple QuickTime movie (fast start)',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:12'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('7ff5b9c4-fefd-474e-bea8-e91c07de1356','5f46c34d-7a26-47eb-b977-1be976205050','audio/x-wave',NULL,'FileIDsByFitsFitsMimetype','0.6.1','2012-10-26 18:38:14'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('801f3529-7e4f-4253-a510-c2ad36c98c0e','33da3559-86b0-4db0-8e3f-7339155cc559','audio/x-aiff',NULL,'FileIDsByFitsJhoveMimeType','1.5','2012-10-26 18:38:16'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('807cfe9b-01bf-4a78-ab7d-417009858dfa','abc707f1-48f6-4e0c-acba-67c818ccdc85','fmt/148',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:28'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('8155817b-84b3-4ce8-af2b-5e7d7d126896','78640195-eaae-405f-b3bc-304b806977f9','JPEG 2000 JP2',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:12'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('81c4493d-259e-4987-9b87-f4a86c00dd69','477b16c1-28b7-4685-9391-51bbaca936b7','text/plain',NULL,'FileIDsByFitsFileUtilityMimetype','5.09','2012-10-26 18:38:10'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('81ef0156-e0c4-4c4c-ade6-584c740fb532','315e3d93-22df-4993-955a-73d30a11f7d7','Targa image data - Mono - RLE 128 x 128',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:08'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('82cfd645-247f-4be5-9b32-2156c10a3038','e0c40516-1727-47b5-89cd-ff8e36764442','HTML',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:29'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('830972cb-3313-4881-9d7e-b03e22b1cefd','268c57bc-edfc-4da7-b01a-c1ebb2438022','fmt/131',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:05'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('83d61f3f-d30e-4889-bb46-0278baa997fd','44da7e78-68c9-41ca-8441-26f882a463c4','x-fmt/88',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:16'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('849868bc-b1b0-4e59-bec3-4e356dcd1d6a','31868203-8848-4644-92c7-27307c5e5ba0','image/vnd.adobe.photoshop',NULL,'FileIDsByFitsFileUtilityMimetype','5.09','2012-10-26 18:38:10'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('84e756b5-b9ea-4f72-95d5-0a0ccb351754','e112c95a-5d2e-4b07-89fb-8775e48514d5','fmt/146',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:28'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('86b464f8-a299-4d80-844c-6588d00c1028','4988d669-fe70-404c-8e0b-c297d2eb9ad2','fmt/423',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:30'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('87387469-26b1-4e96-9b0e-644340afe63a','eaf3f239-4e9b-42bd-b618-2cad78793b36','crw',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:29'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('87e5ac50-a4b7-4716-8131-126bb1138ac4','7b2ab804-b73e-4700-96ca-61ebc9c3576e','Tagged Image File Format',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:12'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('89d8f8c4-ad23-4407-a4d6-06a1b08ede83','c57451a7-13f9-4483-94af-5290f7a2bd87','application/vnd.ms-excel',NULL,'FileIDsByFitsFileUtilityMimetype','5.09','2012-10-26 18:38:10'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('8b565e70-c271-4828-b46b-d4ef0f323f76','a86b0683-25af-4e39-9aa3-e0e4a1e7b395','FLAC audio bitstream data, 24 bit, 6 channels, 96 kHz, 28369692 samples',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:08'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('8c5c7d8e-6684-425c-b6c2-030ca601774a','5b553136-e75f-4512-b988-689db706fd50','fmt/422',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:30'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('8db037df-85ba-46e8-bd4c-cd63f294fd45','fb5fca7c-0a75-4a94-8dc2-0dba6d66747f','image/x-ms-bmp',NULL,'FileIDsByFitsFileUtilityMimetype','5.09','2012-10-26 18:38:10'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('8ddf2d8d-6c75-4035-948d-f6bbf8a8cf2d','dbad8e78-b7af-4039-8aa2-b501c42b7eeb','fmt/438',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:20'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('8ea428c7-de8e-41e5-95ba-030ca6f11b40','e8e6949d-f0ae-4001-b8d0-91bfd45a1b47','image/jp2',NULL,'FileIDsByFitsFitsMimetype','0.6.1','2012-10-26 18:38:15'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('8f30f15d-e49b-4734-a367-e7e2b6cd8b1c','58e8909c-4c51-489e-bae0-410d82191d6c','xlsx',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:29'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('902c76c1-abb0-4d2d-84a6-50c4ec3b1fc9','17d1046c-71bd-4c90-9291-6744e5f2fa38','Waveform Audio',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:12'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('906181d3-894a-4294-a695-5454f17baab5','4fb85f9a-831d-49ff-a554-4c80a792232b','Olympus ORF raw image data, little-endian',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:12'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('909c148a-b4b7-4ff6-8349-6dcc1911dcd3','0a01c5ed-7e05-4dc8-8082-48fe61bab13d','image/bmp',NULL,'FileIDsByFitsFitsMimetype','0.6.1','2012-10-26 18:38:15'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('90daba15-4988-4e4d-b590-493928c43c89','73e92bb3-23a0-4fc7-a7e6-4da8b0984506','Flash Video (FLV)',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:12'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('91104401-41e5-4063-adb1-51a18485f64a','84e0b908-bd9e-4442-ae34-bc9743b43348','text/html',NULL,'FileIDsByFitsDROIDMimeType','3.0','2012-10-26 18:38:07'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('92751e84-b688-4efc-b8af-a87090da8e42','c789e8b6-9d94-47f4-9be5-5a118cd13c0d','fmt/182',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:16'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('9320d70d-7f58-45b9-b582-18967846c4db','7ff7e6cf-5a65-4e2f-9fc3-6f702374b470','wbk',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:29'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('9392ded7-03f5-43b1-a1fc-e325cf9a892b','aaf970b7-31ef-40f0-a493-187298baa1b1','x-fmt/384',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:05'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('939f1276-016c-40ac-bd01-cb7f30005e48','37384927-53f5-4ac7-8425-94a110c081ce','image/tiff',NULL,'FileIDsByFitsDROIDMimeType','3.0','2012-10-26 18:38:07'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('93b5b338-da0c-4d32-b052-1dba459f0e01','6e0f164c-6f87-4f2a-9ebe-23089c33cc46','fmt/41',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:15'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('947a78a1-5b28-4470-8f9a-95afe4cd7a4d','4e5c2d3d-0802-432b-9e52-2a98e8e18e8d','image/x-olympus-orf',NULL,'FileIDsByFitsFitsMimetype','0.6.1','2012-10-26 18:38:15'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('94f3dc1e-c678-47ff-9e18-c332a4a641ba','38903006-89e2-4d59-b0d5-dbf8614500c4','fmt/18',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:05'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('95249cd2-60f3-4d61-962d-6f8b9eea4fae','fa1980ea-578a-44f0-9cca-fd9b80f52af2','Graphics Interchange Format',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:12'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('9635837d-0823-45fb-9938-48ba7113676f','808520c8-c588-40a0-9c32-8518110c0e33','XML',NULL,'FileIDsByFitsJhoveFormat','1.5','2012-10-26 18:38:16'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('97533006-c9f0-4243-aa2d-704beeecc07f','92ec6955-b6ca-4acb-b8d4-a475efcd8c73','fmt/16',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:24'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('996cdf47-7db7-421e-96c0-05c32fa1a894','f1abb661-2418-4d3a-8d41-aef1a0f57bdc','EPS EXIF',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:12'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('9a9b541c-2b1e-43dc-8b9b-027b38d7f34a','8aa97c5e-1cf5-4b1b-a20f-58e21598a5fd','RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, stereo 44100 Hz',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:08'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('9abbc75d-c527-421b-87b7-a92e6d55e869','350b7514-7b5c-4b83-913f-b56122423dc5','text/rtf',NULL,'FileIDsByFitsFfidentMimetype','0.2','2012-10-26 18:38:07'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('9b8222f9-71ba-45ee-8b0e-ac135a5cb134','19d7d449-99c3-4a3d-98cb-428665cf25d1','3fr',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:30'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('9bafb34c-cb02-4baa-a043-9c9a4966d879','a3f41b86-152e-4feb-878a-c83d486b57cf','ASCII',NULL,'FileIDsByFitsJhoveFormat','1.5','2012-10-26 18:38:16'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('9bc15328-5734-4986-9daa-a3e0a1795d9d','ff33f793-b071-4362-a13d-18225470ea98','fmt/123',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:21'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('9bd0aa5a-c11b-4418-b37a-21084af0022c','5ff09d4f-217a-4610-8495-7089859d1452','image/svg+xml',NULL,'FileIDsByFitsDROIDMimeType','3.0','2012-10-26 18:38:07'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('9c2975f6-f6a7-4638-8323-c71a17ce360f','209d95fb-25be-471f-902d-dd08fe5be83f','fmt/354',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:25'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('9c53f1f5-a9c5-443a-8105-b4b0375ff801','c9d79a74-a58f-4c71-8977-1129c10f3a5d','application/zip',NULL,'FileIDsByFitsFfidentMimetype','0.2','2012-10-26 18:38:07'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('9c73425f-7f42-434e-892a-9325743c5bf6','2b6c2412-b978-4478-8d09-b91ed4c6dc6a','fmt/11',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:05'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('9c79449a-d058-4d75-bdcd-08386082b425','e3bb38be-25d8-4831-b583-84c20ee371a9','css',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:30'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('9cab3ec0-de73-471e-9601-122b740f4268','1567b10b-1474-4df5-a6df-ce3b8a92ee97','Targa image data - RGB 1419 x 1001',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:08'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('9d20a54f-bc24-4f1e-bd80-ca7261f1d997','435bcdbe-75b2-44d2-94ef-2710edcf9eb3','fmt/91',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:05'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('9d52b1e8-18e9-4946-9171-92b2e2823119','a010a604-78c2-4656-846b-d265b95ae771','fmt/191',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:13'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('9e34397f-27a2-4efb-92d8-b197e0f6a790','35c9fd79-c9b4-4a0c-84dd-6a9a6a05453a','ARW EXIF',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:12'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('9e39145f-fe6b-45a4-b746-fd70d4a802b8','05e0d0e9-f51e-45d6-86e5-283f8eeaa00d','x-fmt/390',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:15'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('9e6a168a-a740-47a1-997a-7af3f9e18a16','085d00ca-f8af-43e5-9ef9-6d21dec5aff8','Windows Bitmap',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:12'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('9f1897dd-3b62-4eff-ad10-8b02272da021','7a171a9b-49d8-45c7-bb5f-52d9c3157de0','giff',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:30'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('9f927013-88d4-4243-917d-3e52275bb47c','b60d9ce6-7f94-4c2d-b1b0-04d74644b48b','ods',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:30'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('a001fba6-80a5-40d2-8e05-0ed3f08e7198','fbcf2ae7-4893-4771-833d-8eee20d91f3b','raw',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:30'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('a0874400-997f-4755-81e2-e57856c471d4','9548e247-c91d-4e39-99b1-26456cc7ce22','fmt/105',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:34'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('a205da36-de61-4ea9-8a18-60e72c7d31f7','0204d3a6-d566-4f90-b298-578eaf6c99f6','fmt/3',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:17'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('a2175deb-c922-449d-a28f-367dedf966e0','0bd0540c-db99-47e2-b63b-12be1c6eafcf','pdf',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:30'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('a383dd7b-d76d-492e-b646-68afc6814f40','fedd6582-993f-498c-86c3-991e758a795f','fmt/50',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:28'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('a5228b65-8e02-45ba-934a-44484de14b6f','274e16c7-1b68-498b-8290-e339d4197136','MPEG',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:12'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('a6f578e9-e12a-4dbd-8f47-5ef48b6ecf46','83e32dd9-e3ac-4953-8f8e-756ac56d4480','fmt/109',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:35'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('a7810d01-caba-4d9c-8771-f708e58c44d1','ec0a162a-90d3-4731-90c8-6c7ef3396f5c','fmt/45',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:05'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('a7c3be20-cf5c-487f-a6fc-a2b9767ab5b3','e7cb481d-e08b-4389-9819-e6bd6e12295c','ppt',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:30'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('a7f0fac0-1fdf-44f0-8284-45f93415db02','c0971b7e-06eb-4d4b-856b-5ffb7d2843d6','image/jp2',NULL,'FileIDsByFitsDROIDMimeType','3.0','2012-10-26 18:38:07'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('a8ce0153-c919-4bc6-8e8c-cf65e2fe960e','b7b89065-c83b-48f0-bf23-136c6c092dfd','application/vnd.ms-excel',NULL,'FileIDsByFitsFitsMimetype','0.6.1','2012-10-26 18:38:15'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('a9779e0b-d9cd-4844-8aba-700569642d78','86ce68f3-b264-4e49-a44e-c58144703700','audio/mpeg',NULL,'FileIDsByFitsDROIDMimeType','3.0','2012-10-26 18:38:07'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('a9cae264-5383-46b4-9859-1d84226dbe8a','a1bd442c-44f7-431a-9eb3-cfb962872c31','Free Lossless Audio Codec',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:12'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('aaa63846-4464-484d-90b4-8262406ec9c8','40e2177a-2219-445b-bd97-56f2ebacfe62','Portable Document Format',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:12'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('ab65998e-db6b-4d1b-bc51-fa7888e438f3','26fcd232-8685-40ea-a1b3-e845662d9a51','fmt/437',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:20'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('abf5ae65-61a4-4e22-b4ad-cae80b0a59fa','fe2dfde9-d4b8-4e1f-bcc0-262ec7710c3c','cvs',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:30'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('abf5ddf2-9b49-4a32-bbfe-abc4846bee17','cc23bcb7-221b-4ef0-98ab-40726b5aee4b','fmt/5',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:29'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('ac12344e-50c8-41fe-8ee7-3926e20a2ad7','97f8b89c-5aed-4c41-97ec-72516fe0df51','fmt/292',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:33'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('adce6348-fd3c-4b9b-bef9-7701cbab6f61','23dca992-ea19-4731-8e96-20739509851c','fmt/402',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:15'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('adf88e20-21f9-4a9d-bbd1-a396841fcbc7','78b2cb5f-7b0f-450e-95fe-dd2e8de13770','fmt/144',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:27'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('aecb2b92-f272-4d99-bba1-8b7481c0ae2e','b89940da-f3c3-4dad-9eb6-86bd2ba380ab','ai',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:30'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('aee31b46-dcc2-4322-bcd5-d36cabeef14d','a6a4884a-f8e5-4909-905b-df8825040cef','image/x-x3f',NULL,'FileIDsByFitsFileUtilityMimetype','5.09','2012-10-26 18:38:10'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('af13d090-a605-483a-b95f-46518a56db56','fd394578-5b76-4eb9-b40f-f116ec11a09e','fmt/476',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:26'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('af72f326-ce34-4547-a94d-4325c34ed123','b83c3a3d-7feb-4677-b38c-1ecd5118c3f4','Microsoft Powerpoint Presentation',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:12'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('af81e5fa-3245-4be9-a767-87b37003a1e2','4953b2ca-d1f2-4905-a8d4-bf95abd54930','application/octet-stream',NULL,'FileIDsByFitsJhoveMimeType','1.5','2012-10-26 18:38:16'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('afca678a-9df4-4a10-94e3-e4aacca3417a','090ff58a-f772-455b-9743-2615e17b6aa8','image/jpeg',NULL,'FileIDsByFitsFfidentMimetype','0.2','2012-10-26 18:38:07'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('affe18c5-9912-4e91-891d-cac13f4f0c6c','b7996d48-fbd6-4f41-9b0e-30ab67feb511','text/rtf',NULL,'FileIDsByFitsFitsMimetype','0.6.1','2012-10-26 18:38:15'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('b1328ae0-5d12-4953-8b3b-6ae56de178e0','9862f025-b370-4ed0-96a1-0d81813ac256','raf',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:30'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('b19c2f1e-c781-4990-b8a1-c1bf4c2be633','833cc7c2-c155-45b6-b927-98fdb20ae86f','video/quicktime',NULL,'FileIDsByFitsDROIDMimeType','3.0','2012-10-26 18:38:07'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('b2c2bece-5eeb-4831-a50f-8b449374951e','8cacccb8-d2d5-46d4-a3f5-805ae1fc68cd','fmt/119',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:23'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('b2e20b54-64f7-4e49-b034-837919ce0bb6','0ce828c7-e884-40be-9a6a-51b53cb349c5','x-fmt/396',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:19'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('b3cd697d-90bf-490e-a8be-b4a3d58c4237','4ac74345-b1d9-47d8-bed7-3f41b2bdbc36','wav',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:30'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('b44f87bf-8f25-4019-ad50-680bbee42284','e88a46ca-5372-4314-a51c-ec83ac9ef4b4','audio/mpeg',NULL,'FileIDsByFitsFitsMimetype','0.6.1','2012-10-26 18:38:15'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('b4f87e53-3783-480c-91cf-fca02b85b2b4','dcc00ef2-f22c-4796-87e5-f8b728a6a0dd','fmt/436',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:20'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('b504f1fd-dee3-4cff-81a0-74dce82b07da','b155afa2-038e-42dc-beee-f89e5a3ce41f','tif',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:30'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('b7b51c13-6373-495c-a152-f18dcbbb67a0','805785fd-4001-4ef7-9d10-1ef52fcbc9c0','Microsoft Office Document Microsoft Word Document',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:08'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('b8add022-38a6-4802-ac4b-3fcfe2bef6a1','c0540086-8d61-4684-b8a8-ed11594c5abf','application/rtf, text/rtf',NULL,'FileIDsByFitsFitsMimetype','0.6.1','2012-10-26 18:38:15'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('b8c6c0e0-f111-488f-bdac-844c2506eb43','74fa9f99-573c-4c76-964b-4456ac234715','x-fmt/275',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:32'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('b8f3453c-d5d3-4fc1-b482-dd9575e513b1','4d2748e9-7233-4106-b7a1-83e7cfdbff24','image/vnd.adobe.photoshop',NULL,'FileIDsByFitsFitsMimetype','0.6.1','2012-10-26 18:38:15'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('b9a65325-a5e1-49cb-ace8-94e7b0641fa3','736176b4-73b4-48fa-803c-0846a5f0760e','x-fmt/111',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:05'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('ba97e868-9eec-42ca-9604-263bdbb1e239','54e14752-4a89-413a-9ac1-dbb519f61e2a','fmt/40',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:31'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('baeb83ef-d279-4def-9637-f412b44e1e3b','66be432b-20a6-4dbc-8d52-5857f559c40d','fmt/202',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:20'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('bb07eb12-52ff-458a-8dc3-d848144e2fea','9d14b564-3571-4a71-81a0-9b937c61df41','x-fmt/398',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:15'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('bb980afe-3e73-4b8f-8337-9053bdd42da9','5e7fbaac-1441-46e6-aedf-c65763e9fbf1','ERF EXIF',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:12'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('bbf1f1d3-12df-46be-9b56-d1eeb0b1dd59','30ad24b9-3d4a-4cf8-9986-f45c12210aea','fmt/6',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:05'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('bce14e4c-e86b-4373-a2bb-1af1d97cdc4f','2797e915-0097-40f6-ba05-ecf94ab34dc5','arw',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:30'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('be1eea63-aa11-43e6-a03e-def5e023c8ce','4648baa2-24e0-4ebd-a31a-2417e4175ad3','fmt/138',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:33'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('bef9b2ee-cd13-4ab5-8bce-831eae30b9f0','82bc2ee5-86e9-4bcb-bb65-90fb1b656754','fmt/96',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:05'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('bfa47c06-24a7-40c3-8e86-7fe4a3a1c92e','976dc56c-c92a-4253-ac88-f69cae251794','image/gif',NULL,'FileIDsByFitsFileUtilityMimetype','5.09','2012-10-26 18:38:10'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('c03df361-6d86-4f8b-8731-9213af904675','454214be-1ae6-4bdc-8396-a4355bdbc618','avi',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:30'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('c05bba0d-89c0-45a2-9d9c-462a008ccd9a','9f97ee78-98ae-4a3e-9989-50ca598fee65','video/x-flv',NULL,'FileIDsByFitsFileUtilityMimetype','5.09','2012-10-26 18:38:10'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('c0907124-9bbb-4c4c-acd2-23ced541c2e8','db10b9f5-1c41-4638-bf7b-e8f5c214903c','fmt/479',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:26'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('c156775d-faae-4187-b4a0-d03b14c0c3dd','2f652af9-abd4-4048-ab58-0873a3912d95','fmt/353',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:29'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('c1d164ab-b07e-4038-93f8-e1eb822940c5','5cad3529-600c-4b7f-aa68-375a5dc9912e','fmt/92',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:20'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('c1ffa5fe-fd3d-4e00-8ec3-77de38c136cb','e65c2ac3-db3d-412e-ad84-021efeca4991','mxf',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:30'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('c2731679-09cc-488b-abfd-03fd02f2cac4','e5ebd621-9c56-4ab6-a698-75a89b044102','fmt/142',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:19'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('c27a3385-2481-4ff6-9fef-02356c0c6b26','833952ec-7936-4a3e-979a-a2b705c31a9d','x-fmt/393',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:14'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('c2ee62ad-739d-444b-9990-16daf92b5489','065a6379-da8d-4d90-8a6e-8286b31e850f','image/svg+xml',NULL,'FileIDsByFitsFitsMimetype','0.6.1','2012-10-26 18:38:15'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('c361a014-1b23-47ec-a7c1-547ac92fcfc5','06e64ff4-3de9-40f6-a9c0-bcf0e5aba5c4','Adobe Photoshop Image, 800 x 533, RGB, 3x 8-bit channels',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:08'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('c3b1399d-7805-4f4f-a2b4-150b78c73434','8ef30615-ebf0-4877-a521-64457b598158','archivematicaMaildir',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:30'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('c3d86e43-811a-405d-bed7-60b602cf583a','20109b15-39c8-4d10-bac5-617ae2850e22','x-fmt/135',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:05'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('c3f52040-8b58-4eee-8474-af08329cc3eb','16d9ada5-08b6-48cc-b4f8-723327803581','fmt/19',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:06'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('c417b1bd-cb89-4181-801e-9a49de3f3d56','ed15e649-7843-494a-a100-fc2571193f02','OpenDocument Text',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:12'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('c434a7c4-a57e-4340-85c4-54b50fbd9ffc','5c998398-3340-4d36-8b34-2cbe7eca1010','fmt/4',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:06'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('c75a23a6-719a-49b1-88c4-b3dd75e71c3a','adfa26bc-e276-4d69-85f3-63c8bd046d3f','bmp',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:30'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('c7c22951-2dc1-4754-ae52-0126a7d96a76','1984ade9-588b-4817-8460-9dfea763cd23','fmt/1',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:18'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('c814a813-484b-4feb-9e6d-53d8d1074416','c82bc722-a02c-42d5-b894-e45baa4badb2','application/msword',NULL,'FileIDsByFitsFfidentMimetype','0.2','2012-10-26 18:38:07'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('c9a33459-3689-4c1b-b28d-857d8aca5f72','18d00a54-6b22-4434-8563-e66f80431e9d','ac3',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:30'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('c9a98c00-f517-43c4-9e10-a959d8d4aaf5','a0af674f-4e72-496b-bf4e-4f126eab7372','AIFF',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:13'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('c9aaae39-ec08-4bfb-b7e9-bddc8c35ee52','1f968676-81a2-4cd4-8d3d-ee86342e5a57','fmt/47',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:06'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('ca9ac21e-9fde-44c8-82da-df7195a51c59','a1e102fe-de95-4fc5-9bff-a1cc7058e1cd','wmv',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:30'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('cb0c0155-e724-4a26-8a29-04aa28d9e30a','93020f07-2a16-450e-b0fc-e03446952c02','fmt/20',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:06'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('cc560c97-164d-4db2-bffe-327bd5906dac','27d6e866-3b9d-487b-b3b7-5a1bc4e72a3f','text/html',NULL,'FileIDsByFitsFfidentMimetype','0.2','2012-10-26 18:38:07'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('cc85467c-170b-47a7-b6a7-6348f6439203','adac68c6-1483-430c-ab2e-b594660ae4d6','Audio file with ID3 version 2.3.0, contains: MPEG ADTS, layer III, v1, 128 kbps, 44.1 kHz, JntStereo',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:08'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('cdde137f-298d-4434-b337-6451043b45b8','1087d1e9-3dff-4b6e-b1e2-625141bbf814','fmt/107',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:34'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('cde32a4d-0361-4bb4-a9e4-7244defe1ee5','7c5095aa-a9c0-46d7-a67d-e95d628edda8','image/png',NULL,'FileIDsByFitsFileUtilityMimetype','5.09','2012-10-26 18:38:10'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('ce020c32-cddb-4044-b998-c858e95f534f','d4e6b67d-331c-428b-964f-8303ca7eafe5','text/plain',NULL,'FileIDsByFitsDROIDMimeType','3.0','2012-10-26 18:38:07'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('cf68f326-4d13-4260-a6d8-da04183a1285','5dd411c8-9ce3-4293-9862-11d526b32725','application/vnd.ms-excel',NULL,'FileIDsByFitsFfidentMimetype','0.2','2012-10-26 18:38:07'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('cf9fffe6-a604-4e29-b8c8-624a6dd7f58b','a5cdb910-3eea-4f59-9319-d2c51b6658fd','fmt/110',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:35'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('d02019ea-cf04-4a53-81dc-a426e39cf584','49f8cfb5-afac-44ca-8d47-b408881954e0','PDF document, version 1.4',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:08'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('d05cd3c8-8d12-4367-a61d-9ba672b8f334','b5d57def-9d34-4851-89f9-62b4646ad605','ATSC A/52 aka AC-3 aka Dolby Digital stream, 48 kHz,, complete main (CM) 3 front/2 rear, LFE on,, 448 kbit/s not Dolby Surround encoded',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:09'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('d070f329-11bb-41f3-b765-21afebb49454','c8e9d29a-13ca-4f03-9d2c-5834667f54ea','(Corel/WP)',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:09'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('d1795fac-cac1-4d33-bf85-44804d7c358d','705e9509-6393-481f-8dd5-f4753abcfead','ATSC A/52 aka AC-3 aka Dolby Digital stream, 48 kHz,, complete main (CM) 3 front/2 rear, LFE on,, 448 kbit/s reserved Dolby Surround mode',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:09'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('d2951e93-993c-43bb-b92a-281baf3dfd15','c458b319-6779-4426-a1a1-b01c0cb46194','JPEG',NULL,'FileIDsByFitsJhoveFormat','1.5','2012-10-26 18:38:16'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('d9f5b15f-5b7f-4401-8e33-1ace1bfd89ee','2c2c85ee-1437-4beb-82fb-0c7fca51c49a','fmt/38',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:33'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('db29f895-f041-4e21-a04f-7cedb371f5e9','a5b94581-b1b5-40c4-975c-0ea11870c237','IFF data, AIFF audio',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:09'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('dc21fbbe-bd7b-4ed5-819e-abb59315a64a','d80f1e2e-a75b-4492-8f7b-e541e3980fb7','application/pdf',NULL,'FileIDsByFitsFitsMimetype','0.6.1','2012-10-26 18:38:15'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('dccfbbf3-095d-46e3-8881-335d4d0bac59','24950d29-e3c6-408e-89e4-28f689239a13','audio/x-flac',NULL,'FileIDsByFitsFileUtilityMimetype','5.09','2012-10-26 18:38:10'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('dce65bd3-c4bf-47c9-a019-7d6f5afd4a68','b95d9944-b9f3-4dba-bd83-86c6fe3a9ca0','fmt/108',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:35'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('dcf4f23f-bc15-40f4-bf01-4887cee51591','3b8ba73b-9cbd-4a6c-b9ae-6fbd9c5f5104','ATSC A/52 aka AC-3 aka Dolby Digital stream, 48 kHz,, complete main (CM) 3 front/2 rear, LFE on,, 448 kbit/s not Dolby Surround encoded',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:13'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('dcfcf6ab-9941-4f9e-af60-1e3298b18f64','a3797587-2fde-418a-a73c-62541ca30275','audio/x-wave',NULL,'FileIDsByFitsJhoveMimeType','1.5','2012-10-26 18:38:16'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('ddd17cc4-0e64-4c74-8135-1abb870cb9fd','badbed99-3113-45e7-bf87-40bf5354f88d','wma',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:30'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('dde8ed0a-8f39-4b2e-b7f2-cc87532067ef','c687dcf9-2069-4027-8c00-98f4b66fc2e2','rtf',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:31'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('de6ab06e-ba9d-42e7-a132-bfe164f936b3','bff92855-162c-4d4e-abb3-0db3388cf7ae','mbox',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:31'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('df1c13cd-14c3-4462-ad59-6652d6f9307d','931ba3fb-e82b-467a-a349-0320feac9a97','application/vnd.ms-asf',NULL,'FileIDsByFitsDROIDMimeType','3.0','2012-10-26 18:38:07'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('df64e500-ed0e-4b4f-9960-b1a7320b7eae','73d4a167-f8c1-4466-8f1e-10ce9ab0851f','RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 44100 Hz',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:09'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('e0275ab2-c7f1-41cb-9705-80cd6150054a','67621d17-25ea-4cef-863d-1431b3946640','jp2',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:31'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('e03def2e-7468-41ac-9bb4-b854654869c2','573c6a20-1076-4234-a728-0bce8405f097','Advanced Systems Format',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:13'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('e0c8fbcf-e938-4cd0-a7c8-ab2816956ec3','b50f44c8-1d3d-4d0b-b17d-9ab0005ee224','Canon CR2 raw image data, version 2.0',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:09'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('e29774f1-505e-4af6-a795-ec7d8bd96352','114db91c-503f-43c2-a83e-c2de6b817e47','fmt/48',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:06'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('e2f7fe17-acd1-448f-8bc7-a7a8417e13ed','07cc11b2-5316-4648-a1fb-71d28d9e2200','text/html',NULL,'FileIDsByFitsJhoveMimeType','1.5','2012-10-26 18:38:16'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('e32a67c3-46db-49a8-9ce0-9a1023ad6fa8','ee907131-8b73-4dab-9978-97fa820b01fe','png',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:31'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('e3415c88-e712-4ce1-bda4-91ff3aa4c2a2','180a7231-0444-44c9-8371-81825a2be339','image/x-raw',NULL,'FileIDsByFitsFitsMimetype','0.6.1','2012-10-26 18:38:15'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('e4ea5231-1faf-457f-b77d-f543268ad414','3ffcbbac-7b49-433b-8ffa-275ff81aba00','TIFF image data, big-endian',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:09'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('e54d00e9-a0cf-43a2-9a20-6a071bb4457d','c02e25ee-16f0-4020-80f7-8c378c398dc4','fmt/122',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:21'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('e5d84aaa-c4a5-402c-905b-e054c5eeedff','aa9e07d4-53ce-45c0-b72f-dfbbcb40829f','mpg',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:31'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('e67fa329-a2cd-493c-8085-8d0167791231','62ad9422-842f-437e-b388-620abbbfe876','Encapsulated PostScript File Format',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:13'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('e701b402-7c1f-47a2-aa45-4261eb67d888','0d1861e3-823d-4508-8de4-26bae086efb2','image/jpeg',NULL,'FileIDsByFitsJhoveMimeType','1.5','2012-10-26 18:38:16'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('e72bcaa6-647f-47b0-bdd9-107a3db35675','82f879a7-fdda-4b3f-a79f-55c1605a85ce','image/jpeg',NULL,'FileIDsByFitsFitsMimetype','0.6.1','2012-10-26 18:38:15'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('e8399bd8-9e6e-418b-a969-5fe431207bdb','b47ed36b-9e71-4516-ba3a-cb4c91718d8c','JPEG 2000',NULL,'FileIDsByFitsJhoveFormat','1.5','2012-10-26 18:38:16'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('e84a052f-da5a-47f2-8a64-242c1fbbc8df','3840a1dc-df0f-4a41-a3df-6eb612491571','PDF document, version 1.6',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:09'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('e88430d4-6407-4e91-ae1a-7108c57769a0','a30af6e0-195d-46a8-a46a-cc1682d04896','image/tiff',NULL,'FileIDsByFitsJhoveMimeType','1.5','2012-10-26 18:38:16'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('ea00dd73-206b-4f28-a76f-1ef8e5b32c15','31a79d37-ac13-4d6f-ba7d-49c9493959c9','fmt/152',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:20'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('ea902620-31ff-4379-80a2-b1afeb466b66','dee6f452-c658-46e1-9fbc-f3dd3727479c','docx',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:31'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('ec157914-e2bb-40f9-8968-f164e363ca54','bc9e29c0-cf88-497c-a9da-76956e4dc08e','fmt/199',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:17'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('ec17c792-4490-4d6a-a4b1-9c26d05126fe','08255d3a-bd85-434e-97a8-14f98b0c4ec8','data',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:09'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('ecb48bda-53e6-407c-8e78-dbddbd60ae8e','84c9fb23-9a6c-4fad-832e-0cc3de838d70','video/x-flv',NULL,'FileIDsByFitsFitsMimetype','0.6.1','2012-10-26 18:38:15'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('ed10d0c0-4571-477b-be69-01a87770e299','1d31b54e-1745-4b37-9468-d35e8e317d05','PNG image data, 757 x 957, 8-bit/color RGB, non-interlaced',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:09'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('ed88fae6-cdc4-4eaa-9cfa-2de614257b1e','2bb14a8d-7eac-4c93-9060-726b4acefbc9','video/quicktime',NULL,'FileIDsByFitsFitsMimetype','0.6.1','2012-10-26 18:38:15'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('edec2684-c9bd-4953-ab98-d8bb599b53ec','1d21c442-22b6-490d-b84a-07311da373c1','fmt/276',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:25'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('ee1c53a2-2441-4772-8cfb-bc728ba60640','a974079d-0865-49ef-afd8-0ec91174d323','x-fmt/394',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:14'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('ee41d139-b990-4804-bb2d-3d59cdca7430','473e1574-954b-4b54-a641-8dda3659ddc1','fmt/179',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:16'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('ee8f4a3a-ed87-4340-ae09-f8c22e3f98d2','bc0a4930-5a62-4e38-92ae-c7b0b024fecd','log',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:31'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('eedef6be-7192-4944-99fd-c3d4ce407438','4bcc5156-f3c7-4a5f-a99d-006eb61c4ba1','(Corel/WP)',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:13'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('f090f89a-9d8d-45ae-9600-79ba554fd79e','aed7e281-17ad-4834-aa9e-96fdc19ea2f1','Hypertext Markup Language',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:13'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('f0aaaa49-50ed-44d0-8bc2-f825ac2319ad','9796ae62-3ee9-445c-a7d6-867fa5fae36d','mpeg',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:31'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('f2060591-d7f5-46ad-99a4-9faa80448f13','fb06ea33-20d5-4a3b-96fe-a7f654e63c03','audio/x-flac',NULL,'FileIDsByFitsFitsMimetype','0.6.1','2012-10-26 18:38:15'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('f39b2933-253f-4df9-a2d9-843f2171d706','9ff3de86-38cd-4c4a-816d-048f95ec4f51','mkv',NULL,'FileIDsByExtension',NULL,'2012-10-26 21:29:31'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('f3bda0f0-e89d-4fdf-b489-9fa10f2c1e81','b43d2871-487f-4d31-aaa1-e9bea8dd86fa','fmt/355',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:29'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('f40a1fdc-b317-490c-9041-f26fa46f628a','16d79ccc-4f77-44d7-8b25-054915b289c5','fmt/53',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:06'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('f507b1b5-e73f-449d-8e4f-d3ca83836433','1d283460-e24c-4cbb-8476-2a66df560456','application/octet-stream',NULL,'FileIDsByFitsFileUtilityMimetype','5.09','2012-10-26 18:38:10'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('f520a00e-e7df-4198-8754-6db5dc4b26e3','27f6b2b1-0c93-4b79-9f2e-7f10639d8987','application/msword',NULL,'FileIDsByFitsFitsMimetype','0.6.1','2012-10-26 18:38:15'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('f530f208-979c-443f-8238-ebe5db677e79','d6d087d6-ace3-49ad-882d-67267cd29721','fmt/132',NULL,'FITS DROID PUID','3.0','2012-10-26 18:38:06'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('f5b78a9e-e9ef-4a63-9f4f-21684a582700','00ee1251-c1ec-49cf-95e7-f0c037d23f43','fmt/419',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:30'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('f6533f8b-420c-4ffb-b0e0-33148e5d28dc','66ff18ac-f825-49be-8b4f-d48ead99278a','Microsoft Word 2007+',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:09'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('f65b9fc0-c3bf-45bd-bd11-1bcd4fbcd06c','f869b28f-c712-48b5-b095-27dc19c94d09','video/x-ms-wmv',NULL,'FileIDsByFitsFitsMimetype','0.6.1','2012-10-26 18:38:15'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('f6db522b-a24c-40a1-a024-d8dcfa1b24da','a3698ee9-8770-41d4-b4a2-c8cbafb972bc','fmt/42',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:15'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('f7df1f58-8879-4339-a73c-9f79e01a700e','8a0b7119-633e-4f74-a499-8b5535158860','image/x-olympus-orf',NULL,'FileIDsByFitsFileUtilityMimetype','5.09','2012-10-26 18:38:10'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('f865aaaf-e488-4a65-a0d2-b565360793ad','e5b5b610-e9dd-471f-b2c9-08455a23ddfe','application/pdf',NULL,'FileIDsByFitsJhoveMimeType','1.5','2012-10-26 18:38:16'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('f94c9682-b329-4c98-90b3-02f49966c809','0d2065a9-dce6-41d9-8488-e71063bb0e0e','fmt/147',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:28'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('f9a95f1c-b780-46fc-96fa-8d84b1f87850','57eeece7-6b2a-4dad-9684-b05c96a57988','GIF',NULL,'FileIDsByFitsJhoveFormat','1.5','2012-10-26 18:38:16'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('f9eeaece-f5d0-47e6-85fb-c3902b77dfd5','7d02f6c1-eab0-418a-a633-fba5abce7f8c','fmt/136',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:17'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('fa646395-1abb-473b-8e9d-9f138217a0e5','bd4305e4-73dc-41e8-a63c-11dabe86bad4','text/html',NULL,'FileIDsByFitsFitsMimetype','0.6.1','2012-10-26 18:38:15'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('fda218b4-5a96-49dc-9385-7a149516ceac','8d8ad28c-4bf2-4258-a7f1-d2c04df7b125','JPEG 2000 image data',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:09'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('fe009c40-6cb8-44d2-a23b-40346526335c','1887c956-1e50-4bae-8cb5-3a5a68d2ef80','video/quicktime',NULL,'FileIDsByFitsFfidentMimetype','0.2','2012-10-26 18:38:07'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('fe2d7af4-2753-4a35-ba32-9bacc580c3b5','47cd293b-5789-4084-8e9b-6d0404e15a77','fmt/420',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:30'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('fe74de1e-1787-4429-beee-77d3873ff959','23e376ee-554b-4ac0-b34a-86031f77e526','audio/mpeg',NULL,'FileIDsByFitsFfidentMimetype','0.2','2012-10-26 18:38:07'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('fee3875c-d933-4311-82c1-f891caaaa0e9','1ded295a-3065-4da7-8ba7-42edef36a1db','Windows Media Video',NULL,'FileIDsByFitsFitsFormat','0.6.1','2012-10-26 18:38:13'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('ff734dca-1810-41c1-8240-6ae7774b2f9e','4690e672-6b5f-42ac-9cf8-d0a3bafeeaa9','JPEG image data, JFIF standard 1.01',NULL,'FileIDsByFitsFileUtilityFormat','5.09','2012-10-26 18:38:09'); -INSERT INTO `FileIDsBySingleID` (`pk`, `fileID`, `id`, `replaces`, `tool`, `toolVersion`, `lastModified`) VALUES ('ffabb349-cd89-4d3d-917f-dd18185e35c5','d3e84d02-ec80-459d-bba2-2517d9732c3b','fmt/341',NULL,'FITS DROID PUID','3.0','2012-11-09 23:17:17'); -/*!40000 ALTER TABLE `FileIDsBySingleID` ENABLE KEYS */; -set FOREIGN_KEY_CHECKS=1; -UNLOCK TABLES; - - -/* Task #1935 -Remove default access normalization for pptx */ -INSERT INTO CommandRelationship (pk, commandClassification, command, fileID, enabled, replaces, lastModified) -VALUES ('38099d05-afa7-4fb2-9257-3e158388b529', '3141bc6f-7f77-4809-9244-116b235e7330', '53d34372-8805-4adf-b940-6c05b835a94f', '99c1ab3a-dc50-4186-8828-df989f8d3d50', FALSE, '8077515b-71dd-4741-9e57-34a49a647abd', NOW()); - - -/*Bug #4825 -Remove command relationships for non positive file id matches -https://projects.artefactual.com/issues/4825*/ -DELETE FROM CommandRelationship USING CommandRelationship JOIN FileID ON CommandRelationship.fileID = FileID.pk WHERE FileID.description = 'application/octet-stream' OR FileID.description = 'bytestream' OR FileID.description='data'; diff --git a/src/dashboard/src/fpr/south_migrations/recreateData.sh b/src/dashboard/src/fpr/south_migrations/recreateData.sh deleted file mode 100755 index 5f76356c60..0000000000 --- a/src/dashboard/src/fpr/south_migrations/recreateData.sh +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/bash - -# This file is part of Archivematica. -# -# Copyright 2010-2013 Artefactual Systems Inc. -# -# Archivematica is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Archivematica is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Archivematica. If not, see . - - -database="$FPR_DB_NAME" -origDir="`pwd`" -currentDir="$(dirname $0)" -username="$FPR_DB_USER" -dbpassword="$FPR_DB_PASSWORD" -dbhost="$FPR_DB_HOST" - -if [ ! -z "$dbpassword" ] ; then - dbpassword="-p${dbpassword}" -else - dbpassword="" -fi - -cd "$currentDir" -set +e -echo "Removing existing entries" -mysql $dbhost -u $username "${dbpassword}" --execute="DELETE FROM Command;" $database -mysql $dbhost -u $username "${dbpassword}" --execute="DELETE FROM CommandClassification;" $database -mysql $dbhost -u $username "${dbpassword}" --execute="DELETE FROM CommandRelationship;" $database -mysql $dbhost -u $username "${dbpassword}" --execute="DELETE FROM CommandType;" $database -#mysql $dbhost -u $username "${dbpassword}" --execute="DELETE FROM CommandsSupportedBy;" $database -#mysql $dbhost -u $username "${dbpassword}" --execute="DELETE FROM DefaultCommandsForClassification;" $database -mysql $dbhost -u $username "${dbpassword}" --execute="DELETE FROM FileID;" $database -#mysql $dbhost -u $username "${dbpassword}" --execute="DELETE FROM FileIDGroupMember;" $database -mysql $dbhost -u $username "${dbpassword}" --execute="DELETE FROM FileIDType;" $database -mysql $dbhost -u $username "${dbpassword}" --execute="DELETE FROM FileIDsBySingleID;" $database -#mysql $dbhost -u $username "${dbpassword}" --execute="DELETE FROM $database.Group;" $database -#mysql $dbhost -u $username "${dbpassword}" --execute="DELETE FROM SubGroup;" $database -set -e -mysql $dbhost -u $username "${dbpassword}" --execute="source ./rawdump.sql" $database - -cd "$origDir" -dbpassword="" - From 68c04d71a4011c53e731203884cff3aa7d71d5fe Mon Sep 17 00:00:00 2001 From: Douglas Cerna Date: Fri, 7 Mar 2025 09:15:56 -0600 Subject: [PATCH 16/99] Upgrade dependencies * Upgrade pre-commit dependencies * Upgrade Python requirements * Use latest version of Selenium Manager to download browsers * Upgrade frontend dev dependencies * Update git submodules * Run AMAUATs black-box tag in Firefox --- .github/workflows/acceptance-test.yml | 4 + .pre-commit-config.yaml | 2 +- hack/Dockerfile | 3 +- .../submodules/archivematica-acceptance-tests | 2 +- hack/submodules/archivematica-storage-service | 2 +- requirements-dev.txt | 142 +- requirements.txt | 10 +- src/dashboard/frontend/package-lock.json | 1517 ++++++++--------- src/dashboard/frontend/package.json | 12 +- 9 files changed, 823 insertions(+), 871 deletions(-) diff --git a/.github/workflows/acceptance-test.yml b/.github/workflows/acceptance-test.yml index bf26f46b71..d244781deb 100644 --- a/.github/workflows/acceptance-test.yml +++ b/.github/workflows/acceptance-test.yml @@ -32,6 +32,10 @@ jobs: - "uuids-dirs" browser: - "Firefox" + - "Chrome" + exclude: + - tag: "black-box" + browser: "Chrome" steps: - name: "Check out repository" if: "${{ github.event_name != 'workflow_dispatch' }}" diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 23df480564..1567707df3 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -10,7 +10,7 @@ repos: src/(MCPClient/MCPServer|dashboard)/install/.*\.json ) - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.9.6 + rev: v0.9.9 hooks: - id: ruff args: [--fix, --exit-non-zero-on-fix] diff --git a/hack/Dockerfile b/hack/Dockerfile index 76d5556198..ae98ab371a 100644 --- a/hack/Dockerfile +++ b/hack/Dockerfile @@ -101,7 +101,8 @@ RUN set -ex \ && SELENIUM_CACHE=${SELENIUM_DIR}/cache \ && SELENIUM_BIN=${SELENIUM_DIR}/bin \ && mkdir -p $SELENIUM_CACHE $SELENIUM_BIN \ - && curl -o $SELENIUM_BIN/selenium-manager -L https://github.com/SeleniumHQ/selenium/raw/selenium-4.16.0/common/manager/linux/selenium-manager \ + && SELENIUM_MANAGER_DOWNLOAD_URL=$(curl -sL -o /dev/null -w '%{url_effective}' https://github.com/SeleniumHQ/selenium_manager_artifacts/releases/latest | sed -e 's|/tag/\(.*\)|/download/\1/selenium-manager-linux|g') \ + && curl -o $SELENIUM_BIN/selenium-manager -L $SELENIUM_MANAGER_DOWNLOAD_URL \ && chmod +x $SELENIUM_BIN/selenium-manager \ && CHROME_OUTPUT=$($SELENIUM_BIN/selenium-manager --cache-path $SELENIUM_CACHE --browser chrome --output JSON) \ && FIREFOX_OUTPUT=$($SELENIUM_BIN/selenium-manager --cache-path $SELENIUM_CACHE --browser firefox --output JSON) \ diff --git a/hack/submodules/archivematica-acceptance-tests b/hack/submodules/archivematica-acceptance-tests index 696271c293..1aea2a7320 160000 --- a/hack/submodules/archivematica-acceptance-tests +++ b/hack/submodules/archivematica-acceptance-tests @@ -1 +1 @@ -Subproject commit 696271c293e23cbd74d483ce34371cf8cd1214ec +Subproject commit 1aea2a7320f1c24dca29c6a051a30433544ecb15 diff --git a/hack/submodules/archivematica-storage-service b/hack/submodules/archivematica-storage-service index 8e4522299c..5650a38ee3 160000 --- a/hack/submodules/archivematica-storage-service +++ b/hack/submodules/archivematica-storage-service @@ -1 +1 @@ -Subproject commit 8e4522299c11bae92901ed09addbd046db6be35a +Subproject commit 5650a38ee3bdfeb4bd32785381ba4863ad5b92e7 diff --git a/requirements-dev.txt b/requirements-dev.txt index 87b4849ead..fdceca4be2 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -5,44 +5,44 @@ # pip-compile --allow-unsafe --output-file=requirements-dev.txt requirements-dev.in # agentarchives==0.10.0 - # via -r requirements.txt + # via -r /src/requirements.txt amclient==1.4.0 - # via -r requirements.txt + # via -r /src/requirements.txt ammcpc==0.3.0 - # via -r requirements.txt + # via -r /src/requirements.txt asgiref==3.8.1 # via - # -r requirements.txt + # -r /src/requirements.txt # django attrs==25.1.0 # via - # -r requirements.txt + # -r /src/requirements.txt # jsonschema # referencing bagit @ git+https://github.com/artefactual-labs/bagit-python.git@902051d8410219f6c5f4ce6d43e5b272cf29e89b - # via -r requirements.txt + # via -r /src/requirements.txt brotli==1.1.0 - # via -r requirements.txt + # via -r /src/requirements.txt build==1.2.2.post1 # via pip-tools -cachetools==5.5.1 +cachetools==5.5.2 # via tox certifi==2025.1.31 # via - # -r requirements.txt + # -r /src/requirements.txt # requests cffi==1.17.1 # via - # -r requirements.txt + # -r /src/requirements.txt # cryptography chardet==5.2.0 # via tox charset-normalizer==3.4.1 # via - # -r requirements.txt + # -r /src/requirements.txt # requests clamd==1.0.2 - # via -r requirements.txt + # via -r /src/requirements.txt click==8.1.8 # via pip-tools colorama==0.4.6 @@ -51,38 +51,38 @@ coverage[toml]==7.6.12 # via # -r requirements-dev.in # pytest-cov -cryptography==44.0.1 +cryptography==44.0.2 # via - # -r requirements.txt + # -r /src/requirements.txt # josepy # mozilla-django-oidc distlib==0.3.9 # via virtualenv -django==4.2.19 +django==4.2.20 # via - # -r requirements.txt + # -r /src/requirements.txt # django-auth-ldap # django-cas-ng # django-csp # mozilla-django-oidc django-auth-ldap==5.1.0 - # via -r requirements.txt + # via -r /src/requirements.txt django-autoslug==1.9.9 - # via -r requirements.txt + # via -r /src/requirements.txt django-cas-ng==5.0.1 - # via -r requirements.txt + # via -r /src/requirements.txt django-csp==3.8 - # via -r requirements.txt + # via -r /src/requirements.txt django-forms-bootstrap==3.1.0 - # via -r requirements.txt + # via -r /src/requirements.txt django-prometheus==2.3.1 - # via -r requirements.txt + # via -r /src/requirements.txt django-shibboleth-remoteuser @ git+https://github.com/artefactual-labs/django-shibboleth-remoteuser.git@f08a7864d6130416c352981ccf318fff0fd5be58 - # via -r requirements.txt -django-tastypie==0.15.0 - # via -r requirements.txt + # via -r /src/requirements.txt +django-tastypie==0.15.1 + # via -r /src/requirements.txt elasticsearch==6.8.2 - # via -r requirements.txt + # via -r /src/requirements.txt exceptiongroup==1.2.2 # via pytest filelock==3.17.0 @@ -92,72 +92,72 @@ filelock==3.17.0 funcparserlib==2.0.0a0 # via mockldap gearman3 @ git+https://github.com/artefactual-labs/python-gearman.git@b68efc868c7a494dd6a2d2e820fb098a6da9f797 - # via -r requirements.txt + # via -r /src/requirements.txt gevent==24.11.1 - # via -r requirements.txt + # via -r /src/requirements.txt greenlet==3.1.1 # via - # -r requirements.txt + # -r /src/requirements.txt # gevent # playwright gunicorn==23.0.0 - # via -r requirements.txt + # via -r /src/requirements.txt idna==3.10 # via - # -r requirements.txt + # -r /src/requirements.txt # requests importlib-metadata==8.6.1 # via - # -r requirements.txt + # -r /src/requirements.txt # build # pytest-randomly importlib-resources==6.5.2 # via - # -r requirements.txt + # -r /src/requirements.txt # opf-fido iniconfig==2.0.0 # via pytest inotify-simple==1.3.5 - # via -r requirements.txt + # via -r /src/requirements.txt josepy==2.0.0 # via - # -r requirements.txt + # -r /src/requirements.txt # mozilla-django-oidc jsonschema==4.23.0 - # via -r requirements.txt + # via -r /src/requirements.txt jsonschema-specifications==2024.10.1 # via - # -r requirements.txt + # -r /src/requirements.txt # jsonschema lazy-paged-sequence==0.3 - # via -r requirements.txt + # via -r /src/requirements.txt lxml==5.3.1 # via - # -r requirements.txt + # -r /src/requirements.txt # ammcpc # metsrw # python-cas metsrw==0.6.1 - # via -r requirements.txt + # via -r /src/requirements.txt mockldap @ git+https://github.com/artefactual-labs/mockldap@v0.3.1 # via -r requirements-dev.in mozilla-django-oidc==4.0.1 - # via -r requirements.txt + # via -r /src/requirements.txt mysqlclient==2.2.7 # via - # -r requirements.txt + # -r /src/requirements.txt # agentarchives olefile==0.47 # via - # -r requirements.txt + # -r /src/requirements.txt # opf-fido opf-fido @ git+https://github.com/artefactual-labs/fido.git@564ceb8018a8650fe931cf20e6780ee008e60fca - # via -r requirements.txt + # via -r /src/requirements.txt orjson==3.10.15 - # via -r requirements.txt + # via -r /src/requirements.txt packaging==24.2 # via - # -r requirements.txt + # -r /src/requirements.txt # build # gunicorn # pyproject-api @@ -179,20 +179,20 @@ pluggy==1.5.0 # tox prometheus-client==0.21.1 # via - # -r requirements.txt + # -r /src/requirements.txt # django-prometheus pyasn1==0.6.1 # via - # -r requirements.txt + # -r /src/requirements.txt # pyasn1-modules # python-ldap pyasn1-modules==0.4.1 # via - # -r requirements.txt + # -r /src/requirements.txt # python-ldap pycparser==2.22 # via - # -r requirements.txt + # -r /src/requirements.txt # cffi pyee==12.0.0 # via playwright @@ -202,7 +202,7 @@ pyproject-hooks==1.2.0 # via # build # pip-tools -pytest==8.3.4 +pytest==8.3.5 # via # -r requirements-dev.in # pytest-base-url @@ -222,51 +222,51 @@ pytest-randomly==3.16.0 # via -r requirements-dev.in python-cas==1.6.0 # via - # -r requirements.txt + # -r /src/requirements.txt # django-cas-ng python-dateutil==2.9.0.post0 # via - # -r requirements.txt + # -r /src/requirements.txt # django-tastypie python-ldap==3.4.4 # via - # -r requirements.txt + # -r /src/requirements.txt # django-auth-ldap # mockldap python-mimeparse==2.0.0 # via - # -r requirements.txt + # -r /src/requirements.txt # django-tastypie python-slugify==8.0.4 # via pytest-playwright referencing==0.36.2 # via - # -r requirements.txt + # -r /src/requirements.txt # jsonschema # jsonschema-specifications requests==2.32.3 # via - # -r requirements.txt + # -r /src/requirements.txt # agentarchives # amclient # mozilla-django-oidc # opf-fido # pytest-base-url # python-cas -rpds-py==0.22.3 +rpds-py==0.23.1 # via - # -r requirements.txt + # -r /src/requirements.txt # jsonschema # referencing six==1.17.0 # via - # -r requirements.txt + # -r /src/requirements.txt # opf-fido # python-cas # python-dateutil sqlparse==0.5.3 # via - # -r requirements.txt + # -r /src/requirements.txt # django text-unidecode==1.3 # via python-slugify @@ -282,45 +282,45 @@ tox==4.24.1 # via -r requirements-dev.in typing-extensions==4.12.2 # via - # -r requirements.txt + # -r /src/requirements.txt # asgiref # pyee # referencing # tox unidecode==1.3.8 - # via -r requirements.txt + # via -r /src/requirements.txt urllib3==2.3.0 # via - # -r requirements.txt + # -r /src/requirements.txt # amclient # elasticsearch # requests -virtualenv==20.29.2 +virtualenv==20.29.3 # via tox wheel==0.45.1 # via pip-tools whitenoise==6.9.0 - # via -r requirements.txt + # via -r /src/requirements.txt zipp==3.21.0 # via - # -r requirements.txt + # -r /src/requirements.txt # importlib-metadata # importlib-resources zope-event==5.0 # via - # -r requirements.txt + # -r /src/requirements.txt # gevent zope-interface==7.2 # via - # -r requirements.txt + # -r /src/requirements.txt # gevent # The following packages are considered to be unsafe in a requirements file: pip==25.0.1 # via pip-tools -setuptools==75.8.0 +setuptools==75.8.2 # via - # -r requirements.txt + # -r /src/requirements.txt # pip-tools # zope-event # zope-interface diff --git a/requirements.txt b/requirements.txt index b93974c158..8e1be7914a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -28,11 +28,11 @@ charset-normalizer==3.4.1 # via requests clamd==1.0.2 # via -r requirements.in -cryptography==44.0.1 +cryptography==44.0.2 # via # josepy # mozilla-django-oidc -django==4.2.19 +django==4.2.20 # via # -r requirements.in # django-auth-ldap @@ -53,7 +53,7 @@ django-prometheus==2.3.1 # via -r requirements.in django-shibboleth-remoteuser @ git+https://github.com/artefactual-labs/django-shibboleth-remoteuser.git@f08a7864d6130416c352981ccf318fff0fd5be58 # via -r requirements.in -django-tastypie==0.15.0 +django-tastypie==0.15.1 # via -r requirements.in elasticsearch==6.8.2 # via -r requirements.in @@ -137,7 +137,7 @@ requests==2.32.3 # mozilla-django-oidc # opf-fido # python-cas -rpds-py==0.22.3 +rpds-py==0.23.1 # via # jsonschema # referencing @@ -171,7 +171,7 @@ zope-interface==7.2 # via gevent # The following packages are considered to be unsafe in a requirements file: -setuptools==75.8.0 +setuptools==75.8.2 # via # zope-event # zope-interface diff --git a/src/dashboard/frontend/package-lock.json b/src/dashboard/frontend/package-lock.json index 16733f5aa5..9c2ed2947a 100644 --- a/src/dashboard/frontend/package-lock.json +++ b/src/dashboard/frontend/package-lock.json @@ -27,13 +27,13 @@ "restangular": "^1.6.1" }, "devDependencies": { - "@babel/core": "^7.26.8", + "@babel/core": "^7.26.9", "@babel/plugin-transform-modules-commonjs": "^7.26.3", "@babel/plugin-transform-object-assign": "^7.25.9", - "@babel/plugin-transform-runtime": "^7.26.8", - "@babel/preset-env": "^7.26.8", + "@babel/plugin-transform-runtime": "^7.26.9", + "@babel/preset-env": "^7.26.9", "angular-gettext-cli": "^1.2.0", - "babel-loader": "^9.2.1", + "babel-loader": "^10.0.0", "css-loader": "^7.1.2", "html-loader": "^5.1.0", "http-server": "^14.1.1", @@ -46,10 +46,10 @@ "karma-junit-reporter": "^2.0.1", "karma-webpack": "^5.0.1", "path-browserify": "^1.0.1", - "postcss": "^8.5.2", + "postcss": "^8.5.3", "shelljs": "^0.8.5", "style-loader": "^4.0.0", - "webpack": "^5.97.1", + "webpack": "^5.98.0", "webpack-cli": "^6.0.1" } }, @@ -93,23 +93,22 @@ } }, "node_modules/@babel/core": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.8.tgz", - "integrity": "sha512-l+lkXCHS6tQEc5oUpK28xBOZ6+HwaH7YwoYQbLFiYb4nS2/l1tKnZEtEWkD0GuiYdvArf9qBS0XlQGXzPMsNqQ==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.9.tgz", + "integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.8", + "@babel/generator": "^7.26.9", "@babel/helper-compilation-targets": "^7.26.5", "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.7", - "@babel/parser": "^7.26.8", - "@babel/template": "^7.26.8", - "@babel/traverse": "^7.26.8", - "@babel/types": "^7.26.8", - "@types/gensync": "^1.0.0", + "@babel/helpers": "^7.26.9", + "@babel/parser": "^7.26.9", + "@babel/template": "^7.26.9", + "@babel/traverse": "^7.26.9", + "@babel/types": "^7.26.9", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -125,14 +124,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.8.tgz", - "integrity": "sha512-ef383X5++iZHWAXX0SXQR6ZyQhw/0KtTkrTz61WXRhFM6dhpHulO/RJz79L8S6ugZHJkOOkUrUdxgdF2YiPFnA==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.9.tgz", + "integrity": "sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.26.8", - "@babel/types": "^7.26.8", + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -172,18 +171,18 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", - "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.26.9.tgz", + "integrity": "sha512-ubbUqCofvxPRurw5L8WTsCLSkQiVpov4Qx0WMA+jUN+nXBK8ADPlJO1grkFw5CWKC5+sZSOfuGMdX1aI1iT9Sg==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "@babel/helper-member-expression-to-functions": "^7.25.9", "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9", + "@babel/helper-replace-supers": "^7.26.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/traverse": "^7.25.9", + "@babel/traverse": "^7.26.9", "semver": "^6.3.1" }, "engines": { @@ -393,27 +392,27 @@ } }, "node_modules/@babel/helpers": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.7.tgz", - "integrity": "sha512-8NHiL98vsi0mbPQmYAGWwfcFaOy4j2HY49fXJCfuDcdE7fMIsH9a7GdaeXpIBsbT7307WU8KCMp5pUVDNL4f9A==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.9.tgz", + "integrity": "sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.7" + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.8.tgz", - "integrity": "sha512-TZIQ25pkSoaKEYYaHbbxkfL36GNsQ6iFiBbeuzAkLnXayKR1yP1zFe+NxuZWWsUyvt8icPU9CCq0sgWGXR1GEw==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.9.tgz", + "integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.26.8" + "@babel/types": "^7.26.9" }, "bin": { "parser": "bin/babel-parser.js" @@ -839,13 +838,13 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz", - "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.26.9.tgz", + "integrity": "sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { @@ -1274,9 +1273,9 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.26.8.tgz", - "integrity": "sha512-H0jlQxFMI0Q8SyGPsj9pO3ygVQRxPkIGytsL3m1Zqca8KrCPpMlvh+e2dxknqdfS8LFwBw+PpiYPD9qy/FPQpA==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.26.9.tgz", + "integrity": "sha512-Jf+8y9wXQbbxvVYTM8gO5oEF2POdNji0NMltEkG7FtmzD9PVz7/lxpqSdTvwsjTMU5HIHuDVNf2SOxLkWi+wPQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1443,9 +1442,9 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.8.tgz", - "integrity": "sha512-um7Sy+2THd697S4zJEfv/U5MHGJzkN2xhtsR3T/SWRbVSic62nbISh51VVfU9JiO/L/Z97QczHTaFVkOU8IzNg==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.9.tgz", + "integrity": "sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1478,7 +1477,7 @@ "@babel/plugin-transform-dynamic-import": "^7.25.9", "@babel/plugin-transform-exponentiation-operator": "^7.26.3", "@babel/plugin-transform-export-namespace-from": "^7.25.9", - "@babel/plugin-transform-for-of": "^7.25.9", + "@babel/plugin-transform-for-of": "^7.26.9", "@babel/plugin-transform-function-name": "^7.25.9", "@babel/plugin-transform-json-strings": "^7.25.9", "@babel/plugin-transform-literals": "^7.25.9", @@ -1556,9 +1555,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.7.tgz", - "integrity": "sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.9.tgz", + "integrity": "sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==", "dev": true, "license": "MIT", "dependencies": { @@ -1569,32 +1568,32 @@ } }, "node_modules/@babel/template": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.8.tgz", - "integrity": "sha512-iNKaX3ZebKIsCvJ+0jd6embf+Aulaa3vNBqZ41kM7iTWjx5qzWKXGHiJUW3+nTpQ18SG11hdF8OAzKrpXkb96Q==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz", + "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", - "@babel/parser": "^7.26.8", - "@babel/types": "^7.26.8" + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.8.tgz", - "integrity": "sha512-nic9tRkjYH0oB2dzr/JoGIm+4Q6SuYeLEiIiZDwBscRMYFJ+tMAz98fuel9ZnbXViA2I0HVSSRRK8DW5fjXStA==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.9.tgz", + "integrity": "sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.8", - "@babel/parser": "^7.26.8", - "@babel/template": "^7.26.8", - "@babel/types": "^7.26.8", + "@babel/generator": "^7.26.9", + "@babel/parser": "^7.26.9", + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.9", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1603,9 +1602,9 @@ } }, "node_modules/@babel/types": { - "version": "7.26.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.8.tgz", - "integrity": "sha512-eUuWapzEGWFEpHFxgEaBG8e3n6S8L3MSu0oda755rOfabWPnh0Our1AozNFVUxGFIhbKgd1ksprsoDGMinTOTA==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.9.tgz", + "integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==", "dev": true, "license": "MIT", "dependencies": { @@ -1637,9 +1636,9 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", "dev": true, "license": "MIT", "dependencies": { @@ -1707,13 +1706,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/cors": { "version": "2.8.17", "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", @@ -1753,13 +1745,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/gensync": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@types/gensync/-/gensync-1.0.4.tgz", - "integrity": "sha512-C3YYeRQWp2fmq9OryX+FoDy8nXS6scQ7dPptD8LnFDAUNcKWJjXQKDNJD3HVm+kOUsXhTOkpi69vI4EuAr95bA==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -1768,13 +1753,13 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.5.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.5.tgz", - "integrity": "sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==", + "version": "22.13.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.9.tgz", + "integrity": "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~6.19.2" + "undici-types": "~6.20.0" } }, "node_modules/@webassemblyjs/ast": { @@ -2014,9 +1999,9 @@ } }, "node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", "dev": true, "license": "MIT", "bin": { @@ -2181,6 +2166,22 @@ "node": ">=8" } }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -2214,32 +2215,31 @@ } }, "node_modules/babel-loader": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz", - "integrity": "sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-10.0.0.tgz", + "integrity": "sha512-z8jt+EdS61AMw22nSfoNJAZ0vrtmhPRVi6ghL3rCeRZI8cdNYFiV5xeV3HbE7rlZZNmGH8BVccwWt8/ED0QOHA==", "dev": true, "license": "MIT", "dependencies": { - "find-cache-dir": "^4.0.0", - "schema-utils": "^4.0.0" + "find-up": "^5.0.0" }, "engines": { - "node": ">= 14.15.0" + "node": "^18.20.0 || ^20.10.0 || >=22.0.0" }, "peerDependencies": { "@babel/core": "^7.12.0", - "webpack": ">=5" + "webpack": ">=5.61.0" } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", - "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", + "version": "0.4.12", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz", + "integrity": "sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==", "dev": true, "license": "MIT", "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.2", + "@babel/helper-define-polyfill-provider": "^0.6.3", "semver": "^6.3.1" }, "peerDependencies": { @@ -2261,13 +2261,13 @@ } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", - "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz", + "integrity": "sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.2" + "@babel/helper-define-polyfill-provider": "^0.6.3" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -2281,8 +2281,8 @@ "license": "MIT" }, "node_modules/base64-helpers": { - "version": "0.1.2", - "resolved": "git+ssh://git@github.com/artefactual-labs/base64-helpers.git#dc7b82c3d30e30d1a218fde234feddf8619c15db", + "version": "0.1.3", + "resolved": "git+ssh://git@github.com/artefactual-labs/base64-helpers.git#ef8910fa020a732be7a5c01f05a204d956eb0f3e", "license": "AGPL-3.0" }, "node_modules/base64id": { @@ -2464,18 +2464,29 @@ "node": ">= 0.8" } }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dev": true, "license": "MIT", "dependencies": { - "es-define-property": "^1.0.0", "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { "node": ">= 0.4" @@ -2484,10 +2495,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, "node_modules/caniuse-lite": { - "version": "1.0.30001699", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001699.tgz", - "integrity": "sha512-b+uH5BakXZ9Do9iK+CkDmctUSEqZl+SP056vc5usa0PL+ev5OHw003rZXcnjNDv3L8P5j6rwT6C0BPKSikW08w==", + "version": "1.0.30001702", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001702.tgz", + "integrity": "sha512-LoPe/D7zioC0REI5W73PeR1e1MLCipRGq/VkovJnd6Df+QVqT+vT33OXCp8QUd7kA7RZrHWxb1B36OQKI/0gOA==", "dev": true, "funding": [ { @@ -2505,6 +2527,23 @@ ], "license": "CC-BY-4.0" }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/cheerio": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0.tgz", @@ -2584,6 +2623,19 @@ "node": ">=6.0" } }, + "node_modules/clean-css": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, "node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -2611,6 +2663,26 @@ "node": ">=6" } }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, "node_modules/colorette": { "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", @@ -2619,22 +2691,15 @@ "license": "MIT" }, "node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": ">=14" } }, - "node_modules/common-path-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", - "dev": true, - "license": "ISC" - }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -2703,13 +2768,13 @@ } }, "node_modules/core-js-compat": { - "version": "3.40.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.40.0.tgz", - "integrity": "sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ==", + "version": "3.41.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.41.0.tgz", + "integrity": "sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.24.3" + "browserslist": "^4.24.4" }, "funding": { "type": "opencollective", @@ -2808,9 +2873,9 @@ } }, "node_modules/css-loader/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, "license": "ISC", "bin": { @@ -2887,9 +2952,9 @@ } }, "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, "license": "MIT", "dependencies": { @@ -2904,24 +2969,6 @@ } } }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -3008,9 +3055,9 @@ } }, "node_modules/domutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", - "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -3033,25 +3080,19 @@ "tslib": "^2.0.3" } }, - "node_modules/dot-case/node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/dot-case/node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "dev": true, "license": "MIT", "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/ee-first": { @@ -3062,9 +3103,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.97", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.97.tgz", - "integrity": "sha512-HKLtaH02augM7ZOdYRuO19rWDeY+QSJ1VxnXFa/XDFLf07HvM90pALIJFgrO+UVaajI3+aJMMpojoUTLZyQ7JQ==", + "version": "1.5.113", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.113.tgz", + "integrity": "sha512-wjT2O4hX+wdWPJ76gWSkMhcHAV2PTMX+QetUCPYEdCIe+cxmgzzSSiGRCKW8nuh4mwKZlpv0xvoW7OF2X+wmHg==", "dev": true, "license": "ISC" }, @@ -3100,13 +3141,12 @@ } }, "node_modules/engine.io": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.2.tgz", - "integrity": "sha512-gmNvsYi9C8iErnZdVcJnvCpSKbWTt1E8+JZo8b+daLninywUWi5NQ5STSHZ9rFjFO7imNcvb8Pc5pe/wMR5xEw==", + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.4.tgz", + "integrity": "sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g==", "dev": true, "license": "MIT", "dependencies": { - "@types/cookie": "^0.4.1", "@types/cors": "^2.8.12", "@types/node": ">=10.0.0", "accepts": "~1.3.4", @@ -3131,10 +3171,28 @@ "node": ">=10.0.0" } }, + "node_modules/engine.io/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/enhanced-resolve": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", - "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "version": "5.18.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", + "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", "dev": true, "license": "MIT", "dependencies": { @@ -3146,13 +3204,16 @@ } }, "node_modules/ent": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.1.tgz", - "integrity": "sha512-QHuXVeZx9d+tIQAz/XztU0ZwZf2Agg9CcXcgE1rurqvdBeDBrpSwjl8/6XUqMg7tw2Y7uAdKb2sRv+bSEFqQ5A==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.2.tgz", + "integrity": "sha512-kKvD1tO6BM+oK9HzCPpUdRb4vKFQY/FPTFmurMvh6LlN68VMrdj77w8yp51/kDbpkFOS9J8w5W6zIzgM2H8/hw==", "dev": true, "license": "MIT", "dependencies": { - "punycode": "^1.4.1" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "punycode": "^1.4.1", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -3185,14 +3246,11 @@ } }, "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "dev": true, "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, "engines": { "node": ">= 0.4" } @@ -3208,12 +3266,25 @@ } }, "node_modules/es-module-lexer": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", - "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", + "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", "dev": true, "license": "MIT" }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -3319,19 +3390,22 @@ "dev": true, "license": "MIT" }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, "node_modules/fast-uri": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", - "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", "dev": true, - "license": "MIT" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" }, "node_modules/fastest-levenshtein": { "version": "1.0.16", @@ -3405,35 +3479,18 @@ "node": ">= 0.8" } }, - "node_modules/find-cache-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", - "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "common-path-prefix": "^3.0.0", - "pkg-dir": "^7.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3450,9 +3507,9 @@ } }, "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", "dev": true, "license": "ISC" }, @@ -3539,17 +3596,22 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -3558,6 +3620,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -3611,13 +3687,13 @@ } }, "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.3" + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3630,23 +3706,20 @@ "dev": true, "license": "ISC" }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=8" } }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, "license": "MIT", "engines": { @@ -3656,12 +3729,15 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, "engines": { "node": ">= 0.4" }, @@ -3761,51 +3837,6 @@ "node": "^14.13.1 || >=16.0.0" } }, - "node_modules/html-minifier-terser/node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "node_modules/html-minifier-terser/node_modules/clean-css": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", - "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "source-map": "~0.6.0" - }, - "engines": { - "node": ">= 10.0" - } - }, - "node_modules/html-minifier-terser/node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - } - }, - "node_modules/html-minifier-terser/node_modules/param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dev": true, - "license": "MIT", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, "node_modules/htmlparser2": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", @@ -3896,82 +3927,6 @@ "node": ">=12" } }, - "node_modules/http-server/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/http-server/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/http-server/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/http-server/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/http-server/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/http-server/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -4018,85 +3973,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-local/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-local/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-local/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-local/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/import-local/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/import-local/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/imports-loader": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/imports-loader/-/imports-loader-5.0.0.tgz", @@ -4161,9 +4037,9 @@ } }, "node_modules/is-core-module": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", - "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, "license": "MIT", "dependencies": { @@ -4248,6 +4124,25 @@ "node": ">=0.10.0" } }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -4313,16 +4208,6 @@ "node": ">= 10.13.0" } }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -4347,9 +4232,9 @@ "license": "MIT" }, "node_modules/jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, "license": "MIT", "bin": { @@ -4590,16 +4475,16 @@ } }, "node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^6.0.0" + "p-locate": "^5.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -4635,6 +4520,16 @@ "node": ">=8.0" } }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -4645,6 +4540,16 @@ "yallist": "^3.0.2" } }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -4751,9 +4656,9 @@ "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.9.tgz", + "integrity": "sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg==", "dev": true, "funding": [ { @@ -4786,6 +4691,17 @@ "dev": true, "license": "MIT" }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, "node_modules/node-releases": { "version": "2.0.19", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", @@ -4827,9 +4743,9 @@ } }, "node_modules/object-inspect": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true, "license": "MIT", "engines": { @@ -4873,32 +4789,32 @@ } }, "node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "license": "MIT", "dependencies": { - "yocto-queue": "^1.0.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "license": "MIT", "dependencies": { - "p-limit": "^4.0.0" + "p-limit": "^3.0.2" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -4914,27 +4830,38 @@ "node": ">=6" } }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", + "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", "dev": true, "license": "MIT", "dependencies": { - "entities": "^4.4.0" + "entities": "^4.5.0" }, "funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" } }, "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", - "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", + "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", "dev": true, "license": "MIT", "dependencies": { - "domhandler": "^5.0.2", + "domhandler": "^5.0.3", "parse5": "^7.0.0" }, "funding": { @@ -4975,27 +4902,6 @@ "tslib": "^2.0.3" } }, - "node_modules/pascal-case/node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/pascal-case/node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, - "license": "MIT", - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, "node_modules/path-browserify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", @@ -5004,13 +4910,13 @@ "license": "MIT" }, "node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=8" } }, "node_modules/path-is-absolute": { @@ -5061,21 +4967,74 @@ } }, "node_modules/pkg-dir": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", - "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "license": "MIT", "dependencies": { - "find-up": "^6.3.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=14.16" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/pofile": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pofile/-/pofile-1.0.11.tgz", @@ -5083,9 +5042,9 @@ "dev": true }, "node_modules/portfinder": { - "version": "1.0.32", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", - "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", + "version": "1.0.33", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.33.tgz", + "integrity": "sha512-+2jndHT63cL5MdQOwDm9OT2dIe11zVpjV+0GGRXdtO1wpPxv260NfVqoEXtYAi/shanmm3W4+yLduIe55ektTw==", "dev": true, "license": "MIT", "dependencies": { @@ -5108,9 +5067,9 @@ } }, "node_modules/postcss": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.2.tgz", - "integrity": "sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", "dev": true, "funding": [ { @@ -5150,14 +5109,14 @@ } }, "node_modules/postcss-modules-local-by-default": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", - "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", "dev": true, "license": "MIT", "dependencies": { "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", + "postcss-selector-parser": "^7.0.0", "postcss-value-parser": "^4.1.0" }, "engines": { @@ -5168,13 +5127,13 @@ } }, "node_modules/postcss-modules-scope": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", - "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", + "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", "dev": true, "license": "ISC", "dependencies": { - "postcss-selector-parser": "^6.0.4" + "postcss-selector-parser": "^7.0.0" }, "engines": { "node": "^10 || ^12 || >= 14" @@ -5200,9 +5159,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", - "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", "dev": true, "license": "MIT", "dependencies": { @@ -5398,8 +5357,21 @@ "dependencies": { "jsesc": "~3.0.2" }, - "bin": { - "regjsparser": "bin/parser" + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" } }, "node_modules/relateurl": { @@ -5440,19 +5412,22 @@ "license": "MIT" }, "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", + "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -5526,6 +5501,24 @@ "dev": true, "license": "MIT" }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -5534,9 +5527,9 @@ "license": "MIT" }, "node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", + "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", "dev": true, "license": "MIT", "dependencies": { @@ -5546,7 +5539,7 @@ "ajv-keywords": "^5.1.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 10.13.0" }, "funding": { "type": "opencollective", @@ -5580,24 +5573,6 @@ "randombytes": "^2.1.0" } }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -5660,16 +5635,73 @@ } }, "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.2", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -5679,9 +5711,9 @@ } }, "node_modules/socket.io": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.0.tgz", - "integrity": "sha512-8U6BEgGjQOfGz3HHTYaC/L1GaxDCJ/KM0XTkJly0EhZ5U/du9uNEZy4ZgYzEzIqlx2CMm25CrCqr1ck899eLNA==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.1.tgz", + "integrity": "sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==", "dev": true, "license": "MIT", "dependencies": { @@ -5708,6 +5740,24 @@ "ws": "~8.17.1" } }, + "node_modules/socket.io-adapter/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/socket.io-parser": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", @@ -5722,6 +5772,42 @@ "node": ">=10.0.0" } }, + "node_modules/socket.io-parser/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -5833,6 +5919,19 @@ "webpack": "^5.27.0" } }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", @@ -5857,9 +5956,9 @@ } }, "node_modules/terser": { - "version": "5.33.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.33.0.tgz", - "integrity": "sha512-JuPVaB7s1gdFKPKTelwUyRq5Sid2A3Gko2S0PncwdBq7kN9Ti9HPWDQ06MPsEDGsZeVESjKEnyGy68quBk1w6g==", + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz", + "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -5876,17 +5975,17 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.10", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", - "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "version": "5.3.14", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", + "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.20", + "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.26.0" + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" }, "engines": { "node": ">= 10.13.0" @@ -5910,59 +6009,6 @@ } } }, - "node_modules/terser-webpack-plugin/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -6004,9 +6050,9 @@ } }, "node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true, "license": "0BSD" }, @@ -6025,9 +6071,9 @@ } }, "node_modules/ua-parser-js": { - "version": "0.7.39", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.39.tgz", - "integrity": "sha512-IZ6acm6RhQHNibSt7+c09hhvsKy9WUr4DVbeq9U8o71qxyYtJpQeDxQnMrVqnIFMLcQjHO0I9wgfO2vIahht4w==", + "version": "0.7.40", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.40.tgz", + "integrity": "sha512-us1E3K+3jJppDBa3Tl0L3MOJiGhe1C6P0+nIvQAFYbxlMAx0h81eOwLmU57xgqToduDDPx3y5QsdjPfDu+FgOQ==", "dev": true, "funding": [ { @@ -6062,9 +6108,9 @@ } }, "node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", "dev": true, "license": "MIT" }, @@ -6145,9 +6191,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", - "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "dev": true, "funding": [ { @@ -6166,7 +6212,7 @@ "license": "MIT", "dependencies": { "escalade": "^3.2.0", - "picocolors": "^1.1.0" + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -6175,26 +6221,6 @@ "browserslist": ">= 4.21.0" } }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/uri-js/node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/url-join": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", @@ -6254,9 +6280,9 @@ } }, "node_modules/webpack": { - "version": "5.97.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz", - "integrity": "sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==", + "version": "5.98.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.98.0.tgz", + "integrity": "sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA==", "dev": true, "license": "MIT", "dependencies": { @@ -6278,9 +6304,9 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", + "schema-utils": "^4.3.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", + "terser-webpack-plugin": "^5.3.11", "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" }, @@ -6343,6 +6369,16 @@ } } }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/webpack-cli/node_modules/interpret": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", @@ -6401,59 +6437,6 @@ "node": ">=10.13.0" } }, - "node_modules/webpack/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/webpack/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/webpack/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/whatwg-encoding": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", @@ -6515,42 +6498,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -6637,13 +6584,13 @@ } }, "node_modules/yocto-queue": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", - "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, "license": "MIT", "engines": { - "node": ">=12.20" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" diff --git a/src/dashboard/frontend/package.json b/src/dashboard/frontend/package.json index 8f7514d8e5..3e7ab102a3 100644 --- a/src/dashboard/frontend/package.json +++ b/src/dashboard/frontend/package.json @@ -4,13 +4,13 @@ "version": "0.0.0", "description": "Dashboard components (Appraisal tab and Transfer browser) for Archivematica", "devDependencies": { - "@babel/core": "^7.26.8", + "@babel/core": "^7.26.9", "@babel/plugin-transform-modules-commonjs": "^7.26.3", "@babel/plugin-transform-object-assign": "^7.25.9", - "@babel/plugin-transform-runtime": "^7.26.8", - "@babel/preset-env": "^7.26.8", + "@babel/plugin-transform-runtime": "^7.26.9", + "@babel/preset-env": "^7.26.9", "angular-gettext-cli": "^1.2.0", - "babel-loader": "^9.2.1", + "babel-loader": "^10.0.0", "css-loader": "^7.1.2", "html-loader": "^5.1.0", "http-server": "^14.1.1", @@ -23,10 +23,10 @@ "karma-junit-reporter": "^2.0.1", "karma-webpack": "^5.0.1", "path-browserify": "^1.0.1", - "postcss": "^8.5.2", + "postcss": "^8.5.3", "shelljs": "^0.8.5", "style-loader": "^4.0.0", - "webpack": "^5.97.1", + "webpack": "^5.98.0", "webpack-cli": "^6.0.1" }, "scripts": { From c73504a02597ae286b2ff88e9c74369bf65e5671 Mon Sep 17 00:00:00 2001 From: Dhwani Patel Date: Thu, 27 Feb 2025 13:38:12 -0600 Subject: [PATCH 17/99] Update Django migration file --- hack/Dockerfile | 4 +- .../0046_update_jhove_module_validation.py | 298 ++++++++++++++++++ 2 files changed, 301 insertions(+), 1 deletion(-) create mode 100644 src/dashboard/src/fpr/migrations/0046_update_jhove_module_validation.py diff --git a/hack/Dockerfile b/hack/Dockerfile index ae98ab371a..474d4fa1b3 100644 --- a/hack/Dockerfile +++ b/hack/Dockerfile @@ -7,6 +7,7 @@ ARG NODE_VERSION=20 ARG PYENV_DIR=/pyenv ARG SELENIUM_DIR=/selenium ARG MEDIAAREA_VERSION=1.0-25 +ARG JHOVE_VERSION=1.26.1-1~22.04 # ----------------------------------------------------------------------------- @@ -162,6 +163,7 @@ ARG USER_ID=1000 ARG GROUP_ID=1000 ARG PYENV_DIR=/pyenv ARG MEDIAAREA_VERSION +ARG JHOVE_VERSION RUN set -ex \ && curl --retry 3 -fsSL https://packages.archivematica.org/1.18.x/key.asc | gpg --dearmor -o /etc/apt/keyrings/archivematica-1.18.x.gpg \ @@ -184,7 +186,7 @@ RUN set -ex \ hashdeep \ imagemagick \ inkscape \ - jhove \ + jhove=${JHOVE_VERSION} \ libffi-dev \ libimage-exiftool-perl \ libldap2-dev \ diff --git a/src/dashboard/src/fpr/migrations/0046_update_jhove_module_validation.py b/src/dashboard/src/fpr/migrations/0046_update_jhove_module_validation.py new file mode 100644 index 0000000000..36b1d9aaaa --- /dev/null +++ b/src/dashboard/src/fpr/migrations/0046_update_jhove_module_validation.py @@ -0,0 +1,298 @@ +from archivematicaFunctions import jhove_validation_command +from django.db import migrations + +JHOVE_TOOL_ID = "085d8690-93b7-4d31-84f7-2c5f4cbf6735" +OLD_JHOVE_CMD_ID = "cb335c49-e6ce-445f-a774-494a6f2300c6" + +JHOVE_VALIDATION_RULES = ( + "005d14f1-5b67-43fc-b3a5-5048ec915b0b", + "085d5286-7616-4acd-88a4-ef65066362b9", + "0cd29763-b64a-43cc-9a72-5f8e6317bbae", + "10e514c0-e72a-4f70-afd0-4aed3bfa0ab9", + "1386de15-3152-4a24-afa6-eab7a224da65", + "18c019e8-ea26-49eb-a900-ec8388f1483d", + "1a01813e-430f-4a91-bda2-182e4620d328", + "26573246-96de-4682-bd17-f0bccb50abfe", + "26f687fe-255a-469b-bca5-ac0992038789", + "37a5d85d-58dc-4f4e-8be9-b9ecced85d0d", + "40616003-8af5-48d8-94ca-1871ae2cfaf1", + "407dcd55-71f5-4d83-8e21-6e3809a3fba8", + "40966c69-42dd-49fb-8740-b22a85bc7e32", + "42f3756b-7966-4a47-b029-59688bfc6e43", + "4324a41f-6016-4b28-a0b0-c343dbaca42e", + "471303d4-de26-435c-83b2-8e72beccc60d", + "48086e84-a933-42e0-87fd-ce195137c48d", + "4ea200fa-182c-4b17-9493-e9d3f7e467ff", + "535152f5-88a5-439b-8619-6f42fc2e4468", + "56c72d8a-139b-4cdf-8dd0-d65a373301d2", + "57bbe864-2004-45a4-81be-d40aab02f170", + "5bc4c892-fe7b-4d22-8a9a-ea8c3dd0d171", + "6217dbf1-2b4f-49ce-ab87-d0ed1e1ef890", + "62f0e3bd-a5bb-4fa0-b78b-dab15253b429", + "662caf44-cd04-4990-8e28-9f8425dba782", + "67c0b096-63f4-4e30-b26f-6ed9365ea67c", + "6b3ba38b-e208-450d-9b48-07897b6b7c42", + "6f4cbfc5-c560-4709-8d3e-aa5685bc4fd5", + "713bf728-e583-4cb5-a079-f36baf1a77e7", + "76bfa370-ac87-41e2-995b-e01bb8c977d0", + "7af37625-f547-4d13-ab52-e5bddf249027", + "802e24ec-5e63-4e92-a0cf-33f11b4edf06", + "80ecc092-8f29-4810-8918-e81133092290", + "87c23f92-ee9a-44b3-89b2-c024bbcc70a3", + "8835348d-60f2-4dba-a834-cf26c57f821c", + "88cb0134-7808-450f-a0f4-365a818d583a", + "8a0a1d71-5e56-482e-81b4-b3d425106d49", + "8e995eb3-4023-4168-b1e1-7b5f2b22237b", + "913ff712-1856-48d7-85e9-415617fc9fdc", + "95ef736c-e477-442e-86f4-4e9049be2b88", + "981eae6c-4d7b-40ce-9bfd-1193c600a143", + "986b53a8-3407-4d87-89ec-20575e61292a", + "9d3325a1-cc0a-4fa8-9f3b-ccd5b8c884d1", + "a01418ce-fcb9-4554-add5-72010c719865", + "a0f916de-ed95-4f2a-9f6d-0cbfd8949cc2", + "a7a6cc14-4d61-4030-b8dc-a1ca8ed97402", + "aa4ad350-7e66-4637-a643-6e0bd037645d", + "aa93748e-5899-4ecc-870e-3d47a38fda59", + "ab286afc-f429-4e50-8a40-452c6331d630", + "ab728cab-3072-4e20-a64b-ba2560467d93", + "b1a60f26-8927-46c5-843b-7eddeef6213e", + "b7dd794b-7618-4d13-a2f9-e01dae884cf6", + "c5a30e3c-2100-4b5b-a9b5-27a236a345dd", + "c6d7590f-83c1-4612-a300-3bff3d358199", + "c799f39a-10fd-4125-b11c-1011ef1ca15c", + "cddbffd4-4ada-4a6e-a713-82077a54e89e", + "d4a1faba-a5a3-4955-a20a-6f71da1d35bc", + "dc9dc6a9-82b6-44b7-866a-db3e6314922e", + "dcc9bcd7-f085-4028-9599-bf4fd12816ee", + "e0cdb544-97d3-4915-9b08-fffad57bda10", + "e13d6459-a749-4d31-9dd0-e0a59aab36cd", + "ecd66812-c89a-4231-802e-2e69b47bae2a", + "ee56ca6d-f6d0-4948-9834-2c82f5d223d5", + "eebc3670-6692-4daf-92a2-c8b76606049a", + "f3d2b70b-0b9d-43f6-80e0-9b987b77719d", + "f3f9652a-c903-491b-be89-5fc2469aaa1a", + "f4074907-c111-4e6c-91ae-9c0526475a9a", + "f51ed8e0-edb3-4ebc-84d5-11135cc1fe62", + "f712b5a9-7dd5-4e39-b818-c7cda54b9366", + "fcefa9af-322c-4c9b-afd2-82231dd953fc", + "fdd758b0-99a6-4447-b082-3a1098f13bf6", + "ff989185-1b11-4f96-8075-e605e4cf4be4", + "ffa25cf6-c1a5-45f2-9bee-798aa04df172", + "5df96ec2-b5a3-48b5-8599-3f292ff525c1", + "cc464095-02b3-471b-8f1d-221aecf37741", + "27c0dabc-fda4-4060-ab77-ce6e86f424c8", + "886eeaba-55b3-4ed9-9441-59aa1454ecdc", + "7497c57b-ee7a-420f-b197-e1752a0f071f", +) + +NEW_JHOVE_COMMAND_CHANGES = [ + { + "NEW_JHOVE_CMD_ID": "1dd10753-12f4-4a71-bd69-532186b77d93", + "MODULE": "JPEG-hul", + "JHOVE_VALIDATION_RULES": ( + "005d14f1-5b67-43fc-b3a5-5048ec915b0b", + "aa4ad350-7e66-4637-a643-6e0bd037645d", + "5bc4c892-fe7b-4d22-8a9a-ea8c3dd0d171", + "f3f9652a-c903-491b-be89-5fc2469aaa1a", + "cddbffd4-4ada-4a6e-a713-82077a54e89e", + "913ff712-1856-48d7-85e9-415617fc9fdc", + "cc464095-02b3-471b-8f1d-221aecf37741", + "ab286afc-f429-4e50-8a40-452c6331d630", + "c5a30e3c-2100-4b5b-a9b5-27a236a345dd", + "56c72d8a-139b-4cdf-8dd0-d65a373301d2", + "62f0e3bd-a5bb-4fa0-b78b-dab15253b429", + "5df96ec2-b5a3-48b5-8599-3f292ff525c1", + ), + "COMMAND_DESCRIPTION": "Validate using JHOVE JPEG-hul", + }, + { + "NEW_JHOVE_CMD_ID": "34858217-507c-4e65-a7d9-ca62e1f72642", + "MODULE": "JPEG2000-hul", + "JHOVE_VALIDATION_RULES": ("e0cdb544-97d3-4915-9b08-fffad57bda10",), + "COMMAND_DESCRIPTION": "Validate using JHOVE JPEG2000-hul", + }, + { + "NEW_JHOVE_CMD_ID": "09a14b6b-3f4c-49d8-9a62-0c7212aca83c", + "MODULE": "TIFF-hul", + "JHOVE_VALIDATION_RULES": ( + "6b3ba38b-e208-450d-9b48-07897b6b7c42", + "48086e84-a933-42e0-87fd-ce195137c48d", + "4ea200fa-182c-4b17-9493-e9d3f7e467ff", + "a01418ce-fcb9-4554-add5-72010c719865", + "a7a6cc14-4d61-4030-b8dc-a1ca8ed97402", + ), + "COMMAND_DESCRIPTION": "Validate using JHOVE TIFF-hul", + }, + { + "NEW_JHOVE_CMD_ID": "33510bbe-8115-48af-8e6c-7cc7e1773d35", + "MODULE": "WAVE-hul", + "JHOVE_VALIDATION_RULES": ( + "67c0b096-63f4-4e30-b26f-6ed9365ea67c", + "981eae6c-4d7b-40ce-9bfd-1193c600a143", + "662caf44-cd04-4990-8e28-9f8425dba782", + "40616003-8af5-48d8-94ca-1871ae2cfaf1", + "0cd29763-b64a-43cc-9a72-5f8e6317bbae", + "18c019e8-ea26-49eb-a900-ec8388f1483d", + "37a5d85d-58dc-4f4e-8be9-b9ecced85d0d", + "1a01813e-430f-4a91-bda2-182e4620d328", + "8a0a1d71-5e56-482e-81b4-b3d425106d49", + "471303d4-de26-435c-83b2-8e72beccc60d", + "e13d6459-a749-4d31-9dd0-e0a59aab36cd", + "ee56ca6d-f6d0-4948-9834-2c82f5d223d5", + "dc9dc6a9-82b6-44b7-866a-db3e6314922e", + "10e514c0-e72a-4f70-afd0-4aed3bfa0ab9", + "ff989185-1b11-4f96-8075-e605e4cf4be4", + "42f3756b-7966-4a47-b029-59688bfc6e43", + "c6d7590f-83c1-4612-a300-3bff3d358199", + "ecd66812-c89a-4231-802e-2e69b47bae2a", + "88cb0134-7808-450f-a0f4-365a818d583a", + "ffa25cf6-c1a5-45f2-9bee-798aa04df172", + ), + "COMMAND_DESCRIPTION": "Validate using JHOVE WAVE-hul", + }, + { + "NEW_JHOVE_CMD_ID": "d610e7d6-f78c-4fb8-bd19-09a10fa48672", + "MODULE": "AIFF-hul", + "JHOVE_VALIDATION_RULES": ( + "76bfa370-ac87-41e2-995b-e01bb8c977d0", + "7af37625-f547-4d13-ab52-e5bddf249027", + "fcefa9af-322c-4c9b-afd2-82231dd953fc", + "407dcd55-71f5-4d83-8e21-6e3809a3fba8", + ), + "COMMAND_DESCRIPTION": "Validate using JHOVE AIFF-hul", + }, + { + "NEW_JHOVE_CMD_ID": "8816399f-ca5d-4861-9ae9-a4d22cc89e63", + "MODULE": "gif-hul", + "JHOVE_VALIDATION_RULES": ( + "4324a41f-6016-4b28-a0b0-c343dbaca42e", + "6217dbf1-2b4f-49ce-ab87-d0ed1e1ef890", + "986b53a8-3407-4d87-89ec-20575e61292a", + ), + "COMMAND_DESCRIPTION": "Validate using JHOVE gif-hul", + }, + { + "NEW_JHOVE_CMD_ID": "228f6676-97d7-44ff-bdb8-bfe181dee1a1", + "MODULE": "WARC-kb", + "JHOVE_VALIDATION_RULES": ( + "886eeaba-55b3-4ed9-9441-59aa1454ecdc", + "7497c57b-ee7a-420f-b197-e1752a0f071f", + "27c0dabc-fda4-4060-ab77-ce6e86f424c8", + ), + "COMMAND_DESCRIPTION": "Validate using JHOVE WARC-kb", + }, + { + "NEW_JHOVE_CMD_ID": "2d2fd8b9-5215-41f8-bb33-58be6a2b4abb", + "MODULE": "PDF-hul", + "JHOVE_VALIDATION_RULES": ( + "085d5286-7616-4acd-88a4-ef65066362b9", + "95ef736c-e477-442e-86f4-4e9049be2b88", + "eebc3670-6692-4daf-92a2-c8b76606049a", + "dcc9bcd7-f085-4028-9599-bf4fd12816ee", + "535152f5-88a5-439b-8619-6f42fc2e4468", + "aa93748e-5899-4ecc-870e-3d47a38fda59", + "713bf728-e583-4cb5-a079-f36baf1a77e7", + "8e995eb3-4023-4168-b1e1-7b5f2b22237b", + "40966c69-42dd-49fb-8740-b22a85bc7e32", + "26f687fe-255a-469b-bca5-ac0992038789", + "9d3325a1-cc0a-4fa8-9f3b-ccd5b8c884d1", + "802e24ec-5e63-4e92-a0cf-33f11b4edf06", + "ab728cab-3072-4e20-a64b-ba2560467d93", + "b1a60f26-8927-46c5-843b-7eddeef6213e", + "c799f39a-10fd-4125-b11c-1011ef1ca15c", + "d4a1faba-a5a3-4955-a20a-6f71da1d35bc", + "f712b5a9-7dd5-4e39-b818-c7cda54b9366", + "1386de15-3152-4a24-afa6-eab7a224da65", + "fdd758b0-99a6-4447-b082-3a1098f13bf6", + "f51ed8e0-edb3-4ebc-84d5-11135cc1fe62", + "80ecc092-8f29-4810-8918-e81133092290", + "8835348d-60f2-4dba-a834-cf26c57f821c", + "57bbe864-2004-45a4-81be-d40aab02f170", + "87c23f92-ee9a-44b3-89b2-c024bbcc70a3", + "26573246-96de-4682-bd17-f0bccb50abfe", + "b7dd794b-7618-4d13-a2f9-e01dae884cf6", + "f3d2b70b-0b9d-43f6-80e0-9b987b77719d", + "6f4cbfc5-c560-4709-8d3e-aa5685bc4fd5", + "a0f916de-ed95-4f2a-9f6d-0cbfd8949cc2", + "f4074907-c111-4e6c-91ae-9c0526475a9a", + ), + "COMMAND_DESCRIPTION": "Validate using JHOVE PDF-hul", + }, +] + + +def data_migration_up(apps, schema_editor): + """Update commands and rules.""" + for d in NEW_JHOVE_COMMAND_CHANGES: + _upgrade_jhove_validation_command( + apps, + d["NEW_JHOVE_CMD_ID"], + OLD_JHOVE_CMD_ID, + jhove_validation_command(d["MODULE"]), + d["JHOVE_VALIDATION_RULES"], + d["COMMAND_DESCRIPTION"], + ) + + +def _upgrade_jhove_validation_command( + apps, new_cmd_uuid, old_cmd_uuid, new_cmd, rule_uuids, command_description +): + FPCommand = apps.get_model("fpr", "FPCommand") + FPRule = apps.get_model("fpr", "FPRule") + + # Get the old command + old_command = FPCommand.objects.get(uuid=old_cmd_uuid) + + # Add new command with the following + FPCommand.objects.create( + uuid=new_cmd_uuid, + tool_id=JHOVE_TOOL_ID, + command=new_cmd, + script_type="pythonScript", + command_usage="validation", + description=command_description, + ) + + # Update existing rules + FPRule.objects.filter(uuid__in=rule_uuids).update( + command_id=new_cmd_uuid, + ) + + # Disable the old command + old_command.enabled = False + old_command.save() + + +def data_migration_down(apps, schema_editor): + for d in NEW_JHOVE_COMMAND_CHANGES: + _downgrade_jhove_validation_command( + apps, + d["NEW_JHOVE_CMD_ID"], + OLD_JHOVE_CMD_ID, + JHOVE_VALIDATION_RULES, + ) + + +def _downgrade_jhove_validation_command(apps, new_cmd_uuid, old_cmd_uuid, rule_uuids): + FPCommand = apps.get_model("fpr", "FPCommand") + FPRule = apps.get_model("fpr", "FPRule") + + # We make sure that the rules point to the previous command before the latter is deleted. + FPRule.objects.filter(uuid__in=rule_uuids).update( + command_id=old_cmd_uuid, + ) + + # Enable the old command. At this point we do not know if the + # command was in fact enabled before the migration was run, so + # this may have unexpected consequences + old_command = FPCommand.objects.get(uuid=old_cmd_uuid) + old_command.enabled = True + old_command.save() + + # Delete the new command + FPCommand.objects.filter(uuid=new_cmd_uuid).delete() + + +class Migration(migrations.Migration): + dependencies = [("fpr", "0045_update_event_detail_commands")] + operations = [migrations.RunPython(data_migration_up)] From fc48ba3dbdac1517e4706c608d543cc3a5e2525a Mon Sep 17 00:00:00 2001 From: Dhwani Patel Date: Mon, 3 Mar 2025 09:05:04 -0600 Subject: [PATCH 18/99] Create namespace of JHOVE command --- .../lib/archivematicaFunctions.py | 91 +++++++++++++++++++ src/archivematicaCommon/lib/namespaces.py | 3 + 2 files changed, 94 insertions(+) diff --git a/src/archivematicaCommon/lib/archivematicaFunctions.py b/src/archivematicaCommon/lib/archivematicaFunctions.py index 6a6ece804d..f40fe5337c 100644 --- a/src/archivematicaCommon/lib/archivematicaFunctions.py +++ b/src/archivematicaCommon/lib/archivematicaFunctions.py @@ -562,3 +562,94 @@ def get_oidc_secondary_providers( } return providers + + +def jhove_validation_command(module): + NEW_JHOVE_VALIDATION_CMD = r""" +import json +import subprocess +import sys + +from lxml import etree +from namespaces import NSMAP + +class JhoveException(Exception): + pass + +def parse_jhove_data(target): + args = ['jhove', '-h', 'xml', '-m', '%s', target] + try: + output = subprocess.check_output(args).decode("utf8") + except subprocess.CalledProcessError: + raise JhoveException("Jhove failed when running: " + ' '.join(args)) + + return etree.fromstring(output.encode("utf8")) + +def get_status(doc): + status = doc.find(".{" + NSMAP["jhove"] + "}repInfo/{" + NSMAP["jhove"] + "}status") + if status is None: + raise JhoveException("Unable to find status!") + + return status.text + +def get_outcome(status, format=None): + # JHOVE returns "bytestream" for unrecognized file formats. + # That can include unrecognized or malformed PDFs, JPEG2000s, etc. + # Since we're whitelisting the formats we're passing in, + # "bytestream" indicates that the format is not in fact well-formed + # regardless of what the status reads. + if format == "bytestream": + return "partial pass" + + if status == "Well-Formed and valid": + return "pass" + elif status == "Well-Formed, but not valid": + return "partial pass" + else: + return "fail" + +def get_format(doc): + format = doc.find(".{" + NSMAP["jhove"] + "}repInfo/{" + NSMAP["jhove"] + "}format") + version = doc.find(".{" + NSMAP["jhove"] + "}repInfo/{" + NSMAP["jhove"] + "}version") + + if format is None: + format = "Not detected" + else: + format = format.text + + if version is not None: + version = version.text + + return (format, version) + +def format_event_outcome_detail_note(format, version, result): + note = 'format="{}";'.format(format) + if version is not None: + note = note + ' version="{}";'.format(version) + note = note + ' result="{}"'.format(result) + + return note + +def main(target): + try: + doc = parse_jhove_data(target) + status = get_status(doc) + format, version = get_format(doc) + outcome = get_outcome(status, format) + note = format_event_outcome_detail_note(format, version, status) + + out = { + "eventOutcomeInformation": outcome, + "eventOutcomeDetailNote": note + } + print(json.dumps(out)) + + return 0 + except JhoveException as e: + return e + +if __name__ == '__main__': + target = sys.argv[1] + sys.exit(main(target)) +""" + return NEW_JHOVE_VALIDATION_CMD % module diff --git a/src/archivematicaCommon/lib/namespaces.py b/src/archivematicaCommon/lib/namespaces.py index 012e56f3f6..061435b39e 100644 --- a/src/archivematicaCommon/lib/namespaces.py +++ b/src/archivematicaCommon/lib/namespaces.py @@ -9,6 +9,7 @@ premisNS_V2 = "info:lc/xmlns/premis-v2" xlinkNS = "http://www.w3.org/1999/xlink" xsiNS = "http://www.w3.org/2001/XMLSchema-instance" +jhoveNS = "http://schema.openpreservation.org/ois/xml/ns/jhove" dcBNS = "{" + dcNS + "}" dctermsBNS = "{" + dctermsNS + "}" @@ -19,6 +20,7 @@ premisBNS_V2 = "{" + premisNS_V2 + "}" xlinkBNS = "{" + xlinkNS + "}" xsiBNS = "{" + xsiNS + "}" +jhoveBNS = "{" + jhoveNS + "}" NSMAP = { "dc": dcNS, @@ -29,6 +31,7 @@ "premis": premisNS, "xlink": xlinkNS, "xsi": xsiNS, + "jhove": jhoveNS, } From 30357c9fae435ccb8c282db999c8a2b9ae72b51f Mon Sep 17 00:00:00 2001 From: Dhwani Patel Date: Mon, 10 Mar 2025 14:34:23 -0600 Subject: [PATCH 19/99] Fix the dashboard test and add suggested changes --- .../lib/archivematicaFunctions.py | 8 ++--- .../0046_update_jhove_module_validation.py | 34 ++++++++++--------- tests/dashboard/fpr/test_views.py | 3 +- 3 files changed, 23 insertions(+), 22 deletions(-) diff --git a/src/archivematicaCommon/lib/archivematicaFunctions.py b/src/archivematicaCommon/lib/archivematicaFunctions.py index f40fe5337c..1078b2b8ae 100644 --- a/src/archivematicaCommon/lib/archivematicaFunctions.py +++ b/src/archivematicaCommon/lib/archivematicaFunctions.py @@ -571,7 +571,7 @@ def jhove_validation_command(module): import sys from lxml import etree -from namespaces import NSMAP +from namespaces import jhoveBNS class JhoveException(Exception): pass @@ -586,7 +586,7 @@ def parse_jhove_data(target): return etree.fromstring(output.encode("utf8")) def get_status(doc): - status = doc.find(".{" + NSMAP["jhove"] + "}repInfo/{" + NSMAP["jhove"] + "}status") + status = doc.find(f".{jhoveBNS}repInfo/{jhoveBNS}status") if status is None: raise JhoveException("Unable to find status!") @@ -609,8 +609,8 @@ def get_outcome(status, format=None): return "fail" def get_format(doc): - format = doc.find(".{" + NSMAP["jhove"] + "}repInfo/{" + NSMAP["jhove"] + "}format") - version = doc.find(".{" + NSMAP["jhove"] + "}repInfo/{" + NSMAP["jhove"] + "}version") + format = doc.find(f".{jhoveBNS}repInfo/{jhoveBNS}format") + version = doc.find(f".{jhoveBNS}repInfo/{jhoveBNS}version") if format is None: format = "Not detected" diff --git a/src/dashboard/src/fpr/migrations/0046_update_jhove_module_validation.py b/src/dashboard/src/fpr/migrations/0046_update_jhove_module_validation.py index 36b1d9aaaa..6914fac0de 100644 --- a/src/dashboard/src/fpr/migrations/0046_update_jhove_module_validation.py +++ b/src/dashboard/src/fpr/migrations/0046_update_jhove_module_validation.py @@ -223,6 +223,15 @@ def data_migration_up(apps, schema_editor): """Update commands and rules.""" + FPCommand = apps.get_model("fpr", "FPCommand") + + # Get the old command + old_command = FPCommand.objects.get(uuid=OLD_JHOVE_CMD_ID) + + # Disable the old command + old_command.enabled = False + old_command.save() + for d in NEW_JHOVE_COMMAND_CHANGES: _upgrade_jhove_validation_command( apps, @@ -240,9 +249,6 @@ def _upgrade_jhove_validation_command( FPCommand = apps.get_model("fpr", "FPCommand") FPRule = apps.get_model("fpr", "FPRule") - # Get the old command - old_command = FPCommand.objects.get(uuid=old_cmd_uuid) - # Add new command with the following FPCommand.objects.create( uuid=new_cmd_uuid, @@ -258,18 +264,21 @@ def _upgrade_jhove_validation_command( command_id=new_cmd_uuid, ) - # Disable the old command - old_command.enabled = False - old_command.save() - def data_migration_down(apps, schema_editor): + FPCommand = apps.get_model("fpr", "FPCommand") + + # Enable the old command + old_command = FPCommand.objects.get(uuid=OLD_JHOVE_CMD_ID) + old_command.enabled = True + old_command.save() + for d in NEW_JHOVE_COMMAND_CHANGES: _downgrade_jhove_validation_command( apps, d["NEW_JHOVE_CMD_ID"], OLD_JHOVE_CMD_ID, - JHOVE_VALIDATION_RULES, + d["JHOVE_VALIDATION_RULES"], ) @@ -282,17 +291,10 @@ def _downgrade_jhove_validation_command(apps, new_cmd_uuid, old_cmd_uuid, rule_u command_id=old_cmd_uuid, ) - # Enable the old command. At this point we do not know if the - # command was in fact enabled before the migration was run, so - # this may have unexpected consequences - old_command = FPCommand.objects.get(uuid=old_cmd_uuid) - old_command.enabled = True - old_command.save() - # Delete the new command FPCommand.objects.filter(uuid=new_cmd_uuid).delete() class Migration(migrations.Migration): dependencies = [("fpr", "0045_update_event_detail_commands")] - operations = [migrations.RunPython(data_migration_up)] + operations = [migrations.RunPython(data_migration_up, data_migration_down)] diff --git a/tests/dashboard/fpr/test_views.py b/tests/dashboard/fpr/test_views.py index 6b246d21fd..cbd2a3cb03 100644 --- a/tests/dashboard/fpr/test_views.py +++ b/tests/dashboard/fpr/test_views.py @@ -103,12 +103,11 @@ def test_fpcommand_delete(dashboard_uuid: None, admin_client: Client) -> None: @pytest.mark.django_db def test_fpcommand_revisions(dashboard_uuid: None, admin_client: Client) -> None: - fpcommand_id = "cb335c49-e6ce-445f-a774-494a6f2300c6" + fpcommand_id = "fd8edea2-e251-4fa7-9592-f033d965696c" url = reverse("fpr:revision_list", args=["fpcommand", fpcommand_id]) fpcommand = models.FPCommand.active.get(uuid=fpcommand_id) resp = admin_client.get(url, follow=True) - # Assert that the revision list shows multiple instances. content = resp.content.decode() assert str(fpcommand.uuid) in content From ac80f1e8faa478e3a107355639f26ef328fbec8d Mon Sep 17 00:00:00 2001 From: Dhwani Patel Date: Tue, 11 Mar 2025 11:36:37 -0600 Subject: [PATCH 20/99] Add suggested changes --- .../0046_update_jhove_module_validation.py | 84 +------------------ tests/dashboard/fpr/test_views.py | 1 + 2 files changed, 2 insertions(+), 83 deletions(-) diff --git a/src/dashboard/src/fpr/migrations/0046_update_jhove_module_validation.py b/src/dashboard/src/fpr/migrations/0046_update_jhove_module_validation.py index 6914fac0de..acf861e109 100644 --- a/src/dashboard/src/fpr/migrations/0046_update_jhove_module_validation.py +++ b/src/dashboard/src/fpr/migrations/0046_update_jhove_module_validation.py @@ -4,87 +4,6 @@ JHOVE_TOOL_ID = "085d8690-93b7-4d31-84f7-2c5f4cbf6735" OLD_JHOVE_CMD_ID = "cb335c49-e6ce-445f-a774-494a6f2300c6" -JHOVE_VALIDATION_RULES = ( - "005d14f1-5b67-43fc-b3a5-5048ec915b0b", - "085d5286-7616-4acd-88a4-ef65066362b9", - "0cd29763-b64a-43cc-9a72-5f8e6317bbae", - "10e514c0-e72a-4f70-afd0-4aed3bfa0ab9", - "1386de15-3152-4a24-afa6-eab7a224da65", - "18c019e8-ea26-49eb-a900-ec8388f1483d", - "1a01813e-430f-4a91-bda2-182e4620d328", - "26573246-96de-4682-bd17-f0bccb50abfe", - "26f687fe-255a-469b-bca5-ac0992038789", - "37a5d85d-58dc-4f4e-8be9-b9ecced85d0d", - "40616003-8af5-48d8-94ca-1871ae2cfaf1", - "407dcd55-71f5-4d83-8e21-6e3809a3fba8", - "40966c69-42dd-49fb-8740-b22a85bc7e32", - "42f3756b-7966-4a47-b029-59688bfc6e43", - "4324a41f-6016-4b28-a0b0-c343dbaca42e", - "471303d4-de26-435c-83b2-8e72beccc60d", - "48086e84-a933-42e0-87fd-ce195137c48d", - "4ea200fa-182c-4b17-9493-e9d3f7e467ff", - "535152f5-88a5-439b-8619-6f42fc2e4468", - "56c72d8a-139b-4cdf-8dd0-d65a373301d2", - "57bbe864-2004-45a4-81be-d40aab02f170", - "5bc4c892-fe7b-4d22-8a9a-ea8c3dd0d171", - "6217dbf1-2b4f-49ce-ab87-d0ed1e1ef890", - "62f0e3bd-a5bb-4fa0-b78b-dab15253b429", - "662caf44-cd04-4990-8e28-9f8425dba782", - "67c0b096-63f4-4e30-b26f-6ed9365ea67c", - "6b3ba38b-e208-450d-9b48-07897b6b7c42", - "6f4cbfc5-c560-4709-8d3e-aa5685bc4fd5", - "713bf728-e583-4cb5-a079-f36baf1a77e7", - "76bfa370-ac87-41e2-995b-e01bb8c977d0", - "7af37625-f547-4d13-ab52-e5bddf249027", - "802e24ec-5e63-4e92-a0cf-33f11b4edf06", - "80ecc092-8f29-4810-8918-e81133092290", - "87c23f92-ee9a-44b3-89b2-c024bbcc70a3", - "8835348d-60f2-4dba-a834-cf26c57f821c", - "88cb0134-7808-450f-a0f4-365a818d583a", - "8a0a1d71-5e56-482e-81b4-b3d425106d49", - "8e995eb3-4023-4168-b1e1-7b5f2b22237b", - "913ff712-1856-48d7-85e9-415617fc9fdc", - "95ef736c-e477-442e-86f4-4e9049be2b88", - "981eae6c-4d7b-40ce-9bfd-1193c600a143", - "986b53a8-3407-4d87-89ec-20575e61292a", - "9d3325a1-cc0a-4fa8-9f3b-ccd5b8c884d1", - "a01418ce-fcb9-4554-add5-72010c719865", - "a0f916de-ed95-4f2a-9f6d-0cbfd8949cc2", - "a7a6cc14-4d61-4030-b8dc-a1ca8ed97402", - "aa4ad350-7e66-4637-a643-6e0bd037645d", - "aa93748e-5899-4ecc-870e-3d47a38fda59", - "ab286afc-f429-4e50-8a40-452c6331d630", - "ab728cab-3072-4e20-a64b-ba2560467d93", - "b1a60f26-8927-46c5-843b-7eddeef6213e", - "b7dd794b-7618-4d13-a2f9-e01dae884cf6", - "c5a30e3c-2100-4b5b-a9b5-27a236a345dd", - "c6d7590f-83c1-4612-a300-3bff3d358199", - "c799f39a-10fd-4125-b11c-1011ef1ca15c", - "cddbffd4-4ada-4a6e-a713-82077a54e89e", - "d4a1faba-a5a3-4955-a20a-6f71da1d35bc", - "dc9dc6a9-82b6-44b7-866a-db3e6314922e", - "dcc9bcd7-f085-4028-9599-bf4fd12816ee", - "e0cdb544-97d3-4915-9b08-fffad57bda10", - "e13d6459-a749-4d31-9dd0-e0a59aab36cd", - "ecd66812-c89a-4231-802e-2e69b47bae2a", - "ee56ca6d-f6d0-4948-9834-2c82f5d223d5", - "eebc3670-6692-4daf-92a2-c8b76606049a", - "f3d2b70b-0b9d-43f6-80e0-9b987b77719d", - "f3f9652a-c903-491b-be89-5fc2469aaa1a", - "f4074907-c111-4e6c-91ae-9c0526475a9a", - "f51ed8e0-edb3-4ebc-84d5-11135cc1fe62", - "f712b5a9-7dd5-4e39-b818-c7cda54b9366", - "fcefa9af-322c-4c9b-afd2-82231dd953fc", - "fdd758b0-99a6-4447-b082-3a1098f13bf6", - "ff989185-1b11-4f96-8075-e605e4cf4be4", - "ffa25cf6-c1a5-45f2-9bee-798aa04df172", - "5df96ec2-b5a3-48b5-8599-3f292ff525c1", - "cc464095-02b3-471b-8f1d-221aecf37741", - "27c0dabc-fda4-4060-ab77-ce6e86f424c8", - "886eeaba-55b3-4ed9-9441-59aa1454ecdc", - "7497c57b-ee7a-420f-b197-e1752a0f071f", -) - NEW_JHOVE_COMMAND_CHANGES = [ { "NEW_JHOVE_CMD_ID": "1dd10753-12f4-4a71-bd69-532186b77d93", @@ -236,7 +155,6 @@ def data_migration_up(apps, schema_editor): _upgrade_jhove_validation_command( apps, d["NEW_JHOVE_CMD_ID"], - OLD_JHOVE_CMD_ID, jhove_validation_command(d["MODULE"]), d["JHOVE_VALIDATION_RULES"], d["COMMAND_DESCRIPTION"], @@ -244,7 +162,7 @@ def data_migration_up(apps, schema_editor): def _upgrade_jhove_validation_command( - apps, new_cmd_uuid, old_cmd_uuid, new_cmd, rule_uuids, command_description + apps, new_cmd_uuid, new_cmd, rule_uuids, command_description ): FPCommand = apps.get_model("fpr", "FPCommand") FPRule = apps.get_model("fpr", "FPRule") diff --git a/tests/dashboard/fpr/test_views.py b/tests/dashboard/fpr/test_views.py index cbd2a3cb03..df2316cfc9 100644 --- a/tests/dashboard/fpr/test_views.py +++ b/tests/dashboard/fpr/test_views.py @@ -108,6 +108,7 @@ def test_fpcommand_revisions(dashboard_uuid: None, admin_client: Client) -> None fpcommand = models.FPCommand.active.get(uuid=fpcommand_id) resp = admin_client.get(url, follow=True) + # Assert that the revision list shows multiple instances. content = resp.content.decode() assert str(fpcommand.uuid) in content From d6892fd2b24d25c90406c0c9e352826ae5600c73 Mon Sep 17 00:00:00 2001 From: Douglas Cerna Date: Tue, 11 Mar 2025 16:52:48 -0600 Subject: [PATCH 21/99] Remove unnecessary directories from package structure * Remove dashboard/src directory * Remove MCPClient/lib directory * Remove MCPServer/lib directory * Remove archivematicaCommon/lib directory --- .dockerignore | 2 +- .gitignore | 4 +- .pre-commit-config.yaml | 8 ++-- README.md | 2 +- RELEASENOTES.md | 2 +- hack/Dockerfile | 32 ++++++------- hack/Makefile | 6 +-- hack/helpers/compile-i18n-messages.sh | 4 +- hack/helpers/extract-i18n-messages.sh | 4 +- pyproject.toml | 44 ++++++++---------- src/MCPClient/README.md | 2 +- .../{lib => }/archivematicaClient.py | 0 .../{lib => }/archivematicaClientModules | 0 .../{lib => }/assets/README/README.html | 0 .../assets/README/TRANSFER_README.html | 0 .../{lib => }/assets/catalog/catalog.xml | 0 src/MCPClient/{lib => }/assets/mets/mets.xsd | 0 src/MCPClient/{lib => }/assets/mets/xlink.xsd | 0 src/MCPClient/{lib => }/assets/mods/mods.xsd | 0 src/MCPClient/{lib => }/assets/mods/xml.xsd | 0 .../{lib => }/assets/premis/premis-v2-2.xsd | 0 .../{lib => }/assets/premis/premis.xsd | 0 src/MCPClient/{lib => }/client/__init__.py | 0 src/MCPClient/{lib => }/client/gearman.py | 0 src/MCPClient/{lib => }/client/job.py | 0 src/MCPClient/{lib => }/client/loader.py | 2 +- src/MCPClient/{lib => }/client/mcp.py | 0 src/MCPClient/{lib => }/client/metrics.py | 0 src/MCPClient/{lib => }/client/pool.py | 0 src/MCPClient/{lib => }/client/utils.py | 0 src/MCPClient/{lib => }/client/worker.py | 0 .../{lib => }/clientScripts/__init__.py | 0 .../archivematicaCreateMETSMetadataCSV.py | 0 .../archivematicaCreateMETSMetadataXML.py | 0 .../archivematicaCreateMETSReingest.py | 0 .../archivematicaCreateMETSRights.py | 0 ...rchivematicaCreateMETSRightsDspaceMDRef.py | 0 .../archivematicaCreateMETSTrim.py | 0 .../clientScripts/archivematica_clamscan.py | 0 .../clientScripts/assign_file_uuids.py | 0 .../assign_uuids_to_directories.py | 0 .../bag_with_empty_directories.py | 0 .../{lib => }/clientScripts/bind_pid.py | 0 .../{lib => }/clientScripts/bind_pids.py | 0 .../{lib => }/clientScripts/change_names.py | 0 .../clientScripts/change_object_names.py | 0 .../clientScripts/change_sip_name.py | 0 .../clientScripts/characterize_file.py | 0 .../check_for_access_directory.py | 0 .../check_for_service_directory.py | 0 .../check_for_submission_documentation.py | 0 .../check_transfer_directory_for_objects.py | 0 .../{lib => }/clientScripts/cmd_chmod.py | 0 .../{lib => }/clientScripts/cmd_cp.py | 0 .../{lib => }/clientScripts/cmd_mkdir.py | 0 .../{lib => }/clientScripts/cmd_mv.py | 0 .../{lib => }/clientScripts/cmd_test.py | 0 .../{lib => }/clientScripts/cmd_tree.py | 0 .../{lib => }/clientScripts/compress_aip.py | 0 .../convert_dataverse_structure.py | 0 .../clientScripts/copyRecursiveIfExists.sh | 0 .../clientScripts/copySubmissionDocs.sh | 0 .../{lib => }/clientScripts/copy_recursive.py | 0 .../clientScripts/copy_submission_docs.py | 0 .../copy_thumbnails_to_dip_directory.py | 0 .../copy_transfer_submission_documentation.py | 0 .../copy_transfers_metadata_and_logs.py | 0 .../clientScripts/create_aic_mets.py | 0 .../{lib => }/clientScripts/create_event.py | 0 .../clientScripts/create_mets_dataverse_v2.py | 0 .../{lib => }/clientScripts/create_mets_v2.py | 0 .../create_sip_from_transfer_objects.py | 0 ...eate_sips_from_trim_transfer_containers.py | 0 .../clientScripts/create_transfer_metadata.py | 0 .../clientScripts/create_transfer_mets.py | 0 .../determine_aip_version_key_exit_code.py | 0 .../clientScripts/dip_generation_helper.py | 0 .../clientScripts/email_fail_report.py | 0 .../clientScripts/examine_contents.py | 0 .../clientScripts/extract_contents.py | 0 .../extract_maildir_attachments.py | 0 .../clientScripts/extract_zipped_transfer.py | 0 .../clientScripts/failed_sip_cleanup.py | 0 .../clientScripts/failed_transfer_cleanup.py | 0 .../{lib => }/clientScripts/file_to_folder.py | 0 .../get_aip_storage_locations.py | 0 .../{lib => }/clientScripts/has_packages.py | 0 .../clientScripts/identify_dspace_files.py | 0 .../identify_dspace_mets_files.py | 0 .../clientScripts/identify_file_format.py | 0 .../{lib => }/clientScripts/index_aip.py | 0 .../{lib => }/clientScripts/is_maildir_aip.py | 0 .../clientScripts/json_metadata_to_csv.py | 0 .../{lib => }/clientScripts/lib/__init__.py | 0 .../clientScripts/load_dublin_core.py | 0 .../clientScripts/load_labels_from_csv.py | 0 .../load_premis_events_from_xml.py | 0 ...heck_for_manual_normalization_directory.py | 0 ...ization_create_metadata_and_restructure.py | 0 ...l_normalization_identify_files_included.py | 0 ..._normalization_move_access_files_to_dip.py | 0 ...ual_normalization_remove_mn_directories.py | 0 .../{lib => }/clientScripts/move_or_merge.py | 0 .../{lib => }/clientScripts/move_sip.py | 0 .../clientScripts/move_to_backlog.py | 2 +- .../{lib => }/clientScripts/move_transfer.py | 0 .../{lib => }/clientScripts/normalize.py | 0 .../clientScripts/normalize_report.py | 0 .../clientScripts/parse_dataverse_mets.py | 0 .../clientScripts/parse_external_mets.py | 0 .../clientScripts/parse_mets_to_db.py | 0 .../clientScripts/pid_declaration.py | 0 .../{lib => }/clientScripts/policy_check.py | 0 .../clientScripts/post_store_aip_hook.py | 0 .../clientScripts/remove_directories.py | 0 .../remove_files_without_premis_metadata.py | 0 .../remove_hidden_files_and_directories.py | 0 .../clientScripts/remove_unneeded_files.py | 0 .../restructure_bag_aip_to_sip.py | 0 .../restructure_dip_for_content_dm_upload.py | 0 .../restructure_for_compliance.py | 0 .../restructure_for_compliance_maildir.py | 0 .../restructure_for_compliance_sip.py | 0 .../retry_normalize_remove_normalized.py | 0 .../clientScripts/rights_from_csv.py | 0 .../clientScripts/save_dublin_core.py | 0 .../set_maildir_file_grp_use_and_file_ids.py | 0 .../clientScripts/set_transfer_type.py | 0 .../{lib => }/clientScripts/store_aip.py | 0 .../store_file_modification_dates.py | 0 .../{lib => }/clientScripts/transcoder.py | 0 .../clientScripts/transcribe_file.py | 0 .../trim_create_rights_entries.py | 0 .../trim_restructure_for_compliance.py | 0 .../clientScripts/trim_verify_checksums.py | 0 .../clientScripts/trim_verify_manifest.py | 0 .../clientScripts/update_size_and_checksum.py | 0 .../clientScripts/upload_archivesspace.py | 0 .../{lib => }/clientScripts/upload_qubit.py | 0 .../{lib => }/clientScripts/validate_file.py | 0 .../{lib => }/clientScripts/verify_aip.py | 0 .../verify_and_restructure_transfer_bag.py | 0 .../clientScripts/verify_checksum.py | 0 ...cksums_in_file_sec_of_dspace_mets_files.py | 0 .../{lib => }/clientScripts/verify_mets.py | 0 .../clientScripts/verify_sip_compliance.py | 0 .../verify_transfer_compliance.py | 0 src/MCPClient/{lib => }/settings/__init__.py | 0 src/MCPClient/{lib => }/settings/common.py | 0 src/MCPClient/{lib => }/settings/test.py | 0 src/MCPClient/{lib => }/settings/testmysql.py | 0 src/MCPServer/{lib => }/archivematicaMCP.py | 0 .../{lib => }/assets/workflow-schema-v1.json | 0 src/MCPServer/{lib => }/assets/workflow.json | 0 src/MCPServer/{lib => }/server/__init__.py | 0 .../{lib => }/server/jobs/__init__.py | 0 src/MCPServer/{lib => }/server/jobs/base.py | 0 src/MCPServer/{lib => }/server/jobs/chain.py | 0 src/MCPServer/{lib => }/server/jobs/client.py | 0 .../{lib => }/server/jobs/decisions.py | 0 src/MCPServer/{lib => }/server/jobs/local.py | 0 src/MCPServer/{lib => }/server/mcp.py | 0 src/MCPServer/{lib => }/server/metrics.py | 0 src/MCPServer/{lib => }/server/packages.py | 0 .../{lib => }/server/processing_config.py | 0 src/MCPServer/{lib => }/server/queues.py | 0 src/MCPServer/{lib => }/server/rpc_server.py | 0 src/MCPServer/{lib => }/server/shared_dirs.py | 0 .../{lib => }/server/tasks/__init__.py | 0 .../server/tasks/backends/__init__.py | 0 .../{lib => }/server/tasks/backends/base.py | 0 .../server/tasks/backends/gearman_backend.py | 0 src/MCPServer/{lib => }/server/tasks/task.py | 0 src/MCPServer/{lib => }/server/translation.py | 0 src/MCPServer/{lib => }/server/utils.py | 0 src/MCPServer/{lib => }/server/watch_dirs.py | 0 src/MCPServer/{lib => }/server/workflow.py | 0 .../{lib => }/server/workflow_abilities.py | 0 src/MCPServer/{lib => }/settings/__init__.py | 0 src/MCPServer/{lib => }/settings/common.py | 0 src/MCPServer/{lib => }/settings/test.py | 0 src/MCPServer/{lib => }/settings/testmysql.py | 0 src/archivematicaCommon/{lib => }/__init__.py | 0 .../{lib => }/appconfig.py | 6 +-- .../{lib => }/archivematicaFunctions.py | 0 src/archivematicaCommon/{lib => }/bag.py | 0 src/archivematicaCommon/{lib => }/bindpid.py | 0 .../{lib => }/common_metrics.py | 0 .../{lib => }/countryCodes.py | 0 .../{lib => }/custom_handlers.py | 0 .../{lib => }/databaseFunctions.py | 0 src/archivematicaCommon/{lib => }/dbconns.py | 0 src/archivematicaCommon/{lib => }/dicts.py | 0 .../{lib => }/elasticSearchFunctions.py | 0 .../{lib => }/email_settings.py | 0 .../{lib => }/env_configparser.py | 0 .../{lib => }/executeOrRunSubProcess.py | 0 .../{lib => }/externals/HTML/HTML.py | 0 .../externals/HTML/Licence_CeCILL_V2-en.html | 0 .../externals/HTML/Licence_CeCILL_V2-fr.html | 0 .../{lib => }/externals/HTML/__init__.py | 0 .../{lib => }/externals/__init__.py | 0 .../externals/extractMaildirAttachments.py | 0 .../fido/archivematica_format_extensions.xml | 0 .../externals/fiwalk_plugins/ficonfig.txt | 0 .../externals/fiwalk_plugins/pronom_ident.py | 0 .../{lib => }/externals/maildirToMbox.py | 0 .../{lib => }/externals/xmltodict.py | 0 .../{lib => }/fileOperations.py | 0 .../{lib => }/gearman_encoder.py | 0 .../{lib => }/identifier_functions.py | 2 +- .../{lib => }/namespaces.py | 0 .../{lib => }/processing.py | 0 .../{lib => }/storageService.py | 0 src/archivematicaCommon/{lib => }/version.py | 0 src/archivematicaCommon/{lib => }/xml2obj.py | 0 src/dashboard/{src => }/__init__.py | 0 .../{src => }/components/__init__.py | 0 .../{src => }/components/access/__init__.py | 0 .../{src => }/components/access/urls.py | 0 .../{src => }/components/access/views.py | 0 .../{src => }/components/accounts/__init__.py | 0 .../{src => }/components/accounts/apps.py | 0 .../{src => }/components/accounts/backends.py | 0 .../{src => }/components/accounts/forms.py | 0 .../{src => }/components/accounts/signals.py | 0 .../{src => }/components/accounts/urls.py | 0 .../components/accounts/validators.py | 0 .../{src => }/components/accounts/views.py | 0 .../components/administration/__init__.py | 0 .../components/administration/apps.py | 0 .../components/administration/forms.py | 0 .../administration/forms_dip_upload.py | 0 .../administration/migrations/0001_initial.py | 0 .../migrations/0002_archivesspaceconfig.py | 0 .../0003_archivesspace_help_text.py | 0 .../0004_archivesspaceconfig_inherit_notes.py | 0 ...0005_archivesspace_inherit_note_default.py | 0 .../migrations/0006_use_statement_optional.py | 0 .../migrations/0007_delete_unused_models.py | 0 .../administration/migrations/__init__.py | 0 .../components/administration/models.py | 0 .../components/administration/urls.py | 0 .../components/administration/views.py | 0 .../administration/views_dip_upload.py | 0 .../administration/views_processing.py | 0 .../{src => }/components/advanced_search.py | 0 .../{src => }/components/api/__init__.py | 0 .../{src => }/components/api/urls.py | 0 .../{src => }/components/api/validators.py | 0 .../{src => }/components/api/views.py | 0 .../components/appraisal/__init__.py | 0 .../{src => }/components/appraisal/urls.py | 0 .../{src => }/components/appraisal/views.py | 0 .../components/archival_storage/__init__.py | 0 .../components/archival_storage/atom.py | 0 .../components/archival_storage/forms.py | 0 .../components/archival_storage/urls.py | 0 .../components/archival_storage/views.py | 0 .../{src => }/components/backlog/__init__.py | 0 .../{src => }/components/backlog/urls.py | 0 .../{src => }/components/backlog/views.py | 0 .../{src => }/components/decorators.py | 0 .../{src => }/components/file/__init__.py | 0 .../{src => }/components/file/urls.py | 0 .../{src => }/components/file/views.py | 0 .../components/filesystem_ajax/__init__.py | 0 .../components/filesystem_ajax/helpers.py | 0 .../components/filesystem_ajax/urls.py | 0 .../components/filesystem_ajax/views.py | 0 src/dashboard/{src => }/components/helpers.py | 0 .../{src => }/components/ingest/__init__.py | 0 .../{src => }/components/ingest/forms.py | 0 .../components/ingest/pair_matcher.py | 0 .../{src => }/components/ingest/urls.py | 0 .../{src => }/components/ingest/views.py | 0 .../ingest/views_NormalizationReport.py | 0 .../{src => }/components/ingest/views_as.py | 0 .../{src => }/components/mcp/__init__.py | 0 .../{src => }/components/mcp/urls.py | 0 .../{src => }/components/mcp/views.py | 0 .../{src => }/components/rights/__init__.py | 0 .../{src => }/components/rights/forms.py | 0 .../components/rights/ingest_urls.py | 0 .../{src => }/components/rights/load.py | 0 .../components/rights/transfer_urls.py | 0 .../{src => }/components/rights/views.py | 0 .../{src => }/components/transfer/__init__.py | 0 .../{src => }/components/transfer/urls.py | 0 .../{src => }/components/transfer/views.py | 0 .../{src => }/components/unit/__init__.py | 0 .../{src => }/components/unit/urls.py | 0 .../{src => }/components/unit/views.py | 0 src/dashboard/{src => }/contrib/__init__.py | 0 .../{src => }/contrib/mcp/__init__.py | 0 src/dashboard/{src => }/contrib/mcp/client.py | 0 src/dashboard/{src => }/fpr/__init__.py | 0 src/dashboard/{src => }/fpr/apps.py | 0 src/dashboard/{src => }/fpr/forms.py | 0 src/dashboard/{src => }/fpr/helpers.py | 0 .../{src => }/fpr/management/__init__.py | 0 .../fpr/management/commands/__init__.py | 0 .../management/commands/get_fpr_changes.py | 0 .../management/commands/import_pronom_ids.py | 0 .../fpr/migrations-data/mc_validate_cmd.py | 0 .../{src => }/fpr/migrations/0001_initial.py | 0 .../fpr/migrations/0002_initial_data.py | 0 .../fpr/migrations/0003_pronom_84.py | 0 .../fpr/migrations/0004_pronom_88.py | 0 .../migrations/0005_update_tool_versions.py | 0 .../fpr/migrations/0006_i18n_models.py | 0 .../0007_embedded_default_thumbnail.py | 0 .../migrations/0008_update_django_autoslug.py | 0 .../fpr/migrations/0009_pronom_90.py | 0 .../fpr/migrations/0010_update_fido_136.py | 0 .../migrations/0011_mediaconch_validation.py | 0 .../0012_mediaconch_policy_checks.py | 0 .../0013_normalization_rules_mov.py | 0 .../fpr/migrations/0014_fix_fits_command.py | 0 .../fpr/migrations/0015_pronom_92.py | 0 .../fpr/migrations/0016_update_idtools.py | 0 .../fpr/migrations/0017_ocr_unique_names.py | 0 .../fpr/migrations/0018_slug_unique.py | 0 .../fpr/migrations/0019_fix_gs_command.py | 0 .../fpr/migrations/0020_pronom_93.py | 0 ...malize_jp2_with_ffmpeg_for_preservation.py | 0 .../fpr/migrations/0022_pronom_94.py | 0 .../fpr/migrations/0023_update_idtools.py | 0 .../fpr/migrations/0024_update_fido.py | 0 .../fpr/migrations/0025_update_fido_1312.py | 0 .../migrations/0026_fits_nailgun_compat.py | 0 .../0027_idcommand_tool_disallow_blank.py | 0 .../0028_idcommand_unique_enabled.py | 0 .../0029_update_inkscape_svg_command.py | 0 .../migrations/0030_update_jhove_command.py | 0 .../0031_update_normalization_rules.py | 0 .../fpr/migrations/0032_pronom_96.py | 0 .../fpr/migrations/0033_update_idtools.py | 0 .../migrations/0034_delete_unused_models.py | 0 .../migrations/0035_python3_compatibility.py | 0 .../fpr/migrations/0036_pronom_109.py | 0 .../fpr/migrations/0037_update_idtools.py | 0 .../fpr/migrations/0038_use_uuidfield.py | 0 .../{src => }/fpr/migrations/0039_django32.py | 0 .../0040_update_jhove_validation.py | 0 .../fpr/migrations/0041_pronom_116.py | 0 .../fpr/migrations/0042_update_idtools.py | 0 .../0043_update_default_thumbnail_command.py | 0 .../fpr/migrations/0044_remove_fits.py | 0 .../0045_update_event_detail_commands.py | 0 .../0046_update_jhove_module_validation.py | 0 .../{src => }/fpr/migrations/__init__.py | 0 .../fpr/migrations/initial_data.json | 0 .../migrations/pronom84_formatgroups_new.json | 0 .../fpr/migrations/pronom84_formats_all.json | 0 .../pronom84_formatversions_all.json | 0 .../fpr/migrations/pronom84_fprules_all.json | 0 .../fpr/migrations/pronom84_fptools_all.json | 0 .../migrations/pronom84_idcommands_all.json | 0 .../fpr/migrations/pronom84_idrules_all.json | 0 .../fpr/migrations/pronom84_idtools_all.json | 0 .../{src => }/fpr/migrations/pronom_109.json | 0 .../{src => }/fpr/migrations/pronom_116.json | 0 .../{src => }/fpr/migrations/pronom_88.json | 0 .../{src => }/fpr/migrations/pronom_90.json | 0 .../{src => }/fpr/migrations/pronom_92.json | 0 .../{src => }/fpr/migrations/pronom_93.json | 0 .../{src => }/fpr/migrations/pronom_94.json | 0 .../{src => }/fpr/migrations/pronom_96.json | 0 src/dashboard/{src => }/fpr/models.py | 0 .../{src => }/fpr/templates/fpr/_sidebar.html | 0 .../fpr/templates/fpr/app_layout.html | 0 .../{src => }/fpr/templates/fpr/disable.html | 0 .../fpr/templates/fpr/format/detail.html | 0 .../fpr/templates/fpr/format/form.html | 0 .../templates/fpr/format/group/delete.html | 0 .../fpr/templates/fpr/format/group/form.html | 0 .../fpr/templates/fpr/format/group/list.html | 0 .../fpr/templates/fpr/format/list.html | 0 .../templates/fpr/format/version/detail.html | 0 .../templates/fpr/format/version/form.html | 0 .../fpr/templates/fpr/fpcommand/detail.html | 0 .../fpr/templates/fpr/fpcommand/form.html | 0 .../fpr/templates/fpr/fpcommand/list.html | 0 .../fpr/templates/fpr/fprule/detail.html | 0 .../fpr/templates/fpr/fprule/form.html | 0 .../fpr/templates/fpr/fprule/list.html | 0 .../fpr/templates/fpr/fptool/detail.html | 0 .../fpr/templates/fpr/fptool/form.html | 0 .../fpr/templates/fpr/fptool/list.html | 0 .../fpr/templates/fpr/idcommand/detail.html | 0 .../fpr/templates/fpr/idcommand/form.html | 0 .../fpr/templates/fpr/idcommand/list.html | 0 .../fpr/templates/fpr/idrule/detail.html | 0 .../fpr/templates/fpr/idrule/form.html | 0 .../fpr/templates/fpr/idrule/list.html | 0 .../fpr/templates/fpr/idtool/detail.html | 0 .../fpr/templates/fpr/idtool/form.html | 0 .../fpr/templates/fpr/idtool/list.html | 0 .../fpr/templates/fpr/revisions/list.html | 0 .../{src => }/fpr/templatetags/__init__.py | 0 .../fpr/templatetags/revisions_link.py | 0 src/dashboard/{src => }/fpr/urls.py | 0 src/dashboard/{src => }/fpr/utils.py | 0 src/dashboard/{src => }/fpr/views.py | 0 src/dashboard/frontend/webpack.config.js | 2 +- src/dashboard/{src => }/installer/__init__.py | 0 src/dashboard/{src => }/installer/forms.py | 0 .../installer/management/__init__.py | 0 .../installer/management/commands/__init__.py | 0 .../installer/management/commands/install.py | 0 .../{src => }/installer/middleware.py | 0 src/dashboard/{src => }/installer/steps.py | 0 src/dashboard/{src => }/installer/urls.py | 0 src/dashboard/{src => }/installer/views.py | 0 .../{src => }/locale/en/LC_MESSAGES/django.po | 0 .../locale/en/LC_MESSAGES/djangojs.po | 0 .../{src => }/locale/es/LC_MESSAGES/django.po | 0 .../locale/es/LC_MESSAGES/djangojs.po | 0 .../{src => }/locale/fr/LC_MESSAGES/django.po | 0 .../locale/fr/LC_MESSAGES/djangojs.po | 0 .../{src => }/locale/ja/LC_MESSAGES/django.po | 0 .../locale/ja/LC_MESSAGES/djangojs.po | 0 .../{src => }/locale/no/LC_MESSAGES/django.po | 0 .../locale/no/LC_MESSAGES/djangojs.po | 0 .../{src => }/locale/pt/LC_MESSAGES/django.po | 0 .../locale/pt/LC_MESSAGES/djangojs.po | 0 .../locale/pt_BR/LC_MESSAGES/django.po | 0 .../locale/pt_BR/LC_MESSAGES/djangojs.po | 0 .../{src => }/locale/sv/LC_MESSAGES/django.po | 0 .../locale/sv/LC_MESSAGES/djangojs.po | 0 src/dashboard/{src => }/main/__init__.py | 0 src/dashboard/{src => }/main/apps.py | 0 .../{src => }/main/context_processors.py | 0 src/dashboard/{src => }/main/forms.py | 0 .../{src => }/main/management/__init__.py | 0 .../main/management/commands/__init__.py | 0 .../purge_transient_processing_data.py | 0 .../rebuild_aip_index_from_storage_service.py | 0 ...uild_elasticsearch_aip_index_from_files.py | 0 .../commands/rebuild_transfer_backlog.py | 0 .../commands/reindex_from_remote_cluster.py | 0 .../commands/resolve_pending_jobs.py | 0 .../commands/update_elasticsearch_mappings.py | 0 .../{src => }/main/migrations/0001_initial.py | 0 .../main/migrations/0002_initial_data.py | 0 ...3_archivesspacedipobjectresourcepairing.py | 0 ...hivesspacedipobjectresourcepairing_data.py | 0 .../{src => }/main/migrations/0004_rights.py | 0 .../main/migrations/0005_reingest.py | 0 .../main/migrations/0005_reingest_data.py | 0 .../migrations/0006_levelofdescription.py | 0 .../migrations/0007_django_upgrade_tweaks.py | 0 .../main/migrations/0008_fpcommandoutput.py | 0 .../main/migrations/0009_matching_gui.py | 0 .../main/migrations/0010_dip_upload_store.py | 0 .../main/migrations/0011_version_number.py | 0 .../main/migrations/0012_file_id_text.py | 0 ...0013_upload_archivesspace_inherit_notes.py | 0 .../main/migrations/0014_aic_fixes.py | 0 .../0015_no_normalize_thumbnails.py | 0 .../0016_file_currentlocation_nullable.py | 0 .../main/migrations/0017_update_seigfried.py | 0 .../0018_archivesspace_sip_arrange.py | 0 .../migrations/0019_normalization_report.py | 0 .../0020_index_after_processing_decision.py | 0 .../migrations/0021_checksum_algorithms.py | 0 .../main/migrations/0022_email_report_args.py | 0 .../main/migrations/0023_blob_fields.py | 0 .../main/migrations/0024_agenttype.py | 0 .../0025_copyrightstatus_controlled_vocab.py | 0 .../main/migrations/0026_agent_m2m_event.py | 0 .../main/migrations/0027_full_reingest.py | 0 .../main/migrations/0028_version_number.py | 0 .../migrations/0029_backlog_removal_event.py | 0 .../main/migrations/0030_rights_import.py | 0 .../0031_job_currentstep_choices.py | 0 .../migrations/0032_dashboardsetting_scope.py | 0 ..._store_transfer_file_modification_dates.py | 0 .../migrations/0034_add_readme_to_aips.py | 0 .../0035_fix_workflow_dip_generation.py | 0 .../migrations/0036_mediaconch_validation.py | 0 .../0037_mediaconch_policy_checks.py | 0 .../migrations/0038_fix_workflow_store_dip.py | 0 .../0039_delete_sudo_clientscript.py | 0 .../main/migrations/0040_directory_model.py | 0 .../main/migrations/0041_bind_pids.py | 2 +- ...0042_directory_uuids_all_transfer_types.py | 0 .../0043_remove_create_pointer_file_ms.py | 0 .../main/migrations/0044_update_idtools.py | 0 .../0045_archivesspace_config_dict.py | 0 .../0046_optional_normative_structmap.py | 0 .../main/migrations/0047_version_number.py | 0 .../0048_fix_upload_qubit_setting.py | 0 .../0049_change_pointer_file_filegrpuse.py | 0 .../migrations/0050_remove_magic_links.py | 0 .../0051_remove_verify_premis_checksums.py | 0 ..._correct_extract_packages_fallback_link.py | 0 .../0053_remove_mcp_unused_field.py | 0 .../0054_index_aip_silent_error_branch.py | 0 ...0055_normalize_thumbnail_mode_selection.py | 0 .../0056_transfer_access_system_id.py | 0 .../migrations/0057_7zip_no_compression.py | 0 .../0058_fix_unit_variable_pull_link.py | 0 .../migrations/0059_siparrange_longblob.py | 0 .../migrations/0060_delete_orphan_mscl.py | 0 .../0061_create_dataverse_transfer_type.py | 0 .../migrations/0062_atom_upload_exit_code.py | 0 .../main/migrations/0063_update_idtools.py | 0 .../main/migrations/0064_version_number.py | 0 .../main/migrations/0065_version_number.py | 0 .../migrations/0066_archivesspace_base_url.py | 0 .../migrations/0067_delete_workflow_models.py | 0 .../main/migrations/0068_version_number.py | 0 .../main/migrations/0069_remove_atk.py | 0 .../main/migrations/0070_index_jobs.py | 0 .../0071_index_unitvariables_runsql.py | 0 .../main/migrations/0072_index_files.py | 0 .../migrations/0073_index_files_runsql.py | 0 .../main/migrations/0074_version_number.py | 0 .../0075_userprofile_system_emails.py | 0 .../main/migrations/0076_version_number.py | 0 .../main/migrations/0077_uuid_fields.py | 0 .../main/migrations/0078_username_check.py | 0 .../main/migrations/0079_version_number.py | 0 .../migrations/0080_delete_software_agent.py | 0 .../main/migrations/0081_package_status.py | 0 .../main/migrations/0082_use_uuidfield.py | 0 .../migrations/0083_unpickle_access_target.py | 0 .../0084_alter_job_index_together.py | 0 .../{src => }/main/migrations/__init__.py | 0 src/dashboard/{src => }/main/models.py | 0 src/dashboard/{src => }/main/signals.py | 0 .../{src => }/main/templatetags/__init__.py | 0 .../{src => }/main/templatetags/active.py | 0 .../{src => }/main/templatetags/breadcrumb.py | 0 .../{src => }/main/templatetags/forms.py | 0 .../{src => }/main/templatetags/job_status.py | 0 .../{src => }/main/templatetags/keyvalue.py | 0 .../{src => }/main/templatetags/lang.py | 0 .../{src => }/main/templatetags/user.py | 0 src/dashboard/{src => }/main/urls.py | 0 src/dashboard/{src => }/main/views.py | 0 src/dashboard/{src => }/manage.py | 0 .../{src => }/media/css/archival_storage.css | 0 .../{src => }/media/css/as_match.css | 0 .../media/css/backbone-file-explorer.css | 0 src/dashboard/{src => }/media/css/backlog.css | 0 src/dashboard/{src => }/media/css/base.css | 0 .../{src => }/media/css/directory_picker.css | 0 src/dashboard/{src => }/media/css/fonts.css | 0 src/dashboard/{src => }/media/css/reset.css | 0 src/dashboard/{src => }/media/css/search.css | 0 src/dashboard/{src => }/media/css/style.css | 0 .../{src => }/media/css/transfer_grid.css | 0 .../{src => }/media/images/1x1-pixel.png | Bin .../{src => }/media/images/accept.png | Bin .../{src => }/media/images/ajax-loader.gif | Bin .../{src => }/media/images/arrow_refresh.png | Bin .../{src => }/media/images/attach.png | Bin src/dashboard/{src => }/media/images/bell.png | Bin .../media/images/bullet_arrow_down.png | Bin .../media/images/bullet_arrow_up.png | Bin .../{src => }/media/images/bullet_delete.png | Bin .../{src => }/media/images/bullet_green.png | Bin .../{src => }/media/images/bullet_orange.png | Bin .../{src => }/media/images/cancel.png | Bin .../{src => }/media/images/clock.png | Bin src/dashboard/{src => }/media/images/cog.png | Bin .../{src => }/media/images/delete.png | Bin .../{src => }/media/images/error.png | Bin .../{src => }/media/images/favicon.ico | Bin .../{src => }/media/images/filefolder.png | Bin .../{src => }/media/images/filefolderopen.png | Bin .../{src => }/media/images/folder.png | Bin .../{src => }/media/images/logo_header.png | Bin .../{src => }/media/images/logo_login.gif | Bin .../{src => }/media/images/logo_welcome.gif | Bin .../{src => }/media/images/package_go.png | Bin .../{src => }/media/images/pencil_add.png | Bin .../{src => }/media/images/table_edit.png | Bin src/dashboard/{src => }/media/images/tick.png | Bin .../{src => }/media/images/user_comment.png | Bin .../{src => }/media/images/vcard_edit.png | Bin src/dashboard/{src => }/media/images/zoom.png | Bin .../{src => }/media/images/zoom_out.png | Bin .../atom_levels_of_description.js | 0 .../media/js/advanced-search-query-creator.js | 0 .../archival_storage_search.js | 0 .../media/js/backlog/backlog-search.js | 0 .../{src => }/media/js/contextual_help.js | 0 .../{src => }/media/js/directory_picker.js | 0 .../{src => }/media/js/file-explorer.js | 0 .../{src => }/media/js/file_browser.js | 0 src/dashboard/{src => }/media/js/ingest.js | 0 .../{src => }/media/js/ingest/aip_browser.js | 0 .../{src => }/media/js/ingest/as_matcher.js | 0 .../media/js/ingest/as_matcher_setup.js | 0 .../{src => }/media/js/ingest/backlog.js | 0 .../media/js/ingest/metadata_form.js | 0 .../media/js/ingest/normalization_report.js | 0 src/dashboard/{src => }/media/js/jobs.js | 0 src/dashboard/{src => }/media/js/misc.js | 0 src/dashboard/{src => }/media/js/online.js | 0 .../{src => }/media/js/repeating-ajax-data.js | 0 .../{src => }/media/js/rights_edit.js | 0 src/dashboard/{src => }/media/js/status.js | 0 src/dashboard/{src => }/media/js/transfer.js | 0 .../js/transfer/component_directory_select.js | 0 .../{src => }/media/js/vendor/base64.js | 0 .../{src => }/media/vendor/backbone.js | 0 .../datatables/css/buttons.bootstrap.min.css | 0 .../datatables/css/jquery.dataTables.css | 0 .../vendor/datatables/images/favicon.ico | Bin .../vendor/datatables/images/sort_asc.png | Bin .../datatables/images/sort_asc_disabled.png | Bin .../vendor/datatables/images/sort_both.png | Bin .../vendor/datatables/images/sort_desc.png | Bin .../datatables/images/sort_desc_disabled.png | Bin .../datatables/js/buttons.bootstrap.min.js | 0 .../datatables/js/buttons.colVis.min.js | 0 .../datatables/js/dataTables.buttons.min.js | 0 .../datatables/js/jquery.dataTables.min.js | 0 .../media/vendor/font-awesome/.npmignore | 0 .../media/vendor/font-awesome/HELP-US-OUT.txt | 0 .../media/vendor/font-awesome/README.md | 0 .../vendor/font-awesome/css/font-awesome.css | 0 .../font-awesome/css/font-awesome.css.map | 0 .../font-awesome/css/font-awesome.min.css | 0 .../vendor/font-awesome/fonts/FontAwesome.otf | Bin .../fonts/fontawesome-webfont.eot | Bin .../fonts/fontawesome-webfont.svg | 0 .../fonts/fontawesome-webfont.ttf | Bin .../fonts/fontawesome-webfont.woff | Bin .../fonts/fontawesome-webfont.woff2 | Bin .../vendor/font-awesome/less/animated.less | 0 .../font-awesome/less/bordered-pulled.less | 0 .../media/vendor/font-awesome/less/core.less | 0 .../vendor/font-awesome/less/fixed-width.less | 0 .../font-awesome/less/font-awesome.less | 0 .../media/vendor/font-awesome/less/icons.less | 0 .../vendor/font-awesome/less/larger.less | 0 .../media/vendor/font-awesome/less/list.less | 0 .../vendor/font-awesome/less/mixins.less | 0 .../media/vendor/font-awesome/less/path.less | 0 .../font-awesome/less/rotated-flipped.less | 0 .../font-awesome/less/screen-reader.less | 0 .../vendor/font-awesome/less/stacked.less | 0 .../vendor/font-awesome/less/variables.less | 0 .../media/vendor/font-awesome/package.json | 0 .../vendor/font-awesome/scss/_animated.scss | 0 .../font-awesome/scss/_bordered-pulled.scss | 0 .../media/vendor/font-awesome/scss/_core.scss | 0 .../font-awesome/scss/_fixed-width.scss | 0 .../vendor/font-awesome/scss/_icons.scss | 0 .../vendor/font-awesome/scss/_larger.scss | 0 .../media/vendor/font-awesome/scss/_list.scss | 0 .../vendor/font-awesome/scss/_mixins.scss | 0 .../media/vendor/font-awesome/scss/_path.scss | 0 .../font-awesome/scss/_rotated-flipped.scss | 0 .../font-awesome/scss/_screen-reader.scss | 0 .../vendor/font-awesome/scss/_stacked.scss | 0 .../vendor/font-awesome/scss/_variables.scss | 0 .../font-awesome/scss/font-awesome.scss | 0 .../images/ui-icons_444444_256x240.png | Bin .../images/ui-icons_555555_256x240.png | Bin .../images/ui-icons_777620_256x240.png | Bin .../images/ui-icons_777777_256x240.png | Bin .../images/ui-icons_cc0000_256x240.png | Bin .../images/ui-icons_ffffff_256x240.png | Bin .../media/vendor/jquery-ui/jquery-ui.css | 0 .../media/vendor/jquery-ui/jquery-ui.js | 0 .../media/vendor/jquery.idle-timer.js | 0 .../media/vendor/jquery.inputmask.js | 0 .../{src => }/media/vendor/jquery.js | 0 .../{src => }/media/vendor/select2/README.md | 0 .../media/vendor/select2/select2.css | 0 .../{src => }/media/vendor/select2/select2.js | 0 .../media/vendor/select2/select2.min.js | 0 .../media/vendor/select2/select2.png | Bin .../media/vendor/select2/spinner.gif | Bin .../media/vendor/twitter-bootstrap/.gitignore | 0 .../twitter-bootstrap/css/bootstrap-theme.css | 0 .../css/bootstrap-theme.css.map | 0 .../twitter-bootstrap/css/bootstrap.css | 0 .../twitter-bootstrap/css/bootstrap.css.map | 0 .../fonts/glyphicons-halflings-regular.eot | Bin .../fonts/glyphicons-halflings-regular.svg | 0 .../fonts/glyphicons-halflings-regular.ttf | Bin .../fonts/glyphicons-halflings-regular.woff | Bin .../fonts/glyphicons-halflings-regular.woff2 | Bin .../vendor/twitter-bootstrap/js/bootstrap.js | 0 .../{src => }/media/vendor/underscore.js | 0 .../{src => }/middleware/__init__.py | 0 src/dashboard/{src => }/middleware/common.py | 0 src/dashboard/{src => }/middleware/locale.py | 0 src/dashboard/{src => }/settings/__init__.py | 0 src/dashboard/{src => }/settings/base.py | 0 .../{src => }/settings/components/__init__.py | 0 .../{src => }/settings/components/auth.py | 0 .../{src => }/settings/components/cas_auth.py | 0 .../{src => }/settings/components/csp.py | 0 .../settings/components/ldap_auth.py | 0 .../settings/components/oidc_auth.py | 0 .../settings/components/shibboleth_auth.py | 0 src/dashboard/{src => }/settings/local.py | 0 .../{src => }/settings/production.py | 0 src/dashboard/{src => }/settings/test.py | 0 src/dashboard/{src => }/settings/testmysql.py | 0 src/dashboard/{src => }/templates/404.html | 0 src/dashboard/{src => }/templates/500.html | 0 src/dashboard/{src => }/templates/_form.html | 0 .../{src => }/templates/_formset.html | 0 .../{src => }/templates/_formset_table.html | 0 .../templates/_fpr_update_button.html | 0 .../{src => }/templates/_messages.html | 0 src/dashboard/{src => }/templates/_pager.html | 0 .../{src => }/templates/accounts/add.html | 0 .../{src => }/templates/accounts/edit.html | 0 .../{src => }/templates/accounts/list.html | 0 .../templates/accounts/logged_out.html | 0 .../{src => }/templates/accounts/login.html | 0 .../{src => }/templates/accounts/profile.html | 0 .../templates/administration/api.html | 0 .../atom_levels_of_description.html | 0 .../administration/dips_as_edit.html | 0 .../administration/dips_atom_edit.html | 0 .../templates/administration/general.html | 0 .../administration/handle_config.html | 0 .../templates/administration/language.html | 0 .../templates/administration/locations.html | 0 .../administration/premis_agent.html | 0 .../templates/administration/processing.html | 0 .../administration/processing_edit.html | 0 .../reports/failure_detail.html | 0 .../administration/reports/failures.html | 0 .../templates/administration/sidebar.html | 0 .../templates/administration/taxonomy.html | 0 .../templates/administration/term_detail.html | 0 .../templates/administration/terms.html | 0 .../templates/administration/usage.html | 0 .../templates/administration/version.html | 0 .../templates/appraisal/appraisal.html | 0 .../_archival_storage_search_form.html | 0 .../archival_storage/archival_storage.html | 0 .../templates/archival_storage/view.html | 0 .../{src => }/templates/backlog/backlog.html | 0 .../{src => }/templates/delete_request.html | 0 .../templates/elasticsearch_error.html | 0 .../templates/elasticsearch_not_found.html | 0 .../{src => }/templates/forbidden.html | 0 .../templates/ingest/aip_browse.html | 0 .../templates/ingest/as/_search_form.html | 0 .../{src => }/templates/ingest/as/match.html | 0 .../ingest/as/resource_component.html | 0 .../templates/ingest/as/resource_detail.html | 0 .../templates/ingest/as/resource_list.html | 0 .../templates/ingest/as/review_matches.html | 0 .../ingest/backlog/_search_form.html | 0 .../{src => }/templates/ingest/detail.html | 0 .../{src => }/templates/ingest/grid.html | 0 .../templates/ingest/metadata_add_files.html | 0 .../templates/ingest/metadata_edit.html | 0 .../ingest/metadata_event_detail.html | 0 .../templates/ingest/metadata_list.html | 0 .../templates/ingest/microservices.html | 0 .../ingest/normalization_report.html | 0 .../templates/installer/storagesetup.html | 0 .../templates/installer/welcome.html | 0 src/dashboard/{src => }/templates/layout.html | 0 .../{src => }/templates/layout_ajax.html | 0 .../{src => }/templates/layout_fluid.html | 0 .../templates/main/_tasks_pager.html | 0 .../{src => }/templates/main/access.html | 0 .../{src => }/templates/main/tasks.html | 0 .../templates/rights/rights_edit.html | 0 .../templates/rights/rights_grants_edit.html | 0 .../templates/rights/rights_list.html | 0 .../{src => }/templates/simple_confirm.html | 0 .../templates/transfer/component.html | 0 .../{src => }/templates/transfer/detail.html | 0 .../{src => }/templates/transfer/grid.html | 0 .../templates/transfer/metadata_edit.html | 0 .../templates/transfer/metadata_list.html | 0 .../templates/transfer/microservices.html | 0 src/dashboard/{src => }/urls.py | 0 src/dashboard/{src => }/wsgi.py | 0 tests/MCPClient/conftest.py | 1 - tests/MCPClient/test_create_aip_mets.py | 2 +- .../test_ensure_no_mutable_globals.py | 1 - .../test_load_premis_events_from_xml.py | 2 +- tests/MCPClient/upload-qubit-test | 2 +- tests/MCPServer/test_processing_config.py | 2 +- tests/MCPServer/test_rpc_server.py | 2 +- tests/MCPServer/test_workflow.py | 2 +- tests/MCPServer/test_workflow_abilities.py | 2 +- tests/dashboard/test_helpers.py | 2 +- 797 files changed, 69 insertions(+), 75 deletions(-) rename src/MCPClient/{lib => }/archivematicaClient.py (100%) rename src/MCPClient/{lib => }/archivematicaClientModules (100%) rename src/MCPClient/{lib => }/assets/README/README.html (100%) rename src/MCPClient/{lib => }/assets/README/TRANSFER_README.html (100%) rename src/MCPClient/{lib => }/assets/catalog/catalog.xml (100%) rename src/MCPClient/{lib => }/assets/mets/mets.xsd (100%) rename src/MCPClient/{lib => }/assets/mets/xlink.xsd (100%) rename src/MCPClient/{lib => }/assets/mods/mods.xsd (100%) rename src/MCPClient/{lib => }/assets/mods/xml.xsd (100%) rename src/MCPClient/{lib => }/assets/premis/premis-v2-2.xsd (100%) rename src/MCPClient/{lib => }/assets/premis/premis.xsd (100%) rename src/MCPClient/{lib => }/client/__init__.py (100%) rename src/MCPClient/{lib => }/client/gearman.py (100%) rename src/MCPClient/{lib => }/client/job.py (100%) rename src/MCPClient/{lib => }/client/loader.py (95%) rename src/MCPClient/{lib => }/client/mcp.py (100%) rename src/MCPClient/{lib => }/client/metrics.py (100%) rename src/MCPClient/{lib => }/client/pool.py (100%) rename src/MCPClient/{lib => }/client/utils.py (100%) rename src/MCPClient/{lib => }/client/worker.py (100%) rename src/MCPClient/{lib => }/clientScripts/__init__.py (100%) rename src/MCPClient/{lib => }/clientScripts/archivematicaCreateMETSMetadataCSV.py (100%) rename src/MCPClient/{lib => }/clientScripts/archivematicaCreateMETSMetadataXML.py (100%) rename src/MCPClient/{lib => }/clientScripts/archivematicaCreateMETSReingest.py (100%) rename src/MCPClient/{lib => }/clientScripts/archivematicaCreateMETSRights.py (100%) rename src/MCPClient/{lib => }/clientScripts/archivematicaCreateMETSRightsDspaceMDRef.py (100%) rename src/MCPClient/{lib => }/clientScripts/archivematicaCreateMETSTrim.py (100%) rename src/MCPClient/{lib => }/clientScripts/archivematica_clamscan.py (100%) rename src/MCPClient/{lib => }/clientScripts/assign_file_uuids.py (100%) rename src/MCPClient/{lib => }/clientScripts/assign_uuids_to_directories.py (100%) rename src/MCPClient/{lib => }/clientScripts/bag_with_empty_directories.py (100%) rename src/MCPClient/{lib => }/clientScripts/bind_pid.py (100%) rename src/MCPClient/{lib => }/clientScripts/bind_pids.py (100%) rename src/MCPClient/{lib => }/clientScripts/change_names.py (100%) rename src/MCPClient/{lib => }/clientScripts/change_object_names.py (100%) rename src/MCPClient/{lib => }/clientScripts/change_sip_name.py (100%) rename src/MCPClient/{lib => }/clientScripts/characterize_file.py (100%) rename src/MCPClient/{lib => }/clientScripts/check_for_access_directory.py (100%) rename src/MCPClient/{lib => }/clientScripts/check_for_service_directory.py (100%) rename src/MCPClient/{lib => }/clientScripts/check_for_submission_documentation.py (100%) rename src/MCPClient/{lib => }/clientScripts/check_transfer_directory_for_objects.py (100%) rename src/MCPClient/{lib => }/clientScripts/cmd_chmod.py (100%) rename src/MCPClient/{lib => }/clientScripts/cmd_cp.py (100%) rename src/MCPClient/{lib => }/clientScripts/cmd_mkdir.py (100%) rename src/MCPClient/{lib => }/clientScripts/cmd_mv.py (100%) rename src/MCPClient/{lib => }/clientScripts/cmd_test.py (100%) rename src/MCPClient/{lib => }/clientScripts/cmd_tree.py (100%) rename src/MCPClient/{lib => }/clientScripts/compress_aip.py (100%) rename src/MCPClient/{lib => }/clientScripts/convert_dataverse_structure.py (100%) rename src/MCPClient/{lib => }/clientScripts/copyRecursiveIfExists.sh (100%) rename src/MCPClient/{lib => }/clientScripts/copySubmissionDocs.sh (100%) rename src/MCPClient/{lib => }/clientScripts/copy_recursive.py (100%) rename src/MCPClient/{lib => }/clientScripts/copy_submission_docs.py (100%) rename src/MCPClient/{lib => }/clientScripts/copy_thumbnails_to_dip_directory.py (100%) rename src/MCPClient/{lib => }/clientScripts/copy_transfer_submission_documentation.py (100%) rename src/MCPClient/{lib => }/clientScripts/copy_transfers_metadata_and_logs.py (100%) rename src/MCPClient/{lib => }/clientScripts/create_aic_mets.py (100%) rename src/MCPClient/{lib => }/clientScripts/create_event.py (100%) rename src/MCPClient/{lib => }/clientScripts/create_mets_dataverse_v2.py (100%) rename src/MCPClient/{lib => }/clientScripts/create_mets_v2.py (100%) rename src/MCPClient/{lib => }/clientScripts/create_sip_from_transfer_objects.py (100%) rename src/MCPClient/{lib => }/clientScripts/create_sips_from_trim_transfer_containers.py (100%) rename src/MCPClient/{lib => }/clientScripts/create_transfer_metadata.py (100%) rename src/MCPClient/{lib => }/clientScripts/create_transfer_mets.py (100%) rename src/MCPClient/{lib => }/clientScripts/determine_aip_version_key_exit_code.py (100%) rename src/MCPClient/{lib => }/clientScripts/dip_generation_helper.py (100%) rename src/MCPClient/{lib => }/clientScripts/email_fail_report.py (100%) rename src/MCPClient/{lib => }/clientScripts/examine_contents.py (100%) rename src/MCPClient/{lib => }/clientScripts/extract_contents.py (100%) rename src/MCPClient/{lib => }/clientScripts/extract_maildir_attachments.py (100%) rename src/MCPClient/{lib => }/clientScripts/extract_zipped_transfer.py (100%) rename src/MCPClient/{lib => }/clientScripts/failed_sip_cleanup.py (100%) rename src/MCPClient/{lib => }/clientScripts/failed_transfer_cleanup.py (100%) rename src/MCPClient/{lib => }/clientScripts/file_to_folder.py (100%) rename src/MCPClient/{lib => }/clientScripts/get_aip_storage_locations.py (100%) rename src/MCPClient/{lib => }/clientScripts/has_packages.py (100%) rename src/MCPClient/{lib => }/clientScripts/identify_dspace_files.py (100%) rename src/MCPClient/{lib => }/clientScripts/identify_dspace_mets_files.py (100%) rename src/MCPClient/{lib => }/clientScripts/identify_file_format.py (100%) rename src/MCPClient/{lib => }/clientScripts/index_aip.py (100%) rename src/MCPClient/{lib => }/clientScripts/is_maildir_aip.py (100%) rename src/MCPClient/{lib => }/clientScripts/json_metadata_to_csv.py (100%) rename src/MCPClient/{lib => }/clientScripts/lib/__init__.py (100%) rename src/MCPClient/{lib => }/clientScripts/load_dublin_core.py (100%) rename src/MCPClient/{lib => }/clientScripts/load_labels_from_csv.py (100%) rename src/MCPClient/{lib => }/clientScripts/load_premis_events_from_xml.py (100%) rename src/MCPClient/{lib => }/clientScripts/manual_normalization_check_for_manual_normalization_directory.py (100%) rename src/MCPClient/{lib => }/clientScripts/manual_normalization_create_metadata_and_restructure.py (100%) rename src/MCPClient/{lib => }/clientScripts/manual_normalization_identify_files_included.py (100%) rename src/MCPClient/{lib => }/clientScripts/manual_normalization_move_access_files_to_dip.py (100%) rename src/MCPClient/{lib => }/clientScripts/manual_normalization_remove_mn_directories.py (100%) rename src/MCPClient/{lib => }/clientScripts/move_or_merge.py (100%) rename src/MCPClient/{lib => }/clientScripts/move_sip.py (100%) rename src/MCPClient/{lib => }/clientScripts/move_to_backlog.py (98%) rename src/MCPClient/{lib => }/clientScripts/move_transfer.py (100%) rename src/MCPClient/{lib => }/clientScripts/normalize.py (100%) rename src/MCPClient/{lib => }/clientScripts/normalize_report.py (100%) rename src/MCPClient/{lib => }/clientScripts/parse_dataverse_mets.py (100%) rename src/MCPClient/{lib => }/clientScripts/parse_external_mets.py (100%) rename src/MCPClient/{lib => }/clientScripts/parse_mets_to_db.py (100%) rename src/MCPClient/{lib => }/clientScripts/pid_declaration.py (100%) rename src/MCPClient/{lib => }/clientScripts/policy_check.py (100%) rename src/MCPClient/{lib => }/clientScripts/post_store_aip_hook.py (100%) rename src/MCPClient/{lib => }/clientScripts/remove_directories.py (100%) rename src/MCPClient/{lib => }/clientScripts/remove_files_without_premis_metadata.py (100%) rename src/MCPClient/{lib => }/clientScripts/remove_hidden_files_and_directories.py (100%) rename src/MCPClient/{lib => }/clientScripts/remove_unneeded_files.py (100%) rename src/MCPClient/{lib => }/clientScripts/restructure_bag_aip_to_sip.py (100%) rename src/MCPClient/{lib => }/clientScripts/restructure_dip_for_content_dm_upload.py (100%) rename src/MCPClient/{lib => }/clientScripts/restructure_for_compliance.py (100%) rename src/MCPClient/{lib => }/clientScripts/restructure_for_compliance_maildir.py (100%) rename src/MCPClient/{lib => }/clientScripts/restructure_for_compliance_sip.py (100%) rename src/MCPClient/{lib => }/clientScripts/retry_normalize_remove_normalized.py (100%) rename src/MCPClient/{lib => }/clientScripts/rights_from_csv.py (100%) rename src/MCPClient/{lib => }/clientScripts/save_dublin_core.py (100%) rename src/MCPClient/{lib => }/clientScripts/set_maildir_file_grp_use_and_file_ids.py (100%) rename src/MCPClient/{lib => }/clientScripts/set_transfer_type.py (100%) rename src/MCPClient/{lib => }/clientScripts/store_aip.py (100%) rename src/MCPClient/{lib => }/clientScripts/store_file_modification_dates.py (100%) rename src/MCPClient/{lib => }/clientScripts/transcoder.py (100%) rename src/MCPClient/{lib => }/clientScripts/transcribe_file.py (100%) rename src/MCPClient/{lib => }/clientScripts/trim_create_rights_entries.py (100%) rename src/MCPClient/{lib => }/clientScripts/trim_restructure_for_compliance.py (100%) rename src/MCPClient/{lib => }/clientScripts/trim_verify_checksums.py (100%) rename src/MCPClient/{lib => }/clientScripts/trim_verify_manifest.py (100%) rename src/MCPClient/{lib => }/clientScripts/update_size_and_checksum.py (100%) rename src/MCPClient/{lib => }/clientScripts/upload_archivesspace.py (100%) rename src/MCPClient/{lib => }/clientScripts/upload_qubit.py (100%) rename src/MCPClient/{lib => }/clientScripts/validate_file.py (100%) rename src/MCPClient/{lib => }/clientScripts/verify_aip.py (100%) rename src/MCPClient/{lib => }/clientScripts/verify_and_restructure_transfer_bag.py (100%) rename src/MCPClient/{lib => }/clientScripts/verify_checksum.py (100%) rename src/MCPClient/{lib => }/clientScripts/verify_checksums_in_file_sec_of_dspace_mets_files.py (100%) rename src/MCPClient/{lib => }/clientScripts/verify_mets.py (100%) rename src/MCPClient/{lib => }/clientScripts/verify_sip_compliance.py (100%) rename src/MCPClient/{lib => }/clientScripts/verify_transfer_compliance.py (100%) rename src/MCPClient/{lib => }/settings/__init__.py (100%) rename src/MCPClient/{lib => }/settings/common.py (100%) rename src/MCPClient/{lib => }/settings/test.py (100%) rename src/MCPClient/{lib => }/settings/testmysql.py (100%) rename src/MCPServer/{lib => }/archivematicaMCP.py (100%) rename src/MCPServer/{lib => }/assets/workflow-schema-v1.json (100%) rename src/MCPServer/{lib => }/assets/workflow.json (100%) rename src/MCPServer/{lib => }/server/__init__.py (100%) rename src/MCPServer/{lib => }/server/jobs/__init__.py (100%) rename src/MCPServer/{lib => }/server/jobs/base.py (100%) rename src/MCPServer/{lib => }/server/jobs/chain.py (100%) rename src/MCPServer/{lib => }/server/jobs/client.py (100%) rename src/MCPServer/{lib => }/server/jobs/decisions.py (100%) rename src/MCPServer/{lib => }/server/jobs/local.py (100%) rename src/MCPServer/{lib => }/server/mcp.py (100%) rename src/MCPServer/{lib => }/server/metrics.py (100%) rename src/MCPServer/{lib => }/server/packages.py (100%) rename src/MCPServer/{lib => }/server/processing_config.py (100%) rename src/MCPServer/{lib => }/server/queues.py (100%) rename src/MCPServer/{lib => }/server/rpc_server.py (100%) rename src/MCPServer/{lib => }/server/shared_dirs.py (100%) rename src/MCPServer/{lib => }/server/tasks/__init__.py (100%) rename src/MCPServer/{lib => }/server/tasks/backends/__init__.py (100%) rename src/MCPServer/{lib => }/server/tasks/backends/base.py (100%) rename src/MCPServer/{lib => }/server/tasks/backends/gearman_backend.py (100%) rename src/MCPServer/{lib => }/server/tasks/task.py (100%) rename src/MCPServer/{lib => }/server/translation.py (100%) rename src/MCPServer/{lib => }/server/utils.py (100%) rename src/MCPServer/{lib => }/server/watch_dirs.py (100%) rename src/MCPServer/{lib => }/server/workflow.py (100%) rename src/MCPServer/{lib => }/server/workflow_abilities.py (100%) rename src/MCPServer/{lib => }/settings/__init__.py (100%) rename src/MCPServer/{lib => }/settings/common.py (100%) rename src/MCPServer/{lib => }/settings/test.py (100%) rename src/MCPServer/{lib => }/settings/testmysql.py (100%) rename src/archivematicaCommon/{lib => }/__init__.py (100%) rename src/archivematicaCommon/{lib => }/appconfig.py (98%) rename src/archivematicaCommon/{lib => }/archivematicaFunctions.py (100%) rename src/archivematicaCommon/{lib => }/bag.py (100%) rename src/archivematicaCommon/{lib => }/bindpid.py (100%) rename src/archivematicaCommon/{lib => }/common_metrics.py (100%) rename src/archivematicaCommon/{lib => }/countryCodes.py (100%) rename src/archivematicaCommon/{lib => }/custom_handlers.py (100%) rename src/archivematicaCommon/{lib => }/databaseFunctions.py (100%) rename src/archivematicaCommon/{lib => }/dbconns.py (100%) rename src/archivematicaCommon/{lib => }/dicts.py (100%) rename src/archivematicaCommon/{lib => }/elasticSearchFunctions.py (100%) rename src/archivematicaCommon/{lib => }/email_settings.py (100%) rename src/archivematicaCommon/{lib => }/env_configparser.py (100%) rename src/archivematicaCommon/{lib => }/executeOrRunSubProcess.py (100%) rename src/archivematicaCommon/{lib => }/externals/HTML/HTML.py (100%) rename src/archivematicaCommon/{lib => }/externals/HTML/Licence_CeCILL_V2-en.html (100%) rename src/archivematicaCommon/{lib => }/externals/HTML/Licence_CeCILL_V2-fr.html (100%) rename src/archivematicaCommon/{lib => }/externals/HTML/__init__.py (100%) rename src/archivematicaCommon/{lib => }/externals/__init__.py (100%) rename src/archivematicaCommon/{lib => }/externals/extractMaildirAttachments.py (100%) rename src/archivematicaCommon/{lib => }/externals/fido/archivematica_format_extensions.xml (100%) rename src/archivematicaCommon/{lib => }/externals/fiwalk_plugins/ficonfig.txt (100%) rename src/archivematicaCommon/{lib => }/externals/fiwalk_plugins/pronom_ident.py (100%) rename src/archivematicaCommon/{lib => }/externals/maildirToMbox.py (100%) rename src/archivematicaCommon/{lib => }/externals/xmltodict.py (100%) rename src/archivematicaCommon/{lib => }/fileOperations.py (100%) rename src/archivematicaCommon/{lib => }/gearman_encoder.py (100%) rename src/archivematicaCommon/{lib => }/identifier_functions.py (91%) rename src/archivematicaCommon/{lib => }/namespaces.py (100%) rename src/archivematicaCommon/{lib => }/processing.py (100%) rename src/archivematicaCommon/{lib => }/storageService.py (100%) rename src/archivematicaCommon/{lib => }/version.py (100%) rename src/archivematicaCommon/{lib => }/xml2obj.py (100%) rename src/dashboard/{src => }/__init__.py (100%) rename src/dashboard/{src => }/components/__init__.py (100%) rename src/dashboard/{src => }/components/access/__init__.py (100%) rename src/dashboard/{src => }/components/access/urls.py (100%) rename src/dashboard/{src => }/components/access/views.py (100%) rename src/dashboard/{src => }/components/accounts/__init__.py (100%) rename src/dashboard/{src => }/components/accounts/apps.py (100%) rename src/dashboard/{src => }/components/accounts/backends.py (100%) rename src/dashboard/{src => }/components/accounts/forms.py (100%) rename src/dashboard/{src => }/components/accounts/signals.py (100%) rename src/dashboard/{src => }/components/accounts/urls.py (100%) rename src/dashboard/{src => }/components/accounts/validators.py (100%) rename src/dashboard/{src => }/components/accounts/views.py (100%) rename src/dashboard/{src => }/components/administration/__init__.py (100%) rename src/dashboard/{src => }/components/administration/apps.py (100%) rename src/dashboard/{src => }/components/administration/forms.py (100%) rename src/dashboard/{src => }/components/administration/forms_dip_upload.py (100%) rename src/dashboard/{src => }/components/administration/migrations/0001_initial.py (100%) rename src/dashboard/{src => }/components/administration/migrations/0002_archivesspaceconfig.py (100%) rename src/dashboard/{src => }/components/administration/migrations/0003_archivesspace_help_text.py (100%) rename src/dashboard/{src => }/components/administration/migrations/0004_archivesspaceconfig_inherit_notes.py (100%) rename src/dashboard/{src => }/components/administration/migrations/0005_archivesspace_inherit_note_default.py (100%) rename src/dashboard/{src => }/components/administration/migrations/0006_use_statement_optional.py (100%) rename src/dashboard/{src => }/components/administration/migrations/0007_delete_unused_models.py (100%) rename src/dashboard/{src => }/components/administration/migrations/__init__.py (100%) rename src/dashboard/{src => }/components/administration/models.py (100%) rename src/dashboard/{src => }/components/administration/urls.py (100%) rename src/dashboard/{src => }/components/administration/views.py (100%) rename src/dashboard/{src => }/components/administration/views_dip_upload.py (100%) rename src/dashboard/{src => }/components/administration/views_processing.py (100%) rename src/dashboard/{src => }/components/advanced_search.py (100%) rename src/dashboard/{src => }/components/api/__init__.py (100%) rename src/dashboard/{src => }/components/api/urls.py (100%) rename src/dashboard/{src => }/components/api/validators.py (100%) rename src/dashboard/{src => }/components/api/views.py (100%) rename src/dashboard/{src => }/components/appraisal/__init__.py (100%) rename src/dashboard/{src => }/components/appraisal/urls.py (100%) rename src/dashboard/{src => }/components/appraisal/views.py (100%) rename src/dashboard/{src => }/components/archival_storage/__init__.py (100%) rename src/dashboard/{src => }/components/archival_storage/atom.py (100%) rename src/dashboard/{src => }/components/archival_storage/forms.py (100%) rename src/dashboard/{src => }/components/archival_storage/urls.py (100%) rename src/dashboard/{src => }/components/archival_storage/views.py (100%) rename src/dashboard/{src => }/components/backlog/__init__.py (100%) rename src/dashboard/{src => }/components/backlog/urls.py (100%) rename src/dashboard/{src => }/components/backlog/views.py (100%) rename src/dashboard/{src => }/components/decorators.py (100%) rename src/dashboard/{src => }/components/file/__init__.py (100%) rename src/dashboard/{src => }/components/file/urls.py (100%) rename src/dashboard/{src => }/components/file/views.py (100%) rename src/dashboard/{src => }/components/filesystem_ajax/__init__.py (100%) rename src/dashboard/{src => }/components/filesystem_ajax/helpers.py (100%) rename src/dashboard/{src => }/components/filesystem_ajax/urls.py (100%) rename src/dashboard/{src => }/components/filesystem_ajax/views.py (100%) rename src/dashboard/{src => }/components/helpers.py (100%) rename src/dashboard/{src => }/components/ingest/__init__.py (100%) rename src/dashboard/{src => }/components/ingest/forms.py (100%) rename src/dashboard/{src => }/components/ingest/pair_matcher.py (100%) rename src/dashboard/{src => }/components/ingest/urls.py (100%) rename src/dashboard/{src => }/components/ingest/views.py (100%) rename src/dashboard/{src => }/components/ingest/views_NormalizationReport.py (100%) rename src/dashboard/{src => }/components/ingest/views_as.py (100%) rename src/dashboard/{src => }/components/mcp/__init__.py (100%) rename src/dashboard/{src => }/components/mcp/urls.py (100%) rename src/dashboard/{src => }/components/mcp/views.py (100%) rename src/dashboard/{src => }/components/rights/__init__.py (100%) rename src/dashboard/{src => }/components/rights/forms.py (100%) rename src/dashboard/{src => }/components/rights/ingest_urls.py (100%) rename src/dashboard/{src => }/components/rights/load.py (100%) rename src/dashboard/{src => }/components/rights/transfer_urls.py (100%) rename src/dashboard/{src => }/components/rights/views.py (100%) rename src/dashboard/{src => }/components/transfer/__init__.py (100%) rename src/dashboard/{src => }/components/transfer/urls.py (100%) rename src/dashboard/{src => }/components/transfer/views.py (100%) rename src/dashboard/{src => }/components/unit/__init__.py (100%) rename src/dashboard/{src => }/components/unit/urls.py (100%) rename src/dashboard/{src => }/components/unit/views.py (100%) rename src/dashboard/{src => }/contrib/__init__.py (100%) rename src/dashboard/{src => }/contrib/mcp/__init__.py (100%) rename src/dashboard/{src => }/contrib/mcp/client.py (100%) rename src/dashboard/{src => }/fpr/__init__.py (100%) rename src/dashboard/{src => }/fpr/apps.py (100%) rename src/dashboard/{src => }/fpr/forms.py (100%) rename src/dashboard/{src => }/fpr/helpers.py (100%) rename src/dashboard/{src => }/fpr/management/__init__.py (100%) rename src/dashboard/{src => }/fpr/management/commands/__init__.py (100%) rename src/dashboard/{src => }/fpr/management/commands/get_fpr_changes.py (100%) rename src/dashboard/{src => }/fpr/management/commands/import_pronom_ids.py (100%) rename src/dashboard/{src => }/fpr/migrations-data/mc_validate_cmd.py (100%) rename src/dashboard/{src => }/fpr/migrations/0001_initial.py (100%) rename src/dashboard/{src => }/fpr/migrations/0002_initial_data.py (100%) rename src/dashboard/{src => }/fpr/migrations/0003_pronom_84.py (100%) rename src/dashboard/{src => }/fpr/migrations/0004_pronom_88.py (100%) rename src/dashboard/{src => }/fpr/migrations/0005_update_tool_versions.py (100%) rename src/dashboard/{src => }/fpr/migrations/0006_i18n_models.py (100%) rename src/dashboard/{src => }/fpr/migrations/0007_embedded_default_thumbnail.py (100%) rename src/dashboard/{src => }/fpr/migrations/0008_update_django_autoslug.py (100%) rename src/dashboard/{src => }/fpr/migrations/0009_pronom_90.py (100%) rename src/dashboard/{src => }/fpr/migrations/0010_update_fido_136.py (100%) rename src/dashboard/{src => }/fpr/migrations/0011_mediaconch_validation.py (100%) rename src/dashboard/{src => }/fpr/migrations/0012_mediaconch_policy_checks.py (100%) rename src/dashboard/{src => }/fpr/migrations/0013_normalization_rules_mov.py (100%) rename src/dashboard/{src => }/fpr/migrations/0014_fix_fits_command.py (100%) rename src/dashboard/{src => }/fpr/migrations/0015_pronom_92.py (100%) rename src/dashboard/{src => }/fpr/migrations/0016_update_idtools.py (100%) rename src/dashboard/{src => }/fpr/migrations/0017_ocr_unique_names.py (100%) rename src/dashboard/{src => }/fpr/migrations/0018_slug_unique.py (100%) rename src/dashboard/{src => }/fpr/migrations/0019_fix_gs_command.py (100%) rename src/dashboard/{src => }/fpr/migrations/0020_pronom_93.py (100%) rename src/dashboard/{src => }/fpr/migrations/0021_normalize_jp2_with_ffmpeg_for_preservation.py (100%) rename src/dashboard/{src => }/fpr/migrations/0022_pronom_94.py (100%) rename src/dashboard/{src => }/fpr/migrations/0023_update_idtools.py (100%) rename src/dashboard/{src => }/fpr/migrations/0024_update_fido.py (100%) rename src/dashboard/{src => }/fpr/migrations/0025_update_fido_1312.py (100%) rename src/dashboard/{src => }/fpr/migrations/0026_fits_nailgun_compat.py (100%) rename src/dashboard/{src => }/fpr/migrations/0027_idcommand_tool_disallow_blank.py (100%) rename src/dashboard/{src => }/fpr/migrations/0028_idcommand_unique_enabled.py (100%) rename src/dashboard/{src => }/fpr/migrations/0029_update_inkscape_svg_command.py (100%) rename src/dashboard/{src => }/fpr/migrations/0030_update_jhove_command.py (100%) rename src/dashboard/{src => }/fpr/migrations/0031_update_normalization_rules.py (100%) rename src/dashboard/{src => }/fpr/migrations/0032_pronom_96.py (100%) rename src/dashboard/{src => }/fpr/migrations/0033_update_idtools.py (100%) rename src/dashboard/{src => }/fpr/migrations/0034_delete_unused_models.py (100%) rename src/dashboard/{src => }/fpr/migrations/0035_python3_compatibility.py (100%) rename src/dashboard/{src => }/fpr/migrations/0036_pronom_109.py (100%) rename src/dashboard/{src => }/fpr/migrations/0037_update_idtools.py (100%) rename src/dashboard/{src => }/fpr/migrations/0038_use_uuidfield.py (100%) rename src/dashboard/{src => }/fpr/migrations/0039_django32.py (100%) rename src/dashboard/{src => }/fpr/migrations/0040_update_jhove_validation.py (100%) rename src/dashboard/{src => }/fpr/migrations/0041_pronom_116.py (100%) rename src/dashboard/{src => }/fpr/migrations/0042_update_idtools.py (100%) rename src/dashboard/{src => }/fpr/migrations/0043_update_default_thumbnail_command.py (100%) rename src/dashboard/{src => }/fpr/migrations/0044_remove_fits.py (100%) rename src/dashboard/{src => }/fpr/migrations/0045_update_event_detail_commands.py (100%) rename src/dashboard/{src => }/fpr/migrations/0046_update_jhove_module_validation.py (100%) rename src/dashboard/{src => }/fpr/migrations/__init__.py (100%) rename src/dashboard/{src => }/fpr/migrations/initial_data.json (100%) rename src/dashboard/{src => }/fpr/migrations/pronom84_formatgroups_new.json (100%) rename src/dashboard/{src => }/fpr/migrations/pronom84_formats_all.json (100%) rename src/dashboard/{src => }/fpr/migrations/pronom84_formatversions_all.json (100%) rename src/dashboard/{src => }/fpr/migrations/pronom84_fprules_all.json (100%) rename src/dashboard/{src => }/fpr/migrations/pronom84_fptools_all.json (100%) rename src/dashboard/{src => }/fpr/migrations/pronom84_idcommands_all.json (100%) rename src/dashboard/{src => }/fpr/migrations/pronom84_idrules_all.json (100%) rename src/dashboard/{src => }/fpr/migrations/pronom84_idtools_all.json (100%) rename src/dashboard/{src => }/fpr/migrations/pronom_109.json (100%) rename src/dashboard/{src => }/fpr/migrations/pronom_116.json (100%) rename src/dashboard/{src => }/fpr/migrations/pronom_88.json (100%) rename src/dashboard/{src => }/fpr/migrations/pronom_90.json (100%) rename src/dashboard/{src => }/fpr/migrations/pronom_92.json (100%) rename src/dashboard/{src => }/fpr/migrations/pronom_93.json (100%) rename src/dashboard/{src => }/fpr/migrations/pronom_94.json (100%) rename src/dashboard/{src => }/fpr/migrations/pronom_96.json (100%) rename src/dashboard/{src => }/fpr/models.py (100%) rename src/dashboard/{src => }/fpr/templates/fpr/_sidebar.html (100%) rename src/dashboard/{src => }/fpr/templates/fpr/app_layout.html (100%) rename src/dashboard/{src => }/fpr/templates/fpr/disable.html (100%) rename src/dashboard/{src => }/fpr/templates/fpr/format/detail.html (100%) rename src/dashboard/{src => }/fpr/templates/fpr/format/form.html (100%) rename src/dashboard/{src => }/fpr/templates/fpr/format/group/delete.html (100%) rename src/dashboard/{src => }/fpr/templates/fpr/format/group/form.html (100%) rename src/dashboard/{src => }/fpr/templates/fpr/format/group/list.html (100%) rename src/dashboard/{src => }/fpr/templates/fpr/format/list.html (100%) rename src/dashboard/{src => }/fpr/templates/fpr/format/version/detail.html (100%) rename src/dashboard/{src => }/fpr/templates/fpr/format/version/form.html (100%) rename src/dashboard/{src => }/fpr/templates/fpr/fpcommand/detail.html (100%) rename src/dashboard/{src => }/fpr/templates/fpr/fpcommand/form.html (100%) rename src/dashboard/{src => }/fpr/templates/fpr/fpcommand/list.html (100%) rename src/dashboard/{src => }/fpr/templates/fpr/fprule/detail.html (100%) rename src/dashboard/{src => }/fpr/templates/fpr/fprule/form.html (100%) rename src/dashboard/{src => }/fpr/templates/fpr/fprule/list.html (100%) rename src/dashboard/{src => }/fpr/templates/fpr/fptool/detail.html (100%) rename src/dashboard/{src => }/fpr/templates/fpr/fptool/form.html (100%) rename src/dashboard/{src => }/fpr/templates/fpr/fptool/list.html (100%) rename src/dashboard/{src => }/fpr/templates/fpr/idcommand/detail.html (100%) rename src/dashboard/{src => }/fpr/templates/fpr/idcommand/form.html (100%) rename src/dashboard/{src => }/fpr/templates/fpr/idcommand/list.html (100%) rename src/dashboard/{src => }/fpr/templates/fpr/idrule/detail.html (100%) rename src/dashboard/{src => }/fpr/templates/fpr/idrule/form.html (100%) rename src/dashboard/{src => }/fpr/templates/fpr/idrule/list.html (100%) rename src/dashboard/{src => }/fpr/templates/fpr/idtool/detail.html (100%) rename src/dashboard/{src => }/fpr/templates/fpr/idtool/form.html (100%) rename src/dashboard/{src => }/fpr/templates/fpr/idtool/list.html (100%) rename src/dashboard/{src => }/fpr/templates/fpr/revisions/list.html (100%) rename src/dashboard/{src => }/fpr/templatetags/__init__.py (100%) rename src/dashboard/{src => }/fpr/templatetags/revisions_link.py (100%) rename src/dashboard/{src => }/fpr/urls.py (100%) rename src/dashboard/{src => }/fpr/utils.py (100%) rename src/dashboard/{src => }/fpr/views.py (100%) rename src/dashboard/{src => }/installer/__init__.py (100%) rename src/dashboard/{src => }/installer/forms.py (100%) rename src/dashboard/{src => }/installer/management/__init__.py (100%) rename src/dashboard/{src => }/installer/management/commands/__init__.py (100%) rename src/dashboard/{src => }/installer/management/commands/install.py (100%) rename src/dashboard/{src => }/installer/middleware.py (100%) rename src/dashboard/{src => }/installer/steps.py (100%) rename src/dashboard/{src => }/installer/urls.py (100%) rename src/dashboard/{src => }/installer/views.py (100%) rename src/dashboard/{src => }/locale/en/LC_MESSAGES/django.po (100%) rename src/dashboard/{src => }/locale/en/LC_MESSAGES/djangojs.po (100%) rename src/dashboard/{src => }/locale/es/LC_MESSAGES/django.po (100%) rename src/dashboard/{src => }/locale/es/LC_MESSAGES/djangojs.po (100%) rename src/dashboard/{src => }/locale/fr/LC_MESSAGES/django.po (100%) rename src/dashboard/{src => }/locale/fr/LC_MESSAGES/djangojs.po (100%) rename src/dashboard/{src => }/locale/ja/LC_MESSAGES/django.po (100%) rename src/dashboard/{src => }/locale/ja/LC_MESSAGES/djangojs.po (100%) rename src/dashboard/{src => }/locale/no/LC_MESSAGES/django.po (100%) rename src/dashboard/{src => }/locale/no/LC_MESSAGES/djangojs.po (100%) rename src/dashboard/{src => }/locale/pt/LC_MESSAGES/django.po (100%) rename src/dashboard/{src => }/locale/pt/LC_MESSAGES/djangojs.po (100%) rename src/dashboard/{src => }/locale/pt_BR/LC_MESSAGES/django.po (100%) rename src/dashboard/{src => }/locale/pt_BR/LC_MESSAGES/djangojs.po (100%) rename src/dashboard/{src => }/locale/sv/LC_MESSAGES/django.po (100%) rename src/dashboard/{src => }/locale/sv/LC_MESSAGES/djangojs.po (100%) rename src/dashboard/{src => }/main/__init__.py (100%) rename src/dashboard/{src => }/main/apps.py (100%) rename src/dashboard/{src => }/main/context_processors.py (100%) rename src/dashboard/{src => }/main/forms.py (100%) rename src/dashboard/{src => }/main/management/__init__.py (100%) rename src/dashboard/{src => }/main/management/commands/__init__.py (100%) rename src/dashboard/{src => }/main/management/commands/purge_transient_processing_data.py (100%) rename src/dashboard/{src => }/main/management/commands/rebuild_aip_index_from_storage_service.py (100%) rename src/dashboard/{src => }/main/management/commands/rebuild_elasticsearch_aip_index_from_files.py (100%) rename src/dashboard/{src => }/main/management/commands/rebuild_transfer_backlog.py (100%) rename src/dashboard/{src => }/main/management/commands/reindex_from_remote_cluster.py (100%) rename src/dashboard/{src => }/main/management/commands/resolve_pending_jobs.py (100%) rename src/dashboard/{src => }/main/management/commands/update_elasticsearch_mappings.py (100%) rename src/dashboard/{src => }/main/migrations/0001_initial.py (100%) rename src/dashboard/{src => }/main/migrations/0002_initial_data.py (100%) rename src/dashboard/{src => }/main/migrations/0003_archivesspacedipobjectresourcepairing.py (100%) rename src/dashboard/{src => }/main/migrations/0003_archivesspacedipobjectresourcepairing_data.py (100%) rename src/dashboard/{src => }/main/migrations/0004_rights.py (100%) rename src/dashboard/{src => }/main/migrations/0005_reingest.py (100%) rename src/dashboard/{src => }/main/migrations/0005_reingest_data.py (100%) rename src/dashboard/{src => }/main/migrations/0006_levelofdescription.py (100%) rename src/dashboard/{src => }/main/migrations/0007_django_upgrade_tweaks.py (100%) rename src/dashboard/{src => }/main/migrations/0008_fpcommandoutput.py (100%) rename src/dashboard/{src => }/main/migrations/0009_matching_gui.py (100%) rename src/dashboard/{src => }/main/migrations/0010_dip_upload_store.py (100%) rename src/dashboard/{src => }/main/migrations/0011_version_number.py (100%) rename src/dashboard/{src => }/main/migrations/0012_file_id_text.py (100%) rename src/dashboard/{src => }/main/migrations/0013_upload_archivesspace_inherit_notes.py (100%) rename src/dashboard/{src => }/main/migrations/0014_aic_fixes.py (100%) rename src/dashboard/{src => }/main/migrations/0015_no_normalize_thumbnails.py (100%) rename src/dashboard/{src => }/main/migrations/0016_file_currentlocation_nullable.py (100%) rename src/dashboard/{src => }/main/migrations/0017_update_seigfried.py (100%) rename src/dashboard/{src => }/main/migrations/0018_archivesspace_sip_arrange.py (100%) rename src/dashboard/{src => }/main/migrations/0019_normalization_report.py (100%) rename src/dashboard/{src => }/main/migrations/0020_index_after_processing_decision.py (100%) rename src/dashboard/{src => }/main/migrations/0021_checksum_algorithms.py (100%) rename src/dashboard/{src => }/main/migrations/0022_email_report_args.py (100%) rename src/dashboard/{src => }/main/migrations/0023_blob_fields.py (100%) rename src/dashboard/{src => }/main/migrations/0024_agenttype.py (100%) rename src/dashboard/{src => }/main/migrations/0025_copyrightstatus_controlled_vocab.py (100%) rename src/dashboard/{src => }/main/migrations/0026_agent_m2m_event.py (100%) rename src/dashboard/{src => }/main/migrations/0027_full_reingest.py (100%) rename src/dashboard/{src => }/main/migrations/0028_version_number.py (100%) rename src/dashboard/{src => }/main/migrations/0029_backlog_removal_event.py (100%) rename src/dashboard/{src => }/main/migrations/0030_rights_import.py (100%) rename src/dashboard/{src => }/main/migrations/0031_job_currentstep_choices.py (100%) rename src/dashboard/{src => }/main/migrations/0032_dashboardsetting_scope.py (100%) rename src/dashboard/{src => }/main/migrations/0033_store_transfer_file_modification_dates.py (100%) rename src/dashboard/{src => }/main/migrations/0034_add_readme_to_aips.py (100%) rename src/dashboard/{src => }/main/migrations/0035_fix_workflow_dip_generation.py (100%) rename src/dashboard/{src => }/main/migrations/0036_mediaconch_validation.py (100%) rename src/dashboard/{src => }/main/migrations/0037_mediaconch_policy_checks.py (100%) rename src/dashboard/{src => }/main/migrations/0038_fix_workflow_store_dip.py (100%) rename src/dashboard/{src => }/main/migrations/0039_delete_sudo_clientscript.py (100%) rename src/dashboard/{src => }/main/migrations/0040_directory_model.py (100%) rename src/dashboard/{src => }/main/migrations/0041_bind_pids.py (99%) rename src/dashboard/{src => }/main/migrations/0042_directory_uuids_all_transfer_types.py (100%) rename src/dashboard/{src => }/main/migrations/0043_remove_create_pointer_file_ms.py (100%) rename src/dashboard/{src => }/main/migrations/0044_update_idtools.py (100%) rename src/dashboard/{src => }/main/migrations/0045_archivesspace_config_dict.py (100%) rename src/dashboard/{src => }/main/migrations/0046_optional_normative_structmap.py (100%) rename src/dashboard/{src => }/main/migrations/0047_version_number.py (100%) rename src/dashboard/{src => }/main/migrations/0048_fix_upload_qubit_setting.py (100%) rename src/dashboard/{src => }/main/migrations/0049_change_pointer_file_filegrpuse.py (100%) rename src/dashboard/{src => }/main/migrations/0050_remove_magic_links.py (100%) rename src/dashboard/{src => }/main/migrations/0051_remove_verify_premis_checksums.py (100%) rename src/dashboard/{src => }/main/migrations/0052_correct_extract_packages_fallback_link.py (100%) rename src/dashboard/{src => }/main/migrations/0053_remove_mcp_unused_field.py (100%) rename src/dashboard/{src => }/main/migrations/0054_index_aip_silent_error_branch.py (100%) rename src/dashboard/{src => }/main/migrations/0055_normalize_thumbnail_mode_selection.py (100%) rename src/dashboard/{src => }/main/migrations/0056_transfer_access_system_id.py (100%) rename src/dashboard/{src => }/main/migrations/0057_7zip_no_compression.py (100%) rename src/dashboard/{src => }/main/migrations/0058_fix_unit_variable_pull_link.py (100%) rename src/dashboard/{src => }/main/migrations/0059_siparrange_longblob.py (100%) rename src/dashboard/{src => }/main/migrations/0060_delete_orphan_mscl.py (100%) rename src/dashboard/{src => }/main/migrations/0061_create_dataverse_transfer_type.py (100%) rename src/dashboard/{src => }/main/migrations/0062_atom_upload_exit_code.py (100%) rename src/dashboard/{src => }/main/migrations/0063_update_idtools.py (100%) rename src/dashboard/{src => }/main/migrations/0064_version_number.py (100%) rename src/dashboard/{src => }/main/migrations/0065_version_number.py (100%) rename src/dashboard/{src => }/main/migrations/0066_archivesspace_base_url.py (100%) rename src/dashboard/{src => }/main/migrations/0067_delete_workflow_models.py (100%) rename src/dashboard/{src => }/main/migrations/0068_version_number.py (100%) rename src/dashboard/{src => }/main/migrations/0069_remove_atk.py (100%) rename src/dashboard/{src => }/main/migrations/0070_index_jobs.py (100%) rename src/dashboard/{src => }/main/migrations/0071_index_unitvariables_runsql.py (100%) rename src/dashboard/{src => }/main/migrations/0072_index_files.py (100%) rename src/dashboard/{src => }/main/migrations/0073_index_files_runsql.py (100%) rename src/dashboard/{src => }/main/migrations/0074_version_number.py (100%) rename src/dashboard/{src => }/main/migrations/0075_userprofile_system_emails.py (100%) rename src/dashboard/{src => }/main/migrations/0076_version_number.py (100%) rename src/dashboard/{src => }/main/migrations/0077_uuid_fields.py (100%) rename src/dashboard/{src => }/main/migrations/0078_username_check.py (100%) rename src/dashboard/{src => }/main/migrations/0079_version_number.py (100%) rename src/dashboard/{src => }/main/migrations/0080_delete_software_agent.py (100%) rename src/dashboard/{src => }/main/migrations/0081_package_status.py (100%) rename src/dashboard/{src => }/main/migrations/0082_use_uuidfield.py (100%) rename src/dashboard/{src => }/main/migrations/0083_unpickle_access_target.py (100%) rename src/dashboard/{src => }/main/migrations/0084_alter_job_index_together.py (100%) rename src/dashboard/{src => }/main/migrations/__init__.py (100%) rename src/dashboard/{src => }/main/models.py (100%) rename src/dashboard/{src => }/main/signals.py (100%) rename src/dashboard/{src => }/main/templatetags/__init__.py (100%) rename src/dashboard/{src => }/main/templatetags/active.py (100%) rename src/dashboard/{src => }/main/templatetags/breadcrumb.py (100%) rename src/dashboard/{src => }/main/templatetags/forms.py (100%) rename src/dashboard/{src => }/main/templatetags/job_status.py (100%) rename src/dashboard/{src => }/main/templatetags/keyvalue.py (100%) rename src/dashboard/{src => }/main/templatetags/lang.py (100%) rename src/dashboard/{src => }/main/templatetags/user.py (100%) rename src/dashboard/{src => }/main/urls.py (100%) rename src/dashboard/{src => }/main/views.py (100%) rename src/dashboard/{src => }/manage.py (100%) rename src/dashboard/{src => }/media/css/archival_storage.css (100%) rename src/dashboard/{src => }/media/css/as_match.css (100%) rename src/dashboard/{src => }/media/css/backbone-file-explorer.css (100%) rename src/dashboard/{src => }/media/css/backlog.css (100%) rename src/dashboard/{src => }/media/css/base.css (100%) rename src/dashboard/{src => }/media/css/directory_picker.css (100%) rename src/dashboard/{src => }/media/css/fonts.css (100%) rename src/dashboard/{src => }/media/css/reset.css (100%) rename src/dashboard/{src => }/media/css/search.css (100%) rename src/dashboard/{src => }/media/css/style.css (100%) rename src/dashboard/{src => }/media/css/transfer_grid.css (100%) rename src/dashboard/{src => }/media/images/1x1-pixel.png (100%) rename src/dashboard/{src => }/media/images/accept.png (100%) rename src/dashboard/{src => }/media/images/ajax-loader.gif (100%) rename src/dashboard/{src => }/media/images/arrow_refresh.png (100%) rename src/dashboard/{src => }/media/images/attach.png (100%) rename src/dashboard/{src => }/media/images/bell.png (100%) rename src/dashboard/{src => }/media/images/bullet_arrow_down.png (100%) rename src/dashboard/{src => }/media/images/bullet_arrow_up.png (100%) rename src/dashboard/{src => }/media/images/bullet_delete.png (100%) rename src/dashboard/{src => }/media/images/bullet_green.png (100%) rename src/dashboard/{src => }/media/images/bullet_orange.png (100%) rename src/dashboard/{src => }/media/images/cancel.png (100%) rename src/dashboard/{src => }/media/images/clock.png (100%) rename src/dashboard/{src => }/media/images/cog.png (100%) rename src/dashboard/{src => }/media/images/delete.png (100%) rename src/dashboard/{src => }/media/images/error.png (100%) rename src/dashboard/{src => }/media/images/favicon.ico (100%) rename src/dashboard/{src => }/media/images/filefolder.png (100%) rename src/dashboard/{src => }/media/images/filefolderopen.png (100%) rename src/dashboard/{src => }/media/images/folder.png (100%) rename src/dashboard/{src => }/media/images/logo_header.png (100%) rename src/dashboard/{src => }/media/images/logo_login.gif (100%) rename src/dashboard/{src => }/media/images/logo_welcome.gif (100%) rename src/dashboard/{src => }/media/images/package_go.png (100%) rename src/dashboard/{src => }/media/images/pencil_add.png (100%) rename src/dashboard/{src => }/media/images/table_edit.png (100%) rename src/dashboard/{src => }/media/images/tick.png (100%) rename src/dashboard/{src => }/media/images/user_comment.png (100%) rename src/dashboard/{src => }/media/images/vcard_edit.png (100%) rename src/dashboard/{src => }/media/images/zoom.png (100%) rename src/dashboard/{src => }/media/images/zoom_out.png (100%) rename src/dashboard/{src => }/media/js/administration/atom_levels_of_description.js (100%) rename src/dashboard/{src => }/media/js/advanced-search-query-creator.js (100%) rename src/dashboard/{src => }/media/js/archival_storage/archival_storage_search.js (100%) rename src/dashboard/{src => }/media/js/backlog/backlog-search.js (100%) rename src/dashboard/{src => }/media/js/contextual_help.js (100%) rename src/dashboard/{src => }/media/js/directory_picker.js (100%) rename src/dashboard/{src => }/media/js/file-explorer.js (100%) rename src/dashboard/{src => }/media/js/file_browser.js (100%) rename src/dashboard/{src => }/media/js/ingest.js (100%) rename src/dashboard/{src => }/media/js/ingest/aip_browser.js (100%) rename src/dashboard/{src => }/media/js/ingest/as_matcher.js (100%) rename src/dashboard/{src => }/media/js/ingest/as_matcher_setup.js (100%) rename src/dashboard/{src => }/media/js/ingest/backlog.js (100%) rename src/dashboard/{src => }/media/js/ingest/metadata_form.js (100%) rename src/dashboard/{src => }/media/js/ingest/normalization_report.js (100%) rename src/dashboard/{src => }/media/js/jobs.js (100%) rename src/dashboard/{src => }/media/js/misc.js (100%) rename src/dashboard/{src => }/media/js/online.js (100%) rename src/dashboard/{src => }/media/js/repeating-ajax-data.js (100%) rename src/dashboard/{src => }/media/js/rights_edit.js (100%) rename src/dashboard/{src => }/media/js/status.js (100%) rename src/dashboard/{src => }/media/js/transfer.js (100%) rename src/dashboard/{src => }/media/js/transfer/component_directory_select.js (100%) rename src/dashboard/{src => }/media/js/vendor/base64.js (100%) rename src/dashboard/{src => }/media/vendor/backbone.js (100%) rename src/dashboard/{src => }/media/vendor/datatables/css/buttons.bootstrap.min.css (100%) rename src/dashboard/{src => }/media/vendor/datatables/css/jquery.dataTables.css (100%) rename src/dashboard/{src => }/media/vendor/datatables/images/favicon.ico (100%) rename src/dashboard/{src => }/media/vendor/datatables/images/sort_asc.png (100%) rename src/dashboard/{src => }/media/vendor/datatables/images/sort_asc_disabled.png (100%) rename src/dashboard/{src => }/media/vendor/datatables/images/sort_both.png (100%) rename src/dashboard/{src => }/media/vendor/datatables/images/sort_desc.png (100%) rename src/dashboard/{src => }/media/vendor/datatables/images/sort_desc_disabled.png (100%) rename src/dashboard/{src => }/media/vendor/datatables/js/buttons.bootstrap.min.js (100%) rename src/dashboard/{src => }/media/vendor/datatables/js/buttons.colVis.min.js (100%) rename src/dashboard/{src => }/media/vendor/datatables/js/dataTables.buttons.min.js (100%) rename src/dashboard/{src => }/media/vendor/datatables/js/jquery.dataTables.min.js (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/.npmignore (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/HELP-US-OUT.txt (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/README.md (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/css/font-awesome.css (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/css/font-awesome.css.map (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/css/font-awesome.min.css (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/fonts/FontAwesome.otf (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/fonts/fontawesome-webfont.eot (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/fonts/fontawesome-webfont.svg (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/fonts/fontawesome-webfont.ttf (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/fonts/fontawesome-webfont.woff (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/fonts/fontawesome-webfont.woff2 (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/less/animated.less (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/less/bordered-pulled.less (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/less/core.less (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/less/fixed-width.less (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/less/font-awesome.less (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/less/icons.less (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/less/larger.less (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/less/list.less (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/less/mixins.less (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/less/path.less (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/less/rotated-flipped.less (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/less/screen-reader.less (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/less/stacked.less (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/less/variables.less (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/package.json (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/scss/_animated.scss (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/scss/_bordered-pulled.scss (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/scss/_core.scss (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/scss/_fixed-width.scss (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/scss/_icons.scss (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/scss/_larger.scss (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/scss/_list.scss (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/scss/_mixins.scss (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/scss/_path.scss (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/scss/_rotated-flipped.scss (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/scss/_screen-reader.scss (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/scss/_stacked.scss (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/scss/_variables.scss (100%) rename src/dashboard/{src => }/media/vendor/font-awesome/scss/font-awesome.scss (100%) rename src/dashboard/{src => }/media/vendor/jquery-ui/images/ui-icons_444444_256x240.png (100%) rename src/dashboard/{src => }/media/vendor/jquery-ui/images/ui-icons_555555_256x240.png (100%) rename src/dashboard/{src => }/media/vendor/jquery-ui/images/ui-icons_777620_256x240.png (100%) rename src/dashboard/{src => }/media/vendor/jquery-ui/images/ui-icons_777777_256x240.png (100%) rename src/dashboard/{src => }/media/vendor/jquery-ui/images/ui-icons_cc0000_256x240.png (100%) rename src/dashboard/{src => }/media/vendor/jquery-ui/images/ui-icons_ffffff_256x240.png (100%) rename src/dashboard/{src => }/media/vendor/jquery-ui/jquery-ui.css (100%) rename src/dashboard/{src => }/media/vendor/jquery-ui/jquery-ui.js (100%) rename src/dashboard/{src => }/media/vendor/jquery.idle-timer.js (100%) rename src/dashboard/{src => }/media/vendor/jquery.inputmask.js (100%) rename src/dashboard/{src => }/media/vendor/jquery.js (100%) rename src/dashboard/{src => }/media/vendor/select2/README.md (100%) rename src/dashboard/{src => }/media/vendor/select2/select2.css (100%) rename src/dashboard/{src => }/media/vendor/select2/select2.js (100%) rename src/dashboard/{src => }/media/vendor/select2/select2.min.js (100%) rename src/dashboard/{src => }/media/vendor/select2/select2.png (100%) rename src/dashboard/{src => }/media/vendor/select2/spinner.gif (100%) rename src/dashboard/{src => }/media/vendor/twitter-bootstrap/.gitignore (100%) rename src/dashboard/{src => }/media/vendor/twitter-bootstrap/css/bootstrap-theme.css (100%) rename src/dashboard/{src => }/media/vendor/twitter-bootstrap/css/bootstrap-theme.css.map (100%) rename src/dashboard/{src => }/media/vendor/twitter-bootstrap/css/bootstrap.css (100%) rename src/dashboard/{src => }/media/vendor/twitter-bootstrap/css/bootstrap.css.map (100%) rename src/dashboard/{src => }/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.eot (100%) rename src/dashboard/{src => }/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.svg (100%) rename src/dashboard/{src => }/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.ttf (100%) rename src/dashboard/{src => }/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.woff (100%) rename src/dashboard/{src => }/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.woff2 (100%) rename src/dashboard/{src => }/media/vendor/twitter-bootstrap/js/bootstrap.js (100%) rename src/dashboard/{src => }/media/vendor/underscore.js (100%) rename src/dashboard/{src => }/middleware/__init__.py (100%) rename src/dashboard/{src => }/middleware/common.py (100%) rename src/dashboard/{src => }/middleware/locale.py (100%) rename src/dashboard/{src => }/settings/__init__.py (100%) rename src/dashboard/{src => }/settings/base.py (100%) rename src/dashboard/{src => }/settings/components/__init__.py (100%) rename src/dashboard/{src => }/settings/components/auth.py (100%) rename src/dashboard/{src => }/settings/components/cas_auth.py (100%) rename src/dashboard/{src => }/settings/components/csp.py (100%) rename src/dashboard/{src => }/settings/components/ldap_auth.py (100%) rename src/dashboard/{src => }/settings/components/oidc_auth.py (100%) rename src/dashboard/{src => }/settings/components/shibboleth_auth.py (100%) rename src/dashboard/{src => }/settings/local.py (100%) rename src/dashboard/{src => }/settings/production.py (100%) rename src/dashboard/{src => }/settings/test.py (100%) rename src/dashboard/{src => }/settings/testmysql.py (100%) rename src/dashboard/{src => }/templates/404.html (100%) rename src/dashboard/{src => }/templates/500.html (100%) rename src/dashboard/{src => }/templates/_form.html (100%) rename src/dashboard/{src => }/templates/_formset.html (100%) rename src/dashboard/{src => }/templates/_formset_table.html (100%) rename src/dashboard/{src => }/templates/_fpr_update_button.html (100%) rename src/dashboard/{src => }/templates/_messages.html (100%) rename src/dashboard/{src => }/templates/_pager.html (100%) rename src/dashboard/{src => }/templates/accounts/add.html (100%) rename src/dashboard/{src => }/templates/accounts/edit.html (100%) rename src/dashboard/{src => }/templates/accounts/list.html (100%) rename src/dashboard/{src => }/templates/accounts/logged_out.html (100%) rename src/dashboard/{src => }/templates/accounts/login.html (100%) rename src/dashboard/{src => }/templates/accounts/profile.html (100%) rename src/dashboard/{src => }/templates/administration/api.html (100%) rename src/dashboard/{src => }/templates/administration/atom_levels_of_description.html (100%) rename src/dashboard/{src => }/templates/administration/dips_as_edit.html (100%) rename src/dashboard/{src => }/templates/administration/dips_atom_edit.html (100%) rename src/dashboard/{src => }/templates/administration/general.html (100%) rename src/dashboard/{src => }/templates/administration/handle_config.html (100%) rename src/dashboard/{src => }/templates/administration/language.html (100%) rename src/dashboard/{src => }/templates/administration/locations.html (100%) rename src/dashboard/{src => }/templates/administration/premis_agent.html (100%) rename src/dashboard/{src => }/templates/administration/processing.html (100%) rename src/dashboard/{src => }/templates/administration/processing_edit.html (100%) rename src/dashboard/{src => }/templates/administration/reports/failure_detail.html (100%) rename src/dashboard/{src => }/templates/administration/reports/failures.html (100%) rename src/dashboard/{src => }/templates/administration/sidebar.html (100%) rename src/dashboard/{src => }/templates/administration/taxonomy.html (100%) rename src/dashboard/{src => }/templates/administration/term_detail.html (100%) rename src/dashboard/{src => }/templates/administration/terms.html (100%) rename src/dashboard/{src => }/templates/administration/usage.html (100%) rename src/dashboard/{src => }/templates/administration/version.html (100%) rename src/dashboard/{src => }/templates/appraisal/appraisal.html (100%) rename src/dashboard/{src => }/templates/archival_storage/_archival_storage_search_form.html (100%) rename src/dashboard/{src => }/templates/archival_storage/archival_storage.html (100%) rename src/dashboard/{src => }/templates/archival_storage/view.html (100%) rename src/dashboard/{src => }/templates/backlog/backlog.html (100%) rename src/dashboard/{src => }/templates/delete_request.html (100%) rename src/dashboard/{src => }/templates/elasticsearch_error.html (100%) rename src/dashboard/{src => }/templates/elasticsearch_not_found.html (100%) rename src/dashboard/{src => }/templates/forbidden.html (100%) rename src/dashboard/{src => }/templates/ingest/aip_browse.html (100%) rename src/dashboard/{src => }/templates/ingest/as/_search_form.html (100%) rename src/dashboard/{src => }/templates/ingest/as/match.html (100%) rename src/dashboard/{src => }/templates/ingest/as/resource_component.html (100%) rename src/dashboard/{src => }/templates/ingest/as/resource_detail.html (100%) rename src/dashboard/{src => }/templates/ingest/as/resource_list.html (100%) rename src/dashboard/{src => }/templates/ingest/as/review_matches.html (100%) rename src/dashboard/{src => }/templates/ingest/backlog/_search_form.html (100%) rename src/dashboard/{src => }/templates/ingest/detail.html (100%) rename src/dashboard/{src => }/templates/ingest/grid.html (100%) rename src/dashboard/{src => }/templates/ingest/metadata_add_files.html (100%) rename src/dashboard/{src => }/templates/ingest/metadata_edit.html (100%) rename src/dashboard/{src => }/templates/ingest/metadata_event_detail.html (100%) rename src/dashboard/{src => }/templates/ingest/metadata_list.html (100%) rename src/dashboard/{src => }/templates/ingest/microservices.html (100%) rename src/dashboard/{src => }/templates/ingest/normalization_report.html (100%) rename src/dashboard/{src => }/templates/installer/storagesetup.html (100%) rename src/dashboard/{src => }/templates/installer/welcome.html (100%) rename src/dashboard/{src => }/templates/layout.html (100%) rename src/dashboard/{src => }/templates/layout_ajax.html (100%) rename src/dashboard/{src => }/templates/layout_fluid.html (100%) rename src/dashboard/{src => }/templates/main/_tasks_pager.html (100%) rename src/dashboard/{src => }/templates/main/access.html (100%) rename src/dashboard/{src => }/templates/main/tasks.html (100%) rename src/dashboard/{src => }/templates/rights/rights_edit.html (100%) rename src/dashboard/{src => }/templates/rights/rights_grants_edit.html (100%) rename src/dashboard/{src => }/templates/rights/rights_list.html (100%) rename src/dashboard/{src => }/templates/simple_confirm.html (100%) rename src/dashboard/{src => }/templates/transfer/component.html (100%) rename src/dashboard/{src => }/templates/transfer/detail.html (100%) rename src/dashboard/{src => }/templates/transfer/grid.html (100%) rename src/dashboard/{src => }/templates/transfer/metadata_edit.html (100%) rename src/dashboard/{src => }/templates/transfer/metadata_list.html (100%) rename src/dashboard/{src => }/templates/transfer/microservices.html (100%) rename src/dashboard/{src => }/urls.py (100%) rename src/dashboard/{src => }/wsgi.py (100%) diff --git a/.dockerignore b/.dockerignore index 6526b0abec..781214e6de 100644 --- a/.dockerignore +++ b/.dockerignore @@ -12,7 +12,7 @@ # Exclude src/dashboard/frontend/node_modules -src/dashboard/src/media/js/build +src/dashboard/media/js/build **/*~ **/*.log **/node_modules diff --git a/.gitignore b/.gitignore index 5bd2242d36..03aeeda892 100644 --- a/.gitignore +++ b/.gitignore @@ -23,5 +23,5 @@ .tox/ # frontend builds -src/dashboard/src/static/ -src/dashboard/src/media/js/build +src/dashboard/static/ +src/dashboard/media/js/build diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 1567707df3..f43158c6de 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -6,8 +6,8 @@ repos: args: [--no-ensure-ascii, --autofix] files: | (?x)^( - src/MCPServer/lib/assets/.*\.json| - src/(MCPClient/MCPServer|dashboard)/install/.*\.json + src/MCPServer/assets/.*\.json| + src/(MCPClient|MCPServer|dashboard)/install/.*\.json ) - repo: https://github.com/astral-sh/ruff-pre-commit rev: v0.9.9 @@ -27,7 +27,7 @@ repos: exclude: | (?x)^( ISSUE_TEMPLATE\.md| - src/dashboard/(frontend/app|src/media)/vendor/.* + src/dashboard/(frontend/app|media)/vendor/.* ) - repo: https://github.com/thlorenz/doctoc rev: v2.2.0 @@ -61,5 +61,5 @@ repos: args: [--quiet, --config, .markdown-link-check.json] exclude: | (?x)^( - src/dashboard/src/media/vendor/.*\.md + src/dashboard/media/vendor/.*\.md ) diff --git a/README.md b/README.md index e66f3ed493..217812c5ea 100644 --- a/README.md +++ b/README.md @@ -91,7 +91,7 @@ see the [getting started] page. [Developer guide]: https://github.com/artefactual/archivematica/blob/qa/1.x/hack/README.md [Development installation]: https://github.com/artefactual/archivematica/tree/qa/1.x/hack [documentation update]: https://github.com/artefactual/archivematica-docs/wiki -[Format Policy Registry]: https://github.com/artefactual/archivematica/tree/qa/1.x/src/dashboard/src/fpr +[Format Policy Registry]: https://github.com/artefactual/archivematica/tree/qa/1.x/src/dashboard/fpr [getting started]: https://wiki.archivematica.org/Getting_started#Projects [GitHub CI]: https://github.com/artefactual/archivematica/actions/workflows/test.yml/badge.svg [Issues]: https://github.com/archivematica/Issues diff --git a/RELEASENOTES.md b/RELEASENOTES.md index ab2ee070e4..0adb63b071 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -797,7 +797,7 @@ which should no longer be relevant since resolving [Issue 1446](https://github.com/archivematica/Issues/issues/1446)- active transfers or SIPs can no longer be hidden. However as a precaution, we have made that command available within Archivematica -(). +(). #### DIP storage locations now allowed in S3 spaces diff --git a/hack/Dockerfile b/hack/Dockerfile index 474d4fa1b3..3cc0a84066 100644 --- a/hack/Dockerfile +++ b/hack/Dockerfile @@ -236,26 +236,26 @@ COPY --chown=${USER_ID}:${GROUP_ID} --link . /src FROM base AS archivematica-mcp-client ENV DJANGO_SETTINGS_MODULE=settings.common -ENV PYTHONPATH=/src/src/MCPClient/lib/:/src/src/MCPClient/lib/clientScripts:/src/src/archivematicaCommon/lib/:/src/src/dashboard/src/ -ENV ARCHIVEMATICA_MCPCLIENT_ARCHIVEMATICACLIENTMODULES=/src/src/MCPClient/lib/archivematicaClientModules -ENV ARCHIVEMATICA_MCPCLIENT_CLIENTASSETSDIRECTORY=/src/src/MCPClient/lib/assets/ -ENV ARCHIVEMATICA_MCPCLIENT_CLIENTSCRIPTSDIRECTORY=/src/src/MCPClient/lib/clientScripts/ +ENV PYTHONPATH=/src/src/MCPClient/:/src/src/MCPClient/clientScripts:/src/src/archivematicaCommon/:/src/src/dashboard/ +ENV ARCHIVEMATICA_MCPCLIENT_ARCHIVEMATICACLIENTMODULES=/src/src/MCPClient/archivematicaClientModules +ENV ARCHIVEMATICA_MCPCLIENT_CLIENTASSETSDIRECTORY=/src/src/MCPClient/assets/ +ENV ARCHIVEMATICA_MCPCLIENT_CLIENTSCRIPTSDIRECTORY=/src/src/MCPClient/clientScripts/ # Some scripts in archivematica-fpr-admin executed by MCPClient rely on certain # files being available in this image (e.g. see https://git.io/vA1wF). -COPY --link src/archivematicaCommon/lib/externals/fido/ /usr/lib/archivematica/archivematicaCommon/externals/fido/ -COPY --link src/archivematicaCommon/lib/externals/fiwalk_plugins/ /usr/lib/archivematica/archivematicaCommon/externals/fiwalk_plugins/ +COPY --link src/archivematicaCommon/externals/fido/ /usr/lib/archivematica/archivematicaCommon/externals/fido/ +COPY --link src/archivematicaCommon/externals/fiwalk_plugins/ /usr/lib/archivematica/archivematicaCommon/externals/fiwalk_plugins/ -ENTRYPOINT ["pyenv", "exec", "python3", "/src/src/MCPClient/lib/archivematicaClient.py"] +ENTRYPOINT ["pyenv", "exec", "python3", "/src/src/MCPClient/archivematicaClient.py"] # ----------------------------------------------------------------------------- FROM base AS archivematica-mcp-server ENV DJANGO_SETTINGS_MODULE=settings.common -ENV PYTHONPATH=/src/src/MCPServer/lib/:/src/src/archivematicaCommon/lib/:/src/src/dashboard/src/ +ENV PYTHONPATH=/src/src/MCPServer/:/src/src/archivematicaCommon/:/src/src/dashboard/ -ENTRYPOINT ["pyenv", "exec", "python3", "/src/src/MCPServer/lib/archivematicaMCP.py"] +ENTRYPOINT ["pyenv", "exec", "python3", "/src/src/MCPServer/archivematicaMCP.py"] # ----------------------------------------------------------------------------- @@ -270,22 +270,22 @@ USER root RUN set -ex \ && internalDirs=' \ /src/src/dashboard/frontend \ - /src/src/dashboard/src/static \ - /src/src/dashboard/src/media \ + /src/src/dashboard/static \ + /src/src/dashboard/media \ ' \ && mkdir -p $internalDirs \ && chown -R archivematica $internalDirs USER archivematica -COPY --chown=${USER_ID}:${GROUP_ID} --from=archivematica-dashboard-frontend-builder --link /src/src/dashboard/src/media/js/ /src/src/dashboard/src/media/js +COPY --chown=${USER_ID}:${GROUP_ID} --from=archivematica-dashboard-frontend-builder --link /src/src/dashboard/media/js/ /src/src/dashboard/media/js -WORKDIR /src/src/dashboard/src +WORKDIR /src/src/dashboard ENV DJANGO_SETTINGS_MODULE=settings.local -ENV PYTHONPATH=/src/src/dashboard/src/:/src/src/archivematicaCommon/lib/ +ENV PYTHONPATH=/src/src/dashboard/:/src/src/archivematicaCommon/ ENV AM_GUNICORN_BIND=0.0.0.0:8000 -ENV AM_GUNICORN_CHDIR=/src/src/dashboard/src +ENV AM_GUNICORN_CHDIR=/src/src/dashboard ENV FORWARDED_ALLOW_IPS=* RUN set -ex \ @@ -317,7 +317,7 @@ RUN set -ex \ && mkdir -p /var/archivematica/.cache/ms-playwright \ && python3 -m playwright install firefox -ENV PYTHONPATH=/src/src/dashboard/src/:/src/src/archivematicaCommon/lib/ +ENV PYTHONPATH=/src/src/dashboard/:/src/src/archivematicaCommon/ # ----------------------------------------------------------------------------- diff --git a/hack/Makefile b/hack/Makefile index 4c2e0898b7..34949f8c07 100644 --- a/hack/Makefile +++ b/hack/Makefile @@ -134,7 +134,7 @@ manage-dashboard: ## Run Django /manage.py on Dashboard, suppling [op --user $(CALLER_UID):$(CALLER_GID) \ --rm \ --no-deps \ - --entrypoint /src/src/dashboard/src/manage.py \ + --entrypoint /src/src/dashboard/manage.py \ archivematica-dashboard \ $(ARG) @@ -152,13 +152,13 @@ bootstrap-dashboard-db: ## Bootstrap Dashboard (new database). docker compose run \ --rm \ --no-deps \ - --entrypoint /src/src/dashboard/src/manage.py \ + --entrypoint /src/src/dashboard/manage.py \ archivematica-dashboard \ migrate --noinput docker compose run \ --rm \ --no-deps \ - --entrypoint /src/src/dashboard/src/manage.py \ + --entrypoint /src/src/dashboard/manage.py \ archivematica-dashboard \ install \ --username="test" \ diff --git a/hack/helpers/compile-i18n-messages.sh b/hack/helpers/compile-i18n-messages.sh index feb6a66336..b0a1413b8e 100755 --- a/hack/helpers/compile-i18n-messages.sh +++ b/hack/helpers/compile-i18n-messages.sh @@ -14,8 +14,8 @@ function dashboard::manage { docker compose run \ --user=$(id -u):$(id -g) \ --rm --no-deps \ - --workdir=/src/src/dashboard/src \ - --entrypoint=/src/src/dashboard/src/manage.py \ + --workdir=/src/src/dashboard \ + --entrypoint=/src/src/dashboard/manage.py \ archivematica-dashboard "$@" } diff --git a/hack/helpers/extract-i18n-messages.sh b/hack/helpers/extract-i18n-messages.sh index ce20ad0181..6745e91246 100755 --- a/hack/helpers/extract-i18n-messages.sh +++ b/hack/helpers/extract-i18n-messages.sh @@ -20,8 +20,8 @@ function dashboard::manage { docker compose run \ --user=$(id -u):$(id -g) \ --rm --no-deps \ - --workdir=/src/src/dashboard/src \ - --entrypoint=/src/src/dashboard/src/manage.py \ + --workdir=/src/src/dashboard \ + --entrypoint=/src/src/dashboard/manage.py \ archivematica-dashboard "$@" } diff --git a/pyproject.toml b/pyproject.toml index c951d712d0..fb40d828d3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ norecursedirs = ".svn _build tmp* node_modules bower_components share .tox" [tool.coverage.run] omit = [ - "**/src/archivematicaCommon/lib/externals/*", + "**/src/archivematicaCommon/externals/*", "**/migrations/*", "**/management/commands/*", "**/settings/*", @@ -14,11 +14,11 @@ omit = [ "**/manage.py", ] include = [ - "**/src/archivematicaCommon/lib/*", - "**/src/dashboard/src/*", - "**/src/MCPClient/lib/*", - "**/src/MCPClient/lib/clientScripts/*", - "**/src/MCPServer/lib/*", + "**/src/archivematicaCommon/*", + "**/src/dashboard/*", + "**/src/MCPClient/*", + "**/src/MCPClient/clientScripts/*", + "**/src/MCPServer/*", ] branch = true @@ -46,7 +46,7 @@ ignore = [ [tool.ruff.lint.per-file-ignores] "src/*/settings/*" = ["F403"] -"src/dashboard/src/settings/*" = ["F405"] +"src/dashboard/settings/*" = ["F405"] [tool.ruff.lint.isort] force-single-line = true @@ -58,15 +58,15 @@ warn_unused_configs = true [[tool.mypy.overrides]] module = [ - "src.archivematicaCommon.lib.executeOrRunSubProcess", - "src.MCPClient.lib.client.*", - "src.MCPClient.lib.clientScripts.characterize_file", - "src.MCPClient.lib.clientScripts.has_packages", - "src.MCPClient.lib.clientScripts.identify_file_format", - "src.MCPClient.lib.clientScripts.normalize", - "src.MCPClient.lib.clientScripts.policy_check", - "src.MCPClient.lib.clientScripts.transcribe_file", - "src.MCPClient.lib.clientScripts.validate_file", + "src.archivematicaCommon.executeOrRunSubProcess", + "src.MCPClient.client.*", + "src.MCPClient.clientScripts.characterize_file", + "src.MCPClient.clientScripts.has_packages", + "src.MCPClient.clientScripts.identify_file_format", + "src.MCPClient.clientScripts.normalize", + "src.MCPClient.clientScripts.policy_check", + "src.MCPClient.clientScripts.transcribe_file", + "src.MCPClient.clientScripts.validate_file", "tests.archivematicaCommon.test_execute_functions", "tests.dashboard.components.accounts.test_views", "tests.dashboard.components.administration.test_administration", @@ -125,19 +125,15 @@ legacy_tox_ini = """ SRC_DIR = {toxinidir}/src HACK_DIR = {toxinidir}/hack # Archivematica Common - ARCHIVEMATICA_COMMON_ROOT = {env:SRC_DIR}/archivematicaCommon - ARCHIVEMATICA_COMMON_DIR = {env:ARCHIVEMATICA_COMMON_ROOT}/lib + ARCHIVEMATICA_COMMON_DIR = {env:SRC_DIR}/archivematicaCommon # Dashboard - DASHBOARD_ROOT = {env:SRC_DIR}/dashboard - DASHBOARD_DIR = {env:DASHBOARD_ROOT}/src + DASHBOARD_DIR = {env:SRC_DIR}/dashboard DASHBOARD_PYTHONPATH = {env:DASHBOARD_DIR}:{env:ARCHIVEMATICA_COMMON_DIR} # MCP Server - MCPSERVER_ROOT = {env:SRC_DIR}/MCPServer - MCPSERVER_DIR = {env:MCPSERVER_ROOT}/lib + MCPSERVER_DIR = {env:SRC_DIR}/MCPServer MCPSERVER_PYTHONPATH = {env:MCPSERVER_DIR}:{env:ARCHIVEMATICA_COMMON_DIR}:{env:DASHBOARD_DIR} # MCP Client - MCPCLIENT_ROOT = {env:SRC_DIR}/MCPClient - MCPCLIENT_DIR = {env:MCPCLIENT_ROOT}/lib + MCPCLIENT_DIR = {env:SRC_DIR}/MCPClient MCPCLIENT_PYTHONPATH = {env:MCPCLIENT_DIR}:{env:MCPCLIENT_DIR}/clientScripts:{env:ARCHIVEMATICA_COMMON_DIR}:{env:DASHBOARD_DIR} # Storage Service STORAGE_SERVICE_ROOT = {env:HACK_DIR}/submodules/archivematica-storage-service diff --git a/src/MCPClient/README.md b/src/MCPClient/README.md index e41ebaeff9..3cb7bcfe0c 100644 --- a/src/MCPClient/README.md +++ b/src/MCPClient/README.md @@ -5,7 +5,7 @@ This directory contains the Archivematica MCP client, frequently referred to as `MCPServer`. These tasks are dispatched via Gearman. The programs responsible for performing the Gearman jobs are contained in the -`lib/clientScripts/` directory. Each program is a Python module that +`clientScripts/` directory. Each program is a Python module that implements the following function: def call(jobs) diff --git a/src/MCPClient/lib/archivematicaClient.py b/src/MCPClient/archivematicaClient.py similarity index 100% rename from src/MCPClient/lib/archivematicaClient.py rename to src/MCPClient/archivematicaClient.py diff --git a/src/MCPClient/lib/archivematicaClientModules b/src/MCPClient/archivematicaClientModules similarity index 100% rename from src/MCPClient/lib/archivematicaClientModules rename to src/MCPClient/archivematicaClientModules diff --git a/src/MCPClient/lib/assets/README/README.html b/src/MCPClient/assets/README/README.html similarity index 100% rename from src/MCPClient/lib/assets/README/README.html rename to src/MCPClient/assets/README/README.html diff --git a/src/MCPClient/lib/assets/README/TRANSFER_README.html b/src/MCPClient/assets/README/TRANSFER_README.html similarity index 100% rename from src/MCPClient/lib/assets/README/TRANSFER_README.html rename to src/MCPClient/assets/README/TRANSFER_README.html diff --git a/src/MCPClient/lib/assets/catalog/catalog.xml b/src/MCPClient/assets/catalog/catalog.xml similarity index 100% rename from src/MCPClient/lib/assets/catalog/catalog.xml rename to src/MCPClient/assets/catalog/catalog.xml diff --git a/src/MCPClient/lib/assets/mets/mets.xsd b/src/MCPClient/assets/mets/mets.xsd similarity index 100% rename from src/MCPClient/lib/assets/mets/mets.xsd rename to src/MCPClient/assets/mets/mets.xsd diff --git a/src/MCPClient/lib/assets/mets/xlink.xsd b/src/MCPClient/assets/mets/xlink.xsd similarity index 100% rename from src/MCPClient/lib/assets/mets/xlink.xsd rename to src/MCPClient/assets/mets/xlink.xsd diff --git a/src/MCPClient/lib/assets/mods/mods.xsd b/src/MCPClient/assets/mods/mods.xsd similarity index 100% rename from src/MCPClient/lib/assets/mods/mods.xsd rename to src/MCPClient/assets/mods/mods.xsd diff --git a/src/MCPClient/lib/assets/mods/xml.xsd b/src/MCPClient/assets/mods/xml.xsd similarity index 100% rename from src/MCPClient/lib/assets/mods/xml.xsd rename to src/MCPClient/assets/mods/xml.xsd diff --git a/src/MCPClient/lib/assets/premis/premis-v2-2.xsd b/src/MCPClient/assets/premis/premis-v2-2.xsd similarity index 100% rename from src/MCPClient/lib/assets/premis/premis-v2-2.xsd rename to src/MCPClient/assets/premis/premis-v2-2.xsd diff --git a/src/MCPClient/lib/assets/premis/premis.xsd b/src/MCPClient/assets/premis/premis.xsd similarity index 100% rename from src/MCPClient/lib/assets/premis/premis.xsd rename to src/MCPClient/assets/premis/premis.xsd diff --git a/src/MCPClient/lib/client/__init__.py b/src/MCPClient/client/__init__.py similarity index 100% rename from src/MCPClient/lib/client/__init__.py rename to src/MCPClient/client/__init__.py diff --git a/src/MCPClient/lib/client/gearman.py b/src/MCPClient/client/gearman.py similarity index 100% rename from src/MCPClient/lib/client/gearman.py rename to src/MCPClient/client/gearman.py diff --git a/src/MCPClient/lib/client/job.py b/src/MCPClient/client/job.py similarity index 100% rename from src/MCPClient/lib/client/job.py rename to src/MCPClient/client/job.py diff --git a/src/MCPClient/lib/client/loader.py b/src/MCPClient/client/loader.py similarity index 95% rename from src/MCPClient/lib/client/loader.py rename to src/MCPClient/client/loader.py index e1198bc372..38c4ccff2d 100644 --- a/src/MCPClient/lib/client/loader.py +++ b/src/MCPClient/client/loader.py @@ -7,7 +7,7 @@ def get_supported_modules(modules_file_path: str) -> dict[str, str]: """Create and return the ``supported_modules`` dict by parsing the MCPClient - modules config file (typically MCPClient/lib/archivematicaClientModules). + modules config file (typically MCPClient/archivematicaClientModules). """ supported_modules = {} supported_modules_config = RawConfigParser() diff --git a/src/MCPClient/lib/client/mcp.py b/src/MCPClient/client/mcp.py similarity index 100% rename from src/MCPClient/lib/client/mcp.py rename to src/MCPClient/client/mcp.py diff --git a/src/MCPClient/lib/client/metrics.py b/src/MCPClient/client/metrics.py similarity index 100% rename from src/MCPClient/lib/client/metrics.py rename to src/MCPClient/client/metrics.py diff --git a/src/MCPClient/lib/client/pool.py b/src/MCPClient/client/pool.py similarity index 100% rename from src/MCPClient/lib/client/pool.py rename to src/MCPClient/client/pool.py diff --git a/src/MCPClient/lib/client/utils.py b/src/MCPClient/client/utils.py similarity index 100% rename from src/MCPClient/lib/client/utils.py rename to src/MCPClient/client/utils.py diff --git a/src/MCPClient/lib/client/worker.py b/src/MCPClient/client/worker.py similarity index 100% rename from src/MCPClient/lib/client/worker.py rename to src/MCPClient/client/worker.py diff --git a/src/MCPClient/lib/clientScripts/__init__.py b/src/MCPClient/clientScripts/__init__.py similarity index 100% rename from src/MCPClient/lib/clientScripts/__init__.py rename to src/MCPClient/clientScripts/__init__.py diff --git a/src/MCPClient/lib/clientScripts/archivematicaCreateMETSMetadataCSV.py b/src/MCPClient/clientScripts/archivematicaCreateMETSMetadataCSV.py similarity index 100% rename from src/MCPClient/lib/clientScripts/archivematicaCreateMETSMetadataCSV.py rename to src/MCPClient/clientScripts/archivematicaCreateMETSMetadataCSV.py diff --git a/src/MCPClient/lib/clientScripts/archivematicaCreateMETSMetadataXML.py b/src/MCPClient/clientScripts/archivematicaCreateMETSMetadataXML.py similarity index 100% rename from src/MCPClient/lib/clientScripts/archivematicaCreateMETSMetadataXML.py rename to src/MCPClient/clientScripts/archivematicaCreateMETSMetadataXML.py diff --git a/src/MCPClient/lib/clientScripts/archivematicaCreateMETSReingest.py b/src/MCPClient/clientScripts/archivematicaCreateMETSReingest.py similarity index 100% rename from src/MCPClient/lib/clientScripts/archivematicaCreateMETSReingest.py rename to src/MCPClient/clientScripts/archivematicaCreateMETSReingest.py diff --git a/src/MCPClient/lib/clientScripts/archivematicaCreateMETSRights.py b/src/MCPClient/clientScripts/archivematicaCreateMETSRights.py similarity index 100% rename from src/MCPClient/lib/clientScripts/archivematicaCreateMETSRights.py rename to src/MCPClient/clientScripts/archivematicaCreateMETSRights.py diff --git a/src/MCPClient/lib/clientScripts/archivematicaCreateMETSRightsDspaceMDRef.py b/src/MCPClient/clientScripts/archivematicaCreateMETSRightsDspaceMDRef.py similarity index 100% rename from src/MCPClient/lib/clientScripts/archivematicaCreateMETSRightsDspaceMDRef.py rename to src/MCPClient/clientScripts/archivematicaCreateMETSRightsDspaceMDRef.py diff --git a/src/MCPClient/lib/clientScripts/archivematicaCreateMETSTrim.py b/src/MCPClient/clientScripts/archivematicaCreateMETSTrim.py similarity index 100% rename from src/MCPClient/lib/clientScripts/archivematicaCreateMETSTrim.py rename to src/MCPClient/clientScripts/archivematicaCreateMETSTrim.py diff --git a/src/MCPClient/lib/clientScripts/archivematica_clamscan.py b/src/MCPClient/clientScripts/archivematica_clamscan.py similarity index 100% rename from src/MCPClient/lib/clientScripts/archivematica_clamscan.py rename to src/MCPClient/clientScripts/archivematica_clamscan.py diff --git a/src/MCPClient/lib/clientScripts/assign_file_uuids.py b/src/MCPClient/clientScripts/assign_file_uuids.py similarity index 100% rename from src/MCPClient/lib/clientScripts/assign_file_uuids.py rename to src/MCPClient/clientScripts/assign_file_uuids.py diff --git a/src/MCPClient/lib/clientScripts/assign_uuids_to_directories.py b/src/MCPClient/clientScripts/assign_uuids_to_directories.py similarity index 100% rename from src/MCPClient/lib/clientScripts/assign_uuids_to_directories.py rename to src/MCPClient/clientScripts/assign_uuids_to_directories.py diff --git a/src/MCPClient/lib/clientScripts/bag_with_empty_directories.py b/src/MCPClient/clientScripts/bag_with_empty_directories.py similarity index 100% rename from src/MCPClient/lib/clientScripts/bag_with_empty_directories.py rename to src/MCPClient/clientScripts/bag_with_empty_directories.py diff --git a/src/MCPClient/lib/clientScripts/bind_pid.py b/src/MCPClient/clientScripts/bind_pid.py similarity index 100% rename from src/MCPClient/lib/clientScripts/bind_pid.py rename to src/MCPClient/clientScripts/bind_pid.py diff --git a/src/MCPClient/lib/clientScripts/bind_pids.py b/src/MCPClient/clientScripts/bind_pids.py similarity index 100% rename from src/MCPClient/lib/clientScripts/bind_pids.py rename to src/MCPClient/clientScripts/bind_pids.py diff --git a/src/MCPClient/lib/clientScripts/change_names.py b/src/MCPClient/clientScripts/change_names.py similarity index 100% rename from src/MCPClient/lib/clientScripts/change_names.py rename to src/MCPClient/clientScripts/change_names.py diff --git a/src/MCPClient/lib/clientScripts/change_object_names.py b/src/MCPClient/clientScripts/change_object_names.py similarity index 100% rename from src/MCPClient/lib/clientScripts/change_object_names.py rename to src/MCPClient/clientScripts/change_object_names.py diff --git a/src/MCPClient/lib/clientScripts/change_sip_name.py b/src/MCPClient/clientScripts/change_sip_name.py similarity index 100% rename from src/MCPClient/lib/clientScripts/change_sip_name.py rename to src/MCPClient/clientScripts/change_sip_name.py diff --git a/src/MCPClient/lib/clientScripts/characterize_file.py b/src/MCPClient/clientScripts/characterize_file.py similarity index 100% rename from src/MCPClient/lib/clientScripts/characterize_file.py rename to src/MCPClient/clientScripts/characterize_file.py diff --git a/src/MCPClient/lib/clientScripts/check_for_access_directory.py b/src/MCPClient/clientScripts/check_for_access_directory.py similarity index 100% rename from src/MCPClient/lib/clientScripts/check_for_access_directory.py rename to src/MCPClient/clientScripts/check_for_access_directory.py diff --git a/src/MCPClient/lib/clientScripts/check_for_service_directory.py b/src/MCPClient/clientScripts/check_for_service_directory.py similarity index 100% rename from src/MCPClient/lib/clientScripts/check_for_service_directory.py rename to src/MCPClient/clientScripts/check_for_service_directory.py diff --git a/src/MCPClient/lib/clientScripts/check_for_submission_documentation.py b/src/MCPClient/clientScripts/check_for_submission_documentation.py similarity index 100% rename from src/MCPClient/lib/clientScripts/check_for_submission_documentation.py rename to src/MCPClient/clientScripts/check_for_submission_documentation.py diff --git a/src/MCPClient/lib/clientScripts/check_transfer_directory_for_objects.py b/src/MCPClient/clientScripts/check_transfer_directory_for_objects.py similarity index 100% rename from src/MCPClient/lib/clientScripts/check_transfer_directory_for_objects.py rename to src/MCPClient/clientScripts/check_transfer_directory_for_objects.py diff --git a/src/MCPClient/lib/clientScripts/cmd_chmod.py b/src/MCPClient/clientScripts/cmd_chmod.py similarity index 100% rename from src/MCPClient/lib/clientScripts/cmd_chmod.py rename to src/MCPClient/clientScripts/cmd_chmod.py diff --git a/src/MCPClient/lib/clientScripts/cmd_cp.py b/src/MCPClient/clientScripts/cmd_cp.py similarity index 100% rename from src/MCPClient/lib/clientScripts/cmd_cp.py rename to src/MCPClient/clientScripts/cmd_cp.py diff --git a/src/MCPClient/lib/clientScripts/cmd_mkdir.py b/src/MCPClient/clientScripts/cmd_mkdir.py similarity index 100% rename from src/MCPClient/lib/clientScripts/cmd_mkdir.py rename to src/MCPClient/clientScripts/cmd_mkdir.py diff --git a/src/MCPClient/lib/clientScripts/cmd_mv.py b/src/MCPClient/clientScripts/cmd_mv.py similarity index 100% rename from src/MCPClient/lib/clientScripts/cmd_mv.py rename to src/MCPClient/clientScripts/cmd_mv.py diff --git a/src/MCPClient/lib/clientScripts/cmd_test.py b/src/MCPClient/clientScripts/cmd_test.py similarity index 100% rename from src/MCPClient/lib/clientScripts/cmd_test.py rename to src/MCPClient/clientScripts/cmd_test.py diff --git a/src/MCPClient/lib/clientScripts/cmd_tree.py b/src/MCPClient/clientScripts/cmd_tree.py similarity index 100% rename from src/MCPClient/lib/clientScripts/cmd_tree.py rename to src/MCPClient/clientScripts/cmd_tree.py diff --git a/src/MCPClient/lib/clientScripts/compress_aip.py b/src/MCPClient/clientScripts/compress_aip.py similarity index 100% rename from src/MCPClient/lib/clientScripts/compress_aip.py rename to src/MCPClient/clientScripts/compress_aip.py diff --git a/src/MCPClient/lib/clientScripts/convert_dataverse_structure.py b/src/MCPClient/clientScripts/convert_dataverse_structure.py similarity index 100% rename from src/MCPClient/lib/clientScripts/convert_dataverse_structure.py rename to src/MCPClient/clientScripts/convert_dataverse_structure.py diff --git a/src/MCPClient/lib/clientScripts/copyRecursiveIfExists.sh b/src/MCPClient/clientScripts/copyRecursiveIfExists.sh similarity index 100% rename from src/MCPClient/lib/clientScripts/copyRecursiveIfExists.sh rename to src/MCPClient/clientScripts/copyRecursiveIfExists.sh diff --git a/src/MCPClient/lib/clientScripts/copySubmissionDocs.sh b/src/MCPClient/clientScripts/copySubmissionDocs.sh similarity index 100% rename from src/MCPClient/lib/clientScripts/copySubmissionDocs.sh rename to src/MCPClient/clientScripts/copySubmissionDocs.sh diff --git a/src/MCPClient/lib/clientScripts/copy_recursive.py b/src/MCPClient/clientScripts/copy_recursive.py similarity index 100% rename from src/MCPClient/lib/clientScripts/copy_recursive.py rename to src/MCPClient/clientScripts/copy_recursive.py diff --git a/src/MCPClient/lib/clientScripts/copy_submission_docs.py b/src/MCPClient/clientScripts/copy_submission_docs.py similarity index 100% rename from src/MCPClient/lib/clientScripts/copy_submission_docs.py rename to src/MCPClient/clientScripts/copy_submission_docs.py diff --git a/src/MCPClient/lib/clientScripts/copy_thumbnails_to_dip_directory.py b/src/MCPClient/clientScripts/copy_thumbnails_to_dip_directory.py similarity index 100% rename from src/MCPClient/lib/clientScripts/copy_thumbnails_to_dip_directory.py rename to src/MCPClient/clientScripts/copy_thumbnails_to_dip_directory.py diff --git a/src/MCPClient/lib/clientScripts/copy_transfer_submission_documentation.py b/src/MCPClient/clientScripts/copy_transfer_submission_documentation.py similarity index 100% rename from src/MCPClient/lib/clientScripts/copy_transfer_submission_documentation.py rename to src/MCPClient/clientScripts/copy_transfer_submission_documentation.py diff --git a/src/MCPClient/lib/clientScripts/copy_transfers_metadata_and_logs.py b/src/MCPClient/clientScripts/copy_transfers_metadata_and_logs.py similarity index 100% rename from src/MCPClient/lib/clientScripts/copy_transfers_metadata_and_logs.py rename to src/MCPClient/clientScripts/copy_transfers_metadata_and_logs.py diff --git a/src/MCPClient/lib/clientScripts/create_aic_mets.py b/src/MCPClient/clientScripts/create_aic_mets.py similarity index 100% rename from src/MCPClient/lib/clientScripts/create_aic_mets.py rename to src/MCPClient/clientScripts/create_aic_mets.py diff --git a/src/MCPClient/lib/clientScripts/create_event.py b/src/MCPClient/clientScripts/create_event.py similarity index 100% rename from src/MCPClient/lib/clientScripts/create_event.py rename to src/MCPClient/clientScripts/create_event.py diff --git a/src/MCPClient/lib/clientScripts/create_mets_dataverse_v2.py b/src/MCPClient/clientScripts/create_mets_dataverse_v2.py similarity index 100% rename from src/MCPClient/lib/clientScripts/create_mets_dataverse_v2.py rename to src/MCPClient/clientScripts/create_mets_dataverse_v2.py diff --git a/src/MCPClient/lib/clientScripts/create_mets_v2.py b/src/MCPClient/clientScripts/create_mets_v2.py similarity index 100% rename from src/MCPClient/lib/clientScripts/create_mets_v2.py rename to src/MCPClient/clientScripts/create_mets_v2.py diff --git a/src/MCPClient/lib/clientScripts/create_sip_from_transfer_objects.py b/src/MCPClient/clientScripts/create_sip_from_transfer_objects.py similarity index 100% rename from src/MCPClient/lib/clientScripts/create_sip_from_transfer_objects.py rename to src/MCPClient/clientScripts/create_sip_from_transfer_objects.py diff --git a/src/MCPClient/lib/clientScripts/create_sips_from_trim_transfer_containers.py b/src/MCPClient/clientScripts/create_sips_from_trim_transfer_containers.py similarity index 100% rename from src/MCPClient/lib/clientScripts/create_sips_from_trim_transfer_containers.py rename to src/MCPClient/clientScripts/create_sips_from_trim_transfer_containers.py diff --git a/src/MCPClient/lib/clientScripts/create_transfer_metadata.py b/src/MCPClient/clientScripts/create_transfer_metadata.py similarity index 100% rename from src/MCPClient/lib/clientScripts/create_transfer_metadata.py rename to src/MCPClient/clientScripts/create_transfer_metadata.py diff --git a/src/MCPClient/lib/clientScripts/create_transfer_mets.py b/src/MCPClient/clientScripts/create_transfer_mets.py similarity index 100% rename from src/MCPClient/lib/clientScripts/create_transfer_mets.py rename to src/MCPClient/clientScripts/create_transfer_mets.py diff --git a/src/MCPClient/lib/clientScripts/determine_aip_version_key_exit_code.py b/src/MCPClient/clientScripts/determine_aip_version_key_exit_code.py similarity index 100% rename from src/MCPClient/lib/clientScripts/determine_aip_version_key_exit_code.py rename to src/MCPClient/clientScripts/determine_aip_version_key_exit_code.py diff --git a/src/MCPClient/lib/clientScripts/dip_generation_helper.py b/src/MCPClient/clientScripts/dip_generation_helper.py similarity index 100% rename from src/MCPClient/lib/clientScripts/dip_generation_helper.py rename to src/MCPClient/clientScripts/dip_generation_helper.py diff --git a/src/MCPClient/lib/clientScripts/email_fail_report.py b/src/MCPClient/clientScripts/email_fail_report.py similarity index 100% rename from src/MCPClient/lib/clientScripts/email_fail_report.py rename to src/MCPClient/clientScripts/email_fail_report.py diff --git a/src/MCPClient/lib/clientScripts/examine_contents.py b/src/MCPClient/clientScripts/examine_contents.py similarity index 100% rename from src/MCPClient/lib/clientScripts/examine_contents.py rename to src/MCPClient/clientScripts/examine_contents.py diff --git a/src/MCPClient/lib/clientScripts/extract_contents.py b/src/MCPClient/clientScripts/extract_contents.py similarity index 100% rename from src/MCPClient/lib/clientScripts/extract_contents.py rename to src/MCPClient/clientScripts/extract_contents.py diff --git a/src/MCPClient/lib/clientScripts/extract_maildir_attachments.py b/src/MCPClient/clientScripts/extract_maildir_attachments.py similarity index 100% rename from src/MCPClient/lib/clientScripts/extract_maildir_attachments.py rename to src/MCPClient/clientScripts/extract_maildir_attachments.py diff --git a/src/MCPClient/lib/clientScripts/extract_zipped_transfer.py b/src/MCPClient/clientScripts/extract_zipped_transfer.py similarity index 100% rename from src/MCPClient/lib/clientScripts/extract_zipped_transfer.py rename to src/MCPClient/clientScripts/extract_zipped_transfer.py diff --git a/src/MCPClient/lib/clientScripts/failed_sip_cleanup.py b/src/MCPClient/clientScripts/failed_sip_cleanup.py similarity index 100% rename from src/MCPClient/lib/clientScripts/failed_sip_cleanup.py rename to src/MCPClient/clientScripts/failed_sip_cleanup.py diff --git a/src/MCPClient/lib/clientScripts/failed_transfer_cleanup.py b/src/MCPClient/clientScripts/failed_transfer_cleanup.py similarity index 100% rename from src/MCPClient/lib/clientScripts/failed_transfer_cleanup.py rename to src/MCPClient/clientScripts/failed_transfer_cleanup.py diff --git a/src/MCPClient/lib/clientScripts/file_to_folder.py b/src/MCPClient/clientScripts/file_to_folder.py similarity index 100% rename from src/MCPClient/lib/clientScripts/file_to_folder.py rename to src/MCPClient/clientScripts/file_to_folder.py diff --git a/src/MCPClient/lib/clientScripts/get_aip_storage_locations.py b/src/MCPClient/clientScripts/get_aip_storage_locations.py similarity index 100% rename from src/MCPClient/lib/clientScripts/get_aip_storage_locations.py rename to src/MCPClient/clientScripts/get_aip_storage_locations.py diff --git a/src/MCPClient/lib/clientScripts/has_packages.py b/src/MCPClient/clientScripts/has_packages.py similarity index 100% rename from src/MCPClient/lib/clientScripts/has_packages.py rename to src/MCPClient/clientScripts/has_packages.py diff --git a/src/MCPClient/lib/clientScripts/identify_dspace_files.py b/src/MCPClient/clientScripts/identify_dspace_files.py similarity index 100% rename from src/MCPClient/lib/clientScripts/identify_dspace_files.py rename to src/MCPClient/clientScripts/identify_dspace_files.py diff --git a/src/MCPClient/lib/clientScripts/identify_dspace_mets_files.py b/src/MCPClient/clientScripts/identify_dspace_mets_files.py similarity index 100% rename from src/MCPClient/lib/clientScripts/identify_dspace_mets_files.py rename to src/MCPClient/clientScripts/identify_dspace_mets_files.py diff --git a/src/MCPClient/lib/clientScripts/identify_file_format.py b/src/MCPClient/clientScripts/identify_file_format.py similarity index 100% rename from src/MCPClient/lib/clientScripts/identify_file_format.py rename to src/MCPClient/clientScripts/identify_file_format.py diff --git a/src/MCPClient/lib/clientScripts/index_aip.py b/src/MCPClient/clientScripts/index_aip.py similarity index 100% rename from src/MCPClient/lib/clientScripts/index_aip.py rename to src/MCPClient/clientScripts/index_aip.py diff --git a/src/MCPClient/lib/clientScripts/is_maildir_aip.py b/src/MCPClient/clientScripts/is_maildir_aip.py similarity index 100% rename from src/MCPClient/lib/clientScripts/is_maildir_aip.py rename to src/MCPClient/clientScripts/is_maildir_aip.py diff --git a/src/MCPClient/lib/clientScripts/json_metadata_to_csv.py b/src/MCPClient/clientScripts/json_metadata_to_csv.py similarity index 100% rename from src/MCPClient/lib/clientScripts/json_metadata_to_csv.py rename to src/MCPClient/clientScripts/json_metadata_to_csv.py diff --git a/src/MCPClient/lib/clientScripts/lib/__init__.py b/src/MCPClient/clientScripts/lib/__init__.py similarity index 100% rename from src/MCPClient/lib/clientScripts/lib/__init__.py rename to src/MCPClient/clientScripts/lib/__init__.py diff --git a/src/MCPClient/lib/clientScripts/load_dublin_core.py b/src/MCPClient/clientScripts/load_dublin_core.py similarity index 100% rename from src/MCPClient/lib/clientScripts/load_dublin_core.py rename to src/MCPClient/clientScripts/load_dublin_core.py diff --git a/src/MCPClient/lib/clientScripts/load_labels_from_csv.py b/src/MCPClient/clientScripts/load_labels_from_csv.py similarity index 100% rename from src/MCPClient/lib/clientScripts/load_labels_from_csv.py rename to src/MCPClient/clientScripts/load_labels_from_csv.py diff --git a/src/MCPClient/lib/clientScripts/load_premis_events_from_xml.py b/src/MCPClient/clientScripts/load_premis_events_from_xml.py similarity index 100% rename from src/MCPClient/lib/clientScripts/load_premis_events_from_xml.py rename to src/MCPClient/clientScripts/load_premis_events_from_xml.py diff --git a/src/MCPClient/lib/clientScripts/manual_normalization_check_for_manual_normalization_directory.py b/src/MCPClient/clientScripts/manual_normalization_check_for_manual_normalization_directory.py similarity index 100% rename from src/MCPClient/lib/clientScripts/manual_normalization_check_for_manual_normalization_directory.py rename to src/MCPClient/clientScripts/manual_normalization_check_for_manual_normalization_directory.py diff --git a/src/MCPClient/lib/clientScripts/manual_normalization_create_metadata_and_restructure.py b/src/MCPClient/clientScripts/manual_normalization_create_metadata_and_restructure.py similarity index 100% rename from src/MCPClient/lib/clientScripts/manual_normalization_create_metadata_and_restructure.py rename to src/MCPClient/clientScripts/manual_normalization_create_metadata_and_restructure.py diff --git a/src/MCPClient/lib/clientScripts/manual_normalization_identify_files_included.py b/src/MCPClient/clientScripts/manual_normalization_identify_files_included.py similarity index 100% rename from src/MCPClient/lib/clientScripts/manual_normalization_identify_files_included.py rename to src/MCPClient/clientScripts/manual_normalization_identify_files_included.py diff --git a/src/MCPClient/lib/clientScripts/manual_normalization_move_access_files_to_dip.py b/src/MCPClient/clientScripts/manual_normalization_move_access_files_to_dip.py similarity index 100% rename from src/MCPClient/lib/clientScripts/manual_normalization_move_access_files_to_dip.py rename to src/MCPClient/clientScripts/manual_normalization_move_access_files_to_dip.py diff --git a/src/MCPClient/lib/clientScripts/manual_normalization_remove_mn_directories.py b/src/MCPClient/clientScripts/manual_normalization_remove_mn_directories.py similarity index 100% rename from src/MCPClient/lib/clientScripts/manual_normalization_remove_mn_directories.py rename to src/MCPClient/clientScripts/manual_normalization_remove_mn_directories.py diff --git a/src/MCPClient/lib/clientScripts/move_or_merge.py b/src/MCPClient/clientScripts/move_or_merge.py similarity index 100% rename from src/MCPClient/lib/clientScripts/move_or_merge.py rename to src/MCPClient/clientScripts/move_or_merge.py diff --git a/src/MCPClient/lib/clientScripts/move_sip.py b/src/MCPClient/clientScripts/move_sip.py similarity index 100% rename from src/MCPClient/lib/clientScripts/move_sip.py rename to src/MCPClient/clientScripts/move_sip.py diff --git a/src/MCPClient/lib/clientScripts/move_to_backlog.py b/src/MCPClient/clientScripts/move_to_backlog.py similarity index 98% rename from src/MCPClient/lib/clientScripts/move_to_backlog.py rename to src/MCPClient/clientScripts/move_to_backlog.py index ff4a7b2ac8..257f4e2321 100755 --- a/src/MCPClient/lib/clientScripts/move_to_backlog.py +++ b/src/MCPClient/clientScripts/move_to_backlog.py @@ -196,7 +196,7 @@ def main(job, transfer_id, transfer_path, created_at): relative_transfer_path = transfer_path.replace(shared_path, "") # TODO this should use the same value as - # dashboard/src/components/filesystem_ajax/views.py DEFAULT_BACKLOG_PATH + # dashboard/components/filesystem_ajax/views.py DEFAULT_BACKLOG_PATH transfer_name = os.path.basename(transfer_path.rstrip("/")) backlog_path = os.path.join("originals", transfer_name) diff --git a/src/MCPClient/lib/clientScripts/move_transfer.py b/src/MCPClient/clientScripts/move_transfer.py similarity index 100% rename from src/MCPClient/lib/clientScripts/move_transfer.py rename to src/MCPClient/clientScripts/move_transfer.py diff --git a/src/MCPClient/lib/clientScripts/normalize.py b/src/MCPClient/clientScripts/normalize.py similarity index 100% rename from src/MCPClient/lib/clientScripts/normalize.py rename to src/MCPClient/clientScripts/normalize.py diff --git a/src/MCPClient/lib/clientScripts/normalize_report.py b/src/MCPClient/clientScripts/normalize_report.py similarity index 100% rename from src/MCPClient/lib/clientScripts/normalize_report.py rename to src/MCPClient/clientScripts/normalize_report.py diff --git a/src/MCPClient/lib/clientScripts/parse_dataverse_mets.py b/src/MCPClient/clientScripts/parse_dataverse_mets.py similarity index 100% rename from src/MCPClient/lib/clientScripts/parse_dataverse_mets.py rename to src/MCPClient/clientScripts/parse_dataverse_mets.py diff --git a/src/MCPClient/lib/clientScripts/parse_external_mets.py b/src/MCPClient/clientScripts/parse_external_mets.py similarity index 100% rename from src/MCPClient/lib/clientScripts/parse_external_mets.py rename to src/MCPClient/clientScripts/parse_external_mets.py diff --git a/src/MCPClient/lib/clientScripts/parse_mets_to_db.py b/src/MCPClient/clientScripts/parse_mets_to_db.py similarity index 100% rename from src/MCPClient/lib/clientScripts/parse_mets_to_db.py rename to src/MCPClient/clientScripts/parse_mets_to_db.py diff --git a/src/MCPClient/lib/clientScripts/pid_declaration.py b/src/MCPClient/clientScripts/pid_declaration.py similarity index 100% rename from src/MCPClient/lib/clientScripts/pid_declaration.py rename to src/MCPClient/clientScripts/pid_declaration.py diff --git a/src/MCPClient/lib/clientScripts/policy_check.py b/src/MCPClient/clientScripts/policy_check.py similarity index 100% rename from src/MCPClient/lib/clientScripts/policy_check.py rename to src/MCPClient/clientScripts/policy_check.py diff --git a/src/MCPClient/lib/clientScripts/post_store_aip_hook.py b/src/MCPClient/clientScripts/post_store_aip_hook.py similarity index 100% rename from src/MCPClient/lib/clientScripts/post_store_aip_hook.py rename to src/MCPClient/clientScripts/post_store_aip_hook.py diff --git a/src/MCPClient/lib/clientScripts/remove_directories.py b/src/MCPClient/clientScripts/remove_directories.py similarity index 100% rename from src/MCPClient/lib/clientScripts/remove_directories.py rename to src/MCPClient/clientScripts/remove_directories.py diff --git a/src/MCPClient/lib/clientScripts/remove_files_without_premis_metadata.py b/src/MCPClient/clientScripts/remove_files_without_premis_metadata.py similarity index 100% rename from src/MCPClient/lib/clientScripts/remove_files_without_premis_metadata.py rename to src/MCPClient/clientScripts/remove_files_without_premis_metadata.py diff --git a/src/MCPClient/lib/clientScripts/remove_hidden_files_and_directories.py b/src/MCPClient/clientScripts/remove_hidden_files_and_directories.py similarity index 100% rename from src/MCPClient/lib/clientScripts/remove_hidden_files_and_directories.py rename to src/MCPClient/clientScripts/remove_hidden_files_and_directories.py diff --git a/src/MCPClient/lib/clientScripts/remove_unneeded_files.py b/src/MCPClient/clientScripts/remove_unneeded_files.py similarity index 100% rename from src/MCPClient/lib/clientScripts/remove_unneeded_files.py rename to src/MCPClient/clientScripts/remove_unneeded_files.py diff --git a/src/MCPClient/lib/clientScripts/restructure_bag_aip_to_sip.py b/src/MCPClient/clientScripts/restructure_bag_aip_to_sip.py similarity index 100% rename from src/MCPClient/lib/clientScripts/restructure_bag_aip_to_sip.py rename to src/MCPClient/clientScripts/restructure_bag_aip_to_sip.py diff --git a/src/MCPClient/lib/clientScripts/restructure_dip_for_content_dm_upload.py b/src/MCPClient/clientScripts/restructure_dip_for_content_dm_upload.py similarity index 100% rename from src/MCPClient/lib/clientScripts/restructure_dip_for_content_dm_upload.py rename to src/MCPClient/clientScripts/restructure_dip_for_content_dm_upload.py diff --git a/src/MCPClient/lib/clientScripts/restructure_for_compliance.py b/src/MCPClient/clientScripts/restructure_for_compliance.py similarity index 100% rename from src/MCPClient/lib/clientScripts/restructure_for_compliance.py rename to src/MCPClient/clientScripts/restructure_for_compliance.py diff --git a/src/MCPClient/lib/clientScripts/restructure_for_compliance_maildir.py b/src/MCPClient/clientScripts/restructure_for_compliance_maildir.py similarity index 100% rename from src/MCPClient/lib/clientScripts/restructure_for_compliance_maildir.py rename to src/MCPClient/clientScripts/restructure_for_compliance_maildir.py diff --git a/src/MCPClient/lib/clientScripts/restructure_for_compliance_sip.py b/src/MCPClient/clientScripts/restructure_for_compliance_sip.py similarity index 100% rename from src/MCPClient/lib/clientScripts/restructure_for_compliance_sip.py rename to src/MCPClient/clientScripts/restructure_for_compliance_sip.py diff --git a/src/MCPClient/lib/clientScripts/retry_normalize_remove_normalized.py b/src/MCPClient/clientScripts/retry_normalize_remove_normalized.py similarity index 100% rename from src/MCPClient/lib/clientScripts/retry_normalize_remove_normalized.py rename to src/MCPClient/clientScripts/retry_normalize_remove_normalized.py diff --git a/src/MCPClient/lib/clientScripts/rights_from_csv.py b/src/MCPClient/clientScripts/rights_from_csv.py similarity index 100% rename from src/MCPClient/lib/clientScripts/rights_from_csv.py rename to src/MCPClient/clientScripts/rights_from_csv.py diff --git a/src/MCPClient/lib/clientScripts/save_dublin_core.py b/src/MCPClient/clientScripts/save_dublin_core.py similarity index 100% rename from src/MCPClient/lib/clientScripts/save_dublin_core.py rename to src/MCPClient/clientScripts/save_dublin_core.py diff --git a/src/MCPClient/lib/clientScripts/set_maildir_file_grp_use_and_file_ids.py b/src/MCPClient/clientScripts/set_maildir_file_grp_use_and_file_ids.py similarity index 100% rename from src/MCPClient/lib/clientScripts/set_maildir_file_grp_use_and_file_ids.py rename to src/MCPClient/clientScripts/set_maildir_file_grp_use_and_file_ids.py diff --git a/src/MCPClient/lib/clientScripts/set_transfer_type.py b/src/MCPClient/clientScripts/set_transfer_type.py similarity index 100% rename from src/MCPClient/lib/clientScripts/set_transfer_type.py rename to src/MCPClient/clientScripts/set_transfer_type.py diff --git a/src/MCPClient/lib/clientScripts/store_aip.py b/src/MCPClient/clientScripts/store_aip.py similarity index 100% rename from src/MCPClient/lib/clientScripts/store_aip.py rename to src/MCPClient/clientScripts/store_aip.py diff --git a/src/MCPClient/lib/clientScripts/store_file_modification_dates.py b/src/MCPClient/clientScripts/store_file_modification_dates.py similarity index 100% rename from src/MCPClient/lib/clientScripts/store_file_modification_dates.py rename to src/MCPClient/clientScripts/store_file_modification_dates.py diff --git a/src/MCPClient/lib/clientScripts/transcoder.py b/src/MCPClient/clientScripts/transcoder.py similarity index 100% rename from src/MCPClient/lib/clientScripts/transcoder.py rename to src/MCPClient/clientScripts/transcoder.py diff --git a/src/MCPClient/lib/clientScripts/transcribe_file.py b/src/MCPClient/clientScripts/transcribe_file.py similarity index 100% rename from src/MCPClient/lib/clientScripts/transcribe_file.py rename to src/MCPClient/clientScripts/transcribe_file.py diff --git a/src/MCPClient/lib/clientScripts/trim_create_rights_entries.py b/src/MCPClient/clientScripts/trim_create_rights_entries.py similarity index 100% rename from src/MCPClient/lib/clientScripts/trim_create_rights_entries.py rename to src/MCPClient/clientScripts/trim_create_rights_entries.py diff --git a/src/MCPClient/lib/clientScripts/trim_restructure_for_compliance.py b/src/MCPClient/clientScripts/trim_restructure_for_compliance.py similarity index 100% rename from src/MCPClient/lib/clientScripts/trim_restructure_for_compliance.py rename to src/MCPClient/clientScripts/trim_restructure_for_compliance.py diff --git a/src/MCPClient/lib/clientScripts/trim_verify_checksums.py b/src/MCPClient/clientScripts/trim_verify_checksums.py similarity index 100% rename from src/MCPClient/lib/clientScripts/trim_verify_checksums.py rename to src/MCPClient/clientScripts/trim_verify_checksums.py diff --git a/src/MCPClient/lib/clientScripts/trim_verify_manifest.py b/src/MCPClient/clientScripts/trim_verify_manifest.py similarity index 100% rename from src/MCPClient/lib/clientScripts/trim_verify_manifest.py rename to src/MCPClient/clientScripts/trim_verify_manifest.py diff --git a/src/MCPClient/lib/clientScripts/update_size_and_checksum.py b/src/MCPClient/clientScripts/update_size_and_checksum.py similarity index 100% rename from src/MCPClient/lib/clientScripts/update_size_and_checksum.py rename to src/MCPClient/clientScripts/update_size_and_checksum.py diff --git a/src/MCPClient/lib/clientScripts/upload_archivesspace.py b/src/MCPClient/clientScripts/upload_archivesspace.py similarity index 100% rename from src/MCPClient/lib/clientScripts/upload_archivesspace.py rename to src/MCPClient/clientScripts/upload_archivesspace.py diff --git a/src/MCPClient/lib/clientScripts/upload_qubit.py b/src/MCPClient/clientScripts/upload_qubit.py similarity index 100% rename from src/MCPClient/lib/clientScripts/upload_qubit.py rename to src/MCPClient/clientScripts/upload_qubit.py diff --git a/src/MCPClient/lib/clientScripts/validate_file.py b/src/MCPClient/clientScripts/validate_file.py similarity index 100% rename from src/MCPClient/lib/clientScripts/validate_file.py rename to src/MCPClient/clientScripts/validate_file.py diff --git a/src/MCPClient/lib/clientScripts/verify_aip.py b/src/MCPClient/clientScripts/verify_aip.py similarity index 100% rename from src/MCPClient/lib/clientScripts/verify_aip.py rename to src/MCPClient/clientScripts/verify_aip.py diff --git a/src/MCPClient/lib/clientScripts/verify_and_restructure_transfer_bag.py b/src/MCPClient/clientScripts/verify_and_restructure_transfer_bag.py similarity index 100% rename from src/MCPClient/lib/clientScripts/verify_and_restructure_transfer_bag.py rename to src/MCPClient/clientScripts/verify_and_restructure_transfer_bag.py diff --git a/src/MCPClient/lib/clientScripts/verify_checksum.py b/src/MCPClient/clientScripts/verify_checksum.py similarity index 100% rename from src/MCPClient/lib/clientScripts/verify_checksum.py rename to src/MCPClient/clientScripts/verify_checksum.py diff --git a/src/MCPClient/lib/clientScripts/verify_checksums_in_file_sec_of_dspace_mets_files.py b/src/MCPClient/clientScripts/verify_checksums_in_file_sec_of_dspace_mets_files.py similarity index 100% rename from src/MCPClient/lib/clientScripts/verify_checksums_in_file_sec_of_dspace_mets_files.py rename to src/MCPClient/clientScripts/verify_checksums_in_file_sec_of_dspace_mets_files.py diff --git a/src/MCPClient/lib/clientScripts/verify_mets.py b/src/MCPClient/clientScripts/verify_mets.py similarity index 100% rename from src/MCPClient/lib/clientScripts/verify_mets.py rename to src/MCPClient/clientScripts/verify_mets.py diff --git a/src/MCPClient/lib/clientScripts/verify_sip_compliance.py b/src/MCPClient/clientScripts/verify_sip_compliance.py similarity index 100% rename from src/MCPClient/lib/clientScripts/verify_sip_compliance.py rename to src/MCPClient/clientScripts/verify_sip_compliance.py diff --git a/src/MCPClient/lib/clientScripts/verify_transfer_compliance.py b/src/MCPClient/clientScripts/verify_transfer_compliance.py similarity index 100% rename from src/MCPClient/lib/clientScripts/verify_transfer_compliance.py rename to src/MCPClient/clientScripts/verify_transfer_compliance.py diff --git a/src/MCPClient/lib/settings/__init__.py b/src/MCPClient/settings/__init__.py similarity index 100% rename from src/MCPClient/lib/settings/__init__.py rename to src/MCPClient/settings/__init__.py diff --git a/src/MCPClient/lib/settings/common.py b/src/MCPClient/settings/common.py similarity index 100% rename from src/MCPClient/lib/settings/common.py rename to src/MCPClient/settings/common.py diff --git a/src/MCPClient/lib/settings/test.py b/src/MCPClient/settings/test.py similarity index 100% rename from src/MCPClient/lib/settings/test.py rename to src/MCPClient/settings/test.py diff --git a/src/MCPClient/lib/settings/testmysql.py b/src/MCPClient/settings/testmysql.py similarity index 100% rename from src/MCPClient/lib/settings/testmysql.py rename to src/MCPClient/settings/testmysql.py diff --git a/src/MCPServer/lib/archivematicaMCP.py b/src/MCPServer/archivematicaMCP.py similarity index 100% rename from src/MCPServer/lib/archivematicaMCP.py rename to src/MCPServer/archivematicaMCP.py diff --git a/src/MCPServer/lib/assets/workflow-schema-v1.json b/src/MCPServer/assets/workflow-schema-v1.json similarity index 100% rename from src/MCPServer/lib/assets/workflow-schema-v1.json rename to src/MCPServer/assets/workflow-schema-v1.json diff --git a/src/MCPServer/lib/assets/workflow.json b/src/MCPServer/assets/workflow.json similarity index 100% rename from src/MCPServer/lib/assets/workflow.json rename to src/MCPServer/assets/workflow.json diff --git a/src/MCPServer/lib/server/__init__.py b/src/MCPServer/server/__init__.py similarity index 100% rename from src/MCPServer/lib/server/__init__.py rename to src/MCPServer/server/__init__.py diff --git a/src/MCPServer/lib/server/jobs/__init__.py b/src/MCPServer/server/jobs/__init__.py similarity index 100% rename from src/MCPServer/lib/server/jobs/__init__.py rename to src/MCPServer/server/jobs/__init__.py diff --git a/src/MCPServer/lib/server/jobs/base.py b/src/MCPServer/server/jobs/base.py similarity index 100% rename from src/MCPServer/lib/server/jobs/base.py rename to src/MCPServer/server/jobs/base.py diff --git a/src/MCPServer/lib/server/jobs/chain.py b/src/MCPServer/server/jobs/chain.py similarity index 100% rename from src/MCPServer/lib/server/jobs/chain.py rename to src/MCPServer/server/jobs/chain.py diff --git a/src/MCPServer/lib/server/jobs/client.py b/src/MCPServer/server/jobs/client.py similarity index 100% rename from src/MCPServer/lib/server/jobs/client.py rename to src/MCPServer/server/jobs/client.py diff --git a/src/MCPServer/lib/server/jobs/decisions.py b/src/MCPServer/server/jobs/decisions.py similarity index 100% rename from src/MCPServer/lib/server/jobs/decisions.py rename to src/MCPServer/server/jobs/decisions.py diff --git a/src/MCPServer/lib/server/jobs/local.py b/src/MCPServer/server/jobs/local.py similarity index 100% rename from src/MCPServer/lib/server/jobs/local.py rename to src/MCPServer/server/jobs/local.py diff --git a/src/MCPServer/lib/server/mcp.py b/src/MCPServer/server/mcp.py similarity index 100% rename from src/MCPServer/lib/server/mcp.py rename to src/MCPServer/server/mcp.py diff --git a/src/MCPServer/lib/server/metrics.py b/src/MCPServer/server/metrics.py similarity index 100% rename from src/MCPServer/lib/server/metrics.py rename to src/MCPServer/server/metrics.py diff --git a/src/MCPServer/lib/server/packages.py b/src/MCPServer/server/packages.py similarity index 100% rename from src/MCPServer/lib/server/packages.py rename to src/MCPServer/server/packages.py diff --git a/src/MCPServer/lib/server/processing_config.py b/src/MCPServer/server/processing_config.py similarity index 100% rename from src/MCPServer/lib/server/processing_config.py rename to src/MCPServer/server/processing_config.py diff --git a/src/MCPServer/lib/server/queues.py b/src/MCPServer/server/queues.py similarity index 100% rename from src/MCPServer/lib/server/queues.py rename to src/MCPServer/server/queues.py diff --git a/src/MCPServer/lib/server/rpc_server.py b/src/MCPServer/server/rpc_server.py similarity index 100% rename from src/MCPServer/lib/server/rpc_server.py rename to src/MCPServer/server/rpc_server.py diff --git a/src/MCPServer/lib/server/shared_dirs.py b/src/MCPServer/server/shared_dirs.py similarity index 100% rename from src/MCPServer/lib/server/shared_dirs.py rename to src/MCPServer/server/shared_dirs.py diff --git a/src/MCPServer/lib/server/tasks/__init__.py b/src/MCPServer/server/tasks/__init__.py similarity index 100% rename from src/MCPServer/lib/server/tasks/__init__.py rename to src/MCPServer/server/tasks/__init__.py diff --git a/src/MCPServer/lib/server/tasks/backends/__init__.py b/src/MCPServer/server/tasks/backends/__init__.py similarity index 100% rename from src/MCPServer/lib/server/tasks/backends/__init__.py rename to src/MCPServer/server/tasks/backends/__init__.py diff --git a/src/MCPServer/lib/server/tasks/backends/base.py b/src/MCPServer/server/tasks/backends/base.py similarity index 100% rename from src/MCPServer/lib/server/tasks/backends/base.py rename to src/MCPServer/server/tasks/backends/base.py diff --git a/src/MCPServer/lib/server/tasks/backends/gearman_backend.py b/src/MCPServer/server/tasks/backends/gearman_backend.py similarity index 100% rename from src/MCPServer/lib/server/tasks/backends/gearman_backend.py rename to src/MCPServer/server/tasks/backends/gearman_backend.py diff --git a/src/MCPServer/lib/server/tasks/task.py b/src/MCPServer/server/tasks/task.py similarity index 100% rename from src/MCPServer/lib/server/tasks/task.py rename to src/MCPServer/server/tasks/task.py diff --git a/src/MCPServer/lib/server/translation.py b/src/MCPServer/server/translation.py similarity index 100% rename from src/MCPServer/lib/server/translation.py rename to src/MCPServer/server/translation.py diff --git a/src/MCPServer/lib/server/utils.py b/src/MCPServer/server/utils.py similarity index 100% rename from src/MCPServer/lib/server/utils.py rename to src/MCPServer/server/utils.py diff --git a/src/MCPServer/lib/server/watch_dirs.py b/src/MCPServer/server/watch_dirs.py similarity index 100% rename from src/MCPServer/lib/server/watch_dirs.py rename to src/MCPServer/server/watch_dirs.py diff --git a/src/MCPServer/lib/server/workflow.py b/src/MCPServer/server/workflow.py similarity index 100% rename from src/MCPServer/lib/server/workflow.py rename to src/MCPServer/server/workflow.py diff --git a/src/MCPServer/lib/server/workflow_abilities.py b/src/MCPServer/server/workflow_abilities.py similarity index 100% rename from src/MCPServer/lib/server/workflow_abilities.py rename to src/MCPServer/server/workflow_abilities.py diff --git a/src/MCPServer/lib/settings/__init__.py b/src/MCPServer/settings/__init__.py similarity index 100% rename from src/MCPServer/lib/settings/__init__.py rename to src/MCPServer/settings/__init__.py diff --git a/src/MCPServer/lib/settings/common.py b/src/MCPServer/settings/common.py similarity index 100% rename from src/MCPServer/lib/settings/common.py rename to src/MCPServer/settings/common.py diff --git a/src/MCPServer/lib/settings/test.py b/src/MCPServer/settings/test.py similarity index 100% rename from src/MCPServer/lib/settings/test.py rename to src/MCPServer/settings/test.py diff --git a/src/MCPServer/lib/settings/testmysql.py b/src/MCPServer/settings/testmysql.py similarity index 100% rename from src/MCPServer/lib/settings/testmysql.py rename to src/MCPServer/settings/testmysql.py diff --git a/src/archivematicaCommon/lib/__init__.py b/src/archivematicaCommon/__init__.py similarity index 100% rename from src/archivematicaCommon/lib/__init__.py rename to src/archivematicaCommon/__init__.py diff --git a/src/archivematicaCommon/lib/appconfig.py b/src/archivematicaCommon/appconfig.py similarity index 98% rename from src/archivematicaCommon/lib/appconfig.py rename to src/archivematicaCommon/appconfig.py index c08de919e1..177bd3c2d7 100644 --- a/src/archivematicaCommon/lib/appconfig.py +++ b/src/archivematicaCommon/appconfig.py @@ -1,9 +1,9 @@ """ Configuration helper for MCPServer, MCPClient and Dashboard, used in: - - MCPClient/lib/settings/common.py - - MCPServer/lib/settings/common.py - - Dashboard/src/settings/base.py + - MCPClient/settings/common.py + - MCPServer/settings/common.py + - dashboard/settings/base.py Config. attributes are declared on those settings files and they can be defined by a dictionary indicating the 'section', 'option' and 'type' to be parsed by diff --git a/src/archivematicaCommon/lib/archivematicaFunctions.py b/src/archivematicaCommon/archivematicaFunctions.py similarity index 100% rename from src/archivematicaCommon/lib/archivematicaFunctions.py rename to src/archivematicaCommon/archivematicaFunctions.py diff --git a/src/archivematicaCommon/lib/bag.py b/src/archivematicaCommon/bag.py similarity index 100% rename from src/archivematicaCommon/lib/bag.py rename to src/archivematicaCommon/bag.py diff --git a/src/archivematicaCommon/lib/bindpid.py b/src/archivematicaCommon/bindpid.py similarity index 100% rename from src/archivematicaCommon/lib/bindpid.py rename to src/archivematicaCommon/bindpid.py diff --git a/src/archivematicaCommon/lib/common_metrics.py b/src/archivematicaCommon/common_metrics.py similarity index 100% rename from src/archivematicaCommon/lib/common_metrics.py rename to src/archivematicaCommon/common_metrics.py diff --git a/src/archivematicaCommon/lib/countryCodes.py b/src/archivematicaCommon/countryCodes.py similarity index 100% rename from src/archivematicaCommon/lib/countryCodes.py rename to src/archivematicaCommon/countryCodes.py diff --git a/src/archivematicaCommon/lib/custom_handlers.py b/src/archivematicaCommon/custom_handlers.py similarity index 100% rename from src/archivematicaCommon/lib/custom_handlers.py rename to src/archivematicaCommon/custom_handlers.py diff --git a/src/archivematicaCommon/lib/databaseFunctions.py b/src/archivematicaCommon/databaseFunctions.py similarity index 100% rename from src/archivematicaCommon/lib/databaseFunctions.py rename to src/archivematicaCommon/databaseFunctions.py diff --git a/src/archivematicaCommon/lib/dbconns.py b/src/archivematicaCommon/dbconns.py similarity index 100% rename from src/archivematicaCommon/lib/dbconns.py rename to src/archivematicaCommon/dbconns.py diff --git a/src/archivematicaCommon/lib/dicts.py b/src/archivematicaCommon/dicts.py similarity index 100% rename from src/archivematicaCommon/lib/dicts.py rename to src/archivematicaCommon/dicts.py diff --git a/src/archivematicaCommon/lib/elasticSearchFunctions.py b/src/archivematicaCommon/elasticSearchFunctions.py similarity index 100% rename from src/archivematicaCommon/lib/elasticSearchFunctions.py rename to src/archivematicaCommon/elasticSearchFunctions.py diff --git a/src/archivematicaCommon/lib/email_settings.py b/src/archivematicaCommon/email_settings.py similarity index 100% rename from src/archivematicaCommon/lib/email_settings.py rename to src/archivematicaCommon/email_settings.py diff --git a/src/archivematicaCommon/lib/env_configparser.py b/src/archivematicaCommon/env_configparser.py similarity index 100% rename from src/archivematicaCommon/lib/env_configparser.py rename to src/archivematicaCommon/env_configparser.py diff --git a/src/archivematicaCommon/lib/executeOrRunSubProcess.py b/src/archivematicaCommon/executeOrRunSubProcess.py similarity index 100% rename from src/archivematicaCommon/lib/executeOrRunSubProcess.py rename to src/archivematicaCommon/executeOrRunSubProcess.py diff --git a/src/archivematicaCommon/lib/externals/HTML/HTML.py b/src/archivematicaCommon/externals/HTML/HTML.py similarity index 100% rename from src/archivematicaCommon/lib/externals/HTML/HTML.py rename to src/archivematicaCommon/externals/HTML/HTML.py diff --git a/src/archivematicaCommon/lib/externals/HTML/Licence_CeCILL_V2-en.html b/src/archivematicaCommon/externals/HTML/Licence_CeCILL_V2-en.html similarity index 100% rename from src/archivematicaCommon/lib/externals/HTML/Licence_CeCILL_V2-en.html rename to src/archivematicaCommon/externals/HTML/Licence_CeCILL_V2-en.html diff --git a/src/archivematicaCommon/lib/externals/HTML/Licence_CeCILL_V2-fr.html b/src/archivematicaCommon/externals/HTML/Licence_CeCILL_V2-fr.html similarity index 100% rename from src/archivematicaCommon/lib/externals/HTML/Licence_CeCILL_V2-fr.html rename to src/archivematicaCommon/externals/HTML/Licence_CeCILL_V2-fr.html diff --git a/src/archivematicaCommon/lib/externals/HTML/__init__.py b/src/archivematicaCommon/externals/HTML/__init__.py similarity index 100% rename from src/archivematicaCommon/lib/externals/HTML/__init__.py rename to src/archivematicaCommon/externals/HTML/__init__.py diff --git a/src/archivematicaCommon/lib/externals/__init__.py b/src/archivematicaCommon/externals/__init__.py similarity index 100% rename from src/archivematicaCommon/lib/externals/__init__.py rename to src/archivematicaCommon/externals/__init__.py diff --git a/src/archivematicaCommon/lib/externals/extractMaildirAttachments.py b/src/archivematicaCommon/externals/extractMaildirAttachments.py similarity index 100% rename from src/archivematicaCommon/lib/externals/extractMaildirAttachments.py rename to src/archivematicaCommon/externals/extractMaildirAttachments.py diff --git a/src/archivematicaCommon/lib/externals/fido/archivematica_format_extensions.xml b/src/archivematicaCommon/externals/fido/archivematica_format_extensions.xml similarity index 100% rename from src/archivematicaCommon/lib/externals/fido/archivematica_format_extensions.xml rename to src/archivematicaCommon/externals/fido/archivematica_format_extensions.xml diff --git a/src/archivematicaCommon/lib/externals/fiwalk_plugins/ficonfig.txt b/src/archivematicaCommon/externals/fiwalk_plugins/ficonfig.txt similarity index 100% rename from src/archivematicaCommon/lib/externals/fiwalk_plugins/ficonfig.txt rename to src/archivematicaCommon/externals/fiwalk_plugins/ficonfig.txt diff --git a/src/archivematicaCommon/lib/externals/fiwalk_plugins/pronom_ident.py b/src/archivematicaCommon/externals/fiwalk_plugins/pronom_ident.py similarity index 100% rename from src/archivematicaCommon/lib/externals/fiwalk_plugins/pronom_ident.py rename to src/archivematicaCommon/externals/fiwalk_plugins/pronom_ident.py diff --git a/src/archivematicaCommon/lib/externals/maildirToMbox.py b/src/archivematicaCommon/externals/maildirToMbox.py similarity index 100% rename from src/archivematicaCommon/lib/externals/maildirToMbox.py rename to src/archivematicaCommon/externals/maildirToMbox.py diff --git a/src/archivematicaCommon/lib/externals/xmltodict.py b/src/archivematicaCommon/externals/xmltodict.py similarity index 100% rename from src/archivematicaCommon/lib/externals/xmltodict.py rename to src/archivematicaCommon/externals/xmltodict.py diff --git a/src/archivematicaCommon/lib/fileOperations.py b/src/archivematicaCommon/fileOperations.py similarity index 100% rename from src/archivematicaCommon/lib/fileOperations.py rename to src/archivematicaCommon/fileOperations.py diff --git a/src/archivematicaCommon/lib/gearman_encoder.py b/src/archivematicaCommon/gearman_encoder.py similarity index 100% rename from src/archivematicaCommon/lib/gearman_encoder.py rename to src/archivematicaCommon/gearman_encoder.py diff --git a/src/archivematicaCommon/lib/identifier_functions.py b/src/archivematicaCommon/identifier_functions.py similarity index 91% rename from src/archivematicaCommon/lib/identifier_functions.py rename to src/archivematicaCommon/identifier_functions.py index 549996a7ee..4b6ae4f04a 100644 --- a/src/archivematicaCommon/lib/identifier_functions.py +++ b/src/archivematicaCommon/identifier_functions.py @@ -1,7 +1,7 @@ """ Functions to fetch identifiers for indexing in ElasticSearch. -See also src/MCPClient/lib/clientScripts/index_aip.py where these are used. +See also src/MCPClient/clientScripts/index_aip.py where these are used. """ from lxml import etree diff --git a/src/archivematicaCommon/lib/namespaces.py b/src/archivematicaCommon/namespaces.py similarity index 100% rename from src/archivematicaCommon/lib/namespaces.py rename to src/archivematicaCommon/namespaces.py diff --git a/src/archivematicaCommon/lib/processing.py b/src/archivematicaCommon/processing.py similarity index 100% rename from src/archivematicaCommon/lib/processing.py rename to src/archivematicaCommon/processing.py diff --git a/src/archivematicaCommon/lib/storageService.py b/src/archivematicaCommon/storageService.py similarity index 100% rename from src/archivematicaCommon/lib/storageService.py rename to src/archivematicaCommon/storageService.py diff --git a/src/archivematicaCommon/lib/version.py b/src/archivematicaCommon/version.py similarity index 100% rename from src/archivematicaCommon/lib/version.py rename to src/archivematicaCommon/version.py diff --git a/src/archivematicaCommon/lib/xml2obj.py b/src/archivematicaCommon/xml2obj.py similarity index 100% rename from src/archivematicaCommon/lib/xml2obj.py rename to src/archivematicaCommon/xml2obj.py diff --git a/src/dashboard/src/__init__.py b/src/dashboard/__init__.py similarity index 100% rename from src/dashboard/src/__init__.py rename to src/dashboard/__init__.py diff --git a/src/dashboard/src/components/__init__.py b/src/dashboard/components/__init__.py similarity index 100% rename from src/dashboard/src/components/__init__.py rename to src/dashboard/components/__init__.py diff --git a/src/dashboard/src/components/access/__init__.py b/src/dashboard/components/access/__init__.py similarity index 100% rename from src/dashboard/src/components/access/__init__.py rename to src/dashboard/components/access/__init__.py diff --git a/src/dashboard/src/components/access/urls.py b/src/dashboard/components/access/urls.py similarity index 100% rename from src/dashboard/src/components/access/urls.py rename to src/dashboard/components/access/urls.py diff --git a/src/dashboard/src/components/access/views.py b/src/dashboard/components/access/views.py similarity index 100% rename from src/dashboard/src/components/access/views.py rename to src/dashboard/components/access/views.py diff --git a/src/dashboard/src/components/accounts/__init__.py b/src/dashboard/components/accounts/__init__.py similarity index 100% rename from src/dashboard/src/components/accounts/__init__.py rename to src/dashboard/components/accounts/__init__.py diff --git a/src/dashboard/src/components/accounts/apps.py b/src/dashboard/components/accounts/apps.py similarity index 100% rename from src/dashboard/src/components/accounts/apps.py rename to src/dashboard/components/accounts/apps.py diff --git a/src/dashboard/src/components/accounts/backends.py b/src/dashboard/components/accounts/backends.py similarity index 100% rename from src/dashboard/src/components/accounts/backends.py rename to src/dashboard/components/accounts/backends.py diff --git a/src/dashboard/src/components/accounts/forms.py b/src/dashboard/components/accounts/forms.py similarity index 100% rename from src/dashboard/src/components/accounts/forms.py rename to src/dashboard/components/accounts/forms.py diff --git a/src/dashboard/src/components/accounts/signals.py b/src/dashboard/components/accounts/signals.py similarity index 100% rename from src/dashboard/src/components/accounts/signals.py rename to src/dashboard/components/accounts/signals.py diff --git a/src/dashboard/src/components/accounts/urls.py b/src/dashboard/components/accounts/urls.py similarity index 100% rename from src/dashboard/src/components/accounts/urls.py rename to src/dashboard/components/accounts/urls.py diff --git a/src/dashboard/src/components/accounts/validators.py b/src/dashboard/components/accounts/validators.py similarity index 100% rename from src/dashboard/src/components/accounts/validators.py rename to src/dashboard/components/accounts/validators.py diff --git a/src/dashboard/src/components/accounts/views.py b/src/dashboard/components/accounts/views.py similarity index 100% rename from src/dashboard/src/components/accounts/views.py rename to src/dashboard/components/accounts/views.py diff --git a/src/dashboard/src/components/administration/__init__.py b/src/dashboard/components/administration/__init__.py similarity index 100% rename from src/dashboard/src/components/administration/__init__.py rename to src/dashboard/components/administration/__init__.py diff --git a/src/dashboard/src/components/administration/apps.py b/src/dashboard/components/administration/apps.py similarity index 100% rename from src/dashboard/src/components/administration/apps.py rename to src/dashboard/components/administration/apps.py diff --git a/src/dashboard/src/components/administration/forms.py b/src/dashboard/components/administration/forms.py similarity index 100% rename from src/dashboard/src/components/administration/forms.py rename to src/dashboard/components/administration/forms.py diff --git a/src/dashboard/src/components/administration/forms_dip_upload.py b/src/dashboard/components/administration/forms_dip_upload.py similarity index 100% rename from src/dashboard/src/components/administration/forms_dip_upload.py rename to src/dashboard/components/administration/forms_dip_upload.py diff --git a/src/dashboard/src/components/administration/migrations/0001_initial.py b/src/dashboard/components/administration/migrations/0001_initial.py similarity index 100% rename from src/dashboard/src/components/administration/migrations/0001_initial.py rename to src/dashboard/components/administration/migrations/0001_initial.py diff --git a/src/dashboard/src/components/administration/migrations/0002_archivesspaceconfig.py b/src/dashboard/components/administration/migrations/0002_archivesspaceconfig.py similarity index 100% rename from src/dashboard/src/components/administration/migrations/0002_archivesspaceconfig.py rename to src/dashboard/components/administration/migrations/0002_archivesspaceconfig.py diff --git a/src/dashboard/src/components/administration/migrations/0003_archivesspace_help_text.py b/src/dashboard/components/administration/migrations/0003_archivesspace_help_text.py similarity index 100% rename from src/dashboard/src/components/administration/migrations/0003_archivesspace_help_text.py rename to src/dashboard/components/administration/migrations/0003_archivesspace_help_text.py diff --git a/src/dashboard/src/components/administration/migrations/0004_archivesspaceconfig_inherit_notes.py b/src/dashboard/components/administration/migrations/0004_archivesspaceconfig_inherit_notes.py similarity index 100% rename from src/dashboard/src/components/administration/migrations/0004_archivesspaceconfig_inherit_notes.py rename to src/dashboard/components/administration/migrations/0004_archivesspaceconfig_inherit_notes.py diff --git a/src/dashboard/src/components/administration/migrations/0005_archivesspace_inherit_note_default.py b/src/dashboard/components/administration/migrations/0005_archivesspace_inherit_note_default.py similarity index 100% rename from src/dashboard/src/components/administration/migrations/0005_archivesspace_inherit_note_default.py rename to src/dashboard/components/administration/migrations/0005_archivesspace_inherit_note_default.py diff --git a/src/dashboard/src/components/administration/migrations/0006_use_statement_optional.py b/src/dashboard/components/administration/migrations/0006_use_statement_optional.py similarity index 100% rename from src/dashboard/src/components/administration/migrations/0006_use_statement_optional.py rename to src/dashboard/components/administration/migrations/0006_use_statement_optional.py diff --git a/src/dashboard/src/components/administration/migrations/0007_delete_unused_models.py b/src/dashboard/components/administration/migrations/0007_delete_unused_models.py similarity index 100% rename from src/dashboard/src/components/administration/migrations/0007_delete_unused_models.py rename to src/dashboard/components/administration/migrations/0007_delete_unused_models.py diff --git a/src/dashboard/src/components/administration/migrations/__init__.py b/src/dashboard/components/administration/migrations/__init__.py similarity index 100% rename from src/dashboard/src/components/administration/migrations/__init__.py rename to src/dashboard/components/administration/migrations/__init__.py diff --git a/src/dashboard/src/components/administration/models.py b/src/dashboard/components/administration/models.py similarity index 100% rename from src/dashboard/src/components/administration/models.py rename to src/dashboard/components/administration/models.py diff --git a/src/dashboard/src/components/administration/urls.py b/src/dashboard/components/administration/urls.py similarity index 100% rename from src/dashboard/src/components/administration/urls.py rename to src/dashboard/components/administration/urls.py diff --git a/src/dashboard/src/components/administration/views.py b/src/dashboard/components/administration/views.py similarity index 100% rename from src/dashboard/src/components/administration/views.py rename to src/dashboard/components/administration/views.py diff --git a/src/dashboard/src/components/administration/views_dip_upload.py b/src/dashboard/components/administration/views_dip_upload.py similarity index 100% rename from src/dashboard/src/components/administration/views_dip_upload.py rename to src/dashboard/components/administration/views_dip_upload.py diff --git a/src/dashboard/src/components/administration/views_processing.py b/src/dashboard/components/administration/views_processing.py similarity index 100% rename from src/dashboard/src/components/administration/views_processing.py rename to src/dashboard/components/administration/views_processing.py diff --git a/src/dashboard/src/components/advanced_search.py b/src/dashboard/components/advanced_search.py similarity index 100% rename from src/dashboard/src/components/advanced_search.py rename to src/dashboard/components/advanced_search.py diff --git a/src/dashboard/src/components/api/__init__.py b/src/dashboard/components/api/__init__.py similarity index 100% rename from src/dashboard/src/components/api/__init__.py rename to src/dashboard/components/api/__init__.py diff --git a/src/dashboard/src/components/api/urls.py b/src/dashboard/components/api/urls.py similarity index 100% rename from src/dashboard/src/components/api/urls.py rename to src/dashboard/components/api/urls.py diff --git a/src/dashboard/src/components/api/validators.py b/src/dashboard/components/api/validators.py similarity index 100% rename from src/dashboard/src/components/api/validators.py rename to src/dashboard/components/api/validators.py diff --git a/src/dashboard/src/components/api/views.py b/src/dashboard/components/api/views.py similarity index 100% rename from src/dashboard/src/components/api/views.py rename to src/dashboard/components/api/views.py diff --git a/src/dashboard/src/components/appraisal/__init__.py b/src/dashboard/components/appraisal/__init__.py similarity index 100% rename from src/dashboard/src/components/appraisal/__init__.py rename to src/dashboard/components/appraisal/__init__.py diff --git a/src/dashboard/src/components/appraisal/urls.py b/src/dashboard/components/appraisal/urls.py similarity index 100% rename from src/dashboard/src/components/appraisal/urls.py rename to src/dashboard/components/appraisal/urls.py diff --git a/src/dashboard/src/components/appraisal/views.py b/src/dashboard/components/appraisal/views.py similarity index 100% rename from src/dashboard/src/components/appraisal/views.py rename to src/dashboard/components/appraisal/views.py diff --git a/src/dashboard/src/components/archival_storage/__init__.py b/src/dashboard/components/archival_storage/__init__.py similarity index 100% rename from src/dashboard/src/components/archival_storage/__init__.py rename to src/dashboard/components/archival_storage/__init__.py diff --git a/src/dashboard/src/components/archival_storage/atom.py b/src/dashboard/components/archival_storage/atom.py similarity index 100% rename from src/dashboard/src/components/archival_storage/atom.py rename to src/dashboard/components/archival_storage/atom.py diff --git a/src/dashboard/src/components/archival_storage/forms.py b/src/dashboard/components/archival_storage/forms.py similarity index 100% rename from src/dashboard/src/components/archival_storage/forms.py rename to src/dashboard/components/archival_storage/forms.py diff --git a/src/dashboard/src/components/archival_storage/urls.py b/src/dashboard/components/archival_storage/urls.py similarity index 100% rename from src/dashboard/src/components/archival_storage/urls.py rename to src/dashboard/components/archival_storage/urls.py diff --git a/src/dashboard/src/components/archival_storage/views.py b/src/dashboard/components/archival_storage/views.py similarity index 100% rename from src/dashboard/src/components/archival_storage/views.py rename to src/dashboard/components/archival_storage/views.py diff --git a/src/dashboard/src/components/backlog/__init__.py b/src/dashboard/components/backlog/__init__.py similarity index 100% rename from src/dashboard/src/components/backlog/__init__.py rename to src/dashboard/components/backlog/__init__.py diff --git a/src/dashboard/src/components/backlog/urls.py b/src/dashboard/components/backlog/urls.py similarity index 100% rename from src/dashboard/src/components/backlog/urls.py rename to src/dashboard/components/backlog/urls.py diff --git a/src/dashboard/src/components/backlog/views.py b/src/dashboard/components/backlog/views.py similarity index 100% rename from src/dashboard/src/components/backlog/views.py rename to src/dashboard/components/backlog/views.py diff --git a/src/dashboard/src/components/decorators.py b/src/dashboard/components/decorators.py similarity index 100% rename from src/dashboard/src/components/decorators.py rename to src/dashboard/components/decorators.py diff --git a/src/dashboard/src/components/file/__init__.py b/src/dashboard/components/file/__init__.py similarity index 100% rename from src/dashboard/src/components/file/__init__.py rename to src/dashboard/components/file/__init__.py diff --git a/src/dashboard/src/components/file/urls.py b/src/dashboard/components/file/urls.py similarity index 100% rename from src/dashboard/src/components/file/urls.py rename to src/dashboard/components/file/urls.py diff --git a/src/dashboard/src/components/file/views.py b/src/dashboard/components/file/views.py similarity index 100% rename from src/dashboard/src/components/file/views.py rename to src/dashboard/components/file/views.py diff --git a/src/dashboard/src/components/filesystem_ajax/__init__.py b/src/dashboard/components/filesystem_ajax/__init__.py similarity index 100% rename from src/dashboard/src/components/filesystem_ajax/__init__.py rename to src/dashboard/components/filesystem_ajax/__init__.py diff --git a/src/dashboard/src/components/filesystem_ajax/helpers.py b/src/dashboard/components/filesystem_ajax/helpers.py similarity index 100% rename from src/dashboard/src/components/filesystem_ajax/helpers.py rename to src/dashboard/components/filesystem_ajax/helpers.py diff --git a/src/dashboard/src/components/filesystem_ajax/urls.py b/src/dashboard/components/filesystem_ajax/urls.py similarity index 100% rename from src/dashboard/src/components/filesystem_ajax/urls.py rename to src/dashboard/components/filesystem_ajax/urls.py diff --git a/src/dashboard/src/components/filesystem_ajax/views.py b/src/dashboard/components/filesystem_ajax/views.py similarity index 100% rename from src/dashboard/src/components/filesystem_ajax/views.py rename to src/dashboard/components/filesystem_ajax/views.py diff --git a/src/dashboard/src/components/helpers.py b/src/dashboard/components/helpers.py similarity index 100% rename from src/dashboard/src/components/helpers.py rename to src/dashboard/components/helpers.py diff --git a/src/dashboard/src/components/ingest/__init__.py b/src/dashboard/components/ingest/__init__.py similarity index 100% rename from src/dashboard/src/components/ingest/__init__.py rename to src/dashboard/components/ingest/__init__.py diff --git a/src/dashboard/src/components/ingest/forms.py b/src/dashboard/components/ingest/forms.py similarity index 100% rename from src/dashboard/src/components/ingest/forms.py rename to src/dashboard/components/ingest/forms.py diff --git a/src/dashboard/src/components/ingest/pair_matcher.py b/src/dashboard/components/ingest/pair_matcher.py similarity index 100% rename from src/dashboard/src/components/ingest/pair_matcher.py rename to src/dashboard/components/ingest/pair_matcher.py diff --git a/src/dashboard/src/components/ingest/urls.py b/src/dashboard/components/ingest/urls.py similarity index 100% rename from src/dashboard/src/components/ingest/urls.py rename to src/dashboard/components/ingest/urls.py diff --git a/src/dashboard/src/components/ingest/views.py b/src/dashboard/components/ingest/views.py similarity index 100% rename from src/dashboard/src/components/ingest/views.py rename to src/dashboard/components/ingest/views.py diff --git a/src/dashboard/src/components/ingest/views_NormalizationReport.py b/src/dashboard/components/ingest/views_NormalizationReport.py similarity index 100% rename from src/dashboard/src/components/ingest/views_NormalizationReport.py rename to src/dashboard/components/ingest/views_NormalizationReport.py diff --git a/src/dashboard/src/components/ingest/views_as.py b/src/dashboard/components/ingest/views_as.py similarity index 100% rename from src/dashboard/src/components/ingest/views_as.py rename to src/dashboard/components/ingest/views_as.py diff --git a/src/dashboard/src/components/mcp/__init__.py b/src/dashboard/components/mcp/__init__.py similarity index 100% rename from src/dashboard/src/components/mcp/__init__.py rename to src/dashboard/components/mcp/__init__.py diff --git a/src/dashboard/src/components/mcp/urls.py b/src/dashboard/components/mcp/urls.py similarity index 100% rename from src/dashboard/src/components/mcp/urls.py rename to src/dashboard/components/mcp/urls.py diff --git a/src/dashboard/src/components/mcp/views.py b/src/dashboard/components/mcp/views.py similarity index 100% rename from src/dashboard/src/components/mcp/views.py rename to src/dashboard/components/mcp/views.py diff --git a/src/dashboard/src/components/rights/__init__.py b/src/dashboard/components/rights/__init__.py similarity index 100% rename from src/dashboard/src/components/rights/__init__.py rename to src/dashboard/components/rights/__init__.py diff --git a/src/dashboard/src/components/rights/forms.py b/src/dashboard/components/rights/forms.py similarity index 100% rename from src/dashboard/src/components/rights/forms.py rename to src/dashboard/components/rights/forms.py diff --git a/src/dashboard/src/components/rights/ingest_urls.py b/src/dashboard/components/rights/ingest_urls.py similarity index 100% rename from src/dashboard/src/components/rights/ingest_urls.py rename to src/dashboard/components/rights/ingest_urls.py diff --git a/src/dashboard/src/components/rights/load.py b/src/dashboard/components/rights/load.py similarity index 100% rename from src/dashboard/src/components/rights/load.py rename to src/dashboard/components/rights/load.py diff --git a/src/dashboard/src/components/rights/transfer_urls.py b/src/dashboard/components/rights/transfer_urls.py similarity index 100% rename from src/dashboard/src/components/rights/transfer_urls.py rename to src/dashboard/components/rights/transfer_urls.py diff --git a/src/dashboard/src/components/rights/views.py b/src/dashboard/components/rights/views.py similarity index 100% rename from src/dashboard/src/components/rights/views.py rename to src/dashboard/components/rights/views.py diff --git a/src/dashboard/src/components/transfer/__init__.py b/src/dashboard/components/transfer/__init__.py similarity index 100% rename from src/dashboard/src/components/transfer/__init__.py rename to src/dashboard/components/transfer/__init__.py diff --git a/src/dashboard/src/components/transfer/urls.py b/src/dashboard/components/transfer/urls.py similarity index 100% rename from src/dashboard/src/components/transfer/urls.py rename to src/dashboard/components/transfer/urls.py diff --git a/src/dashboard/src/components/transfer/views.py b/src/dashboard/components/transfer/views.py similarity index 100% rename from src/dashboard/src/components/transfer/views.py rename to src/dashboard/components/transfer/views.py diff --git a/src/dashboard/src/components/unit/__init__.py b/src/dashboard/components/unit/__init__.py similarity index 100% rename from src/dashboard/src/components/unit/__init__.py rename to src/dashboard/components/unit/__init__.py diff --git a/src/dashboard/src/components/unit/urls.py b/src/dashboard/components/unit/urls.py similarity index 100% rename from src/dashboard/src/components/unit/urls.py rename to src/dashboard/components/unit/urls.py diff --git a/src/dashboard/src/components/unit/views.py b/src/dashboard/components/unit/views.py similarity index 100% rename from src/dashboard/src/components/unit/views.py rename to src/dashboard/components/unit/views.py diff --git a/src/dashboard/src/contrib/__init__.py b/src/dashboard/contrib/__init__.py similarity index 100% rename from src/dashboard/src/contrib/__init__.py rename to src/dashboard/contrib/__init__.py diff --git a/src/dashboard/src/contrib/mcp/__init__.py b/src/dashboard/contrib/mcp/__init__.py similarity index 100% rename from src/dashboard/src/contrib/mcp/__init__.py rename to src/dashboard/contrib/mcp/__init__.py diff --git a/src/dashboard/src/contrib/mcp/client.py b/src/dashboard/contrib/mcp/client.py similarity index 100% rename from src/dashboard/src/contrib/mcp/client.py rename to src/dashboard/contrib/mcp/client.py diff --git a/src/dashboard/src/fpr/__init__.py b/src/dashboard/fpr/__init__.py similarity index 100% rename from src/dashboard/src/fpr/__init__.py rename to src/dashboard/fpr/__init__.py diff --git a/src/dashboard/src/fpr/apps.py b/src/dashboard/fpr/apps.py similarity index 100% rename from src/dashboard/src/fpr/apps.py rename to src/dashboard/fpr/apps.py diff --git a/src/dashboard/src/fpr/forms.py b/src/dashboard/fpr/forms.py similarity index 100% rename from src/dashboard/src/fpr/forms.py rename to src/dashboard/fpr/forms.py diff --git a/src/dashboard/src/fpr/helpers.py b/src/dashboard/fpr/helpers.py similarity index 100% rename from src/dashboard/src/fpr/helpers.py rename to src/dashboard/fpr/helpers.py diff --git a/src/dashboard/src/fpr/management/__init__.py b/src/dashboard/fpr/management/__init__.py similarity index 100% rename from src/dashboard/src/fpr/management/__init__.py rename to src/dashboard/fpr/management/__init__.py diff --git a/src/dashboard/src/fpr/management/commands/__init__.py b/src/dashboard/fpr/management/commands/__init__.py similarity index 100% rename from src/dashboard/src/fpr/management/commands/__init__.py rename to src/dashboard/fpr/management/commands/__init__.py diff --git a/src/dashboard/src/fpr/management/commands/get_fpr_changes.py b/src/dashboard/fpr/management/commands/get_fpr_changes.py similarity index 100% rename from src/dashboard/src/fpr/management/commands/get_fpr_changes.py rename to src/dashboard/fpr/management/commands/get_fpr_changes.py diff --git a/src/dashboard/src/fpr/management/commands/import_pronom_ids.py b/src/dashboard/fpr/management/commands/import_pronom_ids.py similarity index 100% rename from src/dashboard/src/fpr/management/commands/import_pronom_ids.py rename to src/dashboard/fpr/management/commands/import_pronom_ids.py diff --git a/src/dashboard/src/fpr/migrations-data/mc_validate_cmd.py b/src/dashboard/fpr/migrations-data/mc_validate_cmd.py similarity index 100% rename from src/dashboard/src/fpr/migrations-data/mc_validate_cmd.py rename to src/dashboard/fpr/migrations-data/mc_validate_cmd.py diff --git a/src/dashboard/src/fpr/migrations/0001_initial.py b/src/dashboard/fpr/migrations/0001_initial.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0001_initial.py rename to src/dashboard/fpr/migrations/0001_initial.py diff --git a/src/dashboard/src/fpr/migrations/0002_initial_data.py b/src/dashboard/fpr/migrations/0002_initial_data.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0002_initial_data.py rename to src/dashboard/fpr/migrations/0002_initial_data.py diff --git a/src/dashboard/src/fpr/migrations/0003_pronom_84.py b/src/dashboard/fpr/migrations/0003_pronom_84.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0003_pronom_84.py rename to src/dashboard/fpr/migrations/0003_pronom_84.py diff --git a/src/dashboard/src/fpr/migrations/0004_pronom_88.py b/src/dashboard/fpr/migrations/0004_pronom_88.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0004_pronom_88.py rename to src/dashboard/fpr/migrations/0004_pronom_88.py diff --git a/src/dashboard/src/fpr/migrations/0005_update_tool_versions.py b/src/dashboard/fpr/migrations/0005_update_tool_versions.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0005_update_tool_versions.py rename to src/dashboard/fpr/migrations/0005_update_tool_versions.py diff --git a/src/dashboard/src/fpr/migrations/0006_i18n_models.py b/src/dashboard/fpr/migrations/0006_i18n_models.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0006_i18n_models.py rename to src/dashboard/fpr/migrations/0006_i18n_models.py diff --git a/src/dashboard/src/fpr/migrations/0007_embedded_default_thumbnail.py b/src/dashboard/fpr/migrations/0007_embedded_default_thumbnail.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0007_embedded_default_thumbnail.py rename to src/dashboard/fpr/migrations/0007_embedded_default_thumbnail.py diff --git a/src/dashboard/src/fpr/migrations/0008_update_django_autoslug.py b/src/dashboard/fpr/migrations/0008_update_django_autoslug.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0008_update_django_autoslug.py rename to src/dashboard/fpr/migrations/0008_update_django_autoslug.py diff --git a/src/dashboard/src/fpr/migrations/0009_pronom_90.py b/src/dashboard/fpr/migrations/0009_pronom_90.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0009_pronom_90.py rename to src/dashboard/fpr/migrations/0009_pronom_90.py diff --git a/src/dashboard/src/fpr/migrations/0010_update_fido_136.py b/src/dashboard/fpr/migrations/0010_update_fido_136.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0010_update_fido_136.py rename to src/dashboard/fpr/migrations/0010_update_fido_136.py diff --git a/src/dashboard/src/fpr/migrations/0011_mediaconch_validation.py b/src/dashboard/fpr/migrations/0011_mediaconch_validation.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0011_mediaconch_validation.py rename to src/dashboard/fpr/migrations/0011_mediaconch_validation.py diff --git a/src/dashboard/src/fpr/migrations/0012_mediaconch_policy_checks.py b/src/dashboard/fpr/migrations/0012_mediaconch_policy_checks.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0012_mediaconch_policy_checks.py rename to src/dashboard/fpr/migrations/0012_mediaconch_policy_checks.py diff --git a/src/dashboard/src/fpr/migrations/0013_normalization_rules_mov.py b/src/dashboard/fpr/migrations/0013_normalization_rules_mov.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0013_normalization_rules_mov.py rename to src/dashboard/fpr/migrations/0013_normalization_rules_mov.py diff --git a/src/dashboard/src/fpr/migrations/0014_fix_fits_command.py b/src/dashboard/fpr/migrations/0014_fix_fits_command.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0014_fix_fits_command.py rename to src/dashboard/fpr/migrations/0014_fix_fits_command.py diff --git a/src/dashboard/src/fpr/migrations/0015_pronom_92.py b/src/dashboard/fpr/migrations/0015_pronom_92.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0015_pronom_92.py rename to src/dashboard/fpr/migrations/0015_pronom_92.py diff --git a/src/dashboard/src/fpr/migrations/0016_update_idtools.py b/src/dashboard/fpr/migrations/0016_update_idtools.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0016_update_idtools.py rename to src/dashboard/fpr/migrations/0016_update_idtools.py diff --git a/src/dashboard/src/fpr/migrations/0017_ocr_unique_names.py b/src/dashboard/fpr/migrations/0017_ocr_unique_names.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0017_ocr_unique_names.py rename to src/dashboard/fpr/migrations/0017_ocr_unique_names.py diff --git a/src/dashboard/src/fpr/migrations/0018_slug_unique.py b/src/dashboard/fpr/migrations/0018_slug_unique.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0018_slug_unique.py rename to src/dashboard/fpr/migrations/0018_slug_unique.py diff --git a/src/dashboard/src/fpr/migrations/0019_fix_gs_command.py b/src/dashboard/fpr/migrations/0019_fix_gs_command.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0019_fix_gs_command.py rename to src/dashboard/fpr/migrations/0019_fix_gs_command.py diff --git a/src/dashboard/src/fpr/migrations/0020_pronom_93.py b/src/dashboard/fpr/migrations/0020_pronom_93.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0020_pronom_93.py rename to src/dashboard/fpr/migrations/0020_pronom_93.py diff --git a/src/dashboard/src/fpr/migrations/0021_normalize_jp2_with_ffmpeg_for_preservation.py b/src/dashboard/fpr/migrations/0021_normalize_jp2_with_ffmpeg_for_preservation.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0021_normalize_jp2_with_ffmpeg_for_preservation.py rename to src/dashboard/fpr/migrations/0021_normalize_jp2_with_ffmpeg_for_preservation.py diff --git a/src/dashboard/src/fpr/migrations/0022_pronom_94.py b/src/dashboard/fpr/migrations/0022_pronom_94.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0022_pronom_94.py rename to src/dashboard/fpr/migrations/0022_pronom_94.py diff --git a/src/dashboard/src/fpr/migrations/0023_update_idtools.py b/src/dashboard/fpr/migrations/0023_update_idtools.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0023_update_idtools.py rename to src/dashboard/fpr/migrations/0023_update_idtools.py diff --git a/src/dashboard/src/fpr/migrations/0024_update_fido.py b/src/dashboard/fpr/migrations/0024_update_fido.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0024_update_fido.py rename to src/dashboard/fpr/migrations/0024_update_fido.py diff --git a/src/dashboard/src/fpr/migrations/0025_update_fido_1312.py b/src/dashboard/fpr/migrations/0025_update_fido_1312.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0025_update_fido_1312.py rename to src/dashboard/fpr/migrations/0025_update_fido_1312.py diff --git a/src/dashboard/src/fpr/migrations/0026_fits_nailgun_compat.py b/src/dashboard/fpr/migrations/0026_fits_nailgun_compat.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0026_fits_nailgun_compat.py rename to src/dashboard/fpr/migrations/0026_fits_nailgun_compat.py diff --git a/src/dashboard/src/fpr/migrations/0027_idcommand_tool_disallow_blank.py b/src/dashboard/fpr/migrations/0027_idcommand_tool_disallow_blank.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0027_idcommand_tool_disallow_blank.py rename to src/dashboard/fpr/migrations/0027_idcommand_tool_disallow_blank.py diff --git a/src/dashboard/src/fpr/migrations/0028_idcommand_unique_enabled.py b/src/dashboard/fpr/migrations/0028_idcommand_unique_enabled.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0028_idcommand_unique_enabled.py rename to src/dashboard/fpr/migrations/0028_idcommand_unique_enabled.py diff --git a/src/dashboard/src/fpr/migrations/0029_update_inkscape_svg_command.py b/src/dashboard/fpr/migrations/0029_update_inkscape_svg_command.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0029_update_inkscape_svg_command.py rename to src/dashboard/fpr/migrations/0029_update_inkscape_svg_command.py diff --git a/src/dashboard/src/fpr/migrations/0030_update_jhove_command.py b/src/dashboard/fpr/migrations/0030_update_jhove_command.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0030_update_jhove_command.py rename to src/dashboard/fpr/migrations/0030_update_jhove_command.py diff --git a/src/dashboard/src/fpr/migrations/0031_update_normalization_rules.py b/src/dashboard/fpr/migrations/0031_update_normalization_rules.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0031_update_normalization_rules.py rename to src/dashboard/fpr/migrations/0031_update_normalization_rules.py diff --git a/src/dashboard/src/fpr/migrations/0032_pronom_96.py b/src/dashboard/fpr/migrations/0032_pronom_96.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0032_pronom_96.py rename to src/dashboard/fpr/migrations/0032_pronom_96.py diff --git a/src/dashboard/src/fpr/migrations/0033_update_idtools.py b/src/dashboard/fpr/migrations/0033_update_idtools.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0033_update_idtools.py rename to src/dashboard/fpr/migrations/0033_update_idtools.py diff --git a/src/dashboard/src/fpr/migrations/0034_delete_unused_models.py b/src/dashboard/fpr/migrations/0034_delete_unused_models.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0034_delete_unused_models.py rename to src/dashboard/fpr/migrations/0034_delete_unused_models.py diff --git a/src/dashboard/src/fpr/migrations/0035_python3_compatibility.py b/src/dashboard/fpr/migrations/0035_python3_compatibility.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0035_python3_compatibility.py rename to src/dashboard/fpr/migrations/0035_python3_compatibility.py diff --git a/src/dashboard/src/fpr/migrations/0036_pronom_109.py b/src/dashboard/fpr/migrations/0036_pronom_109.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0036_pronom_109.py rename to src/dashboard/fpr/migrations/0036_pronom_109.py diff --git a/src/dashboard/src/fpr/migrations/0037_update_idtools.py b/src/dashboard/fpr/migrations/0037_update_idtools.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0037_update_idtools.py rename to src/dashboard/fpr/migrations/0037_update_idtools.py diff --git a/src/dashboard/src/fpr/migrations/0038_use_uuidfield.py b/src/dashboard/fpr/migrations/0038_use_uuidfield.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0038_use_uuidfield.py rename to src/dashboard/fpr/migrations/0038_use_uuidfield.py diff --git a/src/dashboard/src/fpr/migrations/0039_django32.py b/src/dashboard/fpr/migrations/0039_django32.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0039_django32.py rename to src/dashboard/fpr/migrations/0039_django32.py diff --git a/src/dashboard/src/fpr/migrations/0040_update_jhove_validation.py b/src/dashboard/fpr/migrations/0040_update_jhove_validation.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0040_update_jhove_validation.py rename to src/dashboard/fpr/migrations/0040_update_jhove_validation.py diff --git a/src/dashboard/src/fpr/migrations/0041_pronom_116.py b/src/dashboard/fpr/migrations/0041_pronom_116.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0041_pronom_116.py rename to src/dashboard/fpr/migrations/0041_pronom_116.py diff --git a/src/dashboard/src/fpr/migrations/0042_update_idtools.py b/src/dashboard/fpr/migrations/0042_update_idtools.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0042_update_idtools.py rename to src/dashboard/fpr/migrations/0042_update_idtools.py diff --git a/src/dashboard/src/fpr/migrations/0043_update_default_thumbnail_command.py b/src/dashboard/fpr/migrations/0043_update_default_thumbnail_command.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0043_update_default_thumbnail_command.py rename to src/dashboard/fpr/migrations/0043_update_default_thumbnail_command.py diff --git a/src/dashboard/src/fpr/migrations/0044_remove_fits.py b/src/dashboard/fpr/migrations/0044_remove_fits.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0044_remove_fits.py rename to src/dashboard/fpr/migrations/0044_remove_fits.py diff --git a/src/dashboard/src/fpr/migrations/0045_update_event_detail_commands.py b/src/dashboard/fpr/migrations/0045_update_event_detail_commands.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0045_update_event_detail_commands.py rename to src/dashboard/fpr/migrations/0045_update_event_detail_commands.py diff --git a/src/dashboard/src/fpr/migrations/0046_update_jhove_module_validation.py b/src/dashboard/fpr/migrations/0046_update_jhove_module_validation.py similarity index 100% rename from src/dashboard/src/fpr/migrations/0046_update_jhove_module_validation.py rename to src/dashboard/fpr/migrations/0046_update_jhove_module_validation.py diff --git a/src/dashboard/src/fpr/migrations/__init__.py b/src/dashboard/fpr/migrations/__init__.py similarity index 100% rename from src/dashboard/src/fpr/migrations/__init__.py rename to src/dashboard/fpr/migrations/__init__.py diff --git a/src/dashboard/src/fpr/migrations/initial_data.json b/src/dashboard/fpr/migrations/initial_data.json similarity index 100% rename from src/dashboard/src/fpr/migrations/initial_data.json rename to src/dashboard/fpr/migrations/initial_data.json diff --git a/src/dashboard/src/fpr/migrations/pronom84_formatgroups_new.json b/src/dashboard/fpr/migrations/pronom84_formatgroups_new.json similarity index 100% rename from src/dashboard/src/fpr/migrations/pronom84_formatgroups_new.json rename to src/dashboard/fpr/migrations/pronom84_formatgroups_new.json diff --git a/src/dashboard/src/fpr/migrations/pronom84_formats_all.json b/src/dashboard/fpr/migrations/pronom84_formats_all.json similarity index 100% rename from src/dashboard/src/fpr/migrations/pronom84_formats_all.json rename to src/dashboard/fpr/migrations/pronom84_formats_all.json diff --git a/src/dashboard/src/fpr/migrations/pronom84_formatversions_all.json b/src/dashboard/fpr/migrations/pronom84_formatversions_all.json similarity index 100% rename from src/dashboard/src/fpr/migrations/pronom84_formatversions_all.json rename to src/dashboard/fpr/migrations/pronom84_formatversions_all.json diff --git a/src/dashboard/src/fpr/migrations/pronom84_fprules_all.json b/src/dashboard/fpr/migrations/pronom84_fprules_all.json similarity index 100% rename from src/dashboard/src/fpr/migrations/pronom84_fprules_all.json rename to src/dashboard/fpr/migrations/pronom84_fprules_all.json diff --git a/src/dashboard/src/fpr/migrations/pronom84_fptools_all.json b/src/dashboard/fpr/migrations/pronom84_fptools_all.json similarity index 100% rename from src/dashboard/src/fpr/migrations/pronom84_fptools_all.json rename to src/dashboard/fpr/migrations/pronom84_fptools_all.json diff --git a/src/dashboard/src/fpr/migrations/pronom84_idcommands_all.json b/src/dashboard/fpr/migrations/pronom84_idcommands_all.json similarity index 100% rename from src/dashboard/src/fpr/migrations/pronom84_idcommands_all.json rename to src/dashboard/fpr/migrations/pronom84_idcommands_all.json diff --git a/src/dashboard/src/fpr/migrations/pronom84_idrules_all.json b/src/dashboard/fpr/migrations/pronom84_idrules_all.json similarity index 100% rename from src/dashboard/src/fpr/migrations/pronom84_idrules_all.json rename to src/dashboard/fpr/migrations/pronom84_idrules_all.json diff --git a/src/dashboard/src/fpr/migrations/pronom84_idtools_all.json b/src/dashboard/fpr/migrations/pronom84_idtools_all.json similarity index 100% rename from src/dashboard/src/fpr/migrations/pronom84_idtools_all.json rename to src/dashboard/fpr/migrations/pronom84_idtools_all.json diff --git a/src/dashboard/src/fpr/migrations/pronom_109.json b/src/dashboard/fpr/migrations/pronom_109.json similarity index 100% rename from src/dashboard/src/fpr/migrations/pronom_109.json rename to src/dashboard/fpr/migrations/pronom_109.json diff --git a/src/dashboard/src/fpr/migrations/pronom_116.json b/src/dashboard/fpr/migrations/pronom_116.json similarity index 100% rename from src/dashboard/src/fpr/migrations/pronom_116.json rename to src/dashboard/fpr/migrations/pronom_116.json diff --git a/src/dashboard/src/fpr/migrations/pronom_88.json b/src/dashboard/fpr/migrations/pronom_88.json similarity index 100% rename from src/dashboard/src/fpr/migrations/pronom_88.json rename to src/dashboard/fpr/migrations/pronom_88.json diff --git a/src/dashboard/src/fpr/migrations/pronom_90.json b/src/dashboard/fpr/migrations/pronom_90.json similarity index 100% rename from src/dashboard/src/fpr/migrations/pronom_90.json rename to src/dashboard/fpr/migrations/pronom_90.json diff --git a/src/dashboard/src/fpr/migrations/pronom_92.json b/src/dashboard/fpr/migrations/pronom_92.json similarity index 100% rename from src/dashboard/src/fpr/migrations/pronom_92.json rename to src/dashboard/fpr/migrations/pronom_92.json diff --git a/src/dashboard/src/fpr/migrations/pronom_93.json b/src/dashboard/fpr/migrations/pronom_93.json similarity index 100% rename from src/dashboard/src/fpr/migrations/pronom_93.json rename to src/dashboard/fpr/migrations/pronom_93.json diff --git a/src/dashboard/src/fpr/migrations/pronom_94.json b/src/dashboard/fpr/migrations/pronom_94.json similarity index 100% rename from src/dashboard/src/fpr/migrations/pronom_94.json rename to src/dashboard/fpr/migrations/pronom_94.json diff --git a/src/dashboard/src/fpr/migrations/pronom_96.json b/src/dashboard/fpr/migrations/pronom_96.json similarity index 100% rename from src/dashboard/src/fpr/migrations/pronom_96.json rename to src/dashboard/fpr/migrations/pronom_96.json diff --git a/src/dashboard/src/fpr/models.py b/src/dashboard/fpr/models.py similarity index 100% rename from src/dashboard/src/fpr/models.py rename to src/dashboard/fpr/models.py diff --git a/src/dashboard/src/fpr/templates/fpr/_sidebar.html b/src/dashboard/fpr/templates/fpr/_sidebar.html similarity index 100% rename from src/dashboard/src/fpr/templates/fpr/_sidebar.html rename to src/dashboard/fpr/templates/fpr/_sidebar.html diff --git a/src/dashboard/src/fpr/templates/fpr/app_layout.html b/src/dashboard/fpr/templates/fpr/app_layout.html similarity index 100% rename from src/dashboard/src/fpr/templates/fpr/app_layout.html rename to src/dashboard/fpr/templates/fpr/app_layout.html diff --git a/src/dashboard/src/fpr/templates/fpr/disable.html b/src/dashboard/fpr/templates/fpr/disable.html similarity index 100% rename from src/dashboard/src/fpr/templates/fpr/disable.html rename to src/dashboard/fpr/templates/fpr/disable.html diff --git a/src/dashboard/src/fpr/templates/fpr/format/detail.html b/src/dashboard/fpr/templates/fpr/format/detail.html similarity index 100% rename from src/dashboard/src/fpr/templates/fpr/format/detail.html rename to src/dashboard/fpr/templates/fpr/format/detail.html diff --git a/src/dashboard/src/fpr/templates/fpr/format/form.html b/src/dashboard/fpr/templates/fpr/format/form.html similarity index 100% rename from src/dashboard/src/fpr/templates/fpr/format/form.html rename to src/dashboard/fpr/templates/fpr/format/form.html diff --git a/src/dashboard/src/fpr/templates/fpr/format/group/delete.html b/src/dashboard/fpr/templates/fpr/format/group/delete.html similarity index 100% rename from src/dashboard/src/fpr/templates/fpr/format/group/delete.html rename to src/dashboard/fpr/templates/fpr/format/group/delete.html diff --git a/src/dashboard/src/fpr/templates/fpr/format/group/form.html b/src/dashboard/fpr/templates/fpr/format/group/form.html similarity index 100% rename from src/dashboard/src/fpr/templates/fpr/format/group/form.html rename to src/dashboard/fpr/templates/fpr/format/group/form.html diff --git a/src/dashboard/src/fpr/templates/fpr/format/group/list.html b/src/dashboard/fpr/templates/fpr/format/group/list.html similarity index 100% rename from src/dashboard/src/fpr/templates/fpr/format/group/list.html rename to src/dashboard/fpr/templates/fpr/format/group/list.html diff --git a/src/dashboard/src/fpr/templates/fpr/format/list.html b/src/dashboard/fpr/templates/fpr/format/list.html similarity index 100% rename from src/dashboard/src/fpr/templates/fpr/format/list.html rename to src/dashboard/fpr/templates/fpr/format/list.html diff --git a/src/dashboard/src/fpr/templates/fpr/format/version/detail.html b/src/dashboard/fpr/templates/fpr/format/version/detail.html similarity index 100% rename from src/dashboard/src/fpr/templates/fpr/format/version/detail.html rename to src/dashboard/fpr/templates/fpr/format/version/detail.html diff --git a/src/dashboard/src/fpr/templates/fpr/format/version/form.html b/src/dashboard/fpr/templates/fpr/format/version/form.html similarity index 100% rename from src/dashboard/src/fpr/templates/fpr/format/version/form.html rename to src/dashboard/fpr/templates/fpr/format/version/form.html diff --git a/src/dashboard/src/fpr/templates/fpr/fpcommand/detail.html b/src/dashboard/fpr/templates/fpr/fpcommand/detail.html similarity index 100% rename from src/dashboard/src/fpr/templates/fpr/fpcommand/detail.html rename to src/dashboard/fpr/templates/fpr/fpcommand/detail.html diff --git a/src/dashboard/src/fpr/templates/fpr/fpcommand/form.html b/src/dashboard/fpr/templates/fpr/fpcommand/form.html similarity index 100% rename from src/dashboard/src/fpr/templates/fpr/fpcommand/form.html rename to src/dashboard/fpr/templates/fpr/fpcommand/form.html diff --git a/src/dashboard/src/fpr/templates/fpr/fpcommand/list.html b/src/dashboard/fpr/templates/fpr/fpcommand/list.html similarity index 100% rename from src/dashboard/src/fpr/templates/fpr/fpcommand/list.html rename to src/dashboard/fpr/templates/fpr/fpcommand/list.html diff --git a/src/dashboard/src/fpr/templates/fpr/fprule/detail.html b/src/dashboard/fpr/templates/fpr/fprule/detail.html similarity index 100% rename from src/dashboard/src/fpr/templates/fpr/fprule/detail.html rename to src/dashboard/fpr/templates/fpr/fprule/detail.html diff --git a/src/dashboard/src/fpr/templates/fpr/fprule/form.html b/src/dashboard/fpr/templates/fpr/fprule/form.html similarity index 100% rename from src/dashboard/src/fpr/templates/fpr/fprule/form.html rename to src/dashboard/fpr/templates/fpr/fprule/form.html diff --git a/src/dashboard/src/fpr/templates/fpr/fprule/list.html b/src/dashboard/fpr/templates/fpr/fprule/list.html similarity index 100% rename from src/dashboard/src/fpr/templates/fpr/fprule/list.html rename to src/dashboard/fpr/templates/fpr/fprule/list.html diff --git a/src/dashboard/src/fpr/templates/fpr/fptool/detail.html b/src/dashboard/fpr/templates/fpr/fptool/detail.html similarity index 100% rename from src/dashboard/src/fpr/templates/fpr/fptool/detail.html rename to src/dashboard/fpr/templates/fpr/fptool/detail.html diff --git a/src/dashboard/src/fpr/templates/fpr/fptool/form.html b/src/dashboard/fpr/templates/fpr/fptool/form.html similarity index 100% rename from src/dashboard/src/fpr/templates/fpr/fptool/form.html rename to src/dashboard/fpr/templates/fpr/fptool/form.html diff --git a/src/dashboard/src/fpr/templates/fpr/fptool/list.html b/src/dashboard/fpr/templates/fpr/fptool/list.html similarity index 100% rename from src/dashboard/src/fpr/templates/fpr/fptool/list.html rename to src/dashboard/fpr/templates/fpr/fptool/list.html diff --git a/src/dashboard/src/fpr/templates/fpr/idcommand/detail.html b/src/dashboard/fpr/templates/fpr/idcommand/detail.html similarity index 100% rename from src/dashboard/src/fpr/templates/fpr/idcommand/detail.html rename to src/dashboard/fpr/templates/fpr/idcommand/detail.html diff --git a/src/dashboard/src/fpr/templates/fpr/idcommand/form.html b/src/dashboard/fpr/templates/fpr/idcommand/form.html similarity index 100% rename from src/dashboard/src/fpr/templates/fpr/idcommand/form.html rename to src/dashboard/fpr/templates/fpr/idcommand/form.html diff --git a/src/dashboard/src/fpr/templates/fpr/idcommand/list.html b/src/dashboard/fpr/templates/fpr/idcommand/list.html similarity index 100% rename from src/dashboard/src/fpr/templates/fpr/idcommand/list.html rename to src/dashboard/fpr/templates/fpr/idcommand/list.html diff --git a/src/dashboard/src/fpr/templates/fpr/idrule/detail.html b/src/dashboard/fpr/templates/fpr/idrule/detail.html similarity index 100% rename from src/dashboard/src/fpr/templates/fpr/idrule/detail.html rename to src/dashboard/fpr/templates/fpr/idrule/detail.html diff --git a/src/dashboard/src/fpr/templates/fpr/idrule/form.html b/src/dashboard/fpr/templates/fpr/idrule/form.html similarity index 100% rename from src/dashboard/src/fpr/templates/fpr/idrule/form.html rename to src/dashboard/fpr/templates/fpr/idrule/form.html diff --git a/src/dashboard/src/fpr/templates/fpr/idrule/list.html b/src/dashboard/fpr/templates/fpr/idrule/list.html similarity index 100% rename from src/dashboard/src/fpr/templates/fpr/idrule/list.html rename to src/dashboard/fpr/templates/fpr/idrule/list.html diff --git a/src/dashboard/src/fpr/templates/fpr/idtool/detail.html b/src/dashboard/fpr/templates/fpr/idtool/detail.html similarity index 100% rename from src/dashboard/src/fpr/templates/fpr/idtool/detail.html rename to src/dashboard/fpr/templates/fpr/idtool/detail.html diff --git a/src/dashboard/src/fpr/templates/fpr/idtool/form.html b/src/dashboard/fpr/templates/fpr/idtool/form.html similarity index 100% rename from src/dashboard/src/fpr/templates/fpr/idtool/form.html rename to src/dashboard/fpr/templates/fpr/idtool/form.html diff --git a/src/dashboard/src/fpr/templates/fpr/idtool/list.html b/src/dashboard/fpr/templates/fpr/idtool/list.html similarity index 100% rename from src/dashboard/src/fpr/templates/fpr/idtool/list.html rename to src/dashboard/fpr/templates/fpr/idtool/list.html diff --git a/src/dashboard/src/fpr/templates/fpr/revisions/list.html b/src/dashboard/fpr/templates/fpr/revisions/list.html similarity index 100% rename from src/dashboard/src/fpr/templates/fpr/revisions/list.html rename to src/dashboard/fpr/templates/fpr/revisions/list.html diff --git a/src/dashboard/src/fpr/templatetags/__init__.py b/src/dashboard/fpr/templatetags/__init__.py similarity index 100% rename from src/dashboard/src/fpr/templatetags/__init__.py rename to src/dashboard/fpr/templatetags/__init__.py diff --git a/src/dashboard/src/fpr/templatetags/revisions_link.py b/src/dashboard/fpr/templatetags/revisions_link.py similarity index 100% rename from src/dashboard/src/fpr/templatetags/revisions_link.py rename to src/dashboard/fpr/templatetags/revisions_link.py diff --git a/src/dashboard/src/fpr/urls.py b/src/dashboard/fpr/urls.py similarity index 100% rename from src/dashboard/src/fpr/urls.py rename to src/dashboard/fpr/urls.py diff --git a/src/dashboard/src/fpr/utils.py b/src/dashboard/fpr/utils.py similarity index 100% rename from src/dashboard/src/fpr/utils.py rename to src/dashboard/fpr/utils.py diff --git a/src/dashboard/src/fpr/views.py b/src/dashboard/fpr/views.py similarity index 100% rename from src/dashboard/src/fpr/views.py rename to src/dashboard/fpr/views.py diff --git a/src/dashboard/frontend/webpack.config.js b/src/dashboard/frontend/webpack.config.js index 9dfb7a177f..13c4e12f3d 100644 --- a/src/dashboard/frontend/webpack.config.js +++ b/src/dashboard/frontend/webpack.config.js @@ -4,7 +4,7 @@ module.exports = { mode: 'development', context: __dirname + '/app', output: { - path: __dirname + '/../src/media/js/build', + path: __dirname + '/../media/js/build', filename: 'dashboard.js', }, module: { diff --git a/src/dashboard/src/installer/__init__.py b/src/dashboard/installer/__init__.py similarity index 100% rename from src/dashboard/src/installer/__init__.py rename to src/dashboard/installer/__init__.py diff --git a/src/dashboard/src/installer/forms.py b/src/dashboard/installer/forms.py similarity index 100% rename from src/dashboard/src/installer/forms.py rename to src/dashboard/installer/forms.py diff --git a/src/dashboard/src/installer/management/__init__.py b/src/dashboard/installer/management/__init__.py similarity index 100% rename from src/dashboard/src/installer/management/__init__.py rename to src/dashboard/installer/management/__init__.py diff --git a/src/dashboard/src/installer/management/commands/__init__.py b/src/dashboard/installer/management/commands/__init__.py similarity index 100% rename from src/dashboard/src/installer/management/commands/__init__.py rename to src/dashboard/installer/management/commands/__init__.py diff --git a/src/dashboard/src/installer/management/commands/install.py b/src/dashboard/installer/management/commands/install.py similarity index 100% rename from src/dashboard/src/installer/management/commands/install.py rename to src/dashboard/installer/management/commands/install.py diff --git a/src/dashboard/src/installer/middleware.py b/src/dashboard/installer/middleware.py similarity index 100% rename from src/dashboard/src/installer/middleware.py rename to src/dashboard/installer/middleware.py diff --git a/src/dashboard/src/installer/steps.py b/src/dashboard/installer/steps.py similarity index 100% rename from src/dashboard/src/installer/steps.py rename to src/dashboard/installer/steps.py diff --git a/src/dashboard/src/installer/urls.py b/src/dashboard/installer/urls.py similarity index 100% rename from src/dashboard/src/installer/urls.py rename to src/dashboard/installer/urls.py diff --git a/src/dashboard/src/installer/views.py b/src/dashboard/installer/views.py similarity index 100% rename from src/dashboard/src/installer/views.py rename to src/dashboard/installer/views.py diff --git a/src/dashboard/src/locale/en/LC_MESSAGES/django.po b/src/dashboard/locale/en/LC_MESSAGES/django.po similarity index 100% rename from src/dashboard/src/locale/en/LC_MESSAGES/django.po rename to src/dashboard/locale/en/LC_MESSAGES/django.po diff --git a/src/dashboard/src/locale/en/LC_MESSAGES/djangojs.po b/src/dashboard/locale/en/LC_MESSAGES/djangojs.po similarity index 100% rename from src/dashboard/src/locale/en/LC_MESSAGES/djangojs.po rename to src/dashboard/locale/en/LC_MESSAGES/djangojs.po diff --git a/src/dashboard/src/locale/es/LC_MESSAGES/django.po b/src/dashboard/locale/es/LC_MESSAGES/django.po similarity index 100% rename from src/dashboard/src/locale/es/LC_MESSAGES/django.po rename to src/dashboard/locale/es/LC_MESSAGES/django.po diff --git a/src/dashboard/src/locale/es/LC_MESSAGES/djangojs.po b/src/dashboard/locale/es/LC_MESSAGES/djangojs.po similarity index 100% rename from src/dashboard/src/locale/es/LC_MESSAGES/djangojs.po rename to src/dashboard/locale/es/LC_MESSAGES/djangojs.po diff --git a/src/dashboard/src/locale/fr/LC_MESSAGES/django.po b/src/dashboard/locale/fr/LC_MESSAGES/django.po similarity index 100% rename from src/dashboard/src/locale/fr/LC_MESSAGES/django.po rename to src/dashboard/locale/fr/LC_MESSAGES/django.po diff --git a/src/dashboard/src/locale/fr/LC_MESSAGES/djangojs.po b/src/dashboard/locale/fr/LC_MESSAGES/djangojs.po similarity index 100% rename from src/dashboard/src/locale/fr/LC_MESSAGES/djangojs.po rename to src/dashboard/locale/fr/LC_MESSAGES/djangojs.po diff --git a/src/dashboard/src/locale/ja/LC_MESSAGES/django.po b/src/dashboard/locale/ja/LC_MESSAGES/django.po similarity index 100% rename from src/dashboard/src/locale/ja/LC_MESSAGES/django.po rename to src/dashboard/locale/ja/LC_MESSAGES/django.po diff --git a/src/dashboard/src/locale/ja/LC_MESSAGES/djangojs.po b/src/dashboard/locale/ja/LC_MESSAGES/djangojs.po similarity index 100% rename from src/dashboard/src/locale/ja/LC_MESSAGES/djangojs.po rename to src/dashboard/locale/ja/LC_MESSAGES/djangojs.po diff --git a/src/dashboard/src/locale/no/LC_MESSAGES/django.po b/src/dashboard/locale/no/LC_MESSAGES/django.po similarity index 100% rename from src/dashboard/src/locale/no/LC_MESSAGES/django.po rename to src/dashboard/locale/no/LC_MESSAGES/django.po diff --git a/src/dashboard/src/locale/no/LC_MESSAGES/djangojs.po b/src/dashboard/locale/no/LC_MESSAGES/djangojs.po similarity index 100% rename from src/dashboard/src/locale/no/LC_MESSAGES/djangojs.po rename to src/dashboard/locale/no/LC_MESSAGES/djangojs.po diff --git a/src/dashboard/src/locale/pt/LC_MESSAGES/django.po b/src/dashboard/locale/pt/LC_MESSAGES/django.po similarity index 100% rename from src/dashboard/src/locale/pt/LC_MESSAGES/django.po rename to src/dashboard/locale/pt/LC_MESSAGES/django.po diff --git a/src/dashboard/src/locale/pt/LC_MESSAGES/djangojs.po b/src/dashboard/locale/pt/LC_MESSAGES/djangojs.po similarity index 100% rename from src/dashboard/src/locale/pt/LC_MESSAGES/djangojs.po rename to src/dashboard/locale/pt/LC_MESSAGES/djangojs.po diff --git a/src/dashboard/src/locale/pt_BR/LC_MESSAGES/django.po b/src/dashboard/locale/pt_BR/LC_MESSAGES/django.po similarity index 100% rename from src/dashboard/src/locale/pt_BR/LC_MESSAGES/django.po rename to src/dashboard/locale/pt_BR/LC_MESSAGES/django.po diff --git a/src/dashboard/src/locale/pt_BR/LC_MESSAGES/djangojs.po b/src/dashboard/locale/pt_BR/LC_MESSAGES/djangojs.po similarity index 100% rename from src/dashboard/src/locale/pt_BR/LC_MESSAGES/djangojs.po rename to src/dashboard/locale/pt_BR/LC_MESSAGES/djangojs.po diff --git a/src/dashboard/src/locale/sv/LC_MESSAGES/django.po b/src/dashboard/locale/sv/LC_MESSAGES/django.po similarity index 100% rename from src/dashboard/src/locale/sv/LC_MESSAGES/django.po rename to src/dashboard/locale/sv/LC_MESSAGES/django.po diff --git a/src/dashboard/src/locale/sv/LC_MESSAGES/djangojs.po b/src/dashboard/locale/sv/LC_MESSAGES/djangojs.po similarity index 100% rename from src/dashboard/src/locale/sv/LC_MESSAGES/djangojs.po rename to src/dashboard/locale/sv/LC_MESSAGES/djangojs.po diff --git a/src/dashboard/src/main/__init__.py b/src/dashboard/main/__init__.py similarity index 100% rename from src/dashboard/src/main/__init__.py rename to src/dashboard/main/__init__.py diff --git a/src/dashboard/src/main/apps.py b/src/dashboard/main/apps.py similarity index 100% rename from src/dashboard/src/main/apps.py rename to src/dashboard/main/apps.py diff --git a/src/dashboard/src/main/context_processors.py b/src/dashboard/main/context_processors.py similarity index 100% rename from src/dashboard/src/main/context_processors.py rename to src/dashboard/main/context_processors.py diff --git a/src/dashboard/src/main/forms.py b/src/dashboard/main/forms.py similarity index 100% rename from src/dashboard/src/main/forms.py rename to src/dashboard/main/forms.py diff --git a/src/dashboard/src/main/management/__init__.py b/src/dashboard/main/management/__init__.py similarity index 100% rename from src/dashboard/src/main/management/__init__.py rename to src/dashboard/main/management/__init__.py diff --git a/src/dashboard/src/main/management/commands/__init__.py b/src/dashboard/main/management/commands/__init__.py similarity index 100% rename from src/dashboard/src/main/management/commands/__init__.py rename to src/dashboard/main/management/commands/__init__.py diff --git a/src/dashboard/src/main/management/commands/purge_transient_processing_data.py b/src/dashboard/main/management/commands/purge_transient_processing_data.py similarity index 100% rename from src/dashboard/src/main/management/commands/purge_transient_processing_data.py rename to src/dashboard/main/management/commands/purge_transient_processing_data.py diff --git a/src/dashboard/src/main/management/commands/rebuild_aip_index_from_storage_service.py b/src/dashboard/main/management/commands/rebuild_aip_index_from_storage_service.py similarity index 100% rename from src/dashboard/src/main/management/commands/rebuild_aip_index_from_storage_service.py rename to src/dashboard/main/management/commands/rebuild_aip_index_from_storage_service.py diff --git a/src/dashboard/src/main/management/commands/rebuild_elasticsearch_aip_index_from_files.py b/src/dashboard/main/management/commands/rebuild_elasticsearch_aip_index_from_files.py similarity index 100% rename from src/dashboard/src/main/management/commands/rebuild_elasticsearch_aip_index_from_files.py rename to src/dashboard/main/management/commands/rebuild_elasticsearch_aip_index_from_files.py diff --git a/src/dashboard/src/main/management/commands/rebuild_transfer_backlog.py b/src/dashboard/main/management/commands/rebuild_transfer_backlog.py similarity index 100% rename from src/dashboard/src/main/management/commands/rebuild_transfer_backlog.py rename to src/dashboard/main/management/commands/rebuild_transfer_backlog.py diff --git a/src/dashboard/src/main/management/commands/reindex_from_remote_cluster.py b/src/dashboard/main/management/commands/reindex_from_remote_cluster.py similarity index 100% rename from src/dashboard/src/main/management/commands/reindex_from_remote_cluster.py rename to src/dashboard/main/management/commands/reindex_from_remote_cluster.py diff --git a/src/dashboard/src/main/management/commands/resolve_pending_jobs.py b/src/dashboard/main/management/commands/resolve_pending_jobs.py similarity index 100% rename from src/dashboard/src/main/management/commands/resolve_pending_jobs.py rename to src/dashboard/main/management/commands/resolve_pending_jobs.py diff --git a/src/dashboard/src/main/management/commands/update_elasticsearch_mappings.py b/src/dashboard/main/management/commands/update_elasticsearch_mappings.py similarity index 100% rename from src/dashboard/src/main/management/commands/update_elasticsearch_mappings.py rename to src/dashboard/main/management/commands/update_elasticsearch_mappings.py diff --git a/src/dashboard/src/main/migrations/0001_initial.py b/src/dashboard/main/migrations/0001_initial.py similarity index 100% rename from src/dashboard/src/main/migrations/0001_initial.py rename to src/dashboard/main/migrations/0001_initial.py diff --git a/src/dashboard/src/main/migrations/0002_initial_data.py b/src/dashboard/main/migrations/0002_initial_data.py similarity index 100% rename from src/dashboard/src/main/migrations/0002_initial_data.py rename to src/dashboard/main/migrations/0002_initial_data.py diff --git a/src/dashboard/src/main/migrations/0003_archivesspacedipobjectresourcepairing.py b/src/dashboard/main/migrations/0003_archivesspacedipobjectresourcepairing.py similarity index 100% rename from src/dashboard/src/main/migrations/0003_archivesspacedipobjectresourcepairing.py rename to src/dashboard/main/migrations/0003_archivesspacedipobjectresourcepairing.py diff --git a/src/dashboard/src/main/migrations/0003_archivesspacedipobjectresourcepairing_data.py b/src/dashboard/main/migrations/0003_archivesspacedipobjectresourcepairing_data.py similarity index 100% rename from src/dashboard/src/main/migrations/0003_archivesspacedipobjectresourcepairing_data.py rename to src/dashboard/main/migrations/0003_archivesspacedipobjectresourcepairing_data.py diff --git a/src/dashboard/src/main/migrations/0004_rights.py b/src/dashboard/main/migrations/0004_rights.py similarity index 100% rename from src/dashboard/src/main/migrations/0004_rights.py rename to src/dashboard/main/migrations/0004_rights.py diff --git a/src/dashboard/src/main/migrations/0005_reingest.py b/src/dashboard/main/migrations/0005_reingest.py similarity index 100% rename from src/dashboard/src/main/migrations/0005_reingest.py rename to src/dashboard/main/migrations/0005_reingest.py diff --git a/src/dashboard/src/main/migrations/0005_reingest_data.py b/src/dashboard/main/migrations/0005_reingest_data.py similarity index 100% rename from src/dashboard/src/main/migrations/0005_reingest_data.py rename to src/dashboard/main/migrations/0005_reingest_data.py diff --git a/src/dashboard/src/main/migrations/0006_levelofdescription.py b/src/dashboard/main/migrations/0006_levelofdescription.py similarity index 100% rename from src/dashboard/src/main/migrations/0006_levelofdescription.py rename to src/dashboard/main/migrations/0006_levelofdescription.py diff --git a/src/dashboard/src/main/migrations/0007_django_upgrade_tweaks.py b/src/dashboard/main/migrations/0007_django_upgrade_tweaks.py similarity index 100% rename from src/dashboard/src/main/migrations/0007_django_upgrade_tweaks.py rename to src/dashboard/main/migrations/0007_django_upgrade_tweaks.py diff --git a/src/dashboard/src/main/migrations/0008_fpcommandoutput.py b/src/dashboard/main/migrations/0008_fpcommandoutput.py similarity index 100% rename from src/dashboard/src/main/migrations/0008_fpcommandoutput.py rename to src/dashboard/main/migrations/0008_fpcommandoutput.py diff --git a/src/dashboard/src/main/migrations/0009_matching_gui.py b/src/dashboard/main/migrations/0009_matching_gui.py similarity index 100% rename from src/dashboard/src/main/migrations/0009_matching_gui.py rename to src/dashboard/main/migrations/0009_matching_gui.py diff --git a/src/dashboard/src/main/migrations/0010_dip_upload_store.py b/src/dashboard/main/migrations/0010_dip_upload_store.py similarity index 100% rename from src/dashboard/src/main/migrations/0010_dip_upload_store.py rename to src/dashboard/main/migrations/0010_dip_upload_store.py diff --git a/src/dashboard/src/main/migrations/0011_version_number.py b/src/dashboard/main/migrations/0011_version_number.py similarity index 100% rename from src/dashboard/src/main/migrations/0011_version_number.py rename to src/dashboard/main/migrations/0011_version_number.py diff --git a/src/dashboard/src/main/migrations/0012_file_id_text.py b/src/dashboard/main/migrations/0012_file_id_text.py similarity index 100% rename from src/dashboard/src/main/migrations/0012_file_id_text.py rename to src/dashboard/main/migrations/0012_file_id_text.py diff --git a/src/dashboard/src/main/migrations/0013_upload_archivesspace_inherit_notes.py b/src/dashboard/main/migrations/0013_upload_archivesspace_inherit_notes.py similarity index 100% rename from src/dashboard/src/main/migrations/0013_upload_archivesspace_inherit_notes.py rename to src/dashboard/main/migrations/0013_upload_archivesspace_inherit_notes.py diff --git a/src/dashboard/src/main/migrations/0014_aic_fixes.py b/src/dashboard/main/migrations/0014_aic_fixes.py similarity index 100% rename from src/dashboard/src/main/migrations/0014_aic_fixes.py rename to src/dashboard/main/migrations/0014_aic_fixes.py diff --git a/src/dashboard/src/main/migrations/0015_no_normalize_thumbnails.py b/src/dashboard/main/migrations/0015_no_normalize_thumbnails.py similarity index 100% rename from src/dashboard/src/main/migrations/0015_no_normalize_thumbnails.py rename to src/dashboard/main/migrations/0015_no_normalize_thumbnails.py diff --git a/src/dashboard/src/main/migrations/0016_file_currentlocation_nullable.py b/src/dashboard/main/migrations/0016_file_currentlocation_nullable.py similarity index 100% rename from src/dashboard/src/main/migrations/0016_file_currentlocation_nullable.py rename to src/dashboard/main/migrations/0016_file_currentlocation_nullable.py diff --git a/src/dashboard/src/main/migrations/0017_update_seigfried.py b/src/dashboard/main/migrations/0017_update_seigfried.py similarity index 100% rename from src/dashboard/src/main/migrations/0017_update_seigfried.py rename to src/dashboard/main/migrations/0017_update_seigfried.py diff --git a/src/dashboard/src/main/migrations/0018_archivesspace_sip_arrange.py b/src/dashboard/main/migrations/0018_archivesspace_sip_arrange.py similarity index 100% rename from src/dashboard/src/main/migrations/0018_archivesspace_sip_arrange.py rename to src/dashboard/main/migrations/0018_archivesspace_sip_arrange.py diff --git a/src/dashboard/src/main/migrations/0019_normalization_report.py b/src/dashboard/main/migrations/0019_normalization_report.py similarity index 100% rename from src/dashboard/src/main/migrations/0019_normalization_report.py rename to src/dashboard/main/migrations/0019_normalization_report.py diff --git a/src/dashboard/src/main/migrations/0020_index_after_processing_decision.py b/src/dashboard/main/migrations/0020_index_after_processing_decision.py similarity index 100% rename from src/dashboard/src/main/migrations/0020_index_after_processing_decision.py rename to src/dashboard/main/migrations/0020_index_after_processing_decision.py diff --git a/src/dashboard/src/main/migrations/0021_checksum_algorithms.py b/src/dashboard/main/migrations/0021_checksum_algorithms.py similarity index 100% rename from src/dashboard/src/main/migrations/0021_checksum_algorithms.py rename to src/dashboard/main/migrations/0021_checksum_algorithms.py diff --git a/src/dashboard/src/main/migrations/0022_email_report_args.py b/src/dashboard/main/migrations/0022_email_report_args.py similarity index 100% rename from src/dashboard/src/main/migrations/0022_email_report_args.py rename to src/dashboard/main/migrations/0022_email_report_args.py diff --git a/src/dashboard/src/main/migrations/0023_blob_fields.py b/src/dashboard/main/migrations/0023_blob_fields.py similarity index 100% rename from src/dashboard/src/main/migrations/0023_blob_fields.py rename to src/dashboard/main/migrations/0023_blob_fields.py diff --git a/src/dashboard/src/main/migrations/0024_agenttype.py b/src/dashboard/main/migrations/0024_agenttype.py similarity index 100% rename from src/dashboard/src/main/migrations/0024_agenttype.py rename to src/dashboard/main/migrations/0024_agenttype.py diff --git a/src/dashboard/src/main/migrations/0025_copyrightstatus_controlled_vocab.py b/src/dashboard/main/migrations/0025_copyrightstatus_controlled_vocab.py similarity index 100% rename from src/dashboard/src/main/migrations/0025_copyrightstatus_controlled_vocab.py rename to src/dashboard/main/migrations/0025_copyrightstatus_controlled_vocab.py diff --git a/src/dashboard/src/main/migrations/0026_agent_m2m_event.py b/src/dashboard/main/migrations/0026_agent_m2m_event.py similarity index 100% rename from src/dashboard/src/main/migrations/0026_agent_m2m_event.py rename to src/dashboard/main/migrations/0026_agent_m2m_event.py diff --git a/src/dashboard/src/main/migrations/0027_full_reingest.py b/src/dashboard/main/migrations/0027_full_reingest.py similarity index 100% rename from src/dashboard/src/main/migrations/0027_full_reingest.py rename to src/dashboard/main/migrations/0027_full_reingest.py diff --git a/src/dashboard/src/main/migrations/0028_version_number.py b/src/dashboard/main/migrations/0028_version_number.py similarity index 100% rename from src/dashboard/src/main/migrations/0028_version_number.py rename to src/dashboard/main/migrations/0028_version_number.py diff --git a/src/dashboard/src/main/migrations/0029_backlog_removal_event.py b/src/dashboard/main/migrations/0029_backlog_removal_event.py similarity index 100% rename from src/dashboard/src/main/migrations/0029_backlog_removal_event.py rename to src/dashboard/main/migrations/0029_backlog_removal_event.py diff --git a/src/dashboard/src/main/migrations/0030_rights_import.py b/src/dashboard/main/migrations/0030_rights_import.py similarity index 100% rename from src/dashboard/src/main/migrations/0030_rights_import.py rename to src/dashboard/main/migrations/0030_rights_import.py diff --git a/src/dashboard/src/main/migrations/0031_job_currentstep_choices.py b/src/dashboard/main/migrations/0031_job_currentstep_choices.py similarity index 100% rename from src/dashboard/src/main/migrations/0031_job_currentstep_choices.py rename to src/dashboard/main/migrations/0031_job_currentstep_choices.py diff --git a/src/dashboard/src/main/migrations/0032_dashboardsetting_scope.py b/src/dashboard/main/migrations/0032_dashboardsetting_scope.py similarity index 100% rename from src/dashboard/src/main/migrations/0032_dashboardsetting_scope.py rename to src/dashboard/main/migrations/0032_dashboardsetting_scope.py diff --git a/src/dashboard/src/main/migrations/0033_store_transfer_file_modification_dates.py b/src/dashboard/main/migrations/0033_store_transfer_file_modification_dates.py similarity index 100% rename from src/dashboard/src/main/migrations/0033_store_transfer_file_modification_dates.py rename to src/dashboard/main/migrations/0033_store_transfer_file_modification_dates.py diff --git a/src/dashboard/src/main/migrations/0034_add_readme_to_aips.py b/src/dashboard/main/migrations/0034_add_readme_to_aips.py similarity index 100% rename from src/dashboard/src/main/migrations/0034_add_readme_to_aips.py rename to src/dashboard/main/migrations/0034_add_readme_to_aips.py diff --git a/src/dashboard/src/main/migrations/0035_fix_workflow_dip_generation.py b/src/dashboard/main/migrations/0035_fix_workflow_dip_generation.py similarity index 100% rename from src/dashboard/src/main/migrations/0035_fix_workflow_dip_generation.py rename to src/dashboard/main/migrations/0035_fix_workflow_dip_generation.py diff --git a/src/dashboard/src/main/migrations/0036_mediaconch_validation.py b/src/dashboard/main/migrations/0036_mediaconch_validation.py similarity index 100% rename from src/dashboard/src/main/migrations/0036_mediaconch_validation.py rename to src/dashboard/main/migrations/0036_mediaconch_validation.py diff --git a/src/dashboard/src/main/migrations/0037_mediaconch_policy_checks.py b/src/dashboard/main/migrations/0037_mediaconch_policy_checks.py similarity index 100% rename from src/dashboard/src/main/migrations/0037_mediaconch_policy_checks.py rename to src/dashboard/main/migrations/0037_mediaconch_policy_checks.py diff --git a/src/dashboard/src/main/migrations/0038_fix_workflow_store_dip.py b/src/dashboard/main/migrations/0038_fix_workflow_store_dip.py similarity index 100% rename from src/dashboard/src/main/migrations/0038_fix_workflow_store_dip.py rename to src/dashboard/main/migrations/0038_fix_workflow_store_dip.py diff --git a/src/dashboard/src/main/migrations/0039_delete_sudo_clientscript.py b/src/dashboard/main/migrations/0039_delete_sudo_clientscript.py similarity index 100% rename from src/dashboard/src/main/migrations/0039_delete_sudo_clientscript.py rename to src/dashboard/main/migrations/0039_delete_sudo_clientscript.py diff --git a/src/dashboard/src/main/migrations/0040_directory_model.py b/src/dashboard/main/migrations/0040_directory_model.py similarity index 100% rename from src/dashboard/src/main/migrations/0040_directory_model.py rename to src/dashboard/main/migrations/0040_directory_model.py diff --git a/src/dashboard/src/main/migrations/0041_bind_pids.py b/src/dashboard/main/migrations/0041_bind_pids.py similarity index 99% rename from src/dashboard/src/main/migrations/0041_bind_pids.py rename to src/dashboard/main/migrations/0041_bind_pids.py index fa5ffddc4f..9e5eda2069 100644 --- a/src/dashboard/src/main/migrations/0041_bind_pids.py +++ b/src/dashboard/main/migrations/0041_bind_pids.py @@ -23,7 +23,7 @@ def data_migration(apps, schema_editor): PID---generally the UUID of the entity---is passed during handle creation.) That the PURL (i.e., PID's URL) may be configured to resolve to different external (resolve) URLs depending on the qualifier (GET query - parameter) that is appended to it. See archivematicaCommon/lib/bindpid.py + parameter) that is appended to it. See archivematicaCommon/bindpid.py for more details. """ diff --git a/src/dashboard/src/main/migrations/0042_directory_uuids_all_transfer_types.py b/src/dashboard/main/migrations/0042_directory_uuids_all_transfer_types.py similarity index 100% rename from src/dashboard/src/main/migrations/0042_directory_uuids_all_transfer_types.py rename to src/dashboard/main/migrations/0042_directory_uuids_all_transfer_types.py diff --git a/src/dashboard/src/main/migrations/0043_remove_create_pointer_file_ms.py b/src/dashboard/main/migrations/0043_remove_create_pointer_file_ms.py similarity index 100% rename from src/dashboard/src/main/migrations/0043_remove_create_pointer_file_ms.py rename to src/dashboard/main/migrations/0043_remove_create_pointer_file_ms.py diff --git a/src/dashboard/src/main/migrations/0044_update_idtools.py b/src/dashboard/main/migrations/0044_update_idtools.py similarity index 100% rename from src/dashboard/src/main/migrations/0044_update_idtools.py rename to src/dashboard/main/migrations/0044_update_idtools.py diff --git a/src/dashboard/src/main/migrations/0045_archivesspace_config_dict.py b/src/dashboard/main/migrations/0045_archivesspace_config_dict.py similarity index 100% rename from src/dashboard/src/main/migrations/0045_archivesspace_config_dict.py rename to src/dashboard/main/migrations/0045_archivesspace_config_dict.py diff --git a/src/dashboard/src/main/migrations/0046_optional_normative_structmap.py b/src/dashboard/main/migrations/0046_optional_normative_structmap.py similarity index 100% rename from src/dashboard/src/main/migrations/0046_optional_normative_structmap.py rename to src/dashboard/main/migrations/0046_optional_normative_structmap.py diff --git a/src/dashboard/src/main/migrations/0047_version_number.py b/src/dashboard/main/migrations/0047_version_number.py similarity index 100% rename from src/dashboard/src/main/migrations/0047_version_number.py rename to src/dashboard/main/migrations/0047_version_number.py diff --git a/src/dashboard/src/main/migrations/0048_fix_upload_qubit_setting.py b/src/dashboard/main/migrations/0048_fix_upload_qubit_setting.py similarity index 100% rename from src/dashboard/src/main/migrations/0048_fix_upload_qubit_setting.py rename to src/dashboard/main/migrations/0048_fix_upload_qubit_setting.py diff --git a/src/dashboard/src/main/migrations/0049_change_pointer_file_filegrpuse.py b/src/dashboard/main/migrations/0049_change_pointer_file_filegrpuse.py similarity index 100% rename from src/dashboard/src/main/migrations/0049_change_pointer_file_filegrpuse.py rename to src/dashboard/main/migrations/0049_change_pointer_file_filegrpuse.py diff --git a/src/dashboard/src/main/migrations/0050_remove_magic_links.py b/src/dashboard/main/migrations/0050_remove_magic_links.py similarity index 100% rename from src/dashboard/src/main/migrations/0050_remove_magic_links.py rename to src/dashboard/main/migrations/0050_remove_magic_links.py diff --git a/src/dashboard/src/main/migrations/0051_remove_verify_premis_checksums.py b/src/dashboard/main/migrations/0051_remove_verify_premis_checksums.py similarity index 100% rename from src/dashboard/src/main/migrations/0051_remove_verify_premis_checksums.py rename to src/dashboard/main/migrations/0051_remove_verify_premis_checksums.py diff --git a/src/dashboard/src/main/migrations/0052_correct_extract_packages_fallback_link.py b/src/dashboard/main/migrations/0052_correct_extract_packages_fallback_link.py similarity index 100% rename from src/dashboard/src/main/migrations/0052_correct_extract_packages_fallback_link.py rename to src/dashboard/main/migrations/0052_correct_extract_packages_fallback_link.py diff --git a/src/dashboard/src/main/migrations/0053_remove_mcp_unused_field.py b/src/dashboard/main/migrations/0053_remove_mcp_unused_field.py similarity index 100% rename from src/dashboard/src/main/migrations/0053_remove_mcp_unused_field.py rename to src/dashboard/main/migrations/0053_remove_mcp_unused_field.py diff --git a/src/dashboard/src/main/migrations/0054_index_aip_silent_error_branch.py b/src/dashboard/main/migrations/0054_index_aip_silent_error_branch.py similarity index 100% rename from src/dashboard/src/main/migrations/0054_index_aip_silent_error_branch.py rename to src/dashboard/main/migrations/0054_index_aip_silent_error_branch.py diff --git a/src/dashboard/src/main/migrations/0055_normalize_thumbnail_mode_selection.py b/src/dashboard/main/migrations/0055_normalize_thumbnail_mode_selection.py similarity index 100% rename from src/dashboard/src/main/migrations/0055_normalize_thumbnail_mode_selection.py rename to src/dashboard/main/migrations/0055_normalize_thumbnail_mode_selection.py diff --git a/src/dashboard/src/main/migrations/0056_transfer_access_system_id.py b/src/dashboard/main/migrations/0056_transfer_access_system_id.py similarity index 100% rename from src/dashboard/src/main/migrations/0056_transfer_access_system_id.py rename to src/dashboard/main/migrations/0056_transfer_access_system_id.py diff --git a/src/dashboard/src/main/migrations/0057_7zip_no_compression.py b/src/dashboard/main/migrations/0057_7zip_no_compression.py similarity index 100% rename from src/dashboard/src/main/migrations/0057_7zip_no_compression.py rename to src/dashboard/main/migrations/0057_7zip_no_compression.py diff --git a/src/dashboard/src/main/migrations/0058_fix_unit_variable_pull_link.py b/src/dashboard/main/migrations/0058_fix_unit_variable_pull_link.py similarity index 100% rename from src/dashboard/src/main/migrations/0058_fix_unit_variable_pull_link.py rename to src/dashboard/main/migrations/0058_fix_unit_variable_pull_link.py diff --git a/src/dashboard/src/main/migrations/0059_siparrange_longblob.py b/src/dashboard/main/migrations/0059_siparrange_longblob.py similarity index 100% rename from src/dashboard/src/main/migrations/0059_siparrange_longblob.py rename to src/dashboard/main/migrations/0059_siparrange_longblob.py diff --git a/src/dashboard/src/main/migrations/0060_delete_orphan_mscl.py b/src/dashboard/main/migrations/0060_delete_orphan_mscl.py similarity index 100% rename from src/dashboard/src/main/migrations/0060_delete_orphan_mscl.py rename to src/dashboard/main/migrations/0060_delete_orphan_mscl.py diff --git a/src/dashboard/src/main/migrations/0061_create_dataverse_transfer_type.py b/src/dashboard/main/migrations/0061_create_dataverse_transfer_type.py similarity index 100% rename from src/dashboard/src/main/migrations/0061_create_dataverse_transfer_type.py rename to src/dashboard/main/migrations/0061_create_dataverse_transfer_type.py diff --git a/src/dashboard/src/main/migrations/0062_atom_upload_exit_code.py b/src/dashboard/main/migrations/0062_atom_upload_exit_code.py similarity index 100% rename from src/dashboard/src/main/migrations/0062_atom_upload_exit_code.py rename to src/dashboard/main/migrations/0062_atom_upload_exit_code.py diff --git a/src/dashboard/src/main/migrations/0063_update_idtools.py b/src/dashboard/main/migrations/0063_update_idtools.py similarity index 100% rename from src/dashboard/src/main/migrations/0063_update_idtools.py rename to src/dashboard/main/migrations/0063_update_idtools.py diff --git a/src/dashboard/src/main/migrations/0064_version_number.py b/src/dashboard/main/migrations/0064_version_number.py similarity index 100% rename from src/dashboard/src/main/migrations/0064_version_number.py rename to src/dashboard/main/migrations/0064_version_number.py diff --git a/src/dashboard/src/main/migrations/0065_version_number.py b/src/dashboard/main/migrations/0065_version_number.py similarity index 100% rename from src/dashboard/src/main/migrations/0065_version_number.py rename to src/dashboard/main/migrations/0065_version_number.py diff --git a/src/dashboard/src/main/migrations/0066_archivesspace_base_url.py b/src/dashboard/main/migrations/0066_archivesspace_base_url.py similarity index 100% rename from src/dashboard/src/main/migrations/0066_archivesspace_base_url.py rename to src/dashboard/main/migrations/0066_archivesspace_base_url.py diff --git a/src/dashboard/src/main/migrations/0067_delete_workflow_models.py b/src/dashboard/main/migrations/0067_delete_workflow_models.py similarity index 100% rename from src/dashboard/src/main/migrations/0067_delete_workflow_models.py rename to src/dashboard/main/migrations/0067_delete_workflow_models.py diff --git a/src/dashboard/src/main/migrations/0068_version_number.py b/src/dashboard/main/migrations/0068_version_number.py similarity index 100% rename from src/dashboard/src/main/migrations/0068_version_number.py rename to src/dashboard/main/migrations/0068_version_number.py diff --git a/src/dashboard/src/main/migrations/0069_remove_atk.py b/src/dashboard/main/migrations/0069_remove_atk.py similarity index 100% rename from src/dashboard/src/main/migrations/0069_remove_atk.py rename to src/dashboard/main/migrations/0069_remove_atk.py diff --git a/src/dashboard/src/main/migrations/0070_index_jobs.py b/src/dashboard/main/migrations/0070_index_jobs.py similarity index 100% rename from src/dashboard/src/main/migrations/0070_index_jobs.py rename to src/dashboard/main/migrations/0070_index_jobs.py diff --git a/src/dashboard/src/main/migrations/0071_index_unitvariables_runsql.py b/src/dashboard/main/migrations/0071_index_unitvariables_runsql.py similarity index 100% rename from src/dashboard/src/main/migrations/0071_index_unitvariables_runsql.py rename to src/dashboard/main/migrations/0071_index_unitvariables_runsql.py diff --git a/src/dashboard/src/main/migrations/0072_index_files.py b/src/dashboard/main/migrations/0072_index_files.py similarity index 100% rename from src/dashboard/src/main/migrations/0072_index_files.py rename to src/dashboard/main/migrations/0072_index_files.py diff --git a/src/dashboard/src/main/migrations/0073_index_files_runsql.py b/src/dashboard/main/migrations/0073_index_files_runsql.py similarity index 100% rename from src/dashboard/src/main/migrations/0073_index_files_runsql.py rename to src/dashboard/main/migrations/0073_index_files_runsql.py diff --git a/src/dashboard/src/main/migrations/0074_version_number.py b/src/dashboard/main/migrations/0074_version_number.py similarity index 100% rename from src/dashboard/src/main/migrations/0074_version_number.py rename to src/dashboard/main/migrations/0074_version_number.py diff --git a/src/dashboard/src/main/migrations/0075_userprofile_system_emails.py b/src/dashboard/main/migrations/0075_userprofile_system_emails.py similarity index 100% rename from src/dashboard/src/main/migrations/0075_userprofile_system_emails.py rename to src/dashboard/main/migrations/0075_userprofile_system_emails.py diff --git a/src/dashboard/src/main/migrations/0076_version_number.py b/src/dashboard/main/migrations/0076_version_number.py similarity index 100% rename from src/dashboard/src/main/migrations/0076_version_number.py rename to src/dashboard/main/migrations/0076_version_number.py diff --git a/src/dashboard/src/main/migrations/0077_uuid_fields.py b/src/dashboard/main/migrations/0077_uuid_fields.py similarity index 100% rename from src/dashboard/src/main/migrations/0077_uuid_fields.py rename to src/dashboard/main/migrations/0077_uuid_fields.py diff --git a/src/dashboard/src/main/migrations/0078_username_check.py b/src/dashboard/main/migrations/0078_username_check.py similarity index 100% rename from src/dashboard/src/main/migrations/0078_username_check.py rename to src/dashboard/main/migrations/0078_username_check.py diff --git a/src/dashboard/src/main/migrations/0079_version_number.py b/src/dashboard/main/migrations/0079_version_number.py similarity index 100% rename from src/dashboard/src/main/migrations/0079_version_number.py rename to src/dashboard/main/migrations/0079_version_number.py diff --git a/src/dashboard/src/main/migrations/0080_delete_software_agent.py b/src/dashboard/main/migrations/0080_delete_software_agent.py similarity index 100% rename from src/dashboard/src/main/migrations/0080_delete_software_agent.py rename to src/dashboard/main/migrations/0080_delete_software_agent.py diff --git a/src/dashboard/src/main/migrations/0081_package_status.py b/src/dashboard/main/migrations/0081_package_status.py similarity index 100% rename from src/dashboard/src/main/migrations/0081_package_status.py rename to src/dashboard/main/migrations/0081_package_status.py diff --git a/src/dashboard/src/main/migrations/0082_use_uuidfield.py b/src/dashboard/main/migrations/0082_use_uuidfield.py similarity index 100% rename from src/dashboard/src/main/migrations/0082_use_uuidfield.py rename to src/dashboard/main/migrations/0082_use_uuidfield.py diff --git a/src/dashboard/src/main/migrations/0083_unpickle_access_target.py b/src/dashboard/main/migrations/0083_unpickle_access_target.py similarity index 100% rename from src/dashboard/src/main/migrations/0083_unpickle_access_target.py rename to src/dashboard/main/migrations/0083_unpickle_access_target.py diff --git a/src/dashboard/src/main/migrations/0084_alter_job_index_together.py b/src/dashboard/main/migrations/0084_alter_job_index_together.py similarity index 100% rename from src/dashboard/src/main/migrations/0084_alter_job_index_together.py rename to src/dashboard/main/migrations/0084_alter_job_index_together.py diff --git a/src/dashboard/src/main/migrations/__init__.py b/src/dashboard/main/migrations/__init__.py similarity index 100% rename from src/dashboard/src/main/migrations/__init__.py rename to src/dashboard/main/migrations/__init__.py diff --git a/src/dashboard/src/main/models.py b/src/dashboard/main/models.py similarity index 100% rename from src/dashboard/src/main/models.py rename to src/dashboard/main/models.py diff --git a/src/dashboard/src/main/signals.py b/src/dashboard/main/signals.py similarity index 100% rename from src/dashboard/src/main/signals.py rename to src/dashboard/main/signals.py diff --git a/src/dashboard/src/main/templatetags/__init__.py b/src/dashboard/main/templatetags/__init__.py similarity index 100% rename from src/dashboard/src/main/templatetags/__init__.py rename to src/dashboard/main/templatetags/__init__.py diff --git a/src/dashboard/src/main/templatetags/active.py b/src/dashboard/main/templatetags/active.py similarity index 100% rename from src/dashboard/src/main/templatetags/active.py rename to src/dashboard/main/templatetags/active.py diff --git a/src/dashboard/src/main/templatetags/breadcrumb.py b/src/dashboard/main/templatetags/breadcrumb.py similarity index 100% rename from src/dashboard/src/main/templatetags/breadcrumb.py rename to src/dashboard/main/templatetags/breadcrumb.py diff --git a/src/dashboard/src/main/templatetags/forms.py b/src/dashboard/main/templatetags/forms.py similarity index 100% rename from src/dashboard/src/main/templatetags/forms.py rename to src/dashboard/main/templatetags/forms.py diff --git a/src/dashboard/src/main/templatetags/job_status.py b/src/dashboard/main/templatetags/job_status.py similarity index 100% rename from src/dashboard/src/main/templatetags/job_status.py rename to src/dashboard/main/templatetags/job_status.py diff --git a/src/dashboard/src/main/templatetags/keyvalue.py b/src/dashboard/main/templatetags/keyvalue.py similarity index 100% rename from src/dashboard/src/main/templatetags/keyvalue.py rename to src/dashboard/main/templatetags/keyvalue.py diff --git a/src/dashboard/src/main/templatetags/lang.py b/src/dashboard/main/templatetags/lang.py similarity index 100% rename from src/dashboard/src/main/templatetags/lang.py rename to src/dashboard/main/templatetags/lang.py diff --git a/src/dashboard/src/main/templatetags/user.py b/src/dashboard/main/templatetags/user.py similarity index 100% rename from src/dashboard/src/main/templatetags/user.py rename to src/dashboard/main/templatetags/user.py diff --git a/src/dashboard/src/main/urls.py b/src/dashboard/main/urls.py similarity index 100% rename from src/dashboard/src/main/urls.py rename to src/dashboard/main/urls.py diff --git a/src/dashboard/src/main/views.py b/src/dashboard/main/views.py similarity index 100% rename from src/dashboard/src/main/views.py rename to src/dashboard/main/views.py diff --git a/src/dashboard/src/manage.py b/src/dashboard/manage.py similarity index 100% rename from src/dashboard/src/manage.py rename to src/dashboard/manage.py diff --git a/src/dashboard/src/media/css/archival_storage.css b/src/dashboard/media/css/archival_storage.css similarity index 100% rename from src/dashboard/src/media/css/archival_storage.css rename to src/dashboard/media/css/archival_storage.css diff --git a/src/dashboard/src/media/css/as_match.css b/src/dashboard/media/css/as_match.css similarity index 100% rename from src/dashboard/src/media/css/as_match.css rename to src/dashboard/media/css/as_match.css diff --git a/src/dashboard/src/media/css/backbone-file-explorer.css b/src/dashboard/media/css/backbone-file-explorer.css similarity index 100% rename from src/dashboard/src/media/css/backbone-file-explorer.css rename to src/dashboard/media/css/backbone-file-explorer.css diff --git a/src/dashboard/src/media/css/backlog.css b/src/dashboard/media/css/backlog.css similarity index 100% rename from src/dashboard/src/media/css/backlog.css rename to src/dashboard/media/css/backlog.css diff --git a/src/dashboard/src/media/css/base.css b/src/dashboard/media/css/base.css similarity index 100% rename from src/dashboard/src/media/css/base.css rename to src/dashboard/media/css/base.css diff --git a/src/dashboard/src/media/css/directory_picker.css b/src/dashboard/media/css/directory_picker.css similarity index 100% rename from src/dashboard/src/media/css/directory_picker.css rename to src/dashboard/media/css/directory_picker.css diff --git a/src/dashboard/src/media/css/fonts.css b/src/dashboard/media/css/fonts.css similarity index 100% rename from src/dashboard/src/media/css/fonts.css rename to src/dashboard/media/css/fonts.css diff --git a/src/dashboard/src/media/css/reset.css b/src/dashboard/media/css/reset.css similarity index 100% rename from src/dashboard/src/media/css/reset.css rename to src/dashboard/media/css/reset.css diff --git a/src/dashboard/src/media/css/search.css b/src/dashboard/media/css/search.css similarity index 100% rename from src/dashboard/src/media/css/search.css rename to src/dashboard/media/css/search.css diff --git a/src/dashboard/src/media/css/style.css b/src/dashboard/media/css/style.css similarity index 100% rename from src/dashboard/src/media/css/style.css rename to src/dashboard/media/css/style.css diff --git a/src/dashboard/src/media/css/transfer_grid.css b/src/dashboard/media/css/transfer_grid.css similarity index 100% rename from src/dashboard/src/media/css/transfer_grid.css rename to src/dashboard/media/css/transfer_grid.css diff --git a/src/dashboard/src/media/images/1x1-pixel.png b/src/dashboard/media/images/1x1-pixel.png similarity index 100% rename from src/dashboard/src/media/images/1x1-pixel.png rename to src/dashboard/media/images/1x1-pixel.png diff --git a/src/dashboard/src/media/images/accept.png b/src/dashboard/media/images/accept.png similarity index 100% rename from src/dashboard/src/media/images/accept.png rename to src/dashboard/media/images/accept.png diff --git a/src/dashboard/src/media/images/ajax-loader.gif b/src/dashboard/media/images/ajax-loader.gif similarity index 100% rename from src/dashboard/src/media/images/ajax-loader.gif rename to src/dashboard/media/images/ajax-loader.gif diff --git a/src/dashboard/src/media/images/arrow_refresh.png b/src/dashboard/media/images/arrow_refresh.png similarity index 100% rename from src/dashboard/src/media/images/arrow_refresh.png rename to src/dashboard/media/images/arrow_refresh.png diff --git a/src/dashboard/src/media/images/attach.png b/src/dashboard/media/images/attach.png similarity index 100% rename from src/dashboard/src/media/images/attach.png rename to src/dashboard/media/images/attach.png diff --git a/src/dashboard/src/media/images/bell.png b/src/dashboard/media/images/bell.png similarity index 100% rename from src/dashboard/src/media/images/bell.png rename to src/dashboard/media/images/bell.png diff --git a/src/dashboard/src/media/images/bullet_arrow_down.png b/src/dashboard/media/images/bullet_arrow_down.png similarity index 100% rename from src/dashboard/src/media/images/bullet_arrow_down.png rename to src/dashboard/media/images/bullet_arrow_down.png diff --git a/src/dashboard/src/media/images/bullet_arrow_up.png b/src/dashboard/media/images/bullet_arrow_up.png similarity index 100% rename from src/dashboard/src/media/images/bullet_arrow_up.png rename to src/dashboard/media/images/bullet_arrow_up.png diff --git a/src/dashboard/src/media/images/bullet_delete.png b/src/dashboard/media/images/bullet_delete.png similarity index 100% rename from src/dashboard/src/media/images/bullet_delete.png rename to src/dashboard/media/images/bullet_delete.png diff --git a/src/dashboard/src/media/images/bullet_green.png b/src/dashboard/media/images/bullet_green.png similarity index 100% rename from src/dashboard/src/media/images/bullet_green.png rename to src/dashboard/media/images/bullet_green.png diff --git a/src/dashboard/src/media/images/bullet_orange.png b/src/dashboard/media/images/bullet_orange.png similarity index 100% rename from src/dashboard/src/media/images/bullet_orange.png rename to src/dashboard/media/images/bullet_orange.png diff --git a/src/dashboard/src/media/images/cancel.png b/src/dashboard/media/images/cancel.png similarity index 100% rename from src/dashboard/src/media/images/cancel.png rename to src/dashboard/media/images/cancel.png diff --git a/src/dashboard/src/media/images/clock.png b/src/dashboard/media/images/clock.png similarity index 100% rename from src/dashboard/src/media/images/clock.png rename to src/dashboard/media/images/clock.png diff --git a/src/dashboard/src/media/images/cog.png b/src/dashboard/media/images/cog.png similarity index 100% rename from src/dashboard/src/media/images/cog.png rename to src/dashboard/media/images/cog.png diff --git a/src/dashboard/src/media/images/delete.png b/src/dashboard/media/images/delete.png similarity index 100% rename from src/dashboard/src/media/images/delete.png rename to src/dashboard/media/images/delete.png diff --git a/src/dashboard/src/media/images/error.png b/src/dashboard/media/images/error.png similarity index 100% rename from src/dashboard/src/media/images/error.png rename to src/dashboard/media/images/error.png diff --git a/src/dashboard/src/media/images/favicon.ico b/src/dashboard/media/images/favicon.ico similarity index 100% rename from src/dashboard/src/media/images/favicon.ico rename to src/dashboard/media/images/favicon.ico diff --git a/src/dashboard/src/media/images/filefolder.png b/src/dashboard/media/images/filefolder.png similarity index 100% rename from src/dashboard/src/media/images/filefolder.png rename to src/dashboard/media/images/filefolder.png diff --git a/src/dashboard/src/media/images/filefolderopen.png b/src/dashboard/media/images/filefolderopen.png similarity index 100% rename from src/dashboard/src/media/images/filefolderopen.png rename to src/dashboard/media/images/filefolderopen.png diff --git a/src/dashboard/src/media/images/folder.png b/src/dashboard/media/images/folder.png similarity index 100% rename from src/dashboard/src/media/images/folder.png rename to src/dashboard/media/images/folder.png diff --git a/src/dashboard/src/media/images/logo_header.png b/src/dashboard/media/images/logo_header.png similarity index 100% rename from src/dashboard/src/media/images/logo_header.png rename to src/dashboard/media/images/logo_header.png diff --git a/src/dashboard/src/media/images/logo_login.gif b/src/dashboard/media/images/logo_login.gif similarity index 100% rename from src/dashboard/src/media/images/logo_login.gif rename to src/dashboard/media/images/logo_login.gif diff --git a/src/dashboard/src/media/images/logo_welcome.gif b/src/dashboard/media/images/logo_welcome.gif similarity index 100% rename from src/dashboard/src/media/images/logo_welcome.gif rename to src/dashboard/media/images/logo_welcome.gif diff --git a/src/dashboard/src/media/images/package_go.png b/src/dashboard/media/images/package_go.png similarity index 100% rename from src/dashboard/src/media/images/package_go.png rename to src/dashboard/media/images/package_go.png diff --git a/src/dashboard/src/media/images/pencil_add.png b/src/dashboard/media/images/pencil_add.png similarity index 100% rename from src/dashboard/src/media/images/pencil_add.png rename to src/dashboard/media/images/pencil_add.png diff --git a/src/dashboard/src/media/images/table_edit.png b/src/dashboard/media/images/table_edit.png similarity index 100% rename from src/dashboard/src/media/images/table_edit.png rename to src/dashboard/media/images/table_edit.png diff --git a/src/dashboard/src/media/images/tick.png b/src/dashboard/media/images/tick.png similarity index 100% rename from src/dashboard/src/media/images/tick.png rename to src/dashboard/media/images/tick.png diff --git a/src/dashboard/src/media/images/user_comment.png b/src/dashboard/media/images/user_comment.png similarity index 100% rename from src/dashboard/src/media/images/user_comment.png rename to src/dashboard/media/images/user_comment.png diff --git a/src/dashboard/src/media/images/vcard_edit.png b/src/dashboard/media/images/vcard_edit.png similarity index 100% rename from src/dashboard/src/media/images/vcard_edit.png rename to src/dashboard/media/images/vcard_edit.png diff --git a/src/dashboard/src/media/images/zoom.png b/src/dashboard/media/images/zoom.png similarity index 100% rename from src/dashboard/src/media/images/zoom.png rename to src/dashboard/media/images/zoom.png diff --git a/src/dashboard/src/media/images/zoom_out.png b/src/dashboard/media/images/zoom_out.png similarity index 100% rename from src/dashboard/src/media/images/zoom_out.png rename to src/dashboard/media/images/zoom_out.png diff --git a/src/dashboard/src/media/js/administration/atom_levels_of_description.js b/src/dashboard/media/js/administration/atom_levels_of_description.js similarity index 100% rename from src/dashboard/src/media/js/administration/atom_levels_of_description.js rename to src/dashboard/media/js/administration/atom_levels_of_description.js diff --git a/src/dashboard/src/media/js/advanced-search-query-creator.js b/src/dashboard/media/js/advanced-search-query-creator.js similarity index 100% rename from src/dashboard/src/media/js/advanced-search-query-creator.js rename to src/dashboard/media/js/advanced-search-query-creator.js diff --git a/src/dashboard/src/media/js/archival_storage/archival_storage_search.js b/src/dashboard/media/js/archival_storage/archival_storage_search.js similarity index 100% rename from src/dashboard/src/media/js/archival_storage/archival_storage_search.js rename to src/dashboard/media/js/archival_storage/archival_storage_search.js diff --git a/src/dashboard/src/media/js/backlog/backlog-search.js b/src/dashboard/media/js/backlog/backlog-search.js similarity index 100% rename from src/dashboard/src/media/js/backlog/backlog-search.js rename to src/dashboard/media/js/backlog/backlog-search.js diff --git a/src/dashboard/src/media/js/contextual_help.js b/src/dashboard/media/js/contextual_help.js similarity index 100% rename from src/dashboard/src/media/js/contextual_help.js rename to src/dashboard/media/js/contextual_help.js diff --git a/src/dashboard/src/media/js/directory_picker.js b/src/dashboard/media/js/directory_picker.js similarity index 100% rename from src/dashboard/src/media/js/directory_picker.js rename to src/dashboard/media/js/directory_picker.js diff --git a/src/dashboard/src/media/js/file-explorer.js b/src/dashboard/media/js/file-explorer.js similarity index 100% rename from src/dashboard/src/media/js/file-explorer.js rename to src/dashboard/media/js/file-explorer.js diff --git a/src/dashboard/src/media/js/file_browser.js b/src/dashboard/media/js/file_browser.js similarity index 100% rename from src/dashboard/src/media/js/file_browser.js rename to src/dashboard/media/js/file_browser.js diff --git a/src/dashboard/src/media/js/ingest.js b/src/dashboard/media/js/ingest.js similarity index 100% rename from src/dashboard/src/media/js/ingest.js rename to src/dashboard/media/js/ingest.js diff --git a/src/dashboard/src/media/js/ingest/aip_browser.js b/src/dashboard/media/js/ingest/aip_browser.js similarity index 100% rename from src/dashboard/src/media/js/ingest/aip_browser.js rename to src/dashboard/media/js/ingest/aip_browser.js diff --git a/src/dashboard/src/media/js/ingest/as_matcher.js b/src/dashboard/media/js/ingest/as_matcher.js similarity index 100% rename from src/dashboard/src/media/js/ingest/as_matcher.js rename to src/dashboard/media/js/ingest/as_matcher.js diff --git a/src/dashboard/src/media/js/ingest/as_matcher_setup.js b/src/dashboard/media/js/ingest/as_matcher_setup.js similarity index 100% rename from src/dashboard/src/media/js/ingest/as_matcher_setup.js rename to src/dashboard/media/js/ingest/as_matcher_setup.js diff --git a/src/dashboard/src/media/js/ingest/backlog.js b/src/dashboard/media/js/ingest/backlog.js similarity index 100% rename from src/dashboard/src/media/js/ingest/backlog.js rename to src/dashboard/media/js/ingest/backlog.js diff --git a/src/dashboard/src/media/js/ingest/metadata_form.js b/src/dashboard/media/js/ingest/metadata_form.js similarity index 100% rename from src/dashboard/src/media/js/ingest/metadata_form.js rename to src/dashboard/media/js/ingest/metadata_form.js diff --git a/src/dashboard/src/media/js/ingest/normalization_report.js b/src/dashboard/media/js/ingest/normalization_report.js similarity index 100% rename from src/dashboard/src/media/js/ingest/normalization_report.js rename to src/dashboard/media/js/ingest/normalization_report.js diff --git a/src/dashboard/src/media/js/jobs.js b/src/dashboard/media/js/jobs.js similarity index 100% rename from src/dashboard/src/media/js/jobs.js rename to src/dashboard/media/js/jobs.js diff --git a/src/dashboard/src/media/js/misc.js b/src/dashboard/media/js/misc.js similarity index 100% rename from src/dashboard/src/media/js/misc.js rename to src/dashboard/media/js/misc.js diff --git a/src/dashboard/src/media/js/online.js b/src/dashboard/media/js/online.js similarity index 100% rename from src/dashboard/src/media/js/online.js rename to src/dashboard/media/js/online.js diff --git a/src/dashboard/src/media/js/repeating-ajax-data.js b/src/dashboard/media/js/repeating-ajax-data.js similarity index 100% rename from src/dashboard/src/media/js/repeating-ajax-data.js rename to src/dashboard/media/js/repeating-ajax-data.js diff --git a/src/dashboard/src/media/js/rights_edit.js b/src/dashboard/media/js/rights_edit.js similarity index 100% rename from src/dashboard/src/media/js/rights_edit.js rename to src/dashboard/media/js/rights_edit.js diff --git a/src/dashboard/src/media/js/status.js b/src/dashboard/media/js/status.js similarity index 100% rename from src/dashboard/src/media/js/status.js rename to src/dashboard/media/js/status.js diff --git a/src/dashboard/src/media/js/transfer.js b/src/dashboard/media/js/transfer.js similarity index 100% rename from src/dashboard/src/media/js/transfer.js rename to src/dashboard/media/js/transfer.js diff --git a/src/dashboard/src/media/js/transfer/component_directory_select.js b/src/dashboard/media/js/transfer/component_directory_select.js similarity index 100% rename from src/dashboard/src/media/js/transfer/component_directory_select.js rename to src/dashboard/media/js/transfer/component_directory_select.js diff --git a/src/dashboard/src/media/js/vendor/base64.js b/src/dashboard/media/js/vendor/base64.js similarity index 100% rename from src/dashboard/src/media/js/vendor/base64.js rename to src/dashboard/media/js/vendor/base64.js diff --git a/src/dashboard/src/media/vendor/backbone.js b/src/dashboard/media/vendor/backbone.js similarity index 100% rename from src/dashboard/src/media/vendor/backbone.js rename to src/dashboard/media/vendor/backbone.js diff --git a/src/dashboard/src/media/vendor/datatables/css/buttons.bootstrap.min.css b/src/dashboard/media/vendor/datatables/css/buttons.bootstrap.min.css similarity index 100% rename from src/dashboard/src/media/vendor/datatables/css/buttons.bootstrap.min.css rename to src/dashboard/media/vendor/datatables/css/buttons.bootstrap.min.css diff --git a/src/dashboard/src/media/vendor/datatables/css/jquery.dataTables.css b/src/dashboard/media/vendor/datatables/css/jquery.dataTables.css similarity index 100% rename from src/dashboard/src/media/vendor/datatables/css/jquery.dataTables.css rename to src/dashboard/media/vendor/datatables/css/jquery.dataTables.css diff --git a/src/dashboard/src/media/vendor/datatables/images/favicon.ico b/src/dashboard/media/vendor/datatables/images/favicon.ico similarity index 100% rename from src/dashboard/src/media/vendor/datatables/images/favicon.ico rename to src/dashboard/media/vendor/datatables/images/favicon.ico diff --git a/src/dashboard/src/media/vendor/datatables/images/sort_asc.png b/src/dashboard/media/vendor/datatables/images/sort_asc.png similarity index 100% rename from src/dashboard/src/media/vendor/datatables/images/sort_asc.png rename to src/dashboard/media/vendor/datatables/images/sort_asc.png diff --git a/src/dashboard/src/media/vendor/datatables/images/sort_asc_disabled.png b/src/dashboard/media/vendor/datatables/images/sort_asc_disabled.png similarity index 100% rename from src/dashboard/src/media/vendor/datatables/images/sort_asc_disabled.png rename to src/dashboard/media/vendor/datatables/images/sort_asc_disabled.png diff --git a/src/dashboard/src/media/vendor/datatables/images/sort_both.png b/src/dashboard/media/vendor/datatables/images/sort_both.png similarity index 100% rename from src/dashboard/src/media/vendor/datatables/images/sort_both.png rename to src/dashboard/media/vendor/datatables/images/sort_both.png diff --git a/src/dashboard/src/media/vendor/datatables/images/sort_desc.png b/src/dashboard/media/vendor/datatables/images/sort_desc.png similarity index 100% rename from src/dashboard/src/media/vendor/datatables/images/sort_desc.png rename to src/dashboard/media/vendor/datatables/images/sort_desc.png diff --git a/src/dashboard/src/media/vendor/datatables/images/sort_desc_disabled.png b/src/dashboard/media/vendor/datatables/images/sort_desc_disabled.png similarity index 100% rename from src/dashboard/src/media/vendor/datatables/images/sort_desc_disabled.png rename to src/dashboard/media/vendor/datatables/images/sort_desc_disabled.png diff --git a/src/dashboard/src/media/vendor/datatables/js/buttons.bootstrap.min.js b/src/dashboard/media/vendor/datatables/js/buttons.bootstrap.min.js similarity index 100% rename from src/dashboard/src/media/vendor/datatables/js/buttons.bootstrap.min.js rename to src/dashboard/media/vendor/datatables/js/buttons.bootstrap.min.js diff --git a/src/dashboard/src/media/vendor/datatables/js/buttons.colVis.min.js b/src/dashboard/media/vendor/datatables/js/buttons.colVis.min.js similarity index 100% rename from src/dashboard/src/media/vendor/datatables/js/buttons.colVis.min.js rename to src/dashboard/media/vendor/datatables/js/buttons.colVis.min.js diff --git a/src/dashboard/src/media/vendor/datatables/js/dataTables.buttons.min.js b/src/dashboard/media/vendor/datatables/js/dataTables.buttons.min.js similarity index 100% rename from src/dashboard/src/media/vendor/datatables/js/dataTables.buttons.min.js rename to src/dashboard/media/vendor/datatables/js/dataTables.buttons.min.js diff --git a/src/dashboard/src/media/vendor/datatables/js/jquery.dataTables.min.js b/src/dashboard/media/vendor/datatables/js/jquery.dataTables.min.js similarity index 100% rename from src/dashboard/src/media/vendor/datatables/js/jquery.dataTables.min.js rename to src/dashboard/media/vendor/datatables/js/jquery.dataTables.min.js diff --git a/src/dashboard/src/media/vendor/font-awesome/.npmignore b/src/dashboard/media/vendor/font-awesome/.npmignore similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/.npmignore rename to src/dashboard/media/vendor/font-awesome/.npmignore diff --git a/src/dashboard/src/media/vendor/font-awesome/HELP-US-OUT.txt b/src/dashboard/media/vendor/font-awesome/HELP-US-OUT.txt similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/HELP-US-OUT.txt rename to src/dashboard/media/vendor/font-awesome/HELP-US-OUT.txt diff --git a/src/dashboard/src/media/vendor/font-awesome/README.md b/src/dashboard/media/vendor/font-awesome/README.md similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/README.md rename to src/dashboard/media/vendor/font-awesome/README.md diff --git a/src/dashboard/src/media/vendor/font-awesome/css/font-awesome.css b/src/dashboard/media/vendor/font-awesome/css/font-awesome.css similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/css/font-awesome.css rename to src/dashboard/media/vendor/font-awesome/css/font-awesome.css diff --git a/src/dashboard/src/media/vendor/font-awesome/css/font-awesome.css.map b/src/dashboard/media/vendor/font-awesome/css/font-awesome.css.map similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/css/font-awesome.css.map rename to src/dashboard/media/vendor/font-awesome/css/font-awesome.css.map diff --git a/src/dashboard/src/media/vendor/font-awesome/css/font-awesome.min.css b/src/dashboard/media/vendor/font-awesome/css/font-awesome.min.css similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/css/font-awesome.min.css rename to src/dashboard/media/vendor/font-awesome/css/font-awesome.min.css diff --git a/src/dashboard/src/media/vendor/font-awesome/fonts/FontAwesome.otf b/src/dashboard/media/vendor/font-awesome/fonts/FontAwesome.otf similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/fonts/FontAwesome.otf rename to src/dashboard/media/vendor/font-awesome/fonts/FontAwesome.otf diff --git a/src/dashboard/src/media/vendor/font-awesome/fonts/fontawesome-webfont.eot b/src/dashboard/media/vendor/font-awesome/fonts/fontawesome-webfont.eot similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/fonts/fontawesome-webfont.eot rename to src/dashboard/media/vendor/font-awesome/fonts/fontawesome-webfont.eot diff --git a/src/dashboard/src/media/vendor/font-awesome/fonts/fontawesome-webfont.svg b/src/dashboard/media/vendor/font-awesome/fonts/fontawesome-webfont.svg similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/fonts/fontawesome-webfont.svg rename to src/dashboard/media/vendor/font-awesome/fonts/fontawesome-webfont.svg diff --git a/src/dashboard/src/media/vendor/font-awesome/fonts/fontawesome-webfont.ttf b/src/dashboard/media/vendor/font-awesome/fonts/fontawesome-webfont.ttf similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/fonts/fontawesome-webfont.ttf rename to src/dashboard/media/vendor/font-awesome/fonts/fontawesome-webfont.ttf diff --git a/src/dashboard/src/media/vendor/font-awesome/fonts/fontawesome-webfont.woff b/src/dashboard/media/vendor/font-awesome/fonts/fontawesome-webfont.woff similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/fonts/fontawesome-webfont.woff rename to src/dashboard/media/vendor/font-awesome/fonts/fontawesome-webfont.woff diff --git a/src/dashboard/src/media/vendor/font-awesome/fonts/fontawesome-webfont.woff2 b/src/dashboard/media/vendor/font-awesome/fonts/fontawesome-webfont.woff2 similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/fonts/fontawesome-webfont.woff2 rename to src/dashboard/media/vendor/font-awesome/fonts/fontawesome-webfont.woff2 diff --git a/src/dashboard/src/media/vendor/font-awesome/less/animated.less b/src/dashboard/media/vendor/font-awesome/less/animated.less similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/less/animated.less rename to src/dashboard/media/vendor/font-awesome/less/animated.less diff --git a/src/dashboard/src/media/vendor/font-awesome/less/bordered-pulled.less b/src/dashboard/media/vendor/font-awesome/less/bordered-pulled.less similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/less/bordered-pulled.less rename to src/dashboard/media/vendor/font-awesome/less/bordered-pulled.less diff --git a/src/dashboard/src/media/vendor/font-awesome/less/core.less b/src/dashboard/media/vendor/font-awesome/less/core.less similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/less/core.less rename to src/dashboard/media/vendor/font-awesome/less/core.less diff --git a/src/dashboard/src/media/vendor/font-awesome/less/fixed-width.less b/src/dashboard/media/vendor/font-awesome/less/fixed-width.less similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/less/fixed-width.less rename to src/dashboard/media/vendor/font-awesome/less/fixed-width.less diff --git a/src/dashboard/src/media/vendor/font-awesome/less/font-awesome.less b/src/dashboard/media/vendor/font-awesome/less/font-awesome.less similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/less/font-awesome.less rename to src/dashboard/media/vendor/font-awesome/less/font-awesome.less diff --git a/src/dashboard/src/media/vendor/font-awesome/less/icons.less b/src/dashboard/media/vendor/font-awesome/less/icons.less similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/less/icons.less rename to src/dashboard/media/vendor/font-awesome/less/icons.less diff --git a/src/dashboard/src/media/vendor/font-awesome/less/larger.less b/src/dashboard/media/vendor/font-awesome/less/larger.less similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/less/larger.less rename to src/dashboard/media/vendor/font-awesome/less/larger.less diff --git a/src/dashboard/src/media/vendor/font-awesome/less/list.less b/src/dashboard/media/vendor/font-awesome/less/list.less similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/less/list.less rename to src/dashboard/media/vendor/font-awesome/less/list.less diff --git a/src/dashboard/src/media/vendor/font-awesome/less/mixins.less b/src/dashboard/media/vendor/font-awesome/less/mixins.less similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/less/mixins.less rename to src/dashboard/media/vendor/font-awesome/less/mixins.less diff --git a/src/dashboard/src/media/vendor/font-awesome/less/path.less b/src/dashboard/media/vendor/font-awesome/less/path.less similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/less/path.less rename to src/dashboard/media/vendor/font-awesome/less/path.less diff --git a/src/dashboard/src/media/vendor/font-awesome/less/rotated-flipped.less b/src/dashboard/media/vendor/font-awesome/less/rotated-flipped.less similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/less/rotated-flipped.less rename to src/dashboard/media/vendor/font-awesome/less/rotated-flipped.less diff --git a/src/dashboard/src/media/vendor/font-awesome/less/screen-reader.less b/src/dashboard/media/vendor/font-awesome/less/screen-reader.less similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/less/screen-reader.less rename to src/dashboard/media/vendor/font-awesome/less/screen-reader.less diff --git a/src/dashboard/src/media/vendor/font-awesome/less/stacked.less b/src/dashboard/media/vendor/font-awesome/less/stacked.less similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/less/stacked.less rename to src/dashboard/media/vendor/font-awesome/less/stacked.less diff --git a/src/dashboard/src/media/vendor/font-awesome/less/variables.less b/src/dashboard/media/vendor/font-awesome/less/variables.less similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/less/variables.less rename to src/dashboard/media/vendor/font-awesome/less/variables.less diff --git a/src/dashboard/src/media/vendor/font-awesome/package.json b/src/dashboard/media/vendor/font-awesome/package.json similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/package.json rename to src/dashboard/media/vendor/font-awesome/package.json diff --git a/src/dashboard/src/media/vendor/font-awesome/scss/_animated.scss b/src/dashboard/media/vendor/font-awesome/scss/_animated.scss similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/scss/_animated.scss rename to src/dashboard/media/vendor/font-awesome/scss/_animated.scss diff --git a/src/dashboard/src/media/vendor/font-awesome/scss/_bordered-pulled.scss b/src/dashboard/media/vendor/font-awesome/scss/_bordered-pulled.scss similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/scss/_bordered-pulled.scss rename to src/dashboard/media/vendor/font-awesome/scss/_bordered-pulled.scss diff --git a/src/dashboard/src/media/vendor/font-awesome/scss/_core.scss b/src/dashboard/media/vendor/font-awesome/scss/_core.scss similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/scss/_core.scss rename to src/dashboard/media/vendor/font-awesome/scss/_core.scss diff --git a/src/dashboard/src/media/vendor/font-awesome/scss/_fixed-width.scss b/src/dashboard/media/vendor/font-awesome/scss/_fixed-width.scss similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/scss/_fixed-width.scss rename to src/dashboard/media/vendor/font-awesome/scss/_fixed-width.scss diff --git a/src/dashboard/src/media/vendor/font-awesome/scss/_icons.scss b/src/dashboard/media/vendor/font-awesome/scss/_icons.scss similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/scss/_icons.scss rename to src/dashboard/media/vendor/font-awesome/scss/_icons.scss diff --git a/src/dashboard/src/media/vendor/font-awesome/scss/_larger.scss b/src/dashboard/media/vendor/font-awesome/scss/_larger.scss similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/scss/_larger.scss rename to src/dashboard/media/vendor/font-awesome/scss/_larger.scss diff --git a/src/dashboard/src/media/vendor/font-awesome/scss/_list.scss b/src/dashboard/media/vendor/font-awesome/scss/_list.scss similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/scss/_list.scss rename to src/dashboard/media/vendor/font-awesome/scss/_list.scss diff --git a/src/dashboard/src/media/vendor/font-awesome/scss/_mixins.scss b/src/dashboard/media/vendor/font-awesome/scss/_mixins.scss similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/scss/_mixins.scss rename to src/dashboard/media/vendor/font-awesome/scss/_mixins.scss diff --git a/src/dashboard/src/media/vendor/font-awesome/scss/_path.scss b/src/dashboard/media/vendor/font-awesome/scss/_path.scss similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/scss/_path.scss rename to src/dashboard/media/vendor/font-awesome/scss/_path.scss diff --git a/src/dashboard/src/media/vendor/font-awesome/scss/_rotated-flipped.scss b/src/dashboard/media/vendor/font-awesome/scss/_rotated-flipped.scss similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/scss/_rotated-flipped.scss rename to src/dashboard/media/vendor/font-awesome/scss/_rotated-flipped.scss diff --git a/src/dashboard/src/media/vendor/font-awesome/scss/_screen-reader.scss b/src/dashboard/media/vendor/font-awesome/scss/_screen-reader.scss similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/scss/_screen-reader.scss rename to src/dashboard/media/vendor/font-awesome/scss/_screen-reader.scss diff --git a/src/dashboard/src/media/vendor/font-awesome/scss/_stacked.scss b/src/dashboard/media/vendor/font-awesome/scss/_stacked.scss similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/scss/_stacked.scss rename to src/dashboard/media/vendor/font-awesome/scss/_stacked.scss diff --git a/src/dashboard/src/media/vendor/font-awesome/scss/_variables.scss b/src/dashboard/media/vendor/font-awesome/scss/_variables.scss similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/scss/_variables.scss rename to src/dashboard/media/vendor/font-awesome/scss/_variables.scss diff --git a/src/dashboard/src/media/vendor/font-awesome/scss/font-awesome.scss b/src/dashboard/media/vendor/font-awesome/scss/font-awesome.scss similarity index 100% rename from src/dashboard/src/media/vendor/font-awesome/scss/font-awesome.scss rename to src/dashboard/media/vendor/font-awesome/scss/font-awesome.scss diff --git a/src/dashboard/src/media/vendor/jquery-ui/images/ui-icons_444444_256x240.png b/src/dashboard/media/vendor/jquery-ui/images/ui-icons_444444_256x240.png similarity index 100% rename from src/dashboard/src/media/vendor/jquery-ui/images/ui-icons_444444_256x240.png rename to src/dashboard/media/vendor/jquery-ui/images/ui-icons_444444_256x240.png diff --git a/src/dashboard/src/media/vendor/jquery-ui/images/ui-icons_555555_256x240.png b/src/dashboard/media/vendor/jquery-ui/images/ui-icons_555555_256x240.png similarity index 100% rename from src/dashboard/src/media/vendor/jquery-ui/images/ui-icons_555555_256x240.png rename to src/dashboard/media/vendor/jquery-ui/images/ui-icons_555555_256x240.png diff --git a/src/dashboard/src/media/vendor/jquery-ui/images/ui-icons_777620_256x240.png b/src/dashboard/media/vendor/jquery-ui/images/ui-icons_777620_256x240.png similarity index 100% rename from src/dashboard/src/media/vendor/jquery-ui/images/ui-icons_777620_256x240.png rename to src/dashboard/media/vendor/jquery-ui/images/ui-icons_777620_256x240.png diff --git a/src/dashboard/src/media/vendor/jquery-ui/images/ui-icons_777777_256x240.png b/src/dashboard/media/vendor/jquery-ui/images/ui-icons_777777_256x240.png similarity index 100% rename from src/dashboard/src/media/vendor/jquery-ui/images/ui-icons_777777_256x240.png rename to src/dashboard/media/vendor/jquery-ui/images/ui-icons_777777_256x240.png diff --git a/src/dashboard/src/media/vendor/jquery-ui/images/ui-icons_cc0000_256x240.png b/src/dashboard/media/vendor/jquery-ui/images/ui-icons_cc0000_256x240.png similarity index 100% rename from src/dashboard/src/media/vendor/jquery-ui/images/ui-icons_cc0000_256x240.png rename to src/dashboard/media/vendor/jquery-ui/images/ui-icons_cc0000_256x240.png diff --git a/src/dashboard/src/media/vendor/jquery-ui/images/ui-icons_ffffff_256x240.png b/src/dashboard/media/vendor/jquery-ui/images/ui-icons_ffffff_256x240.png similarity index 100% rename from src/dashboard/src/media/vendor/jquery-ui/images/ui-icons_ffffff_256x240.png rename to src/dashboard/media/vendor/jquery-ui/images/ui-icons_ffffff_256x240.png diff --git a/src/dashboard/src/media/vendor/jquery-ui/jquery-ui.css b/src/dashboard/media/vendor/jquery-ui/jquery-ui.css similarity index 100% rename from src/dashboard/src/media/vendor/jquery-ui/jquery-ui.css rename to src/dashboard/media/vendor/jquery-ui/jquery-ui.css diff --git a/src/dashboard/src/media/vendor/jquery-ui/jquery-ui.js b/src/dashboard/media/vendor/jquery-ui/jquery-ui.js similarity index 100% rename from src/dashboard/src/media/vendor/jquery-ui/jquery-ui.js rename to src/dashboard/media/vendor/jquery-ui/jquery-ui.js diff --git a/src/dashboard/src/media/vendor/jquery.idle-timer.js b/src/dashboard/media/vendor/jquery.idle-timer.js similarity index 100% rename from src/dashboard/src/media/vendor/jquery.idle-timer.js rename to src/dashboard/media/vendor/jquery.idle-timer.js diff --git a/src/dashboard/src/media/vendor/jquery.inputmask.js b/src/dashboard/media/vendor/jquery.inputmask.js similarity index 100% rename from src/dashboard/src/media/vendor/jquery.inputmask.js rename to src/dashboard/media/vendor/jquery.inputmask.js diff --git a/src/dashboard/src/media/vendor/jquery.js b/src/dashboard/media/vendor/jquery.js similarity index 100% rename from src/dashboard/src/media/vendor/jquery.js rename to src/dashboard/media/vendor/jquery.js diff --git a/src/dashboard/src/media/vendor/select2/README.md b/src/dashboard/media/vendor/select2/README.md similarity index 100% rename from src/dashboard/src/media/vendor/select2/README.md rename to src/dashboard/media/vendor/select2/README.md diff --git a/src/dashboard/src/media/vendor/select2/select2.css b/src/dashboard/media/vendor/select2/select2.css similarity index 100% rename from src/dashboard/src/media/vendor/select2/select2.css rename to src/dashboard/media/vendor/select2/select2.css diff --git a/src/dashboard/src/media/vendor/select2/select2.js b/src/dashboard/media/vendor/select2/select2.js similarity index 100% rename from src/dashboard/src/media/vendor/select2/select2.js rename to src/dashboard/media/vendor/select2/select2.js diff --git a/src/dashboard/src/media/vendor/select2/select2.min.js b/src/dashboard/media/vendor/select2/select2.min.js similarity index 100% rename from src/dashboard/src/media/vendor/select2/select2.min.js rename to src/dashboard/media/vendor/select2/select2.min.js diff --git a/src/dashboard/src/media/vendor/select2/select2.png b/src/dashboard/media/vendor/select2/select2.png similarity index 100% rename from src/dashboard/src/media/vendor/select2/select2.png rename to src/dashboard/media/vendor/select2/select2.png diff --git a/src/dashboard/src/media/vendor/select2/spinner.gif b/src/dashboard/media/vendor/select2/spinner.gif similarity index 100% rename from src/dashboard/src/media/vendor/select2/spinner.gif rename to src/dashboard/media/vendor/select2/spinner.gif diff --git a/src/dashboard/src/media/vendor/twitter-bootstrap/.gitignore b/src/dashboard/media/vendor/twitter-bootstrap/.gitignore similarity index 100% rename from src/dashboard/src/media/vendor/twitter-bootstrap/.gitignore rename to src/dashboard/media/vendor/twitter-bootstrap/.gitignore diff --git a/src/dashboard/src/media/vendor/twitter-bootstrap/css/bootstrap-theme.css b/src/dashboard/media/vendor/twitter-bootstrap/css/bootstrap-theme.css similarity index 100% rename from src/dashboard/src/media/vendor/twitter-bootstrap/css/bootstrap-theme.css rename to src/dashboard/media/vendor/twitter-bootstrap/css/bootstrap-theme.css diff --git a/src/dashboard/src/media/vendor/twitter-bootstrap/css/bootstrap-theme.css.map b/src/dashboard/media/vendor/twitter-bootstrap/css/bootstrap-theme.css.map similarity index 100% rename from src/dashboard/src/media/vendor/twitter-bootstrap/css/bootstrap-theme.css.map rename to src/dashboard/media/vendor/twitter-bootstrap/css/bootstrap-theme.css.map diff --git a/src/dashboard/src/media/vendor/twitter-bootstrap/css/bootstrap.css b/src/dashboard/media/vendor/twitter-bootstrap/css/bootstrap.css similarity index 100% rename from src/dashboard/src/media/vendor/twitter-bootstrap/css/bootstrap.css rename to src/dashboard/media/vendor/twitter-bootstrap/css/bootstrap.css diff --git a/src/dashboard/src/media/vendor/twitter-bootstrap/css/bootstrap.css.map b/src/dashboard/media/vendor/twitter-bootstrap/css/bootstrap.css.map similarity index 100% rename from src/dashboard/src/media/vendor/twitter-bootstrap/css/bootstrap.css.map rename to src/dashboard/media/vendor/twitter-bootstrap/css/bootstrap.css.map diff --git a/src/dashboard/src/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.eot b/src/dashboard/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.eot similarity index 100% rename from src/dashboard/src/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.eot rename to src/dashboard/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.eot diff --git a/src/dashboard/src/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.svg b/src/dashboard/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.svg similarity index 100% rename from src/dashboard/src/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.svg rename to src/dashboard/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.svg diff --git a/src/dashboard/src/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.ttf b/src/dashboard/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.ttf similarity index 100% rename from src/dashboard/src/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.ttf rename to src/dashboard/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.ttf diff --git a/src/dashboard/src/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.woff b/src/dashboard/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.woff similarity index 100% rename from src/dashboard/src/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.woff rename to src/dashboard/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.woff diff --git a/src/dashboard/src/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.woff2 b/src/dashboard/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.woff2 similarity index 100% rename from src/dashboard/src/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.woff2 rename to src/dashboard/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.woff2 diff --git a/src/dashboard/src/media/vendor/twitter-bootstrap/js/bootstrap.js b/src/dashboard/media/vendor/twitter-bootstrap/js/bootstrap.js similarity index 100% rename from src/dashboard/src/media/vendor/twitter-bootstrap/js/bootstrap.js rename to src/dashboard/media/vendor/twitter-bootstrap/js/bootstrap.js diff --git a/src/dashboard/src/media/vendor/underscore.js b/src/dashboard/media/vendor/underscore.js similarity index 100% rename from src/dashboard/src/media/vendor/underscore.js rename to src/dashboard/media/vendor/underscore.js diff --git a/src/dashboard/src/middleware/__init__.py b/src/dashboard/middleware/__init__.py similarity index 100% rename from src/dashboard/src/middleware/__init__.py rename to src/dashboard/middleware/__init__.py diff --git a/src/dashboard/src/middleware/common.py b/src/dashboard/middleware/common.py similarity index 100% rename from src/dashboard/src/middleware/common.py rename to src/dashboard/middleware/common.py diff --git a/src/dashboard/src/middleware/locale.py b/src/dashboard/middleware/locale.py similarity index 100% rename from src/dashboard/src/middleware/locale.py rename to src/dashboard/middleware/locale.py diff --git a/src/dashboard/src/settings/__init__.py b/src/dashboard/settings/__init__.py similarity index 100% rename from src/dashboard/src/settings/__init__.py rename to src/dashboard/settings/__init__.py diff --git a/src/dashboard/src/settings/base.py b/src/dashboard/settings/base.py similarity index 100% rename from src/dashboard/src/settings/base.py rename to src/dashboard/settings/base.py diff --git a/src/dashboard/src/settings/components/__init__.py b/src/dashboard/settings/components/__init__.py similarity index 100% rename from src/dashboard/src/settings/components/__init__.py rename to src/dashboard/settings/components/__init__.py diff --git a/src/dashboard/src/settings/components/auth.py b/src/dashboard/settings/components/auth.py similarity index 100% rename from src/dashboard/src/settings/components/auth.py rename to src/dashboard/settings/components/auth.py diff --git a/src/dashboard/src/settings/components/cas_auth.py b/src/dashboard/settings/components/cas_auth.py similarity index 100% rename from src/dashboard/src/settings/components/cas_auth.py rename to src/dashboard/settings/components/cas_auth.py diff --git a/src/dashboard/src/settings/components/csp.py b/src/dashboard/settings/components/csp.py similarity index 100% rename from src/dashboard/src/settings/components/csp.py rename to src/dashboard/settings/components/csp.py diff --git a/src/dashboard/src/settings/components/ldap_auth.py b/src/dashboard/settings/components/ldap_auth.py similarity index 100% rename from src/dashboard/src/settings/components/ldap_auth.py rename to src/dashboard/settings/components/ldap_auth.py diff --git a/src/dashboard/src/settings/components/oidc_auth.py b/src/dashboard/settings/components/oidc_auth.py similarity index 100% rename from src/dashboard/src/settings/components/oidc_auth.py rename to src/dashboard/settings/components/oidc_auth.py diff --git a/src/dashboard/src/settings/components/shibboleth_auth.py b/src/dashboard/settings/components/shibboleth_auth.py similarity index 100% rename from src/dashboard/src/settings/components/shibboleth_auth.py rename to src/dashboard/settings/components/shibboleth_auth.py diff --git a/src/dashboard/src/settings/local.py b/src/dashboard/settings/local.py similarity index 100% rename from src/dashboard/src/settings/local.py rename to src/dashboard/settings/local.py diff --git a/src/dashboard/src/settings/production.py b/src/dashboard/settings/production.py similarity index 100% rename from src/dashboard/src/settings/production.py rename to src/dashboard/settings/production.py diff --git a/src/dashboard/src/settings/test.py b/src/dashboard/settings/test.py similarity index 100% rename from src/dashboard/src/settings/test.py rename to src/dashboard/settings/test.py diff --git a/src/dashboard/src/settings/testmysql.py b/src/dashboard/settings/testmysql.py similarity index 100% rename from src/dashboard/src/settings/testmysql.py rename to src/dashboard/settings/testmysql.py diff --git a/src/dashboard/src/templates/404.html b/src/dashboard/templates/404.html similarity index 100% rename from src/dashboard/src/templates/404.html rename to src/dashboard/templates/404.html diff --git a/src/dashboard/src/templates/500.html b/src/dashboard/templates/500.html similarity index 100% rename from src/dashboard/src/templates/500.html rename to src/dashboard/templates/500.html diff --git a/src/dashboard/src/templates/_form.html b/src/dashboard/templates/_form.html similarity index 100% rename from src/dashboard/src/templates/_form.html rename to src/dashboard/templates/_form.html diff --git a/src/dashboard/src/templates/_formset.html b/src/dashboard/templates/_formset.html similarity index 100% rename from src/dashboard/src/templates/_formset.html rename to src/dashboard/templates/_formset.html diff --git a/src/dashboard/src/templates/_formset_table.html b/src/dashboard/templates/_formset_table.html similarity index 100% rename from src/dashboard/src/templates/_formset_table.html rename to src/dashboard/templates/_formset_table.html diff --git a/src/dashboard/src/templates/_fpr_update_button.html b/src/dashboard/templates/_fpr_update_button.html similarity index 100% rename from src/dashboard/src/templates/_fpr_update_button.html rename to src/dashboard/templates/_fpr_update_button.html diff --git a/src/dashboard/src/templates/_messages.html b/src/dashboard/templates/_messages.html similarity index 100% rename from src/dashboard/src/templates/_messages.html rename to src/dashboard/templates/_messages.html diff --git a/src/dashboard/src/templates/_pager.html b/src/dashboard/templates/_pager.html similarity index 100% rename from src/dashboard/src/templates/_pager.html rename to src/dashboard/templates/_pager.html diff --git a/src/dashboard/src/templates/accounts/add.html b/src/dashboard/templates/accounts/add.html similarity index 100% rename from src/dashboard/src/templates/accounts/add.html rename to src/dashboard/templates/accounts/add.html diff --git a/src/dashboard/src/templates/accounts/edit.html b/src/dashboard/templates/accounts/edit.html similarity index 100% rename from src/dashboard/src/templates/accounts/edit.html rename to src/dashboard/templates/accounts/edit.html diff --git a/src/dashboard/src/templates/accounts/list.html b/src/dashboard/templates/accounts/list.html similarity index 100% rename from src/dashboard/src/templates/accounts/list.html rename to src/dashboard/templates/accounts/list.html diff --git a/src/dashboard/src/templates/accounts/logged_out.html b/src/dashboard/templates/accounts/logged_out.html similarity index 100% rename from src/dashboard/src/templates/accounts/logged_out.html rename to src/dashboard/templates/accounts/logged_out.html diff --git a/src/dashboard/src/templates/accounts/login.html b/src/dashboard/templates/accounts/login.html similarity index 100% rename from src/dashboard/src/templates/accounts/login.html rename to src/dashboard/templates/accounts/login.html diff --git a/src/dashboard/src/templates/accounts/profile.html b/src/dashboard/templates/accounts/profile.html similarity index 100% rename from src/dashboard/src/templates/accounts/profile.html rename to src/dashboard/templates/accounts/profile.html diff --git a/src/dashboard/src/templates/administration/api.html b/src/dashboard/templates/administration/api.html similarity index 100% rename from src/dashboard/src/templates/administration/api.html rename to src/dashboard/templates/administration/api.html diff --git a/src/dashboard/src/templates/administration/atom_levels_of_description.html b/src/dashboard/templates/administration/atom_levels_of_description.html similarity index 100% rename from src/dashboard/src/templates/administration/atom_levels_of_description.html rename to src/dashboard/templates/administration/atom_levels_of_description.html diff --git a/src/dashboard/src/templates/administration/dips_as_edit.html b/src/dashboard/templates/administration/dips_as_edit.html similarity index 100% rename from src/dashboard/src/templates/administration/dips_as_edit.html rename to src/dashboard/templates/administration/dips_as_edit.html diff --git a/src/dashboard/src/templates/administration/dips_atom_edit.html b/src/dashboard/templates/administration/dips_atom_edit.html similarity index 100% rename from src/dashboard/src/templates/administration/dips_atom_edit.html rename to src/dashboard/templates/administration/dips_atom_edit.html diff --git a/src/dashboard/src/templates/administration/general.html b/src/dashboard/templates/administration/general.html similarity index 100% rename from src/dashboard/src/templates/administration/general.html rename to src/dashboard/templates/administration/general.html diff --git a/src/dashboard/src/templates/administration/handle_config.html b/src/dashboard/templates/administration/handle_config.html similarity index 100% rename from src/dashboard/src/templates/administration/handle_config.html rename to src/dashboard/templates/administration/handle_config.html diff --git a/src/dashboard/src/templates/administration/language.html b/src/dashboard/templates/administration/language.html similarity index 100% rename from src/dashboard/src/templates/administration/language.html rename to src/dashboard/templates/administration/language.html diff --git a/src/dashboard/src/templates/administration/locations.html b/src/dashboard/templates/administration/locations.html similarity index 100% rename from src/dashboard/src/templates/administration/locations.html rename to src/dashboard/templates/administration/locations.html diff --git a/src/dashboard/src/templates/administration/premis_agent.html b/src/dashboard/templates/administration/premis_agent.html similarity index 100% rename from src/dashboard/src/templates/administration/premis_agent.html rename to src/dashboard/templates/administration/premis_agent.html diff --git a/src/dashboard/src/templates/administration/processing.html b/src/dashboard/templates/administration/processing.html similarity index 100% rename from src/dashboard/src/templates/administration/processing.html rename to src/dashboard/templates/administration/processing.html diff --git a/src/dashboard/src/templates/administration/processing_edit.html b/src/dashboard/templates/administration/processing_edit.html similarity index 100% rename from src/dashboard/src/templates/administration/processing_edit.html rename to src/dashboard/templates/administration/processing_edit.html diff --git a/src/dashboard/src/templates/administration/reports/failure_detail.html b/src/dashboard/templates/administration/reports/failure_detail.html similarity index 100% rename from src/dashboard/src/templates/administration/reports/failure_detail.html rename to src/dashboard/templates/administration/reports/failure_detail.html diff --git a/src/dashboard/src/templates/administration/reports/failures.html b/src/dashboard/templates/administration/reports/failures.html similarity index 100% rename from src/dashboard/src/templates/administration/reports/failures.html rename to src/dashboard/templates/administration/reports/failures.html diff --git a/src/dashboard/src/templates/administration/sidebar.html b/src/dashboard/templates/administration/sidebar.html similarity index 100% rename from src/dashboard/src/templates/administration/sidebar.html rename to src/dashboard/templates/administration/sidebar.html diff --git a/src/dashboard/src/templates/administration/taxonomy.html b/src/dashboard/templates/administration/taxonomy.html similarity index 100% rename from src/dashboard/src/templates/administration/taxonomy.html rename to src/dashboard/templates/administration/taxonomy.html diff --git a/src/dashboard/src/templates/administration/term_detail.html b/src/dashboard/templates/administration/term_detail.html similarity index 100% rename from src/dashboard/src/templates/administration/term_detail.html rename to src/dashboard/templates/administration/term_detail.html diff --git a/src/dashboard/src/templates/administration/terms.html b/src/dashboard/templates/administration/terms.html similarity index 100% rename from src/dashboard/src/templates/administration/terms.html rename to src/dashboard/templates/administration/terms.html diff --git a/src/dashboard/src/templates/administration/usage.html b/src/dashboard/templates/administration/usage.html similarity index 100% rename from src/dashboard/src/templates/administration/usage.html rename to src/dashboard/templates/administration/usage.html diff --git a/src/dashboard/src/templates/administration/version.html b/src/dashboard/templates/administration/version.html similarity index 100% rename from src/dashboard/src/templates/administration/version.html rename to src/dashboard/templates/administration/version.html diff --git a/src/dashboard/src/templates/appraisal/appraisal.html b/src/dashboard/templates/appraisal/appraisal.html similarity index 100% rename from src/dashboard/src/templates/appraisal/appraisal.html rename to src/dashboard/templates/appraisal/appraisal.html diff --git a/src/dashboard/src/templates/archival_storage/_archival_storage_search_form.html b/src/dashboard/templates/archival_storage/_archival_storage_search_form.html similarity index 100% rename from src/dashboard/src/templates/archival_storage/_archival_storage_search_form.html rename to src/dashboard/templates/archival_storage/_archival_storage_search_form.html diff --git a/src/dashboard/src/templates/archival_storage/archival_storage.html b/src/dashboard/templates/archival_storage/archival_storage.html similarity index 100% rename from src/dashboard/src/templates/archival_storage/archival_storage.html rename to src/dashboard/templates/archival_storage/archival_storage.html diff --git a/src/dashboard/src/templates/archival_storage/view.html b/src/dashboard/templates/archival_storage/view.html similarity index 100% rename from src/dashboard/src/templates/archival_storage/view.html rename to src/dashboard/templates/archival_storage/view.html diff --git a/src/dashboard/src/templates/backlog/backlog.html b/src/dashboard/templates/backlog/backlog.html similarity index 100% rename from src/dashboard/src/templates/backlog/backlog.html rename to src/dashboard/templates/backlog/backlog.html diff --git a/src/dashboard/src/templates/delete_request.html b/src/dashboard/templates/delete_request.html similarity index 100% rename from src/dashboard/src/templates/delete_request.html rename to src/dashboard/templates/delete_request.html diff --git a/src/dashboard/src/templates/elasticsearch_error.html b/src/dashboard/templates/elasticsearch_error.html similarity index 100% rename from src/dashboard/src/templates/elasticsearch_error.html rename to src/dashboard/templates/elasticsearch_error.html diff --git a/src/dashboard/src/templates/elasticsearch_not_found.html b/src/dashboard/templates/elasticsearch_not_found.html similarity index 100% rename from src/dashboard/src/templates/elasticsearch_not_found.html rename to src/dashboard/templates/elasticsearch_not_found.html diff --git a/src/dashboard/src/templates/forbidden.html b/src/dashboard/templates/forbidden.html similarity index 100% rename from src/dashboard/src/templates/forbidden.html rename to src/dashboard/templates/forbidden.html diff --git a/src/dashboard/src/templates/ingest/aip_browse.html b/src/dashboard/templates/ingest/aip_browse.html similarity index 100% rename from src/dashboard/src/templates/ingest/aip_browse.html rename to src/dashboard/templates/ingest/aip_browse.html diff --git a/src/dashboard/src/templates/ingest/as/_search_form.html b/src/dashboard/templates/ingest/as/_search_form.html similarity index 100% rename from src/dashboard/src/templates/ingest/as/_search_form.html rename to src/dashboard/templates/ingest/as/_search_form.html diff --git a/src/dashboard/src/templates/ingest/as/match.html b/src/dashboard/templates/ingest/as/match.html similarity index 100% rename from src/dashboard/src/templates/ingest/as/match.html rename to src/dashboard/templates/ingest/as/match.html diff --git a/src/dashboard/src/templates/ingest/as/resource_component.html b/src/dashboard/templates/ingest/as/resource_component.html similarity index 100% rename from src/dashboard/src/templates/ingest/as/resource_component.html rename to src/dashboard/templates/ingest/as/resource_component.html diff --git a/src/dashboard/src/templates/ingest/as/resource_detail.html b/src/dashboard/templates/ingest/as/resource_detail.html similarity index 100% rename from src/dashboard/src/templates/ingest/as/resource_detail.html rename to src/dashboard/templates/ingest/as/resource_detail.html diff --git a/src/dashboard/src/templates/ingest/as/resource_list.html b/src/dashboard/templates/ingest/as/resource_list.html similarity index 100% rename from src/dashboard/src/templates/ingest/as/resource_list.html rename to src/dashboard/templates/ingest/as/resource_list.html diff --git a/src/dashboard/src/templates/ingest/as/review_matches.html b/src/dashboard/templates/ingest/as/review_matches.html similarity index 100% rename from src/dashboard/src/templates/ingest/as/review_matches.html rename to src/dashboard/templates/ingest/as/review_matches.html diff --git a/src/dashboard/src/templates/ingest/backlog/_search_form.html b/src/dashboard/templates/ingest/backlog/_search_form.html similarity index 100% rename from src/dashboard/src/templates/ingest/backlog/_search_form.html rename to src/dashboard/templates/ingest/backlog/_search_form.html diff --git a/src/dashboard/src/templates/ingest/detail.html b/src/dashboard/templates/ingest/detail.html similarity index 100% rename from src/dashboard/src/templates/ingest/detail.html rename to src/dashboard/templates/ingest/detail.html diff --git a/src/dashboard/src/templates/ingest/grid.html b/src/dashboard/templates/ingest/grid.html similarity index 100% rename from src/dashboard/src/templates/ingest/grid.html rename to src/dashboard/templates/ingest/grid.html diff --git a/src/dashboard/src/templates/ingest/metadata_add_files.html b/src/dashboard/templates/ingest/metadata_add_files.html similarity index 100% rename from src/dashboard/src/templates/ingest/metadata_add_files.html rename to src/dashboard/templates/ingest/metadata_add_files.html diff --git a/src/dashboard/src/templates/ingest/metadata_edit.html b/src/dashboard/templates/ingest/metadata_edit.html similarity index 100% rename from src/dashboard/src/templates/ingest/metadata_edit.html rename to src/dashboard/templates/ingest/metadata_edit.html diff --git a/src/dashboard/src/templates/ingest/metadata_event_detail.html b/src/dashboard/templates/ingest/metadata_event_detail.html similarity index 100% rename from src/dashboard/src/templates/ingest/metadata_event_detail.html rename to src/dashboard/templates/ingest/metadata_event_detail.html diff --git a/src/dashboard/src/templates/ingest/metadata_list.html b/src/dashboard/templates/ingest/metadata_list.html similarity index 100% rename from src/dashboard/src/templates/ingest/metadata_list.html rename to src/dashboard/templates/ingest/metadata_list.html diff --git a/src/dashboard/src/templates/ingest/microservices.html b/src/dashboard/templates/ingest/microservices.html similarity index 100% rename from src/dashboard/src/templates/ingest/microservices.html rename to src/dashboard/templates/ingest/microservices.html diff --git a/src/dashboard/src/templates/ingest/normalization_report.html b/src/dashboard/templates/ingest/normalization_report.html similarity index 100% rename from src/dashboard/src/templates/ingest/normalization_report.html rename to src/dashboard/templates/ingest/normalization_report.html diff --git a/src/dashboard/src/templates/installer/storagesetup.html b/src/dashboard/templates/installer/storagesetup.html similarity index 100% rename from src/dashboard/src/templates/installer/storagesetup.html rename to src/dashboard/templates/installer/storagesetup.html diff --git a/src/dashboard/src/templates/installer/welcome.html b/src/dashboard/templates/installer/welcome.html similarity index 100% rename from src/dashboard/src/templates/installer/welcome.html rename to src/dashboard/templates/installer/welcome.html diff --git a/src/dashboard/src/templates/layout.html b/src/dashboard/templates/layout.html similarity index 100% rename from src/dashboard/src/templates/layout.html rename to src/dashboard/templates/layout.html diff --git a/src/dashboard/src/templates/layout_ajax.html b/src/dashboard/templates/layout_ajax.html similarity index 100% rename from src/dashboard/src/templates/layout_ajax.html rename to src/dashboard/templates/layout_ajax.html diff --git a/src/dashboard/src/templates/layout_fluid.html b/src/dashboard/templates/layout_fluid.html similarity index 100% rename from src/dashboard/src/templates/layout_fluid.html rename to src/dashboard/templates/layout_fluid.html diff --git a/src/dashboard/src/templates/main/_tasks_pager.html b/src/dashboard/templates/main/_tasks_pager.html similarity index 100% rename from src/dashboard/src/templates/main/_tasks_pager.html rename to src/dashboard/templates/main/_tasks_pager.html diff --git a/src/dashboard/src/templates/main/access.html b/src/dashboard/templates/main/access.html similarity index 100% rename from src/dashboard/src/templates/main/access.html rename to src/dashboard/templates/main/access.html diff --git a/src/dashboard/src/templates/main/tasks.html b/src/dashboard/templates/main/tasks.html similarity index 100% rename from src/dashboard/src/templates/main/tasks.html rename to src/dashboard/templates/main/tasks.html diff --git a/src/dashboard/src/templates/rights/rights_edit.html b/src/dashboard/templates/rights/rights_edit.html similarity index 100% rename from src/dashboard/src/templates/rights/rights_edit.html rename to src/dashboard/templates/rights/rights_edit.html diff --git a/src/dashboard/src/templates/rights/rights_grants_edit.html b/src/dashboard/templates/rights/rights_grants_edit.html similarity index 100% rename from src/dashboard/src/templates/rights/rights_grants_edit.html rename to src/dashboard/templates/rights/rights_grants_edit.html diff --git a/src/dashboard/src/templates/rights/rights_list.html b/src/dashboard/templates/rights/rights_list.html similarity index 100% rename from src/dashboard/src/templates/rights/rights_list.html rename to src/dashboard/templates/rights/rights_list.html diff --git a/src/dashboard/src/templates/simple_confirm.html b/src/dashboard/templates/simple_confirm.html similarity index 100% rename from src/dashboard/src/templates/simple_confirm.html rename to src/dashboard/templates/simple_confirm.html diff --git a/src/dashboard/src/templates/transfer/component.html b/src/dashboard/templates/transfer/component.html similarity index 100% rename from src/dashboard/src/templates/transfer/component.html rename to src/dashboard/templates/transfer/component.html diff --git a/src/dashboard/src/templates/transfer/detail.html b/src/dashboard/templates/transfer/detail.html similarity index 100% rename from src/dashboard/src/templates/transfer/detail.html rename to src/dashboard/templates/transfer/detail.html diff --git a/src/dashboard/src/templates/transfer/grid.html b/src/dashboard/templates/transfer/grid.html similarity index 100% rename from src/dashboard/src/templates/transfer/grid.html rename to src/dashboard/templates/transfer/grid.html diff --git a/src/dashboard/src/templates/transfer/metadata_edit.html b/src/dashboard/templates/transfer/metadata_edit.html similarity index 100% rename from src/dashboard/src/templates/transfer/metadata_edit.html rename to src/dashboard/templates/transfer/metadata_edit.html diff --git a/src/dashboard/src/templates/transfer/metadata_list.html b/src/dashboard/templates/transfer/metadata_list.html similarity index 100% rename from src/dashboard/src/templates/transfer/metadata_list.html rename to src/dashboard/templates/transfer/metadata_list.html diff --git a/src/dashboard/src/templates/transfer/microservices.html b/src/dashboard/templates/transfer/microservices.html similarity index 100% rename from src/dashboard/src/templates/transfer/microservices.html rename to src/dashboard/templates/transfer/microservices.html diff --git a/src/dashboard/src/urls.py b/src/dashboard/urls.py similarity index 100% rename from src/dashboard/src/urls.py rename to src/dashboard/urls.py diff --git a/src/dashboard/src/wsgi.py b/src/dashboard/wsgi.py similarity index 100% rename from src/dashboard/src/wsgi.py rename to src/dashboard/wsgi.py diff --git a/tests/MCPClient/conftest.py b/tests/MCPClient/conftest.py index d9ef8decbf..8e18d6b6d2 100644 --- a/tests/MCPClient/conftest.py +++ b/tests/MCPClient/conftest.py @@ -17,7 +17,6 @@ def set_xml_catalog_files(monkeypatch: pytest.MonkeyPatch) -> None: pathlib.Path(__file__).parent.parent.parent / "src" / "MCPClient" - / "lib" / "assets" / "catalog" / "catalog.xml" diff --git a/tests/MCPClient/test_create_aip_mets.py b/tests/MCPClient/test_create_aip_mets.py index 7ac8267127..53bcf4b240 100644 --- a/tests/MCPClient/test_create_aip_mets.py +++ b/tests/MCPClient/test_create_aip_mets.py @@ -753,7 +753,7 @@ class TestCustomStructMap(TestCase): ] fixtures = [os.path.join(THIS_DIR, "fixtures", p) for p in fixture_files] mets_xsd_path = os.path.abspath( - os.path.join(THIS_DIR, "../../src/MCPClient/lib/assets/mets/mets.xsd") + os.path.join(THIS_DIR, "../../src/MCPClient/assets/mets/mets.xsd") ) @pytest.fixture(autouse=True) diff --git a/tests/MCPClient/test_ensure_no_mutable_globals.py b/tests/MCPClient/test_ensure_no_mutable_globals.py index aa3124af1d..046b7d5cb9 100755 --- a/tests/MCPClient/test_ensure_no_mutable_globals.py +++ b/tests/MCPClient/test_ensure_no_mutable_globals.py @@ -154,7 +154,6 @@ def test_ensure_no_mutable_globals(): pathlib.Path(__file__).parent.parent.parent / "src" / "MCPClient" - / "lib" / "archivematicaClientModules" ) diff --git a/tests/MCPClient/test_load_premis_events_from_xml.py b/tests/MCPClient/test_load_premis_events_from_xml.py index 0bebb7d6d5..3d923e1528 100644 --- a/tests/MCPClient/test_load_premis_events_from_xml.py +++ b/tests/MCPClient/test_load_premis_events_from_xml.py @@ -17,7 +17,7 @@ @pytest.fixture() def xsd_path(): return os.path.abspath( - os.path.join(THIS_DIR, "../../src/MCPClient/lib/assets/premis/premis.xsd") + os.path.join(THIS_DIR, "../../src/MCPClient/assets/premis/premis.xsd") ) diff --git a/tests/MCPClient/upload-qubit-test b/tests/MCPClient/upload-qubit-test index 7c4d3176a6..5c8db56aee 100755 --- a/tests/MCPClient/upload-qubit-test +++ b/tests/MCPClient/upload-qubit-test @@ -1,7 +1,7 @@ #!/bin/bash # upload-qubit script location -UPLOAD_QUBIT_PATH="${HOME}/archivematica/src/MCPClient/lib/clientScripts/upload-qubit.py" +UPLOAD_QUBIT_PATH="${HOME}/archivematica/src/MCPClient/clientScripts/upload-qubit.py" # Qubit URL and login URL="http://localhost/ica-atom/index.php/sword/deposit/archivematica" diff --git a/tests/MCPServer/test_processing_config.py b/tests/MCPServer/test_processing_config.py index 80d39f9b67..d3cadf40fe 100644 --- a/tests/MCPServer/test_processing_config.py +++ b/tests/MCPServer/test_processing_config.py @@ -13,7 +13,7 @@ from server.workflow import load ASSETS_DIR = ( - pathlib.Path(__file__).parent.parent.parent / "src" / "MCPServer" / "lib" / "assets" + pathlib.Path(__file__).parent.parent.parent / "src" / "MCPServer" / "assets" ) diff --git a/tests/MCPServer/test_rpc_server.py b/tests/MCPServer/test_rpc_server.py index bd586f437b..de31437635 100644 --- a/tests/MCPServer/test_rpc_server.py +++ b/tests/MCPServer/test_rpc_server.py @@ -10,7 +10,7 @@ from server import workflow ASSETS_DIR = ( - pathlib.Path(__file__).parent.parent.parent / "src" / "MCPServer" / "lib" / "assets" + pathlib.Path(__file__).parent.parent.parent / "src" / "MCPServer" / "assets" ) diff --git a/tests/MCPServer/test_workflow.py b/tests/MCPServer/test_workflow.py index d8b318854b..fe921d6ceb 100644 --- a/tests/MCPServer/test_workflow.py +++ b/tests/MCPServer/test_workflow.py @@ -9,7 +9,7 @@ from server import workflow ASSETS_DIR = ( - pathlib.Path(__file__).parent.parent.parent / "src" / "MCPServer" / "lib" / "assets" + pathlib.Path(__file__).parent.parent.parent / "src" / "MCPServer" / "assets" ) FIXTURES_DIR = pathlib.Path(__file__).parent / "fixtures" diff --git a/tests/MCPServer/test_workflow_abilities.py b/tests/MCPServer/test_workflow_abilities.py index b5c5bab3c9..09939d13af 100644 --- a/tests/MCPServer/test_workflow_abilities.py +++ b/tests/MCPServer/test_workflow_abilities.py @@ -6,7 +6,7 @@ from server.workflow_abilities import choice_is_available ASSETS_DIR = ( - pathlib.Path(__file__).parent.parent.parent / "src" / "MCPServer" / "lib" / "assets" + pathlib.Path(__file__).parent.parent.parent / "src" / "MCPServer" / "assets" ) diff --git a/tests/dashboard/test_helpers.py b/tests/dashboard/test_helpers.py index 85916dc7dd..48fb690087 100644 --- a/tests/dashboard/test_helpers.py +++ b/tests/dashboard/test_helpers.py @@ -178,7 +178,7 @@ def test_stream_pointer_from_storage_no_content_type(get, tmpdir, mets_hdr): def test_send_file(tmp_path): - # Contents of dashboard/src/media/images/1x1-pixel.png + # Contents of dashboard/media/images/1x1-pixel.png data = b"\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x01\x00\x00\x00\x01\x01\x03\x00\x00\x00%\xdbV\xca\x00\x00\x00\x03PLTE\x00\x00\x00\xa7z=\xda\x00\x00\x00\x01tRNS\x00@\xe6\xd8f\x00\x00\x00\nIDAT\x08\x1dc`\x00\x00\x00\x02\x00\x01\xcf\xc85\xe5\x00\x00\x00\x00IEND\xaeB`\x82" f = tmp_path / "image.png" f.write_bytes(data) From 4a2072524dec723bc0a69096fc3a511f2d55c461 Mon Sep 17 00:00:00 2001 From: "Douglas Cerna (Soy Douglas)" Date: Tue, 11 Mar 2025 15:06:15 +0000 Subject: [PATCH 22/99] Include management commands in coverage report --- pyproject.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index fb40d828d3..7d6b88bdf5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,7 +7,6 @@ norecursedirs = ".svn _build tmp* node_modules bower_components share .tox" omit = [ "**/src/archivematicaCommon/externals/*", "**/migrations/*", - "**/management/commands/*", "**/settings/*", "**/tests/*", "**/wsgi.py", From ec0d4c74357d3c20d0b4da1c04f6c6d98490b622 Mon Sep 17 00:00:00 2001 From: "Douglas Cerna (Soy Douglas)" Date: Thu, 13 Mar 2025 18:33:52 +0000 Subject: [PATCH 23/99] Upgrade JHOVE to 1.32.1 in hack/Dockerfile --- hack/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hack/Dockerfile b/hack/Dockerfile index 3cc0a84066..ba786f4ad1 100644 --- a/hack/Dockerfile +++ b/hack/Dockerfile @@ -7,7 +7,7 @@ ARG NODE_VERSION=20 ARG PYENV_DIR=/pyenv ARG SELENIUM_DIR=/selenium ARG MEDIAAREA_VERSION=1.0-25 -ARG JHOVE_VERSION=1.26.1-1~22.04 +ARG JHOVE_VERSION=1.32.1-1~22.04 # ----------------------------------------------------------------------------- From e30c930a05aa5d3ad687c8571e2b2c91eefcc8b6 Mon Sep 17 00:00:00 2001 From: "Douglas Cerna (Soy Douglas)" Date: Fri, 14 Mar 2025 13:46:03 +0000 Subject: [PATCH 24/99] Extend test coverage of FPR management commands --- pyproject.toml | 2 + .../fpr/test_command_get_fpr_changes.py | 117 ++++++++++++++++++ .../fpr/test_command_import_pronom_ids.py | 89 +++++++++++++ 3 files changed, 208 insertions(+) create mode 100644 tests/dashboard/fpr/test_command_get_fpr_changes.py create mode 100644 tests/dashboard/fpr/test_command_import_pronom_ids.py diff --git a/pyproject.toml b/pyproject.toml index 7d6b88bdf5..56eb4d9088 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -69,6 +69,8 @@ module = [ "tests.archivematicaCommon.test_execute_functions", "tests.dashboard.components.accounts.test_views", "tests.dashboard.components.administration.test_administration", + "tests.dashboard.fpr.test_command_get_fpr_changes", + "tests.dashboard.fpr.test_command_import_pronom_ids", "tests.dashboard.fpr.test_views", "tests.dashboard.test_oidc", "tests.integration.test_oidc_auth", diff --git a/tests/dashboard/fpr/test_command_get_fpr_changes.py b/tests/dashboard/fpr/test_command_get_fpr_changes.py new file mode 100644 index 0000000000..021a02d454 --- /dev/null +++ b/tests/dashboard/fpr/test_command_get_fpr_changes.py @@ -0,0 +1,117 @@ +import json +import pathlib + +import pytest +from django.core.management import call_command + + +@pytest.mark.django_db +def test_command_outputs_new_fpr_entries( + tmp_path: pathlib.Path, capsys: pytest.CaptureFixture[str] +) -> None: + old_json = [ + { + "model": "fpr.formatgroup", + "pk": 1, + "fields": { + "uuid": "c94ce0e6-c275-4c09-b802-695a18b7bf2a", + "description": "Audio", + "slug": "audio", + }, + }, + { + "model": "fpr.format", + "pk": 1, + "fields": { + "uuid": "22147b00-0fdc-4653-aa7b-618d1f4b6ffb", + "description": "Audio Interchange File Format", + "group": "c94ce0e6-c275-4c09-b802-695a18b7bf2a", + "slug": "audio-interchange-file-format", + }, + }, + { + "model": "fpr.formatversion", + "pk": 152, + "fields": { + "replaces": None, + "enabled": True, + "lastmodified": "2013-11-15T01:18:31Z", + "uuid": "36800d63-1bb5-4324-ba8c-90e222eeddbc", + "format": "22147b00-0fdc-4653-aa7b-618d1f4b6ffb", + "version": "1.2", + "pronom_id": "fmt/414", + "description": "Audio Interchange File Format ", + "access_format": False, + "preservation_format": False, + "slug": "audio-interchange-file-format-12", + }, + }, + ] + new_format_groups = [ + { + "model": "fpr.formatgroup", + "pk": 2, + "fields": { + "uuid": "5b14d57c-d6f1-4807-b98d-0a574d6bf8fc", + "description": "Email", + "slug": "email", + }, + }, + ] + new_formats = [ + { + "model": "fpr.format", + "pk": 6, + "fields": { + "uuid": "187d9216-7a53-4ef6-b9dd-4a397c414543", + "description": "Archivematica Maildir", + "group": "5b14d57c-d6f1-4807-b98d-0a574d6bf8fc", + "slug": "archivematica-maildir", + }, + }, + ] + new_format_versions = [ + { + "model": "fpr.formatversion", + "pk": 259, + "fields": { + "replaces": None, + "enabled": True, + "lastmodified": "2013-11-15T01:18:32Z", + "uuid": "c6a208a1-8abc-47b9-9b1e-47c877aa4a0f", + "format": "187d9216-7a53-4ef6-b9dd-4a397c414543", + "version": "", + "pronom_id": "", + "description": "Archivematica Maildir", + "access_format": False, + "preservation_format": True, + "slug": "archivematica-maildir", + }, + }, + ] + new_entries = new_formats + new_format_groups + new_format_versions + new_json = old_json + new_entries + + old_json_path = tmp_path / "old.json" + new_json_path = tmp_path / "new.json" + output_path = tmp_path / "output" + old_json_path.write_text(json.dumps(old_json)) + new_json_path.write_text(json.dumps(new_json)) + + call_command( + "get_fpr_changes", str(old_json_path), str(new_json_path), str(output_path) + ) + + captured = capsys.readouterr() + assert ( + "\n".join( + [ + f"{len(new_entries)} new entries total", + f"{len(new_formats)} new entries for fpr.format", + f"{len(new_format_groups)} new entries for fpr.formatgroup", + f"{len(new_format_versions)} new entries for fpr.formatversion", + ] + ) + in captured.out + ) + assert json.loads(output_path.read_text()) == new_entries diff --git a/tests/dashboard/fpr/test_command_import_pronom_ids.py b/tests/dashboard/fpr/test_command_import_pronom_ids.py new file mode 100644 index 0000000000..a84118db82 --- /dev/null +++ b/tests/dashboard/fpr/test_command_import_pronom_ids.py @@ -0,0 +1,89 @@ +import pathlib +import uuid +from unittest import mock + +import pytest +import pytest_django +from django.core.management import call_command + + +@pytest.mark.django_db +def test_command_fails_if_xml_file_does_not_exist(tmp_path: pathlib.Path) -> None: + with pytest.raises(SystemExit, match="Pronom XML file does not exist!"): + call_command("import_pronom_ids", str(tmp_path / "bogus.xml")) + + +@pytest.mark.django_db +def test_command_saves_data_migration_to_file( + tmp_path: pathlib.Path, + capsys: pytest.CaptureFixture[str], + settings: pytest_django.fixtures.SettingsWrapper, +) -> None: + # Enable connection.queries used in the command. + settings.DEBUG = True + + # These identifiers are hardcoded in the command. + file_by_extension_command_uuid = uuid.UUID("8546b624-7894-4201-8df6-f239d5e0d5ba") + unknown_group_uuid = uuid.UUID("00abbdd0-51b3-4162-b93a-45deb4ed8654") + + format_uuid = uuid.uuid4() + format_version_uuid = uuid.uuid4() + idrule_uuid = uuid.uuid4() + + xml_format_puid = "fmt/9999999" + xml_format_name = "My new format" + xml_format_version = "1.0" + xml_format_pronom_id = "1" + xml_format_extension = "foobar" + xml_format_signature_name = "My signature name" + + output_file_path = tmp_path / "output.xml" + pronom_xml_path = tmp_path / "pronom.xml" + pronom_xml_path.write_text(f""" + + + {xml_format_puid} + {xml_format_name} + {xml_format_version} + {xml_format_pronom_id} + {xml_format_extension} + + {xml_format_signature_name} + + + + """) + + with mock.patch( + "uuid.uuid4", side_effect=[format_uuid, format_version_uuid, idrule_uuid] + ): + with pytest.raises(SystemExit) as excinfo: + call_command( + "import_pronom_ids", + "--output-filename", + str(output_file_path), + "--output-format", + "migration", + str(pronom_xml_path), + ) + assert excinfo.value.code is None + + captured = capsys.readouterr() + assert captured.out.strip() == "\n".join( + [ + f"Format {xml_format_puid} does not exist", + f"Importing {xml_format_signature_name} {xml_format_puid}", + ] + ) + assert output_file_path.read_text().strip() == "\n".join( + [ + "def data_migration(apps, schema_editor):", + " Format = apps.get_model('fpr', 'Format')", + " FormatVersion = apps.get_model('fpr', 'FormatVersion')", + " IDRule = apps.get_model('fpr', 'IDRule')", + "", + f' Format.objects.create(description="""{xml_format_name}""", group_id="{unknown_group_uuid}", uuid="{format_uuid}")', + f' FormatVersion.objects.create(format_id="{format_uuid}", pronom_id="{xml_format_puid}", description="""{xml_format_signature_name}""", version="{xml_format_version}", uuid="{format_version_uuid}")', + f' IDRule.objects.create(format_id="{format_version_uuid}", command_id="{file_by_extension_command_uuid}", command_output=".{xml_format_extension}")', + ] + ) From 18f2c445366242713de6434aaa8afbf36c711ca6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Garc=C3=ADa=20Crespo?= Date: Thu, 20 Mar 2025 21:26:47 +0100 Subject: [PATCH 25/99] Delete unused code --- src/archivematicaCommon/dicts.py | 20 -------------------- tests/archivematicaCommon/test_dicts.py | 16 ---------------- 2 files changed, 36 deletions(-) diff --git a/src/archivematicaCommon/dicts.py b/src/archivematicaCommon/dicts.py index 18218dc17b..8c1e7741ae 100644 --- a/src/archivematicaCommon/dicts.py +++ b/src/archivematicaCommon/dicts.py @@ -14,7 +14,6 @@ # # You should have received a copy of the GNU General Public License # along with Archivematica. If not, see . -import ast import os import re import uuid @@ -45,16 +44,6 @@ def replace_string_values(string, **kwargs): class ReplacementDict(dict): - @staticmethod - def fromstring(s): - """ - Create a new ReplacementDict given a string representing a - serialized Python dict. This is commonly used within the - MCPServer, where unit variables are frequently dicts stored - in the database. - """ - return ReplacementDict(ast.literal_eval(s)) - @staticmethod def frommodel(type_="file", sip=None, file_=None, expand_path=True): """ @@ -230,12 +219,3 @@ def to_gnu_options(self): args.append(f"--{optname}={value}") return args - - -class ChoicesDict(ReplacementDict): - @staticmethod - def fromstring(s): - """ - See ReplacementDict.fromstring. - """ - return ChoicesDict(ast.literal_eval(s)) diff --git a/tests/archivematicaCommon/test_dicts.py b/tests/archivematicaCommon/test_dicts.py index b4af4cba10..2799d4bcf6 100644 --- a/tests/archivematicaCommon/test_dicts.py +++ b/tests/archivematicaCommon/test_dicts.py @@ -1,7 +1,6 @@ import os import pytest -from dicts import ChoicesDict from dicts import ReplacementDict from dicts import setup as setup_dicts from main import models @@ -48,21 +47,6 @@ def with_dicts(): ) -def test_alternate_replacementdict_constructor(): - """ - This constructor allows serialized Python strings to be expanded - into ReplacementDict instances. - """ - - d = {"foo": "bar"} - assert ReplacementDict(d) == ReplacementDict.fromstring(str(d)) - - -def test_alternate_choicesdict_constructor(): - d = {"foo": "bar"} - assert ChoicesDict(d) == ChoicesDict.fromstring(str(d)) - - def test_replacementdict_replace(): d = ReplacementDict({"%PREFIX%": "/usr/local"}) assert d.replace("%PREFIX%/bin/") == ["/usr/local/bin/"] From de2c3417695f8d0ef124e8b33ee61cca7cfa1228 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Garc=C3=ADa=20Crespo?= Date: Fri, 21 Mar 2025 16:52:11 +0100 Subject: [PATCH 26/99] Avoid use of ast.literal_eval in validate_file --- src/MCPClient/clientScripts/validate_file.py | 67 +++++++++++++++----- 1 file changed, 51 insertions(+), 16 deletions(-) diff --git a/src/MCPClient/clientScripts/validate_file.py b/src/MCPClient/clientScripts/validate_file.py index 7abbf03f41..65f506f9c5 100755 --- a/src/MCPClient/clientScripts/validate_file.py +++ b/src/MCPClient/clientScripts/validate_file.py @@ -15,10 +15,10 @@ """ -import ast +import json import os import sys -from collections.abc import Mapping +from dataclasses import dataclass from pprint import pformat from typing import Any from typing import Optional @@ -66,6 +66,48 @@ def main( logger = get_script_logger("archivematica.mcp.client.validateFile") +@dataclass +class ValidationResult: + """Capture the validation result determined by the FPR command. + + This class records the stdout output from the FPR command and extracts the + event outcome information and detail note. The outcome information indicates + if the file validation was successful, partially successful, or failed. + """ + + event_outcome_information: Optional[str] + event_outcome_detail_note: Optional[str] + stdout: Optional[str] + + @staticmethod + def _parse_stdout(stdout: str) -> dict[str, Any]: + """Parse a stdout string into a dictionary using JSON. + + Expects the stdout to be a valid JSON string. + """ + result = json.loads(stdout) + if not isinstance(result, dict): + raise ValueError("Parsed output is not a dictionary.") + return result + + @staticmethod + def from_stdout(stdout: str) -> "ValidationResult": + output = ValidationResult._parse_stdout(stdout) + return ValidationResult( + output.get("eventOutcomeInformation"), + output.get("eventOutcomeDetailNote"), + output.get("stdout"), + ) + + def passed(self) -> bool: + """Return True if the event outcome information is "pass".""" + return self.event_outcome_information == "pass" + + def partially_passed(self) -> bool: + """Return True if the event outcome information is "partial pass".""" + return self.event_outcome_information == "partial pass" + + class Validator: """A validator validates a file, during transfer or ingest, using FPR config. @@ -167,9 +209,7 @@ def _execute_rule_command(self, rule: FPRule) -> str: ) return "failed" # Parse output and generate an Event - # TODO: Evaluating a python string from a user-definable script seems - # insecure practice; should be JSON. - output: Mapping[str, Any] = ast.literal_eval(stdout) + validation_result = ValidationResult.from_stdout(stdout) event_detail = ( f'program="{rule.command.tool.description}";' f' version="{rule.command.tool.version}"' @@ -178,14 +218,11 @@ def _execute_rule_command(self, rule: FPRule) -> str: # determined that the file is not valid, then we want to both create a # validation event in the db and set ``failed`` to ``True`` because we # want the micro-service in the dashboard GUI to indicate "Failed". - # NOTE: this requires that the stdout of all validation FPR commands be - # a dict (preferably a JSON object) with an ``eventOutcomeInformation`` - # boolean attribute. - if output.get("eventOutcomeInformation") == "pass": + if validation_result.passed(): self.job.print_output( f'Command "{rule.command.description}" was successful' ) - elif output.get("eventOutcomeInformation") == "partial pass": + elif validation_result.partially_passed(): self.job.print_output( f'Command "{rule.command.description}" was partially successful' ) @@ -197,7 +234,7 @@ def _execute_rule_command(self, rule: FPRule) -> str: ) result = "failed" if self.file_type == "preservation": - self._save_stdout_to_logs_dir(output) + self._save_stdout_to_logs_dir(validation_result.stdout) self.job.print_output( f"Creating {self.purpose} event for {self.file_path} ({self.file_uuid})" ) @@ -205,17 +242,15 @@ def _execute_rule_command(self, rule: FPRule) -> str: fileUUID=self.file_uuid, eventType="validation", # From PREMIS controlled vocab. eventDetail=event_detail, - eventOutcome=output.get("eventOutcomeInformation"), - eventOutcomeDetailNote=output.get("eventOutcomeDetailNote"), + eventOutcome=validation_result.event_outcome_information, + eventOutcomeDetailNote=validation_result.event_outcome_detail_note, ) return result - def _save_stdout_to_logs_dir(self, output: Mapping[str, Any]) -> None: + def _save_stdout_to_logs_dir(self, stdout: Optional[str]) -> None: """Save the validation command's output from validating the file to a file at logs/implementationChecks/.xml in the SIP. - ``output`` is expected to be a dict with a ``stdout`` key. """ - stdout = output.get("stdout") if stdout and self.sip_pres_val_dir: filename = os.path.basename(self.file_path) stdout_path = os.path.join(self.sip_pres_val_dir, f"{filename}.xml") From 45fd17d2632e19a6704fcf5b0122f03948564299 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Garc=C3=ADa=20Crespo?= Date: Fri, 21 Mar 2025 16:54:26 +0100 Subject: [PATCH 27/99] Use json.loads to decode unit vars --- src/MCPClient/clientScripts/identify_file_format.py | 3 ++- src/MCPServer/assets/workflow.json | 4 ++-- src/MCPServer/server/jobs/client.py | 3 +-- src/MCPServer/server/packages.py | 7 +++---- tests/MCPClient/test_identify_file_format.py | 2 +- 5 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/MCPClient/clientScripts/identify_file_format.py b/src/MCPClient/clientScripts/identify_file_format.py index ffbb7d2cb1..0ec9652466 100755 --- a/src/MCPClient/clientScripts/identify_file_format.py +++ b/src/MCPClient/clientScripts/identify_file_format.py @@ -1,6 +1,7 @@ #!/usr/bin/env python import argparse import dataclasses +import json import multiprocessing import uuid from typing import Optional @@ -56,7 +57,7 @@ def _save_id_preference(file_: File, value: bool) -> None: rd = {"%IDCommand%": str(value)} UnitVariable.objects.create( - unituuid=unit.pk, variable="replacementDict", variablevalue=str(rd) + unituuid=unit.pk, variable="replacementDict", variablevalue=json.dumps(rd) ) diff --git a/src/MCPServer/assets/workflow.json b/src/MCPServer/assets/workflow.json index a1d72cf024..5bd1033dff 100644 --- a/src/MCPServer/assets/workflow.json +++ b/src/MCPServer/assets/workflow.json @@ -6773,7 +6773,7 @@ "@manager": "linkTaskManagerSetUnitVariable", "@model": "TaskConfigSetUnitVariable", "variable": "normalize_v1.0", - "variable_value": "{'filterSubDir':'objects/attachments'}" + "variable_value": "{\"filterSubDir\":\"objects/attachments\"}" }, "description": { "en": "Set files to normalize", @@ -9216,7 +9216,7 @@ "@manager": "linkTaskManagerSetUnitVariable", "@model": "TaskConfigSetUnitVariable", "variable": "identifyFileFormat_v0.0", - "variable_value": "{'filterSubDir':'objects/attachments'}" + "variable_value": "{\"filterSubDir\":\"objects/attachments\"}" }, "description": { "en": "Set files to identify", diff --git a/src/MCPServer/server/jobs/client.py b/src/MCPServer/server/jobs/client.py index 6ea2f72d95..e079c379ca 100644 --- a/src/MCPServer/server/jobs/client.py +++ b/src/MCPServer/server/jobs/client.py @@ -3,7 +3,6 @@ """ import abc -import ast import json import logging @@ -202,7 +201,7 @@ def filter_subdir(self): if var: try: - script_override = ast.literal_eval(var.variablevalue) + script_override = json.loads(var.variablevalue) except (SyntaxError, ValueError): pass else: diff --git a/src/MCPServer/server/packages.py b/src/MCPServer/server/packages.py index 641850834a..db066b3861 100644 --- a/src/MCPServer/server/packages.py +++ b/src/MCPServer/server/packages.py @@ -1,8 +1,8 @@ """Package management.""" import abc -import ast import collections +import json import logging import os from pathlib import Path @@ -926,10 +926,9 @@ def load_from_db(cls, uuid): # Distinct helps here, at least unit_vars_queryset = unit_vars_queryset.values_list("variablevalue").distinct() for unit_var_value in unit_vars_queryset: - # TODO: nope nope nope, fix eval usage try: - unit_var = ast.literal_eval(unit_var_value[0]) - except (ValueError, SyntaxError): + unit_var = json.loads(unit_var_value[0]) + except (ValueError, TypeError): logger.exception( "Failed to eval unit variable value %s", unit_var_value[0] ) diff --git a/tests/MCPClient/test_identify_file_format.py b/tests/MCPClient/test_identify_file_format.py index 2c61a2f72e..0fe868148f 100644 --- a/tests/MCPClient/test_identify_file_format.py +++ b/tests/MCPClient/test_identify_file_format.py @@ -216,7 +216,7 @@ def test_job_saves_unit_variable_indicating_file_format_identification_use( models.UnitVariable.objects.filter( unituuid=sip.pk, variable="replacementDict", - variablevalue="{'%IDCommand%': 'True'}", + variablevalue='{"%IDCommand%": "True"}', ).count() == 1 ) From 93313e7f2842df5dc11a8587de96c631258af1a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Garc=C3=ADa=20Crespo?= Date: Sat, 22 Mar 2025 07:58:25 +0100 Subject: [PATCH 28/99] Fix exception handling in json.loads This commit updates the snippet that uses `json.loads` to catch `TypeError` instead of `SyntaxError`. --- src/MCPServer/server/jobs/client.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/MCPServer/server/jobs/client.py b/src/MCPServer/server/jobs/client.py index e079c379ca..da2cf40923 100644 --- a/src/MCPServer/server/jobs/client.py +++ b/src/MCPServer/server/jobs/client.py @@ -202,7 +202,7 @@ def filter_subdir(self): if var: try: script_override = json.loads(var.variablevalue) - except (SyntaxError, ValueError): + except (TypeError, ValueError): pass else: filter_subdir = script_override.get("filterSubDir") From f54741b392cdcd9e67ee984c198fd085ef4fb4c4 Mon Sep 17 00:00:00 2001 From: Douglas Cerna Date: Mon, 24 Mar 2025 13:49:21 -0600 Subject: [PATCH 29/99] Restructure Python project to follow the src layout This relocates all the Python code into a new src/archivematica package and adopts absolute imports, eliminating the need for previously injected PYTHONPATH variables. --- .dockerignore | 5 +- .gitattributes | 8 +- .github/workflows/generate-sbom.yml | 2 +- .github/workflows/test.yml | 2 +- .gitignore | 7 +- .pre-commit-config.yaml | 10 +- README.md | 2 +- hack/Dockerfile | 57 +++++------ hack/Makefile | 40 ++++---- hack/docker-compose.yml | 6 +- hack/helpers/compile-i18n-messages.sh | 4 +- hack/helpers/extract-i18n-messages.sh | 6 +- pyproject.toml | 87 +++++++++------- src/MCPServer/server/tasks/__init__.py | 6 -- src/{ => archivematica}/MCPClient/README.md | 0 .../MCPClient}/__init__.py | 0 .../MCPClient/archivematicaClient.py | 2 +- .../MCPClient/archivematicaClientModules | 0 .../MCPClient/assets/README/README.html | 0 .../assets/README/TRANSFER_README.html | 0 .../MCPClient/assets/catalog/catalog.xml | 0 .../MCPClient/assets/mets/mets.xsd | 0 .../MCPClient/assets/mets/xlink.xsd | 0 .../MCPClient/assets/mods/mods.xsd | 0 .../MCPClient/assets/mods/xml.xsd | 0 .../MCPClient/assets/premis/premis-v2-2.xsd | 0 .../MCPClient/assets/premis/premis.xsd | 0 .../MCPClient/client/__init__.py | 0 .../MCPClient/client/gearman.py | 16 +-- .../MCPClient/client/job.py | 3 +- .../MCPClient/client/loader.py | 4 +- .../MCPClient/client/mcp.py | 4 +- .../MCPClient/client/metrics.py | 17 ++-- .../MCPClient/client/pool.py | 6 +- .../MCPClient/client/utils.py | 0 .../MCPClient/client/worker.py | 7 +- .../MCPClient/clientScripts}/__init__.py | 0 .../archivematicaCreateMETSMetadataCSV.py | 2 +- .../archivematicaCreateMETSMetadataXML.py | 9 +- .../archivematicaCreateMETSReingest.py | 11 +- .../archivematicaCreateMETSRights.py | 7 +- ...rchivematicaCreateMETSRightsDspaceMDRef.py | 5 +- .../archivematicaCreateMETSTrim.py | 5 +- .../clientScripts/archivematica_clamscan.py | 9 +- .../clientScripts/assign_file_uuids.py | 17 ++-- .../assign_uuids_to_directories.py | 13 +-- .../bag_with_empty_directories.py | 3 +- .../MCPClient/clientScripts/bind_pid.py | 10 +- .../MCPClient/clientScripts/bind_pids.py | 23 +++-- .../MCPClient/clientScripts/change_names.py | 0 .../clientScripts/change_object_names.py | 15 +-- .../clientScripts/change_sip_name.py | 7 +- .../clientScripts/characterize_file.py | 21 ++-- .../check_for_access_directory.py | 6 +- .../check_for_service_directory.py | 2 +- .../check_for_submission_documentation.py | 0 .../check_transfer_directory_for_objects.py | 0 .../MCPClient/clientScripts/cmd_chmod.py | 2 +- .../MCPClient/clientScripts/cmd_cp.py | 2 +- .../MCPClient/clientScripts/cmd_mkdir.py | 2 +- .../MCPClient/clientScripts/cmd_mv.py | 2 +- .../MCPClient/clientScripts/cmd_test.py | 2 +- .../MCPClient/clientScripts/cmd_tree.py | 2 +- .../MCPClient/clientScripts/compress_aip.py | 7 +- .../convert_dataverse_structure.py | 3 +- .../clientScripts/copyRecursiveIfExists.sh | 0 .../clientScripts/copySubmissionDocs.sh | 0 .../MCPClient/clientScripts/copy_recursive.py | 2 +- .../clientScripts/copy_submission_docs.py | 2 +- .../copy_thumbnails_to_dip_directory.py | 0 .../copy_transfer_submission_documentation.py | 10 +- .../copy_transfers_metadata_and_logs.py | 10 +- .../clientScripts/create_aic_mets.py | 13 +-- .../MCPClient/clientScripts/create_event.py | 3 +- .../clientScripts/create_mets_dataverse_v2.py | 5 +- .../MCPClient/clientScripts/create_mets_v2.py | 73 +++++++++----- .../create_sip_from_transfer_objects.py | 15 +-- ...eate_sips_from_trim_transfer_containers.py | 7 +- .../clientScripts/create_transfer_metadata.py | 4 +- .../clientScripts/create_transfer_mets.py | 19 ++-- .../determine_aip_version_key_exit_code.py | 3 +- .../clientScripts/dip_generation_helper.py | 7 +- .../clientScripts/email_fail_report.py | 9 +- .../clientScripts/examine_contents.py | 2 +- .../clientScripts/extract_contents.py | 26 ++--- .../extract_maildir_attachments.py | 9 +- .../clientScripts/extract_zipped_transfer.py | 7 +- .../clientScripts/failed_sip_cleanup.py | 7 +- .../clientScripts/failed_transfer_cleanup.py | 9 +- .../MCPClient/clientScripts/file_to_folder.py | 3 +- .../get_aip_storage_locations.py | 4 +- .../MCPClient/clientScripts/has_packages.py | 12 +-- .../clientScripts/identify_dspace_files.py | 5 +- .../identify_dspace_mets_files.py | 3 +- .../clientScripts/identify_file_format.py | 21 ++-- .../MCPClient/clientScripts/index_aip.py | 11 +- .../MCPClient/clientScripts/is_maildir_aip.py | 0 .../clientScripts/json_metadata_to_csv.py | 0 .../MCPClient/clientScripts/lib/__init__.py | 2 +- .../clientScripts/load_dublin_core.py | 3 +- .../clientScripts/load_labels_from_csv.py | 3 +- .../load_premis_events_from_xml.py | 7 +- ...heck_for_manual_normalization_directory.py | 0 ...ization_create_metadata_and_restructure.py | 9 +- ...l_normalization_identify_files_included.py | 2 +- ..._normalization_move_access_files_to_dip.py | 8 +- ...ual_normalization_remove_mn_directories.py | 5 +- .../MCPClient/clientScripts/move_or_merge.py | 2 +- .../MCPClient/clientScripts/move_sip.py | 5 +- .../clientScripts/move_to_backlog.py | 19 ++-- .../MCPClient/clientScripts/move_transfer.py | 5 +- .../MCPClient/clientScripts/normalize.py | 24 +++-- .../clientScripts/normalize_report.py | 15 +-- .../clientScripts/parse_dataverse_mets.py | 11 +- .../clientScripts/parse_external_mets.py | 7 +- .../clientScripts/parse_mets_to_db.py | 10 +- .../clientScripts/pid_declaration.py | 9 +- .../MCPClient/clientScripts/policy_check.py | 28 +++--- .../clientScripts/post_store_aip_hook.py | 13 ++- .../clientScripts/remove_directories.py | 0 .../remove_files_without_premis_metadata.py | 2 +- .../remove_hidden_files_and_directories.py | 0 .../clientScripts/remove_unneeded_files.py | 3 +- .../restructure_bag_aip_to_sip.py | 4 +- .../restructure_dip_for_content_dm_upload.py | 5 +- .../restructure_for_compliance.py | 23 +++-- .../restructure_for_compliance_maildir.py | 0 .../restructure_for_compliance_sip.py | 11 +- .../retry_normalize_remove_normalized.py | 7 +- .../clientScripts/rights_from_csv.py | 3 +- .../clientScripts/save_dublin_core.py | 3 +- .../set_maildir_file_grp_use_and_file_ids.py | 10 +- .../clientScripts/set_transfer_type.py | 7 +- .../MCPClient/clientScripts/store_aip.py | 17 ++-- .../store_file_modification_dates.py | 5 +- .../MCPClient/clientScripts/transcoder.py | 3 +- .../clientScripts/transcribe_file.py | 21 ++-- .../trim_create_rights_entries.py | 17 ++-- .../trim_restructure_for_compliance.py | 9 +- .../clientScripts/trim_verify_checksums.py | 7 +- .../clientScripts/trim_verify_manifest.py | 5 +- .../clientScripts/update_size_and_checksum.py | 17 ++-- .../clientScripts/upload_archivesspace.py | 9 +- .../MCPClient/clientScripts/upload_qubit.py | 6 +- .../MCPClient/clientScripts/validate_file.py | 23 +++-- .../MCPClient/clientScripts/verify_aip.py | 11 +- .../verify_and_restructure_transfer_bag.py | 16 +-- .../clientScripts/verify_checksum.py | 8 +- ...cksums_in_file_sec_of_dspace_mets_files.py | 3 +- .../MCPClient/clientScripts/verify_mets.py | 0 .../clientScripts/verify_sip_compliance.py | 2 +- .../verify_transfer_compliance.py | 2 +- .../MCPClient/install/README.md | 0 .../MCPClient/install/clientConfig.conf | 0 .../install/clientConfig.logging.json | 4 +- .../MCPClient}/settings/__init__.py | 0 .../MCPClient/settings/common.py | 17 ++-- .../MCPClient/settings/test.py | 2 +- .../MCPClient/settings/testmysql.py | 2 +- .../MCPServer}/__init__.py | 0 .../MCPServer/archivematicaMCP.py | 2 +- .../MCPServer/assets/workflow-schema-v1.json | 0 .../MCPServer/assets/workflow.json | 0 .../MCPServer/install/README.md | 0 .../MCPServer/install/serverConfig.conf | 0 .../install/serverConfig.logging.json | 4 +- .../MCPServer/server/__init__.py | 0 .../MCPServer/server/jobs/__init__.py | 26 ++--- .../MCPServer/server/jobs/base.py | 5 +- .../MCPServer/server/jobs/chain.py | 16 +-- .../MCPServer/server/jobs/client.py | 12 +-- .../MCPServer/server/jobs/decisions.py | 17 ++-- .../MCPServer/server/jobs/local.py | 6 +- .../MCPServer/server/mcp.py | 26 ++--- .../MCPServer/server/metrics.py | 5 +- .../MCPServer/server/packages.py | 14 +-- .../MCPServer/server/processing_config.py | 4 +- .../MCPServer/server/queues.py | 8 +- .../MCPServer/server/rpc_server.py | 16 +-- .../MCPServer/server/shared_dirs.py | 5 +- .../MCPServer/server/tasks/__init__.py | 6 ++ .../server/tasks/backends/__init__.py | 6 +- .../MCPServer/server/tasks/backends/base.py | 0 .../server/tasks/backends/gearman_backend.py | 8 +- .../MCPServer/server/tasks/task.py | 5 +- .../MCPServer/server/translation.py | 0 .../MCPServer/server/utils.py | 0 .../MCPServer/server/watch_dirs.py | 0 .../MCPServer/server/workflow.py | 6 +- .../MCPServer/server/workflow_abilities.py | 0 .../MCPServer/settings}/__init__.py | 0 .../MCPServer/settings/common.py | 16 +-- .../MCPServer/settings/test.py | 2 +- .../MCPServer/settings/testmysql.py | 2 +- .../archivematicaCommon/README.txt | 0 .../archivematicaCommon}/__init__.py | 0 .../archivematicaCommon/appconfig.py | 3 +- .../archivematicaFunctions.py | 7 +- .../archivematicaCommon/bag.py | 0 .../archivematicaCommon/bindpid.py | 0 .../archivematicaCommon/common_metrics.py | 0 .../archivematicaCommon/countryCodes.py | 0 .../archivematicaCommon/custom_handlers.py | 0 .../archivematicaCommon/databaseFunctions.py | 13 +-- .../archivematicaCommon/dbconns.py | 0 .../archivematicaCommon/dicts.py | 2 +- .../elasticSearchFunctions.py | 15 +-- .../archivematicaCommon/email_settings.py | 0 .../archivematicaCommon/env_configparser.py | 0 .../executeOrRunSubProcess.py | 2 +- .../externals/HTML/HTML.py | 0 .../externals/HTML/Licence_CeCILL_V2-en.html | 0 .../externals/HTML/Licence_CeCILL_V2-fr.html | 0 .../externals/HTML}/__init__.py | 0 .../externals}/__init__.py | 0 .../externals/extractMaildirAttachments.py | 0 .../fido/archivematica_format_extensions.xml | 0 .../externals/fiwalk_plugins/ficonfig.txt | 0 .../externals/fiwalk_plugins/pronom_ident.py | 0 .../externals/maildirToMbox.py | 0 .../externals/xmltodict.py | 0 .../archivematicaCommon/fileOperations.py | 14 +-- .../archivematicaCommon/gearman_encoder.py | 0 .../identifier_functions.py | 0 .../archivematicaCommon/namespaces.py | 0 .../archivematicaCommon/processing.py | 0 .../archivematicaCommon/storageService.py | 5 +- .../archivematicaCommon/version.py | 0 .../archivematicaCommon/xml2obj.py | 0 .../dashboard}/__init__.py | 0 .../dashboard/components}/__init__.py | 0 .../dashboard/components/access}/__init__.py | 0 .../dashboard/components/access/urls.py | 3 +- .../dashboard/components/access/views.py | 19 ++-- .../components/accounts}/__init__.py | 0 .../dashboard/components/accounts/apps.py | 4 +- .../dashboard/components/accounts/backends.py | 3 +- .../dashboard/components/accounts/forms.py | 3 +- .../dashboard/components/accounts/signals.py | 3 +- .../dashboard/components/accounts/urls.py | 5 +- .../components/accounts/validators.py | 0 .../dashboard/components/accounts/views.py | 15 +-- .../components/administration}/__init__.py | 0 .../components/administration/apps.py | 2 +- .../components/administration/forms.py | 13 +-- .../administration/forms_dip_upload.py | 0 .../administration/migrations/0001_initial.py | 7 +- .../migrations/0002_archivesspaceconfig.py | 5 +- .../0003_archivesspace_help_text.py | 0 .../0004_archivesspaceconfig_inherit_notes.py | 0 ...0005_archivesspace_inherit_note_default.py | 0 .../migrations/0006_use_statement_optional.py | 0 .../migrations/0007_delete_unused_models.py | 0 .../administration/migrations}/__init__.py | 0 .../components/administration/models.py | 0 .../components/administration/urls.py | 11 +- .../components/administration/views.py | 29 +++--- .../administration/views_dip_upload.py | 11 +- .../administration/views_processing.py | 8 +- .../dashboard/components/advanced_search.py | 0 .../dashboard/components/api}/__init__.py | 0 .../dashboard/components/api/urls.py | 3 +- .../dashboard/components/api/validators.py | 0 .../dashboard/components/api/views.py | 20 ++-- .../components/appraisal}/__init__.py | 0 .../dashboard/components/appraisal/urls.py | 3 +- .../dashboard/components/appraisal/views.py | 0 .../components/archival_storage}/__init__.py | 0 .../components/archival_storage/atom.py | 5 +- .../components/archival_storage/forms.py | 5 +- .../components/archival_storage/urls.py | 3 +- .../components/archival_storage/views.py | 27 +++-- .../dashboard/components/backlog}/__init__.py | 0 .../dashboard/components/backlog/urls.py | 3 +- .../dashboard/components/backlog/views.py | 17 ++-- .../dashboard/components/decorators.py | 3 +- .../dashboard/components/file}/__init__.py | 0 .../dashboard/components/file/urls.py | 3 +- .../dashboard/components/file/views.py | 9 +- .../components/filesystem_ajax}/__init__.py | 0 .../components/filesystem_ajax/helpers.py | 4 +- .../components/filesystem_ajax/urls.py | 3 +- .../components/filesystem_ajax/views.py | 19 ++-- .../dashboard/components/helpers.py | 3 +- .../dashboard/components/ingest}/__init__.py | 0 .../dashboard/components/ingest/forms.py | 3 +- .../components/ingest/pair_matcher.py | 5 +- .../dashboard/components/ingest/urls.py | 5 +- .../dashboard/components/ingest/views.py | 25 +++-- .../ingest/views_NormalizationReport.py | 3 +- .../dashboard/components/ingest/views_as.py | 9 +- .../dashboard/components/mcp}/__init__.py | 0 .../dashboard/components/mcp/urls.py | 3 +- .../dashboard/components/mcp/views.py | 3 +- .../dashboard/components/rights}/__init__.py | 0 .../dashboard/components/rights/forms.py | 3 +- .../components/rights/ingest_urls.py | 3 +- .../dashboard/components/rights/load.py | 22 ++-- .../components/rights/transfer_urls.py | 3 +- .../dashboard/components/rights/views.py | 9 +- .../components/transfer}/__init__.py | 0 .../dashboard/components/transfer/urls.py | 3 +- .../dashboard/components/transfer/views.py | 13 +-- .../dashboard/components/unit}/__init__.py | 0 .../dashboard/components/unit/urls.py | 3 +- .../dashboard/components/unit/views.py | 7 +- .../dashboard/contrib}/__init__.py | 0 .../dashboard/contrib/mcp}/__init__.py | 0 .../dashboard/contrib/mcp/client.py | 5 +- .../dashboard/fpr/__init__.py | 0 src/{ => archivematica}/dashboard/fpr/apps.py | 2 +- .../dashboard/fpr/forms.py | 3 +- .../dashboard/fpr/helpers.py | 0 .../dashboard/fpr/management}/__init__.py | 0 .../fpr/management/commands}/__init__.py | 0 .../management/commands/get_fpr_changes.py | 0 .../management/commands/import_pronom_ids.py | 11 +- .../fpr/migrations-data/mc_validate_cmd.py | 0 .../dashboard/fpr/migrations/0001_initial.py | 21 ++-- .../fpr/migrations/0002_initial_data.py | 0 .../fpr/migrations/0003_pronom_84.py | 0 .../fpr/migrations/0004_pronom_88.py | 0 .../migrations/0005_update_tool_versions.py | 0 .../fpr/migrations/0006_i18n_models.py | 0 .../0007_embedded_default_thumbnail.py | 0 .../migrations/0008_update_django_autoslug.py | 0 .../fpr/migrations/0009_pronom_90.py | 0 .../fpr/migrations/0010_update_fido_136.py | 0 .../migrations/0011_mediaconch_validation.py | 0 .../0012_mediaconch_policy_checks.py | 0 .../0013_normalization_rules_mov.py | 0 .../fpr/migrations/0014_fix_fits_command.py | 0 .../fpr/migrations/0015_pronom_92.py | 0 .../fpr/migrations/0016_update_idtools.py | 0 .../fpr/migrations/0017_ocr_unique_names.py | 0 .../fpr/migrations/0018_slug_unique.py | 0 .../fpr/migrations/0019_fix_gs_command.py | 0 .../fpr/migrations/0020_pronom_93.py | 0 ...malize_jp2_with_ffmpeg_for_preservation.py | 0 .../fpr/migrations/0022_pronom_94.py | 0 .../fpr/migrations/0023_update_idtools.py | 0 .../fpr/migrations/0024_update_fido.py | 0 .../fpr/migrations/0025_update_fido_1312.py | 0 .../migrations/0026_fits_nailgun_compat.py | 0 .../0027_idcommand_tool_disallow_blank.py | 0 .../0028_idcommand_unique_enabled.py | 0 .../0029_update_inkscape_svg_command.py | 0 .../migrations/0030_update_jhove_command.py | 0 .../0031_update_normalization_rules.py | 0 .../fpr/migrations/0032_pronom_96.py | 0 .../fpr/migrations/0033_update_idtools.py | 0 .../migrations/0034_delete_unused_models.py | 0 .../migrations/0035_python3_compatibility.py | 0 .../fpr/migrations/0036_pronom_109.py | 0 .../fpr/migrations/0037_update_idtools.py | 0 .../fpr/migrations/0038_use_uuidfield.py | 21 ++-- .../dashboard/fpr/migrations/0039_django32.py | 0 .../0040_update_jhove_validation.py | 0 .../fpr/migrations/0041_pronom_116.py | 0 .../fpr/migrations/0042_update_idtools.py | 0 .../0043_update_default_thumbnail_command.py | 0 .../fpr/migrations/0044_remove_fits.py | 0 .../0045_update_event_detail_commands.py | 0 .../0046_update_jhove_module_validation.py | 5 +- .../dashboard/fpr/migrations}/__init__.py | 0 .../fpr/migrations/initial_data.json | 0 .../migrations/pronom84_formatgroups_new.json | 0 .../fpr/migrations/pronom84_formats_all.json | 0 .../pronom84_formatversions_all.json | 0 .../fpr/migrations/pronom84_fprules_all.json | 0 .../fpr/migrations/pronom84_fptools_all.json | 0 .../migrations/pronom84_idcommands_all.json | 0 .../fpr/migrations/pronom84_idrules_all.json | 0 .../fpr/migrations/pronom84_idtools_all.json | 0 .../dashboard/fpr/migrations/pronom_109.json | 0 .../dashboard/fpr/migrations/pronom_116.json | 0 .../dashboard/fpr/migrations/pronom_88.json | 0 .../dashboard/fpr/migrations/pronom_90.json | 0 .../dashboard/fpr/migrations/pronom_92.json | 0 .../dashboard/fpr/migrations/pronom_93.json | 0 .../dashboard/fpr/migrations/pronom_94.json | 0 .../dashboard/fpr/migrations/pronom_96.json | 0 .../dashboard/fpr/models.py | 3 +- .../dashboard/fpr/templates/fpr/_sidebar.html | 0 .../fpr/templates/fpr/app_layout.html | 0 .../dashboard/fpr/templates/fpr/disable.html | 0 .../fpr/templates/fpr/format/detail.html | 0 .../fpr/templates/fpr/format/form.html | 0 .../templates/fpr/format/group/delete.html | 0 .../fpr/templates/fpr/format/group/form.html | 0 .../fpr/templates/fpr/format/group/list.html | 0 .../fpr/templates/fpr/format/list.html | 0 .../templates/fpr/format/version/detail.html | 0 .../templates/fpr/format/version/form.html | 0 .../fpr/templates/fpr/fpcommand/detail.html | 0 .../fpr/templates/fpr/fpcommand/form.html | 0 .../fpr/templates/fpr/fpcommand/list.html | 0 .../fpr/templates/fpr/fprule/detail.html | 0 .../fpr/templates/fpr/fprule/form.html | 0 .../fpr/templates/fpr/fprule/list.html | 0 .../fpr/templates/fpr/fptool/detail.html | 0 .../fpr/templates/fpr/fptool/form.html | 0 .../fpr/templates/fpr/fptool/list.html | 0 .../fpr/templates/fpr/idcommand/detail.html | 0 .../fpr/templates/fpr/idcommand/form.html | 0 .../fpr/templates/fpr/idcommand/list.html | 0 .../fpr/templates/fpr/idrule/detail.html | 0 .../fpr/templates/fpr/idrule/form.html | 0 .../fpr/templates/fpr/idrule/list.html | 0 .../fpr/templates/fpr/idtool/detail.html | 0 .../fpr/templates/fpr/idtool/form.html | 0 .../fpr/templates/fpr/idtool/list.html | 0 .../fpr/templates/fpr/revisions/list.html | 0 .../dashboard/fpr/templatetags}/__init__.py | 0 .../fpr/templatetags/revisions_link.py | 0 src/{ => archivematica}/dashboard/fpr/urls.py | 3 +- .../dashboard/fpr/utils.py | 0 .../dashboard/fpr/views.py | 7 +- .../dashboard/frontend/.eslintrc | 0 .../dashboard/frontend/.gitignore | 0 .../dashboard/frontend/README.md | 0 .../frontend/app/alert/alert.controller.js | 0 .../app/analysis/analysis.controller.js | 0 .../frontend/app/analysis/analysis.html | 0 .../dashboard/frontend/app/app.css | 0 .../dashboard/frontend/app/app.js | 0 .../archivesspace/archivesspace.controller.js | 0 .../frontend/app/archivesspace/form.html | 0 .../app/arrangement/arrangement.controller.js | 0 .../app/arrangement/edit_metadata_form.html | 0 .../frontend/app/browse/browse.controller.js | 0 .../dashboard/frontend/app/browser.css | 0 .../app/checklist/checklist.directive.js | 0 .../components/version/interpolate-filter.js | 0 .../version/interpolate-filter_test.js | 0 .../components/version/version-directive.js | 0 .../version/version-directive_test.js | 0 .../app/components/version/version.js | 0 .../app/components/version/version_test.js | 0 .../examine_contents.controller.js | 0 .../examine_contents/examine_contents.html | 0 .../app/examine_contents/file_info.html | 0 .../facet_selector.controller.js | 0 .../app/file_list/file_list.controller.js | 0 .../app/filters/aggregation.filter.js | 0 .../frontend/app/filters/facet.filter.js | 0 .../app/fixtures/archivesspace/levels | 0 .../app/front_page/appraisal_tab.html | 0 .../app/front_page/transfer_browser.html | 0 .../frontend/app/header/header.controller.js | 0 .../dashboard/frontend/app/locale/extract.pot | 0 .../frontend/app/locale/translations.es.po | 0 .../frontend/app/locale/translations.fr.po | 0 .../frontend/app/locale/translations.ja.po | 0 .../frontend/app/locale/translations.json | 0 .../frontend/app/locale/translations.pt.po | 0 .../frontend/app/locale/translations.pt_BR.po | 0 .../frontend/app/locale/translations.sv.po | 0 .../frontend/app/media/images/logo_header.png | Bin .../app/preview/preview.controller.js | 0 .../frontend/app/preview/preview.html | 0 .../dashboard/frontend/app/report/format.html | 0 .../frontend/app/report/report.controller.js | 0 .../dashboard/frontend/app/report/tags.html | 0 .../frontend/app/search/search.controller.js | 0 .../frontend/app/services/alert.service.js | 0 .../app/services/archivesspace.service.js | 0 .../frontend/app/services/browse.service.js | 0 .../frontend/app/services/facet.service.js | 0 .../frontend/app/services/file.service.js | 0 .../frontend/app/services/selected.service.js | 0 .../app/services/sip_arrange.service.js | 0 .../app/services/source_locations.service.js | 0 .../frontend/app/services/tag.service.js | 0 .../frontend/app/services/transfer.service.js | 0 .../transfer_browser_transfer.service.js | 0 .../frontend/app/tree/tree.controller.js | 0 .../frontend/app/tree/tree.directive.js | 0 .../frontend/app/ui/minimize-bar.html | 0 .../frontend/app/ui/minimize-panel.html | 0 .../dashboard/frontend/app/ui/ui.directive.js | 0 .../vendor/angular-charts/angular-charts.js | 0 .../app/visualizations/formats_by_files.html | 0 .../app/visualizations/formats_by_size.html | 0 .../visualizations.controller.js | 0 .../app/visualizations/visualizations.html | 0 .../dashboard/frontend/package-lock.json | 0 .../dashboard/frontend/package.json | 0 .../dashboard/frontend/test/karma.conf.js | 0 .../dashboard/frontend/test/tests.webpack.js | 0 .../test/unit/aggregationFiltersSpec.js | 0 .../frontend/test/unit/archivesspaceSpec.js | 0 .../frontend/test/unit/arrangementSpec.js | 0 .../frontend/test/unit/browseSpec.js | 0 .../dashboard/frontend/test/unit/facetSpec.js | 0 .../dashboard/frontend/test/unit/fileSpec.js | 0 .../frontend/test/unit/locationsSpec.js | 0 .../frontend/test/unit/selectedFilesSpec.js | 0 .../frontend/test/unit/sip_arrangeSpec.js | 0 .../dashboard/frontend/test/unit/tagSpec.js | 0 .../frontend/test/unit/transferSpec.js | 0 .../dashboard/frontend/test/unit/treeSpec.js | 0 .../frontend/test/unit/vendor/jquery.js | 0 .../frontend/tools/extract_features.py | 0 .../dashboard/frontend/webpack.config.js | 0 .../dashboard/install/README.md | 0 .../install/archivematica-dashboard.service | 0 .../dashboard/install/dashboard.conf | 0 .../install/dashboard.gunicorn-config.py | 0 .../dashboard/install/dashboard.logging.json | 4 +- .../dashboard/installer}/__init__.py | 0 .../dashboard/installer/forms.py | 3 +- .../installer/management}/__init__.py | 0 .../management/commands}/__init__.py | 0 .../installer/management/commands/install.py | 11 +- .../dashboard/installer/middleware.py | 3 +- .../dashboard/installer/steps.py | 11 +- .../dashboard/installer/urls.py | 3 +- .../dashboard/installer/views.py | 13 +-- .../dashboard/locale/en/LC_MESSAGES/django.po | 0 .../locale/en/LC_MESSAGES/djangojs.po | 0 .../dashboard/locale/es/LC_MESSAGES/django.po | 0 .../locale/es/LC_MESSAGES/djangojs.po | 0 .../dashboard/locale/fr/LC_MESSAGES/django.po | 0 .../locale/fr/LC_MESSAGES/djangojs.po | 0 .../dashboard/locale/ja/LC_MESSAGES/django.po | 0 .../locale/ja/LC_MESSAGES/djangojs.po | 0 .../dashboard/locale/no/LC_MESSAGES/django.po | 0 .../locale/no/LC_MESSAGES/djangojs.po | 0 .../dashboard/locale/pt/LC_MESSAGES/django.po | 0 .../locale/pt/LC_MESSAGES/djangojs.po | 0 .../locale/pt_BR/LC_MESSAGES/django.po | 0 .../locale/pt_BR/LC_MESSAGES/djangojs.po | 0 .../dashboard/locale/sv/LC_MESSAGES/django.po | 0 .../locale/sv/LC_MESSAGES/djangojs.po | 0 .../dashboard/main}/__init__.py | 0 .../dashboard/main/apps.py | 4 +- .../dashboard/main/context_processors.py | 0 .../dashboard/main/forms.py | 3 +- .../dashboard/main/management}/__init__.py | 0 .../main/management/commands/__init__.py | 3 +- .../purge_transient_processing_data.py | 7 +- .../rebuild_aip_index_from_storage_service.py | 11 +- ...uild_elasticsearch_aip_index_from_files.py | 13 +-- .../commands/rebuild_transfer_backlog.py | 27 ++--- .../commands/reindex_from_remote_cluster.py | 5 +- .../commands/resolve_pending_jobs.py | 5 +- .../commands/update_elasticsearch_mappings.py | 5 +- .../dashboard/main/migrations/0001_initial.py | 65 ++++++------ .../main/migrations/0002_initial_data.py | 0 ...3_archivesspacedipobjectresourcepairing.py | 7 +- ...hivesspacedipobjectresourcepairing_data.py | 0 .../dashboard/main/migrations/0004_rights.py | 0 .../main/migrations/0005_reingest.py | 0 .../main/migrations/0005_reingest_data.py | 0 .../migrations/0006_levelofdescription.py | 5 +- .../migrations/0007_django_upgrade_tweaks.py | 0 .../main/migrations/0008_fpcommandoutput.py | 0 .../main/migrations/0009_matching_gui.py | 0 .../main/migrations/0010_dip_upload_store.py | 0 .../main/migrations/0011_version_number.py | 0 .../main/migrations/0012_file_id_text.py | 0 ...0013_upload_archivesspace_inherit_notes.py | 0 .../main/migrations/0014_aic_fixes.py | 0 .../0015_no_normalize_thumbnails.py | 0 .../0016_file_currentlocation_nullable.py | 0 .../main/migrations/0017_update_seigfried.py | 0 .../0018_archivesspace_sip_arrange.py | 0 .../migrations/0019_normalization_report.py | 0 .../0020_index_after_processing_decision.py | 0 .../migrations/0021_checksum_algorithms.py | 0 .../main/migrations/0022_email_report_args.py | 0 .../main/migrations/0023_blob_fields.py | 0 .../main/migrations/0024_agenttype.py | 0 .../0025_copyrightstatus_controlled_vocab.py | 0 .../main/migrations/0026_agent_m2m_event.py | 0 .../main/migrations/0027_full_reingest.py | 0 .../main/migrations/0028_version_number.py | 0 .../migrations/0029_backlog_removal_event.py | 0 .../main/migrations/0030_rights_import.py | 0 .../0031_job_currentstep_choices.py | 0 .../migrations/0032_dashboardsetting_scope.py | 7 +- ..._store_transfer_file_modification_dates.py | 3 +- .../migrations/0034_add_readme_to_aips.py | 3 +- .../0035_fix_workflow_dip_generation.py | 0 .../migrations/0036_mediaconch_validation.py | 0 .../0037_mediaconch_policy_checks.py | 0 .../migrations/0038_fix_workflow_store_dip.py | 0 .../0039_delete_sudo_clientscript.py | 0 .../main/migrations/0040_directory_model.py | 5 +- .../main/migrations/0041_bind_pids.py | 0 ...0042_directory_uuids_all_transfer_types.py | 0 .../0043_remove_create_pointer_file_ms.py | 0 .../main/migrations/0044_update_idtools.py | 0 .../0045_archivesspace_config_dict.py | 0 .../0046_optional_normative_structmap.py | 3 +- .../main/migrations/0047_version_number.py | 0 .../0048_fix_upload_qubit_setting.py | 0 .../0049_change_pointer_file_filegrpuse.py | 0 .../migrations/0050_remove_magic_links.py | 3 +- .../0051_remove_verify_premis_checksums.py | 0 ..._correct_extract_packages_fallback_link.py | 0 .../0053_remove_mcp_unused_field.py | 0 .../0054_index_aip_silent_error_branch.py | 3 +- ...0055_normalize_thumbnail_mode_selection.py | 0 .../0056_transfer_access_system_id.py | 0 .../migrations/0057_7zip_no_compression.py | 0 .../0058_fix_unit_variable_pull_link.py | 3 +- .../migrations/0059_siparrange_longblob.py | 5 +- .../migrations/0060_delete_orphan_mscl.py | 0 .../0061_create_dataverse_transfer_type.py | 3 +- .../migrations/0062_atom_upload_exit_code.py | 3 +- .../main/migrations/0063_update_idtools.py | 0 .../main/migrations/0064_version_number.py | 0 .../main/migrations/0065_version_number.py | 0 .../migrations/0066_archivesspace_base_url.py | 0 .../migrations/0067_delete_workflow_models.py | 7 +- .../main/migrations/0068_version_number.py | 0 .../main/migrations/0069_remove_atk.py | 0 .../main/migrations/0070_index_jobs.py | 5 +- .../0071_index_unitvariables_runsql.py | 0 .../main/migrations/0072_index_files.py | 0 .../migrations/0073_index_files_runsql.py | 0 .../main/migrations/0074_version_number.py | 0 .../0075_userprofile_system_emails.py | 0 .../main/migrations/0076_version_number.py | 0 .../main/migrations/0077_uuid_fields.py | 13 +-- .../main/migrations/0078_username_check.py | 0 .../main/migrations/0079_version_number.py | 0 .../migrations/0080_delete_software_agent.py | 0 .../main/migrations/0081_package_status.py | 0 .../main/migrations/0082_use_uuidfield.py | 21 ++-- .../migrations/0083_unpickle_access_target.py | 0 .../0084_alter_job_index_together.py | 0 .../dashboard/main/migrations}/__init__.py | 0 .../dashboard/main/models.py | 3 +- .../dashboard/main/signals.py | 5 +- .../dashboard/main/templatetags}/__init__.py | 0 .../dashboard/main/templatetags/active.py | 0 .../dashboard/main/templatetags/breadcrumb.py | 0 .../dashboard/main/templatetags/forms.py | 0 .../dashboard/main/templatetags/job_status.py | 3 +- .../dashboard/main/templatetags/keyvalue.py | 0 .../dashboard/main/templatetags/lang.py | 0 .../dashboard/main/templatetags/user.py | 0 .../dashboard/main/urls.py | 3 +- .../dashboard/main/views.py | 9 +- src/{ => archivematica}/dashboard/manage.py | 4 +- .../dashboard/media/css/archival_storage.css | 0 .../dashboard/media/css/as_match.css | 0 .../media/css/backbone-file-explorer.css | 0 .../dashboard/media/css/backlog.css | 0 .../dashboard/media/css/base.css | 0 .../dashboard/media/css/directory_picker.css | 0 .../dashboard/media/css/fonts.css | 0 .../dashboard/media/css/reset.css | 0 .../dashboard/media/css/search.css | 0 .../dashboard/media/css/style.css | 0 .../dashboard/media/css/transfer_grid.css | 0 .../dashboard/media/images/1x1-pixel.png | Bin .../dashboard/media/images/accept.png | Bin .../dashboard/media/images/ajax-loader.gif | Bin .../dashboard/media/images/arrow_refresh.png | Bin .../dashboard/media/images/attach.png | Bin .../dashboard/media/images/bell.png | Bin .../media/images/bullet_arrow_down.png | Bin .../media/images/bullet_arrow_up.png | Bin .../dashboard/media/images/bullet_delete.png | Bin .../dashboard/media/images/bullet_green.png | Bin .../dashboard/media/images/bullet_orange.png | Bin .../dashboard/media/images/cancel.png | Bin .../dashboard/media/images/clock.png | Bin .../dashboard/media/images/cog.png | Bin .../dashboard/media/images/delete.png | Bin .../dashboard/media/images/error.png | Bin .../dashboard/media/images/favicon.ico | Bin .../dashboard/media/images/filefolder.png | Bin .../dashboard/media/images/filefolderopen.png | Bin .../dashboard/media/images/folder.png | Bin .../dashboard/media/images/logo_header.png | Bin .../dashboard/media/images/logo_login.gif | Bin .../dashboard/media/images/logo_welcome.gif | Bin .../dashboard/media/images/package_go.png | Bin .../dashboard/media/images/pencil_add.png | Bin .../dashboard/media/images/table_edit.png | Bin .../dashboard/media/images/tick.png | Bin .../dashboard/media/images/user_comment.png | Bin .../dashboard/media/images/vcard_edit.png | Bin .../dashboard/media/images/zoom.png | Bin .../dashboard/media/images/zoom_out.png | Bin .../atom_levels_of_description.js | 0 .../media/js/advanced-search-query-creator.js | 0 .../archival_storage_search.js | 0 .../media/js/backlog/backlog-search.js | 0 .../dashboard/media/js/contextual_help.js | 0 .../dashboard/media/js/directory_picker.js | 0 .../dashboard/media/js/file-explorer.js | 0 .../dashboard/media/js/file_browser.js | 0 .../dashboard/media/js/ingest.js | 0 .../dashboard/media/js/ingest/aip_browser.js | 0 .../dashboard/media/js/ingest/as_matcher.js | 0 .../media/js/ingest/as_matcher_setup.js | 0 .../dashboard/media/js/ingest/backlog.js | 0 .../media/js/ingest/metadata_form.js | 0 .../media/js/ingest/normalization_report.js | 0 .../dashboard/media/js/jobs.js | 0 .../dashboard/media/js/misc.js | 0 .../dashboard/media/js/online.js | 0 .../dashboard/media/js/repeating-ajax-data.js | 0 .../dashboard/media/js/rights_edit.js | 0 .../dashboard/media/js/status.js | 0 .../dashboard/media/js/transfer.js | 0 .../js/transfer/component_directory_select.js | 0 .../dashboard/media/js/vendor/base64.js | 0 .../dashboard/media/vendor/backbone.js | 0 .../datatables/css/buttons.bootstrap.min.css | 0 .../datatables/css/jquery.dataTables.css | 0 .../vendor/datatables/images/favicon.ico | Bin .../vendor/datatables/images/sort_asc.png | Bin .../datatables/images/sort_asc_disabled.png | Bin .../vendor/datatables/images/sort_both.png | Bin .../vendor/datatables/images/sort_desc.png | Bin .../datatables/images/sort_desc_disabled.png | Bin .../datatables/js/buttons.bootstrap.min.js | 0 .../datatables/js/buttons.colVis.min.js | 0 .../datatables/js/dataTables.buttons.min.js | 0 .../datatables/js/jquery.dataTables.min.js | 0 .../media/vendor/font-awesome/.npmignore | 0 .../media/vendor/font-awesome/HELP-US-OUT.txt | 0 .../media/vendor/font-awesome/README.md | 0 .../vendor/font-awesome/css/font-awesome.css | 0 .../font-awesome/css/font-awesome.css.map | 0 .../font-awesome/css/font-awesome.min.css | 0 .../vendor/font-awesome/fonts/FontAwesome.otf | Bin .../fonts/fontawesome-webfont.eot | Bin .../fonts/fontawesome-webfont.svg | 0 .../fonts/fontawesome-webfont.ttf | Bin .../fonts/fontawesome-webfont.woff | Bin .../fonts/fontawesome-webfont.woff2 | Bin .../vendor/font-awesome/less/animated.less | 0 .../font-awesome/less/bordered-pulled.less | 0 .../media/vendor/font-awesome/less/core.less | 0 .../vendor/font-awesome/less/fixed-width.less | 0 .../font-awesome/less/font-awesome.less | 0 .../media/vendor/font-awesome/less/icons.less | 0 .../vendor/font-awesome/less/larger.less | 0 .../media/vendor/font-awesome/less/list.less | 0 .../vendor/font-awesome/less/mixins.less | 0 .../media/vendor/font-awesome/less/path.less | 0 .../font-awesome/less/rotated-flipped.less | 0 .../font-awesome/less/screen-reader.less | 0 .../vendor/font-awesome/less/stacked.less | 0 .../vendor/font-awesome/less/variables.less | 0 .../media/vendor/font-awesome/package.json | 0 .../vendor/font-awesome/scss/_animated.scss | 0 .../font-awesome/scss/_bordered-pulled.scss | 0 .../media/vendor/font-awesome/scss/_core.scss | 0 .../font-awesome/scss/_fixed-width.scss | 0 .../vendor/font-awesome/scss/_icons.scss | 0 .../vendor/font-awesome/scss/_larger.scss | 0 .../media/vendor/font-awesome/scss/_list.scss | 0 .../vendor/font-awesome/scss/_mixins.scss | 0 .../media/vendor/font-awesome/scss/_path.scss | 0 .../font-awesome/scss/_rotated-flipped.scss | 0 .../font-awesome/scss/_screen-reader.scss | 0 .../vendor/font-awesome/scss/_stacked.scss | 0 .../vendor/font-awesome/scss/_variables.scss | 0 .../font-awesome/scss/font-awesome.scss | 0 .../images/ui-icons_444444_256x240.png | Bin .../images/ui-icons_555555_256x240.png | Bin .../images/ui-icons_777620_256x240.png | Bin .../images/ui-icons_777777_256x240.png | Bin .../images/ui-icons_cc0000_256x240.png | Bin .../images/ui-icons_ffffff_256x240.png | Bin .../media/vendor/jquery-ui/jquery-ui.css | 0 .../media/vendor/jquery-ui/jquery-ui.js | 0 .../media/vendor/jquery.idle-timer.js | 0 .../media/vendor/jquery.inputmask.js | 0 .../dashboard/media/vendor/jquery.js | 0 .../dashboard/media/vendor/select2/README.md | 0 .../media/vendor/select2/select2.css | 0 .../dashboard/media/vendor/select2/select2.js | 0 .../media/vendor/select2/select2.min.js | 0 .../media/vendor/select2/select2.png | Bin .../media/vendor/select2/spinner.gif | Bin .../media/vendor/twitter-bootstrap/.gitignore | 0 .../twitter-bootstrap/css/bootstrap-theme.css | 0 .../css/bootstrap-theme.css.map | 0 .../twitter-bootstrap/css/bootstrap.css | 0 .../twitter-bootstrap/css/bootstrap.css.map | 0 .../fonts/glyphicons-halflings-regular.eot | Bin .../fonts/glyphicons-halflings-regular.svg | 0 .../fonts/glyphicons-halflings-regular.ttf | Bin .../fonts/glyphicons-halflings-regular.woff | Bin .../fonts/glyphicons-halflings-regular.woff2 | Bin .../vendor/twitter-bootstrap/js/bootstrap.js | 0 .../dashboard/media/vendor/underscore.js | 0 .../dashboard/middleware}/__init__.py | 0 .../dashboard/middleware/common.py | 0 .../dashboard/middleware/locale.py | 0 .../dashboard/settings/__init__.py | 0 .../dashboard/settings/base.py | 71 +++++++------ .../dashboard/settings/components/__init__.py | 0 .../dashboard/settings/components/auth.py | 6 +- .../dashboard/settings/components/cas_auth.py | 0 .../dashboard/settings/components/csp.py | 0 .../settings/components/ldap_auth.py | 0 .../settings/components/oidc_auth.py | 8 +- .../settings/components/shibboleth_auth.py | 0 .../dashboard/settings/local.py | 7 +- .../dashboard/settings/production.py | 3 +- .../dashboard/settings/test.py | 8 +- .../dashboard/settings/testmysql.py | 2 +- .../dashboard/templates/404.html | 0 .../dashboard/templates/500.html | 0 .../dashboard/templates/_form.html | 0 .../dashboard/templates/_formset.html | 0 .../dashboard/templates/_formset_table.html | 0 .../templates/_fpr_update_button.html | 0 .../dashboard/templates/_messages.html | 0 .../dashboard/templates/_pager.html | 0 .../dashboard/templates/accounts/add.html | 0 .../dashboard/templates/accounts/edit.html | 0 .../dashboard/templates/accounts/list.html | 0 .../templates/accounts/logged_out.html | 0 .../dashboard/templates/accounts/login.html | 0 .../dashboard/templates/accounts/profile.html | 0 .../templates/administration/api.html | 0 .../atom_levels_of_description.html | 0 .../administration/dips_as_edit.html | 0 .../administration/dips_atom_edit.html | 0 .../templates/administration/general.html | 0 .../administration/handle_config.html | 0 .../templates/administration/language.html | 0 .../templates/administration/locations.html | 0 .../administration/premis_agent.html | 0 .../templates/administration/processing.html | 0 .../administration/processing_edit.html | 0 .../reports/failure_detail.html | 0 .../administration/reports/failures.html | 0 .../templates/administration/sidebar.html | 0 .../templates/administration/taxonomy.html | 0 .../templates/administration/term_detail.html | 0 .../templates/administration/terms.html | 0 .../templates/administration/usage.html | 0 .../templates/administration/version.html | 0 .../templates/appraisal/appraisal.html | 0 .../_archival_storage_search_form.html | 0 .../archival_storage/archival_storage.html | 0 .../templates/archival_storage/view.html | 0 .../dashboard/templates/backlog/backlog.html | 0 .../dashboard/templates/delete_request.html | 0 .../templates/elasticsearch_error.html | 0 .../templates/elasticsearch_not_found.html | 0 .../dashboard/templates/forbidden.html | 0 .../templates/ingest/aip_browse.html | 0 .../templates/ingest/as/_search_form.html | 0 .../dashboard/templates/ingest/as/match.html | 0 .../ingest/as/resource_component.html | 0 .../templates/ingest/as/resource_detail.html | 0 .../templates/ingest/as/resource_list.html | 0 .../templates/ingest/as/review_matches.html | 0 .../ingest/backlog/_search_form.html | 0 .../dashboard/templates/ingest/detail.html | 0 .../dashboard/templates/ingest/grid.html | 0 .../templates/ingest/metadata_add_files.html | 0 .../templates/ingest/metadata_edit.html | 0 .../ingest/metadata_event_detail.html | 0 .../templates/ingest/metadata_list.html | 0 .../templates/ingest/microservices.html | 0 .../ingest/normalization_report.html | 0 .../templates/installer/storagesetup.html | 0 .../templates/installer/welcome.html | 0 .../dashboard/templates/layout.html | 0 .../dashboard/templates/layout_ajax.html | 0 .../dashboard/templates/layout_fluid.html | 0 .../templates/main/_tasks_pager.html | 0 .../dashboard/templates/main/access.html | 0 .../dashboard/templates/main/tasks.html | 0 .../templates/rights/rights_edit.html | 0 .../templates/rights/rights_grants_edit.html | 0 .../templates/rights/rights_list.html | 0 .../dashboard/templates/simple_confirm.html | 0 .../templates/transfer/component.html | 0 .../dashboard/templates/transfer/detail.html | 0 .../dashboard/templates/transfer/grid.html | 0 .../templates/transfer/metadata_edit.html | 0 .../templates/transfer/metadata_list.html | 0 .../templates/transfer/microservices.html | 0 src/archivematica/dashboard/urls.py | 72 ++++++++++++++ src/{ => archivematica}/dashboard/wsgi.py | 2 +- src/dashboard/urls.py | 59 ----------- tests/MCPClient/conftest.py | 7 +- tests/MCPClient/test_antivirus.py | 19 ++-- tests/MCPClient/test_antivirus_clamdscan.py | 3 +- tests/MCPClient/test_antivirus_clamscan.py | 3 +- ...test_archivematicaCreateMETSMetadataCSV.py | 4 +- ...test_archivematicaCreateMETSMetadataXML.py | 13 ++- .../test_archivematicaCreateMETSRights.py | 9 +- ...rchivematicaCreateMETSRightsDspaceMDRef.py | 13 +-- tests/MCPClient/test_assign_file_uuids.py | 21 ++-- .../test_assign_uuids_to_directories.py | 7 +- tests/MCPClient/test_characterize_file.py | 23 +++-- .../test_check_for_access_directory.py | 9 +- tests/MCPClient/test_create_aic_mets.py | 20 ++-- tests/MCPClient/test_create_aip_mets.py | 17 ++-- tests/MCPClient/test_create_dataverse_mets.py | 5 +- tests/MCPClient/test_create_mets_v2.py | 32 +++--- tests/MCPClient/test_create_transfer_mets.py | 75 ++++++++------ tests/MCPClient/test_dip_generation_helper.py | 7 +- tests/MCPClient/test_email_fail_report.py | 16 ++- .../test_ensure_no_mutable_globals.py | 8 +- tests/MCPClient/test_extract_contents.py | 24 +++-- tests/MCPClient/test_filename_change.py | 19 ++-- tests/MCPClient/test_fpr_commands.py | 5 +- tests/MCPClient/test_has_packages.py | 9 +- tests/MCPClient/test_identify_file_format.py | 32 +++--- tests/MCPClient/test_job.py | 2 +- tests/MCPClient/test_json_conversion.py | 4 +- tests/MCPClient/test_load_labels_from_csv.py | 7 +- .../test_load_premis_events_from_xml.py | 30 ++++-- tests/MCPClient/test_move_or_merge.py | 3 +- tests/MCPClient/test_move_to_backlog.py | 5 +- tests/MCPClient/test_normalize.py | 27 +++-- tests/MCPClient/test_parse_dataverse.py | 9 +- tests/MCPClient/test_parse_external_mets.py | 5 +- tests/MCPClient/test_parse_mets_to_db.py | 17 ++-- tests/MCPClient/test_pid_components.py | 36 ++++--- tests/MCPClient/test_policy_check.py | 33 +++--- tests/MCPClient/test_post_store_aip_hook.py | 11 +- tests/MCPClient/test_reingest_mets.py | 13 +-- ...t_restructure_dip_for_content_dm_upload.py | 3 +- tests/MCPClient/test_rights_from_csv.py | 7 +- .../MCPClient/test_store_file_modification.py | 5 +- tests/MCPClient/test_transcribe_file.py | 16 +-- tests/MCPClient/test_upload_archivesspace.py | 77 +++++++++----- tests/MCPClient/test_upload_qubit.py | 5 +- tests/MCPClient/test_validate_file.py | 41 ++++---- tests/MCPClient/test_verify_checksum.py | 19 ++-- tests/MCPClient/upload-qubit-test | 2 +- tests/MCPServer/test_gearman.py | 43 +++++--- tests/MCPServer/test_integration.py | 37 +++---- tests/MCPServer/test_mcp.py | 31 +++--- tests/MCPServer/test_package.py | 25 +++-- tests/MCPServer/test_processing_config.py | 41 +++++--- tests/MCPServer/test_queues.py | 15 +-- tests/MCPServer/test_rpc_server.py | 13 ++- tests/MCPServer/test_translation.py | 10 +- tests/MCPServer/test_workflow.py | 17 +++- tests/MCPServer/test_workflow_abilities.py | 11 +- tests/archivematicaCommon/test_appconfig.py | 5 +- .../test_archivematica_functions.py | 7 +- tests/archivematicaCommon/test_bindpid.py | 3 +- .../test_database_functions.py | 7 +- tests/archivematicaCommon/test_dicts.py | 7 +- .../test_elasticsearch_functions.py | 94 +++++++++++------- .../test_env_configparser.py | 3 +- .../test_execute_functions.py | 5 +- .../test_file_operations.py | 19 ++-- .../test_gearman_encoder.py | 3 +- .../test_identifier_functions.py | 2 +- .../test_storage_service.py | 15 ++- .../components/accounts/test_views.py | 5 +- .../administration/test_administration.py | 10 +- .../administration/test_dip_upload_configs.py | 13 ++- .../components/administration/test_forms.py | 2 +- .../administration/test_processing_config.py | 33 +++--- .../components/administration/test_storage.py | 9 +- .../components/administration/test_usage.py | 14 +-- .../archival_storage/test_archival_storage.py | 79 +++++++++------ tests/dashboard/components/file/test_views.py | 67 +++++++------ tests/dashboard/components/mcp/test_views.py | 9 +- .../components/test_advanced_search.py | 3 +- tests/dashboard/components/unit/test_views.py | 15 ++- tests/dashboard/fpr/test_forms.py | 15 +-- tests/dashboard/fpr/test_utils.py | 5 +- tests/dashboard/fpr/test_views.py | 5 +- tests/dashboard/main/conftest.py | 3 +- ...command_purge_transient_processing_data.py | 17 ++-- tests/dashboard/main/test_transfer.py | 3 +- tests/dashboard/test_access.py | 17 ++-- tests/dashboard/test_api.py | 54 +++++----- tests/dashboard/test_api_v2beta.py | 17 ++-- tests/dashboard/test_auth.py | 5 +- tests/dashboard/test_backlog.py | 3 +- tests/dashboard/test_cas.py | 9 +- .../test_dashboardsetting_manager.py | 3 +- tests/dashboard/test_filesystem_ajax.py | 43 ++++---- tests/dashboard/test_helpers.py | 12 ++- tests/dashboard/test_ingest.py | 21 ++-- tests/dashboard/test_middleware.py | 17 +++- tests/dashboard/test_migrations.py | 4 +- tests/dashboard/test_models.py | 10 +- tests/dashboard/test_oidc.py | 3 +- tests/dashboard/test_password_validation.py | 4 +- tests/dashboard/test_rights.py | 11 +- tests/dashboard/test_shibboleth_login.py | 3 +- tests/dashboard/test_signals.py | 3 +- tests/dashboard/test_templatetags.py | 5 +- tests/dashboard/test_transfer.py | 7 +- tests/integration/docker-compose.yml | 2 +- tests/integration/test_oidc_auth.py | 3 +- 1002 files changed, 2493 insertions(+), 1832 deletions(-) delete mode 100644 src/MCPServer/server/tasks/__init__.py rename src/{ => archivematica}/MCPClient/README.md (100%) rename src/{MCPClient/clientScripts => archivematica/MCPClient}/__init__.py (100%) rename src/{ => archivematica}/MCPClient/archivematicaClient.py (53%) rename src/{ => archivematica}/MCPClient/archivematicaClientModules (100%) rename src/{ => archivematica}/MCPClient/assets/README/README.html (100%) rename src/{ => archivematica}/MCPClient/assets/README/TRANSFER_README.html (100%) rename src/{ => archivematica}/MCPClient/assets/catalog/catalog.xml (100%) rename src/{ => archivematica}/MCPClient/assets/mets/mets.xsd (100%) rename src/{ => archivematica}/MCPClient/assets/mets/xlink.xsd (100%) rename src/{ => archivematica}/MCPClient/assets/mods/mods.xsd (100%) rename src/{ => archivematica}/MCPClient/assets/mods/xml.xsd (100%) rename src/{ => archivematica}/MCPClient/assets/premis/premis-v2-2.xsd (100%) rename src/{ => archivematica}/MCPClient/assets/premis/premis.xsd (100%) rename src/{ => archivematica}/MCPClient/client/__init__.py (100%) rename src/{ => archivematica}/MCPClient/client/gearman.py (93%) rename src/{ => archivematica}/MCPClient/client/job.py (99%) rename src/{ => archivematica}/MCPClient/client/loader.py (92%) rename src/{ => archivematica}/MCPClient/client/mcp.py (89%) rename src/{ => archivematica}/MCPClient/client/metrics.py (96%) rename src/{ => archivematica}/MCPClient/client/pool.py (97%) rename src/{ => archivematica}/MCPClient/client/utils.py (100%) rename src/{ => archivematica}/MCPClient/client/worker.py (83%) rename src/{MCPClient/settings => archivematica/MCPClient/clientScripts}/__init__.py (100%) rename src/{ => archivematica}/MCPClient/clientScripts/archivematicaCreateMETSMetadataCSV.py (98%) rename src/{ => archivematica}/MCPClient/clientScripts/archivematicaCreateMETSMetadataXML.py (97%) rename src/{ => archivematica}/MCPClient/clientScripts/archivematicaCreateMETSReingest.py (98%) rename src/{ => archivematica}/MCPClient/clientScripts/archivematicaCreateMETSRights.py (98%) rename src/{ => archivematica}/MCPClient/clientScripts/archivematicaCreateMETSRightsDspaceMDRef.py (97%) rename src/{ => archivematica}/MCPClient/clientScripts/archivematicaCreateMETSTrim.py (98%) rename src/{ => archivematica}/MCPClient/clientScripts/archivematica_clamscan.py (97%) rename src/{ => archivematica}/MCPClient/clientScripts/assign_file_uuids.py (93%) rename src/{ => archivematica}/MCPClient/clientScripts/assign_uuids_to_directories.py (91%) rename src/{ => archivematica}/MCPClient/clientScripts/bag_with_empty_directories.py (97%) rename src/{ => archivematica}/MCPClient/clientScripts/bind_pid.py (93%) rename src/{ => archivematica}/MCPClient/clientScripts/bind_pids.py (92%) rename src/{ => archivematica}/MCPClient/clientScripts/change_names.py (100%) rename src/{ => archivematica}/MCPClient/clientScripts/change_object_names.py (95%) rename src/{ => archivematica}/MCPClient/clientScripts/change_sip_name.py (92%) rename src/{ => archivematica}/MCPClient/clientScripts/characterize_file.py (88%) rename src/{ => archivematica}/MCPClient/clientScripts/check_for_access_directory.py (97%) rename src/{ => archivematica}/MCPClient/clientScripts/check_for_service_directory.py (99%) rename src/{ => archivematica}/MCPClient/clientScripts/check_for_submission_documentation.py (100%) rename src/{ => archivematica}/MCPClient/clientScripts/check_transfer_directory_for_objects.py (100%) rename src/{ => archivematica}/MCPClient/clientScripts/cmd_chmod.py (81%) rename src/{ => archivematica}/MCPClient/clientScripts/cmd_cp.py (81%) rename src/{ => archivematica}/MCPClient/clientScripts/cmd_mkdir.py (81%) rename src/{ => archivematica}/MCPClient/clientScripts/cmd_mv.py (81%) rename src/{ => archivematica}/MCPClient/clientScripts/cmd_test.py (81%) rename src/{ => archivematica}/MCPClient/clientScripts/cmd_tree.py (81%) rename src/{ => archivematica}/MCPClient/clientScripts/compress_aip.py (96%) rename src/{ => archivematica}/MCPClient/clientScripts/convert_dataverse_structure.py (99%) rename src/{ => archivematica}/MCPClient/clientScripts/copyRecursiveIfExists.sh (100%) rename src/{ => archivematica}/MCPClient/clientScripts/copySubmissionDocs.sh (100%) rename src/{ => archivematica}/MCPClient/clientScripts/copy_recursive.py (85%) rename src/{ => archivematica}/MCPClient/clientScripts/copy_submission_docs.py (85%) rename src/{ => archivematica}/MCPClient/clientScripts/copy_thumbnails_to_dip_directory.py (100%) rename src/{ => archivematica}/MCPClient/clientScripts/copy_transfer_submission_documentation.py (93%) rename src/{ => archivematica}/MCPClient/clientScripts/copy_transfers_metadata_and_logs.py (94%) rename src/{ => archivematica}/MCPClient/clientScripts/create_aic_mets.py (93%) rename src/{ => archivematica}/MCPClient/clientScripts/create_event.py (97%) rename src/{ => archivematica}/MCPClient/clientScripts/create_mets_dataverse_v2.py (95%) rename src/{ => archivematica}/MCPClient/clientScripts/create_mets_v2.py (97%) rename src/{ => archivematica}/MCPClient/clientScripts/create_sip_from_transfer_objects.py (95%) rename src/{ => archivematica}/MCPClient/clientScripts/create_sips_from_trim_transfer_containers.py (95%) rename src/{ => archivematica}/MCPClient/clientScripts/create_transfer_metadata.py (94%) rename src/{ => archivematica}/MCPClient/clientScripts/create_transfer_mets.py (97%) rename src/{ => archivematica}/MCPClient/clientScripts/determine_aip_version_key_exit_code.py (97%) rename src/{ => archivematica}/MCPClient/clientScripts/dip_generation_helper.py (96%) rename src/{ => archivematica}/MCPClient/clientScripts/email_fail_report.py (96%) rename src/{ => archivematica}/MCPClient/clientScripts/examine_contents.py (93%) rename src/{ => archivematica}/MCPClient/clientScripts/extract_contents.py (91%) rename src/{ => archivematica}/MCPClient/clientScripts/extract_maildir_attachments.py (97%) rename src/{ => archivematica}/MCPClient/clientScripts/extract_zipped_transfer.py (95%) rename src/{ => archivematica}/MCPClient/clientScripts/failed_sip_cleanup.py (88%) rename src/{ => archivematica}/MCPClient/clientScripts/failed_transfer_cleanup.py (90%) rename src/{ => archivematica}/MCPClient/clientScripts/file_to_folder.py (97%) rename src/{ => archivematica}/MCPClient/clientScripts/get_aip_storage_locations.py (88%) rename src/{ => archivematica}/MCPClient/clientScripts/has_packages.py (83%) rename src/{ => archivematica}/MCPClient/clientScripts/identify_dspace_files.py (96%) rename src/{ => archivematica}/MCPClient/clientScripts/identify_dspace_mets_files.py (95%) rename src/{ => archivematica}/MCPClient/clientScripts/identify_file_format.py (92%) rename src/{ => archivematica}/MCPClient/clientScripts/index_aip.py (92%) rename src/{ => archivematica}/MCPClient/clientScripts/is_maildir_aip.py (100%) rename src/{ => archivematica}/MCPClient/clientScripts/json_metadata_to_csv.py (100%) rename src/{ => archivematica}/MCPClient/clientScripts/lib/__init__.py (83%) rename src/{ => archivematica}/MCPClient/clientScripts/load_dublin_core.py (96%) rename src/{ => archivematica}/MCPClient/clientScripts/load_labels_from_csv.py (97%) rename src/{ => archivematica}/MCPClient/clientScripts/load_premis_events_from_xml.py (99%) rename src/{ => archivematica}/MCPClient/clientScripts/manual_normalization_check_for_manual_normalization_directory.py (100%) rename src/{ => archivematica}/MCPClient/clientScripts/manual_normalization_create_metadata_and_restructure.py (96%) rename src/{ => archivematica}/MCPClient/clientScripts/manual_normalization_identify_files_included.py (93%) rename src/{ => archivematica}/MCPClient/clientScripts/manual_normalization_move_access_files_to_dip.py (98%) rename src/{ => archivematica}/MCPClient/clientScripts/manual_normalization_remove_mn_directories.py (96%) rename src/{ => archivematica}/MCPClient/clientScripts/move_or_merge.py (97%) rename src/{ => archivematica}/MCPClient/clientScripts/move_sip.py (94%) rename src/{ => archivematica}/MCPClient/clientScripts/move_to_backlog.py (92%) rename src/{ => archivematica}/MCPClient/clientScripts/move_transfer.py (93%) rename src/{ => archivematica}/MCPClient/clientScripts/normalize.py (97%) rename src/{ => archivematica}/MCPClient/clientScripts/normalize_report.py (94%) rename src/{ => archivematica}/MCPClient/clientScripts/parse_dataverse_mets.py (97%) rename src/{ => archivematica}/MCPClient/clientScripts/parse_external_mets.py (87%) rename src/{ => archivematica}/MCPClient/clientScripts/parse_mets_to_db.py (98%) rename src/{ => archivematica}/MCPClient/clientScripts/pid_declaration.py (97%) rename src/{ => archivematica}/MCPClient/clientScripts/policy_check.py (96%) rename src/{ => archivematica}/MCPClient/clientScripts/post_store_aip_hook.py (95%) rename src/{ => archivematica}/MCPClient/clientScripts/remove_directories.py (100%) rename src/{ => archivematica}/MCPClient/clientScripts/remove_files_without_premis_metadata.py (97%) rename src/{ => archivematica}/MCPClient/clientScripts/remove_hidden_files_and_directories.py (100%) rename src/{ => archivematica}/MCPClient/clientScripts/remove_unneeded_files.py (94%) rename src/{ => archivematica}/MCPClient/clientScripts/restructure_bag_aip_to_sip.py (96%) rename src/{ => archivematica}/MCPClient/clientScripts/restructure_dip_for_content_dm_upload.py (98%) rename src/{ => archivematica}/MCPClient/clientScripts/restructure_for_compliance.py (90%) rename src/{ => archivematica}/MCPClient/clientScripts/restructure_for_compliance_maildir.py (100%) rename src/{ => archivematica}/MCPClient/clientScripts/restructure_for_compliance_sip.py (92%) rename src/{ => archivematica}/MCPClient/clientScripts/retry_normalize_remove_normalized.py (96%) rename src/{ => archivematica}/MCPClient/clientScripts/rights_from_csv.py (99%) rename src/{ => archivematica}/MCPClient/clientScripts/save_dublin_core.py (96%) rename src/{ => archivematica}/MCPClient/clientScripts/set_maildir_file_grp_use_and_file_ids.py (93%) rename src/{ => archivematica}/MCPClient/clientScripts/set_transfer_type.py (87%) rename src/{ => archivematica}/MCPClient/clientScripts/store_aip.py (95%) rename src/{ => archivematica}/MCPClient/clientScripts/store_file_modification_dates.py (95%) rename src/{ => archivematica}/MCPClient/clientScripts/transcoder.py (98%) rename src/{ => archivematica}/MCPClient/clientScripts/transcribe_file.py (90%) rename src/{ => archivematica}/MCPClient/clientScripts/trim_create_rights_entries.py (92%) rename src/{ => archivematica}/MCPClient/clientScripts/trim_restructure_for_compliance.py (95%) rename src/{ => archivematica}/MCPClient/clientScripts/trim_verify_checksums.py (95%) rename src/{ => archivematica}/MCPClient/clientScripts/trim_verify_manifest.py (98%) rename src/{ => archivematica}/MCPClient/clientScripts/update_size_and_checksum.py (93%) rename src/{ => archivematica}/MCPClient/clientScripts/upload_archivesspace.py (97%) rename src/{ => archivematica}/MCPClient/clientScripts/upload_qubit.py (98%) rename src/{ => archivematica}/MCPClient/clientScripts/validate_file.py (95%) rename src/{ => archivematica}/MCPClient/clientScripts/verify_aip.py (96%) rename src/{ => archivematica}/MCPClient/clientScripts/verify_and_restructure_transfer_bag.py (92%) rename src/{ => archivematica}/MCPClient/clientScripts/verify_checksum.py (97%) rename src/{ => archivematica}/MCPClient/clientScripts/verify_checksums_in_file_sec_of_dspace_mets_files.py (97%) rename src/{ => archivematica}/MCPClient/clientScripts/verify_mets.py (100%) rename src/{ => archivematica}/MCPClient/clientScripts/verify_sip_compliance.py (98%) rename src/{ => archivematica}/MCPClient/clientScripts/verify_transfer_compliance.py (96%) rename src/{ => archivematica}/MCPClient/install/README.md (100%) rename src/{ => archivematica}/MCPClient/install/clientConfig.conf (100%) rename src/{ => archivematica}/MCPClient/install/clientConfig.logging.json (81%) rename src/{MCPServer => archivematica/MCPClient}/settings/__init__.py (100%) rename src/{ => archivematica}/MCPClient/settings/common.py (96%) rename src/{ => archivematica}/MCPClient/settings/test.py (95%) rename src/{ => archivematica}/MCPClient/settings/testmysql.py (85%) rename src/{archivematicaCommon => archivematica/MCPServer}/__init__.py (100%) rename src/{ => archivematica}/MCPServer/archivematicaMCP.py (61%) rename src/{ => archivematica}/MCPServer/assets/workflow-schema-v1.json (100%) rename src/{ => archivematica}/MCPServer/assets/workflow.json (100%) rename src/{ => archivematica}/MCPServer/install/README.md (100%) rename src/{ => archivematica}/MCPServer/install/serverConfig.conf (100%) rename src/{ => archivematica}/MCPServer/install/serverConfig.logging.json (81%) rename src/{ => archivematica}/MCPServer/server/__init__.py (100%) rename src/{ => archivematica}/MCPServer/server/jobs/__init__.py (50%) rename src/{ => archivematica}/MCPServer/server/jobs/base.py (96%) rename src/{ => archivematica}/MCPServer/server/jobs/chain.py (86%) rename src/{ => archivematica}/MCPServer/server/jobs/client.py (95%) rename src/{ => archivematica}/MCPServer/server/jobs/decisions.py (95%) rename src/{ => archivematica}/MCPServer/server/jobs/local.py (91%) rename src/{ => archivematica}/MCPServer/server/mcp.py (86%) rename src/{ => archivematica}/MCPServer/server/metrics.py (96%) rename src/{ => archivematica}/MCPServer/server/packages.py (98%) rename src/{ => archivematica}/MCPServer/server/processing_config.py (98%) rename src/{ => archivematica}/MCPServer/server/queues.py (98%) rename src/{ => archivematica}/MCPServer/server/rpc_server.py (97%) rename src/{ => archivematica}/MCPServer/server/shared_dirs.py (94%) create mode 100644 src/archivematica/MCPServer/server/tasks/__init__.py rename src/{ => archivematica}/MCPServer/server/tasks/backends/__init__.py (77%) rename src/{ => archivematica}/MCPServer/server/tasks/backends/base.py (100%) rename src/{ => archivematica}/MCPServer/server/tasks/backends/gearman_backend.py (97%) rename src/{ => archivematica}/MCPServer/server/tasks/task.py (96%) rename src/{ => archivematica}/MCPServer/server/translation.py (100%) rename src/{ => archivematica}/MCPServer/server/utils.py (100%) rename src/{ => archivematica}/MCPServer/server/watch_dirs.py (100%) rename src/{ => archivematica}/MCPServer/server/workflow.py (97%) rename src/{ => archivematica}/MCPServer/server/workflow_abilities.py (100%) rename src/{archivematicaCommon/externals/HTML => archivematica/MCPServer/settings}/__init__.py (100%) rename src/{ => archivematica}/MCPServer/settings/common.py (95%) rename src/{ => archivematica}/MCPServer/settings/test.py (95%) rename src/{ => archivematica}/MCPServer/settings/testmysql.py (85%) rename src/{ => archivematica}/archivematicaCommon/README.txt (100%) rename src/{archivematicaCommon/externals => archivematica/archivematicaCommon}/__init__.py (100%) rename src/{ => archivematica}/archivematicaCommon/appconfig.py (98%) rename src/{ => archivematica}/archivematicaCommon/archivematicaFunctions.py (99%) rename src/{ => archivematica}/archivematicaCommon/bag.py (100%) rename src/{ => archivematica}/archivematicaCommon/bindpid.py (100%) rename src/{ => archivematica}/archivematicaCommon/common_metrics.py (100%) rename src/{ => archivematica}/archivematicaCommon/countryCodes.py (100%) rename src/{ => archivematica}/archivematicaCommon/custom_handlers.py (100%) rename src/{ => archivematica}/archivematicaCommon/databaseFunctions.py (96%) rename src/{ => archivematica}/archivematicaCommon/dbconns.py (100%) rename src/{ => archivematica}/archivematicaCommon/dicts.py (99%) rename src/{ => archivematica}/archivematicaCommon/elasticSearchFunctions.py (99%) rename src/{ => archivematica}/archivematicaCommon/email_settings.py (100%) rename src/{ => archivematica}/archivematicaCommon/env_configparser.py (100%) rename src/{ => archivematica}/archivematicaCommon/executeOrRunSubProcess.py (99%) rename src/{ => archivematica}/archivematicaCommon/externals/HTML/HTML.py (100%) rename src/{ => archivematica}/archivematicaCommon/externals/HTML/Licence_CeCILL_V2-en.html (100%) rename src/{ => archivematica}/archivematicaCommon/externals/HTML/Licence_CeCILL_V2-fr.html (100%) rename src/{dashboard => archivematica/archivematicaCommon/externals/HTML}/__init__.py (100%) rename src/{dashboard/components => archivematica/archivematicaCommon/externals}/__init__.py (100%) rename src/{ => archivematica}/archivematicaCommon/externals/extractMaildirAttachments.py (100%) rename src/{ => archivematica}/archivematicaCommon/externals/fido/archivematica_format_extensions.xml (100%) rename src/{ => archivematica}/archivematicaCommon/externals/fiwalk_plugins/ficonfig.txt (100%) rename src/{ => archivematica}/archivematicaCommon/externals/fiwalk_plugins/pronom_ident.py (100%) rename src/{ => archivematica}/archivematicaCommon/externals/maildirToMbox.py (100%) rename src/{ => archivematica}/archivematicaCommon/externals/xmltodict.py (100%) rename src/{ => archivematica}/archivematicaCommon/fileOperations.py (96%) rename src/{ => archivematica}/archivematicaCommon/gearman_encoder.py (100%) rename src/{ => archivematica}/archivematicaCommon/identifier_functions.py (100%) rename src/{ => archivematica}/archivematicaCommon/namespaces.py (100%) rename src/{ => archivematica}/archivematicaCommon/processing.py (100%) rename src/{ => archivematica}/archivematicaCommon/storageService.py (99%) rename src/{ => archivematica}/archivematicaCommon/version.py (100%) rename src/{ => archivematica}/archivematicaCommon/xml2obj.py (100%) rename src/{dashboard/components/access => archivematica/dashboard}/__init__.py (100%) rename src/{dashboard/components/accounts => archivematica/dashboard/components}/__init__.py (100%) rename src/{dashboard/components/administration => archivematica/dashboard/components/access}/__init__.py (100%) rename src/{ => archivematica}/dashboard/components/access/urls.py (95%) rename src/{ => archivematica}/dashboard/components/access/views.py (96%) rename src/{dashboard/components/administration/migrations => archivematica/dashboard/components/accounts}/__init__.py (100%) rename src/{ => archivematica}/dashboard/components/accounts/apps.py (64%) rename src/{ => archivematica}/dashboard/components/accounts/backends.py (98%) rename src/{ => archivematica}/dashboard/components/accounts/forms.py (98%) rename src/{ => archivematica}/dashboard/components/accounts/signals.py (97%) rename src/{ => archivematica}/dashboard/components/accounts/urls.py (93%) rename src/{ => archivematica}/dashboard/components/accounts/validators.py (100%) rename src/{ => archivematica}/dashboard/components/accounts/views.py (95%) rename src/{dashboard/components/api => archivematica/dashboard/components/administration}/__init__.py (100%) rename src/{ => archivematica}/dashboard/components/administration/apps.py (67%) rename src/{ => archivematica}/dashboard/components/administration/forms.py (97%) rename src/{ => archivematica}/dashboard/components/administration/forms_dip_upload.py (100%) rename src/{ => archivematica}/dashboard/components/administration/migrations/0001_initial.py (95%) rename src/{ => archivematica}/dashboard/components/administration/migrations/0002_archivesspaceconfig.py (98%) rename src/{ => archivematica}/dashboard/components/administration/migrations/0003_archivesspace_help_text.py (100%) rename src/{ => archivematica}/dashboard/components/administration/migrations/0004_archivesspaceconfig_inherit_notes.py (100%) rename src/{ => archivematica}/dashboard/components/administration/migrations/0005_archivesspace_inherit_note_default.py (100%) rename src/{ => archivematica}/dashboard/components/administration/migrations/0006_use_statement_optional.py (100%) rename src/{ => archivematica}/dashboard/components/administration/migrations/0007_delete_unused_models.py (100%) rename src/{dashboard/components/appraisal => archivematica/dashboard/components/administration/migrations}/__init__.py (100%) rename src/{ => archivematica}/dashboard/components/administration/models.py (100%) rename src/{ => archivematica}/dashboard/components/administration/urls.py (91%) rename src/{ => archivematica}/dashboard/components/administration/views.py (95%) rename src/{ => archivematica}/dashboard/components/administration/views_dip_upload.py (81%) rename src/{ => archivematica}/dashboard/components/administration/views_processing.py (94%) rename src/{ => archivematica}/dashboard/components/advanced_search.py (100%) rename src/{dashboard/components/archival_storage => archivematica/dashboard/components/api}/__init__.py (100%) rename src/{ => archivematica}/dashboard/components/api/urls.py (98%) rename src/{ => archivematica}/dashboard/components/api/validators.py (100%) rename src/{ => archivematica}/dashboard/components/api/views.py (98%) rename src/{dashboard/components/backlog => archivematica/dashboard/components/appraisal}/__init__.py (100%) rename src/{ => archivematica}/dashboard/components/appraisal/urls.py (65%) rename src/{ => archivematica}/dashboard/components/appraisal/views.py (100%) rename src/{dashboard/components/file => archivematica/dashboard/components/archival_storage}/__init__.py (100%) rename src/{ => archivematica}/dashboard/components/archival_storage/atom.py (96%) rename src/{ => archivematica}/dashboard/components/archival_storage/forms.py (96%) rename src/{ => archivematica}/dashboard/components/archival_storage/urls.py (96%) rename src/{ => archivematica}/dashboard/components/archival_storage/views.py (97%) rename src/{dashboard/components/filesystem_ajax => archivematica/dashboard/components/backlog}/__init__.py (100%) rename src/{ => archivematica}/dashboard/components/backlog/urls.py (95%) rename src/{ => archivematica}/dashboard/components/backlog/views.py (95%) rename src/{ => archivematica}/dashboard/components/decorators.py (97%) rename src/{dashboard/components/ingest => archivematica/dashboard/components/file}/__init__.py (100%) rename src/{ => archivematica}/dashboard/components/file/urls.py (90%) rename src/{ => archivematica}/dashboard/components/file/views.py (96%) rename src/{dashboard/components/mcp => archivematica/dashboard/components/filesystem_ajax}/__init__.py (100%) rename src/{ => archivematica}/dashboard/components/filesystem_ajax/helpers.py (94%) rename src/{ => archivematica}/dashboard/components/filesystem_ajax/urls.py (96%) rename src/{ => archivematica}/dashboard/components/filesystem_ajax/views.py (98%) rename src/{ => archivematica}/dashboard/components/helpers.py (99%) rename src/{dashboard/components/rights => archivematica/dashboard/components/ingest}/__init__.py (100%) rename src/{ => archivematica}/dashboard/components/ingest/forms.py (98%) rename src/{ => archivematica}/dashboard/components/ingest/pair_matcher.py (98%) rename src/{ => archivematica}/dashboard/components/ingest/urls.py (97%) rename src/{ => archivematica}/dashboard/components/ingest/views.py (96%) rename src/{ => archivematica}/dashboard/components/ingest/views_NormalizationReport.py (98%) rename src/{ => archivematica}/dashboard/components/ingest/views_as.py (97%) rename src/{dashboard/components/transfer => archivematica/dashboard/components/mcp}/__init__.py (100%) rename src/{ => archivematica}/dashboard/components/mcp/urls.py (94%) rename src/{ => archivematica}/dashboard/components/mcp/views.py (95%) rename src/{dashboard/components/unit => archivematica/dashboard/components/rights}/__init__.py (100%) rename src/{ => archivematica}/dashboard/components/rights/forms.py (99%) rename src/{ => archivematica}/dashboard/components/rights/ingest_urls.py (95%) rename src/{ => archivematica}/dashboard/components/rights/load.py (95%) rename src/{ => archivematica}/dashboard/components/rights/transfer_urls.py (95%) rename src/{ => archivematica}/dashboard/components/rights/views.py (99%) rename src/{dashboard/contrib => archivematica/dashboard/components/transfer}/__init__.py (100%) rename src/{ => archivematica}/dashboard/components/transfer/urls.py (97%) rename src/{ => archivematica}/dashboard/components/transfer/views.py (95%) rename src/{dashboard/contrib/mcp => archivematica/dashboard/components/unit}/__init__.py (100%) rename src/{ => archivematica}/dashboard/components/unit/urls.py (96%) rename src/{ => archivematica}/dashboard/components/unit/views.py (96%) rename src/{dashboard/fpr/management => archivematica/dashboard/contrib}/__init__.py (100%) rename src/{dashboard/fpr/management/commands => archivematica/dashboard/contrib/mcp}/__init__.py (100%) rename src/{ => archivematica}/dashboard/contrib/mcp/client.py (98%) rename src/{ => archivematica}/dashboard/fpr/__init__.py (100%) rename src/{ => archivematica}/dashboard/fpr/apps.py (74%) rename src/{ => archivematica}/dashboard/fpr/forms.py (99%) rename src/{ => archivematica}/dashboard/fpr/helpers.py (100%) rename src/{dashboard/fpr/migrations => archivematica/dashboard/fpr/management}/__init__.py (100%) rename src/{dashboard/fpr/templatetags => archivematica/dashboard/fpr/management/commands}/__init__.py (100%) rename src/{ => archivematica}/dashboard/fpr/management/commands/get_fpr_changes.py (100%) rename src/{ => archivematica}/dashboard/fpr/management/commands/import_pronom_ids.py (96%) rename src/{ => archivematica}/dashboard/fpr/migrations-data/mc_validate_cmd.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0001_initial.py (98%) rename src/{ => archivematica}/dashboard/fpr/migrations/0002_initial_data.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0003_pronom_84.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0004_pronom_88.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0005_update_tool_versions.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0006_i18n_models.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0007_embedded_default_thumbnail.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0008_update_django_autoslug.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0009_pronom_90.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0010_update_fido_136.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0011_mediaconch_validation.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0012_mediaconch_policy_checks.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0013_normalization_rules_mov.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0014_fix_fits_command.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0015_pronom_92.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0016_update_idtools.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0017_ocr_unique_names.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0018_slug_unique.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0019_fix_gs_command.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0020_pronom_93.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0021_normalize_jp2_with_ffmpeg_for_preservation.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0022_pronom_94.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0023_update_idtools.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0024_update_fido.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0025_update_fido_1312.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0026_fits_nailgun_compat.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0027_idcommand_tool_disallow_blank.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0028_idcommand_unique_enabled.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0029_update_inkscape_svg_command.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0030_update_jhove_command.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0031_update_normalization_rules.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0032_pronom_96.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0033_update_idtools.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0034_delete_unused_models.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0035_python3_compatibility.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0036_pronom_109.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0037_update_idtools.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0038_use_uuidfield.py (85%) rename src/{ => archivematica}/dashboard/fpr/migrations/0039_django32.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0040_update_jhove_validation.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0041_pronom_116.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0042_update_idtools.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0043_update_default_thumbnail_command.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0044_remove_fits.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0045_update_event_detail_commands.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/0046_update_jhove_module_validation.py (98%) rename src/{dashboard/installer => archivematica/dashboard/fpr/migrations}/__init__.py (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/initial_data.json (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/pronom84_formatgroups_new.json (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/pronom84_formats_all.json (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/pronom84_formatversions_all.json (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/pronom84_fprules_all.json (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/pronom84_fptools_all.json (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/pronom84_idcommands_all.json (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/pronom84_idrules_all.json (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/pronom84_idtools_all.json (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/pronom_109.json (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/pronom_116.json (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/pronom_88.json (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/pronom_90.json (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/pronom_92.json (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/pronom_93.json (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/pronom_94.json (100%) rename src/{ => archivematica}/dashboard/fpr/migrations/pronom_96.json (100%) rename src/{ => archivematica}/dashboard/fpr/models.py (99%) rename src/{ => archivematica}/dashboard/fpr/templates/fpr/_sidebar.html (100%) rename src/{ => archivematica}/dashboard/fpr/templates/fpr/app_layout.html (100%) rename src/{ => archivematica}/dashboard/fpr/templates/fpr/disable.html (100%) rename src/{ => archivematica}/dashboard/fpr/templates/fpr/format/detail.html (100%) rename src/{ => archivematica}/dashboard/fpr/templates/fpr/format/form.html (100%) rename src/{ => archivematica}/dashboard/fpr/templates/fpr/format/group/delete.html (100%) rename src/{ => archivematica}/dashboard/fpr/templates/fpr/format/group/form.html (100%) rename src/{ => archivematica}/dashboard/fpr/templates/fpr/format/group/list.html (100%) rename src/{ => archivematica}/dashboard/fpr/templates/fpr/format/list.html (100%) rename src/{ => archivematica}/dashboard/fpr/templates/fpr/format/version/detail.html (100%) rename src/{ => archivematica}/dashboard/fpr/templates/fpr/format/version/form.html (100%) rename src/{ => archivematica}/dashboard/fpr/templates/fpr/fpcommand/detail.html (100%) rename src/{ => archivematica}/dashboard/fpr/templates/fpr/fpcommand/form.html (100%) rename src/{ => archivematica}/dashboard/fpr/templates/fpr/fpcommand/list.html (100%) rename src/{ => archivematica}/dashboard/fpr/templates/fpr/fprule/detail.html (100%) rename src/{ => archivematica}/dashboard/fpr/templates/fpr/fprule/form.html (100%) rename src/{ => archivematica}/dashboard/fpr/templates/fpr/fprule/list.html (100%) rename src/{ => archivematica}/dashboard/fpr/templates/fpr/fptool/detail.html (100%) rename src/{ => archivematica}/dashboard/fpr/templates/fpr/fptool/form.html (100%) rename src/{ => archivematica}/dashboard/fpr/templates/fpr/fptool/list.html (100%) rename src/{ => archivematica}/dashboard/fpr/templates/fpr/idcommand/detail.html (100%) rename src/{ => archivematica}/dashboard/fpr/templates/fpr/idcommand/form.html (100%) rename src/{ => archivematica}/dashboard/fpr/templates/fpr/idcommand/list.html (100%) rename src/{ => archivematica}/dashboard/fpr/templates/fpr/idrule/detail.html (100%) rename src/{ => archivematica}/dashboard/fpr/templates/fpr/idrule/form.html (100%) rename src/{ => archivematica}/dashboard/fpr/templates/fpr/idrule/list.html (100%) rename src/{ => archivematica}/dashboard/fpr/templates/fpr/idtool/detail.html (100%) rename src/{ => archivematica}/dashboard/fpr/templates/fpr/idtool/form.html (100%) rename src/{ => archivematica}/dashboard/fpr/templates/fpr/idtool/list.html (100%) rename src/{ => archivematica}/dashboard/fpr/templates/fpr/revisions/list.html (100%) rename src/{dashboard/installer/management => archivematica/dashboard/fpr/templatetags}/__init__.py (100%) rename src/{ => archivematica}/dashboard/fpr/templatetags/revisions_link.py (100%) rename src/{ => archivematica}/dashboard/fpr/urls.py (99%) rename src/{ => archivematica}/dashboard/fpr/utils.py (100%) rename src/{ => archivematica}/dashboard/fpr/views.py (99%) rename src/{ => archivematica}/dashboard/frontend/.eslintrc (100%) rename src/{ => archivematica}/dashboard/frontend/.gitignore (100%) rename src/{ => archivematica}/dashboard/frontend/README.md (100%) rename src/{ => archivematica}/dashboard/frontend/app/alert/alert.controller.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/analysis/analysis.controller.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/analysis/analysis.html (100%) rename src/{ => archivematica}/dashboard/frontend/app/app.css (100%) rename src/{ => archivematica}/dashboard/frontend/app/app.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/archivesspace/archivesspace.controller.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/archivesspace/form.html (100%) rename src/{ => archivematica}/dashboard/frontend/app/arrangement/arrangement.controller.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/arrangement/edit_metadata_form.html (100%) rename src/{ => archivematica}/dashboard/frontend/app/browse/browse.controller.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/browser.css (100%) rename src/{ => archivematica}/dashboard/frontend/app/checklist/checklist.directive.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/components/version/interpolate-filter.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/components/version/interpolate-filter_test.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/components/version/version-directive.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/components/version/version-directive_test.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/components/version/version.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/components/version/version_test.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/examine_contents/examine_contents.controller.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/examine_contents/examine_contents.html (100%) rename src/{ => archivematica}/dashboard/frontend/app/examine_contents/file_info.html (100%) rename src/{ => archivematica}/dashboard/frontend/app/facet_selector/facet_selector.controller.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/file_list/file_list.controller.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/filters/aggregation.filter.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/filters/facet.filter.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/fixtures/archivesspace/levels (100%) rename src/{ => archivematica}/dashboard/frontend/app/front_page/appraisal_tab.html (100%) rename src/{ => archivematica}/dashboard/frontend/app/front_page/transfer_browser.html (100%) rename src/{ => archivematica}/dashboard/frontend/app/header/header.controller.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/locale/extract.pot (100%) rename src/{ => archivematica}/dashboard/frontend/app/locale/translations.es.po (100%) rename src/{ => archivematica}/dashboard/frontend/app/locale/translations.fr.po (100%) rename src/{ => archivematica}/dashboard/frontend/app/locale/translations.ja.po (100%) rename src/{ => archivematica}/dashboard/frontend/app/locale/translations.json (100%) rename src/{ => archivematica}/dashboard/frontend/app/locale/translations.pt.po (100%) rename src/{ => archivematica}/dashboard/frontend/app/locale/translations.pt_BR.po (100%) rename src/{ => archivematica}/dashboard/frontend/app/locale/translations.sv.po (100%) rename src/{ => archivematica}/dashboard/frontend/app/media/images/logo_header.png (100%) rename src/{ => archivematica}/dashboard/frontend/app/preview/preview.controller.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/preview/preview.html (100%) rename src/{ => archivematica}/dashboard/frontend/app/report/format.html (100%) rename src/{ => archivematica}/dashboard/frontend/app/report/report.controller.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/report/tags.html (100%) rename src/{ => archivematica}/dashboard/frontend/app/search/search.controller.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/services/alert.service.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/services/archivesspace.service.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/services/browse.service.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/services/facet.service.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/services/file.service.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/services/selected.service.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/services/sip_arrange.service.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/services/source_locations.service.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/services/tag.service.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/services/transfer.service.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/services/transfer_browser_transfer.service.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/tree/tree.controller.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/tree/tree.directive.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/ui/minimize-bar.html (100%) rename src/{ => archivematica}/dashboard/frontend/app/ui/minimize-panel.html (100%) rename src/{ => archivematica}/dashboard/frontend/app/ui/ui.directive.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/vendor/angular-charts/angular-charts.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/visualizations/formats_by_files.html (100%) rename src/{ => archivematica}/dashboard/frontend/app/visualizations/formats_by_size.html (100%) rename src/{ => archivematica}/dashboard/frontend/app/visualizations/visualizations.controller.js (100%) rename src/{ => archivematica}/dashboard/frontend/app/visualizations/visualizations.html (100%) rename src/{ => archivematica}/dashboard/frontend/package-lock.json (100%) rename src/{ => archivematica}/dashboard/frontend/package.json (100%) rename src/{ => archivematica}/dashboard/frontend/test/karma.conf.js (100%) rename src/{ => archivematica}/dashboard/frontend/test/tests.webpack.js (100%) rename src/{ => archivematica}/dashboard/frontend/test/unit/aggregationFiltersSpec.js (100%) rename src/{ => archivematica}/dashboard/frontend/test/unit/archivesspaceSpec.js (100%) rename src/{ => archivematica}/dashboard/frontend/test/unit/arrangementSpec.js (100%) rename src/{ => archivematica}/dashboard/frontend/test/unit/browseSpec.js (100%) rename src/{ => archivematica}/dashboard/frontend/test/unit/facetSpec.js (100%) rename src/{ => archivematica}/dashboard/frontend/test/unit/fileSpec.js (100%) rename src/{ => archivematica}/dashboard/frontend/test/unit/locationsSpec.js (100%) rename src/{ => archivematica}/dashboard/frontend/test/unit/selectedFilesSpec.js (100%) rename src/{ => archivematica}/dashboard/frontend/test/unit/sip_arrangeSpec.js (100%) rename src/{ => archivematica}/dashboard/frontend/test/unit/tagSpec.js (100%) rename src/{ => archivematica}/dashboard/frontend/test/unit/transferSpec.js (100%) rename src/{ => archivematica}/dashboard/frontend/test/unit/treeSpec.js (100%) rename src/{ => archivematica}/dashboard/frontend/test/unit/vendor/jquery.js (100%) rename src/{ => archivematica}/dashboard/frontend/tools/extract_features.py (100%) rename src/{ => archivematica}/dashboard/frontend/webpack.config.js (100%) rename src/{ => archivematica}/dashboard/install/README.md (100%) rename src/{ => archivematica}/dashboard/install/archivematica-dashboard.service (100%) rename src/{ => archivematica}/dashboard/install/dashboard.conf (100%) rename src/{ => archivematica}/dashboard/install/dashboard.gunicorn-config.py (100%) rename src/{ => archivematica}/dashboard/install/dashboard.logging.json (89%) rename src/{dashboard/installer/management/commands => archivematica/dashboard/installer}/__init__.py (100%) rename src/{ => archivematica}/dashboard/installer/forms.py (98%) rename src/{dashboard/main => archivematica/dashboard/installer/management}/__init__.py (100%) rename src/{dashboard/main/management => archivematica/dashboard/installer/management/commands}/__init__.py (100%) rename src/{ => archivematica}/dashboard/installer/management/commands/install.py (89%) rename src/{ => archivematica}/dashboard/installer/middleware.py (97%) rename src/{ => archivematica}/dashboard/installer/steps.py (92%) rename src/{ => archivematica}/dashboard/installer/urls.py (94%) rename src/{ => archivematica}/dashboard/installer/views.py (89%) rename src/{ => archivematica}/dashboard/locale/en/LC_MESSAGES/django.po (100%) rename src/{ => archivematica}/dashboard/locale/en/LC_MESSAGES/djangojs.po (100%) rename src/{ => archivematica}/dashboard/locale/es/LC_MESSAGES/django.po (100%) rename src/{ => archivematica}/dashboard/locale/es/LC_MESSAGES/djangojs.po (100%) rename src/{ => archivematica}/dashboard/locale/fr/LC_MESSAGES/django.po (100%) rename src/{ => archivematica}/dashboard/locale/fr/LC_MESSAGES/djangojs.po (100%) rename src/{ => archivematica}/dashboard/locale/ja/LC_MESSAGES/django.po (100%) rename src/{ => archivematica}/dashboard/locale/ja/LC_MESSAGES/djangojs.po (100%) rename src/{ => archivematica}/dashboard/locale/no/LC_MESSAGES/django.po (100%) rename src/{ => archivematica}/dashboard/locale/no/LC_MESSAGES/djangojs.po (100%) rename src/{ => archivematica}/dashboard/locale/pt/LC_MESSAGES/django.po (100%) rename src/{ => archivematica}/dashboard/locale/pt/LC_MESSAGES/djangojs.po (100%) rename src/{ => archivematica}/dashboard/locale/pt_BR/LC_MESSAGES/django.po (100%) rename src/{ => archivematica}/dashboard/locale/pt_BR/LC_MESSAGES/djangojs.po (100%) rename src/{ => archivematica}/dashboard/locale/sv/LC_MESSAGES/django.po (100%) rename src/{ => archivematica}/dashboard/locale/sv/LC_MESSAGES/djangojs.po (100%) rename src/{dashboard/main/migrations => archivematica/dashboard/main}/__init__.py (100%) rename src/{ => archivematica}/dashboard/main/apps.py (57%) rename src/{ => archivematica}/dashboard/main/context_processors.py (100%) rename src/{ => archivematica}/dashboard/main/forms.py (95%) rename src/{dashboard/main/templatetags => archivematica/dashboard/main/management}/__init__.py (100%) rename src/{ => archivematica}/dashboard/main/management/commands/__init__.py (96%) rename src/{ => archivematica}/dashboard/main/management/commands/purge_transient_processing_data.py (97%) rename src/{ => archivematica}/dashboard/main/management/commands/rebuild_aip_index_from_storage_service.py (96%) rename src/{ => archivematica}/dashboard/main/management/commands/rebuild_elasticsearch_aip_index_from_files.py (96%) rename src/{ => archivematica}/dashboard/main/management/commands/rebuild_transfer_backlog.py (95%) rename src/{ => archivematica}/dashboard/main/management/commands/reindex_from_remote_cluster.py (97%) rename src/{ => archivematica}/dashboard/main/management/commands/resolve_pending_jobs.py (97%) rename src/{ => archivematica}/dashboard/main/management/commands/update_elasticsearch_mappings.py (94%) rename src/{ => archivematica}/dashboard/main/migrations/0001_initial.py (98%) rename src/{ => archivematica}/dashboard/main/migrations/0002_initial_data.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0003_archivesspacedipobjectresourcepairing.py (89%) rename src/{ => archivematica}/dashboard/main/migrations/0003_archivesspacedipobjectresourcepairing_data.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0004_rights.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0005_reingest.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0005_reingest_data.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0006_levelofdescription.py (95%) rename src/{ => archivematica}/dashboard/main/migrations/0007_django_upgrade_tweaks.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0008_fpcommandoutput.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0009_matching_gui.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0010_dip_upload_store.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0011_version_number.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0012_file_id_text.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0013_upload_archivesspace_inherit_notes.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0014_aic_fixes.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0015_no_normalize_thumbnails.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0016_file_currentlocation_nullable.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0017_update_seigfried.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0018_archivesspace_sip_arrange.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0019_normalization_report.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0020_index_after_processing_decision.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0021_checksum_algorithms.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0022_email_report_args.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0023_blob_fields.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0024_agenttype.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0025_copyrightstatus_controlled_vocab.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0026_agent_m2m_event.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0027_full_reingest.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0028_version_number.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0029_backlog_removal_event.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0030_rights_import.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0031_job_currentstep_choices.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0032_dashboardsetting_scope.py (98%) rename src/{ => archivematica}/dashboard/main/migrations/0033_store_transfer_file_modification_dates.py (98%) rename src/{ => archivematica}/dashboard/main/migrations/0034_add_readme_to_aips.py (98%) rename src/{ => archivematica}/dashboard/main/migrations/0035_fix_workflow_dip_generation.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0036_mediaconch_validation.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0037_mediaconch_policy_checks.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0038_fix_workflow_store_dip.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0039_delete_sudo_clientscript.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0040_directory_model.py (99%) rename src/{ => archivematica}/dashboard/main/migrations/0041_bind_pids.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0042_directory_uuids_all_transfer_types.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0043_remove_create_pointer_file_ms.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0044_update_idtools.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0045_archivesspace_config_dict.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0046_optional_normative_structmap.py (99%) rename src/{ => archivematica}/dashboard/main/migrations/0047_version_number.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0048_fix_upload_qubit_setting.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0049_change_pointer_file_filegrpuse.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0050_remove_magic_links.py (99%) rename src/{ => archivematica}/dashboard/main/migrations/0051_remove_verify_premis_checksums.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0052_correct_extract_packages_fallback_link.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0053_remove_mcp_unused_field.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0054_index_aip_silent_error_branch.py (96%) rename src/{ => archivematica}/dashboard/main/migrations/0055_normalize_thumbnail_mode_selection.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0056_transfer_access_system_id.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0057_7zip_no_compression.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0058_fix_unit_variable_pull_link.py (94%) rename src/{ => archivematica}/dashboard/main/migrations/0059_siparrange_longblob.py (95%) rename src/{ => archivematica}/dashboard/main/migrations/0060_delete_orphan_mscl.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0061_create_dataverse_transfer_type.py (99%) rename src/{ => archivematica}/dashboard/main/migrations/0062_atom_upload_exit_code.py (96%) rename src/{ => archivematica}/dashboard/main/migrations/0063_update_idtools.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0064_version_number.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0065_version_number.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0066_archivesspace_base_url.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0067_delete_workflow_models.py (96%) rename src/{ => archivematica}/dashboard/main/migrations/0068_version_number.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0069_remove_atk.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0070_index_jobs.py (89%) rename src/{ => archivematica}/dashboard/main/migrations/0071_index_unitvariables_runsql.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0072_index_files.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0073_index_files_runsql.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0074_version_number.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0075_userprofile_system_emails.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0076_version_number.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0077_uuid_fields.py (82%) rename src/{ => archivematica}/dashboard/main/migrations/0078_username_check.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0079_version_number.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0080_delete_software_agent.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0081_package_status.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0082_use_uuidfield.py (83%) rename src/{ => archivematica}/dashboard/main/migrations/0083_unpickle_access_target.py (100%) rename src/{ => archivematica}/dashboard/main/migrations/0084_alter_job_index_together.py (100%) rename src/{dashboard/middleware => archivematica/dashboard/main/migrations}/__init__.py (100%) rename src/{ => archivematica}/dashboard/main/models.py (99%) rename src/{ => archivematica}/dashboard/main/signals.py (93%) rename src/{dashboard/settings => archivematica/dashboard/main/templatetags}/__init__.py (100%) rename src/{ => archivematica}/dashboard/main/templatetags/active.py (100%) rename src/{ => archivematica}/dashboard/main/templatetags/breadcrumb.py (100%) rename src/{ => archivematica}/dashboard/main/templatetags/forms.py (100%) rename src/{ => archivematica}/dashboard/main/templatetags/job_status.py (94%) rename src/{ => archivematica}/dashboard/main/templatetags/keyvalue.py (100%) rename src/{ => archivematica}/dashboard/main/templatetags/lang.py (100%) rename src/{ => archivematica}/dashboard/main/templatetags/user.py (100%) rename src/{ => archivematica}/dashboard/main/urls.py (97%) rename src/{ => archivematica}/dashboard/main/views.py (97%) rename src/{ => archivematica}/dashboard/manage.py (62%) rename src/{ => archivematica}/dashboard/media/css/archival_storage.css (100%) rename src/{ => archivematica}/dashboard/media/css/as_match.css (100%) rename src/{ => archivematica}/dashboard/media/css/backbone-file-explorer.css (100%) rename src/{ => archivematica}/dashboard/media/css/backlog.css (100%) rename src/{ => archivematica}/dashboard/media/css/base.css (100%) rename src/{ => archivematica}/dashboard/media/css/directory_picker.css (100%) rename src/{ => archivematica}/dashboard/media/css/fonts.css (100%) rename src/{ => archivematica}/dashboard/media/css/reset.css (100%) rename src/{ => archivematica}/dashboard/media/css/search.css (100%) rename src/{ => archivematica}/dashboard/media/css/style.css (100%) rename src/{ => archivematica}/dashboard/media/css/transfer_grid.css (100%) rename src/{ => archivematica}/dashboard/media/images/1x1-pixel.png (100%) rename src/{ => archivematica}/dashboard/media/images/accept.png (100%) rename src/{ => archivematica}/dashboard/media/images/ajax-loader.gif (100%) rename src/{ => archivematica}/dashboard/media/images/arrow_refresh.png (100%) rename src/{ => archivematica}/dashboard/media/images/attach.png (100%) rename src/{ => archivematica}/dashboard/media/images/bell.png (100%) rename src/{ => archivematica}/dashboard/media/images/bullet_arrow_down.png (100%) rename src/{ => archivematica}/dashboard/media/images/bullet_arrow_up.png (100%) rename src/{ => archivematica}/dashboard/media/images/bullet_delete.png (100%) rename src/{ => archivematica}/dashboard/media/images/bullet_green.png (100%) rename src/{ => archivematica}/dashboard/media/images/bullet_orange.png (100%) rename src/{ => archivematica}/dashboard/media/images/cancel.png (100%) rename src/{ => archivematica}/dashboard/media/images/clock.png (100%) rename src/{ => archivematica}/dashboard/media/images/cog.png (100%) rename src/{ => archivematica}/dashboard/media/images/delete.png (100%) rename src/{ => archivematica}/dashboard/media/images/error.png (100%) rename src/{ => archivematica}/dashboard/media/images/favicon.ico (100%) rename src/{ => archivematica}/dashboard/media/images/filefolder.png (100%) rename src/{ => archivematica}/dashboard/media/images/filefolderopen.png (100%) rename src/{ => archivematica}/dashboard/media/images/folder.png (100%) rename src/{ => archivematica}/dashboard/media/images/logo_header.png (100%) rename src/{ => archivematica}/dashboard/media/images/logo_login.gif (100%) rename src/{ => archivematica}/dashboard/media/images/logo_welcome.gif (100%) rename src/{ => archivematica}/dashboard/media/images/package_go.png (100%) rename src/{ => archivematica}/dashboard/media/images/pencil_add.png (100%) rename src/{ => archivematica}/dashboard/media/images/table_edit.png (100%) rename src/{ => archivematica}/dashboard/media/images/tick.png (100%) rename src/{ => archivematica}/dashboard/media/images/user_comment.png (100%) rename src/{ => archivematica}/dashboard/media/images/vcard_edit.png (100%) rename src/{ => archivematica}/dashboard/media/images/zoom.png (100%) rename src/{ => archivematica}/dashboard/media/images/zoom_out.png (100%) rename src/{ => archivematica}/dashboard/media/js/administration/atom_levels_of_description.js (100%) rename src/{ => archivematica}/dashboard/media/js/advanced-search-query-creator.js (100%) rename src/{ => archivematica}/dashboard/media/js/archival_storage/archival_storage_search.js (100%) rename src/{ => archivematica}/dashboard/media/js/backlog/backlog-search.js (100%) rename src/{ => archivematica}/dashboard/media/js/contextual_help.js (100%) rename src/{ => archivematica}/dashboard/media/js/directory_picker.js (100%) rename src/{ => archivematica}/dashboard/media/js/file-explorer.js (100%) rename src/{ => archivematica}/dashboard/media/js/file_browser.js (100%) rename src/{ => archivematica}/dashboard/media/js/ingest.js (100%) rename src/{ => archivematica}/dashboard/media/js/ingest/aip_browser.js (100%) rename src/{ => archivematica}/dashboard/media/js/ingest/as_matcher.js (100%) rename src/{ => archivematica}/dashboard/media/js/ingest/as_matcher_setup.js (100%) rename src/{ => archivematica}/dashboard/media/js/ingest/backlog.js (100%) rename src/{ => archivematica}/dashboard/media/js/ingest/metadata_form.js (100%) rename src/{ => archivematica}/dashboard/media/js/ingest/normalization_report.js (100%) rename src/{ => archivematica}/dashboard/media/js/jobs.js (100%) rename src/{ => archivematica}/dashboard/media/js/misc.js (100%) rename src/{ => archivematica}/dashboard/media/js/online.js (100%) rename src/{ => archivematica}/dashboard/media/js/repeating-ajax-data.js (100%) rename src/{ => archivematica}/dashboard/media/js/rights_edit.js (100%) rename src/{ => archivematica}/dashboard/media/js/status.js (100%) rename src/{ => archivematica}/dashboard/media/js/transfer.js (100%) rename src/{ => archivematica}/dashboard/media/js/transfer/component_directory_select.js (100%) rename src/{ => archivematica}/dashboard/media/js/vendor/base64.js (100%) rename src/{ => archivematica}/dashboard/media/vendor/backbone.js (100%) rename src/{ => archivematica}/dashboard/media/vendor/datatables/css/buttons.bootstrap.min.css (100%) rename src/{ => archivematica}/dashboard/media/vendor/datatables/css/jquery.dataTables.css (100%) rename src/{ => archivematica}/dashboard/media/vendor/datatables/images/favicon.ico (100%) rename src/{ => archivematica}/dashboard/media/vendor/datatables/images/sort_asc.png (100%) rename src/{ => archivematica}/dashboard/media/vendor/datatables/images/sort_asc_disabled.png (100%) rename src/{ => archivematica}/dashboard/media/vendor/datatables/images/sort_both.png (100%) rename src/{ => archivematica}/dashboard/media/vendor/datatables/images/sort_desc.png (100%) rename src/{ => archivematica}/dashboard/media/vendor/datatables/images/sort_desc_disabled.png (100%) rename src/{ => archivematica}/dashboard/media/vendor/datatables/js/buttons.bootstrap.min.js (100%) rename src/{ => archivematica}/dashboard/media/vendor/datatables/js/buttons.colVis.min.js (100%) rename src/{ => archivematica}/dashboard/media/vendor/datatables/js/dataTables.buttons.min.js (100%) rename src/{ => archivematica}/dashboard/media/vendor/datatables/js/jquery.dataTables.min.js (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/.npmignore (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/HELP-US-OUT.txt (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/README.md (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/css/font-awesome.css (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/css/font-awesome.css.map (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/css/font-awesome.min.css (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/fonts/FontAwesome.otf (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/fonts/fontawesome-webfont.eot (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/fonts/fontawesome-webfont.svg (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/fonts/fontawesome-webfont.ttf (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/fonts/fontawesome-webfont.woff (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/fonts/fontawesome-webfont.woff2 (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/less/animated.less (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/less/bordered-pulled.less (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/less/core.less (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/less/fixed-width.less (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/less/font-awesome.less (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/less/icons.less (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/less/larger.less (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/less/list.less (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/less/mixins.less (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/less/path.less (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/less/rotated-flipped.less (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/less/screen-reader.less (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/less/stacked.less (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/less/variables.less (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/package.json (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/scss/_animated.scss (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/scss/_bordered-pulled.scss (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/scss/_core.scss (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/scss/_fixed-width.scss (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/scss/_icons.scss (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/scss/_larger.scss (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/scss/_list.scss (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/scss/_mixins.scss (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/scss/_path.scss (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/scss/_rotated-flipped.scss (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/scss/_screen-reader.scss (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/scss/_stacked.scss (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/scss/_variables.scss (100%) rename src/{ => archivematica}/dashboard/media/vendor/font-awesome/scss/font-awesome.scss (100%) rename src/{ => archivematica}/dashboard/media/vendor/jquery-ui/images/ui-icons_444444_256x240.png (100%) rename src/{ => archivematica}/dashboard/media/vendor/jquery-ui/images/ui-icons_555555_256x240.png (100%) rename src/{ => archivematica}/dashboard/media/vendor/jquery-ui/images/ui-icons_777620_256x240.png (100%) rename src/{ => archivematica}/dashboard/media/vendor/jquery-ui/images/ui-icons_777777_256x240.png (100%) rename src/{ => archivematica}/dashboard/media/vendor/jquery-ui/images/ui-icons_cc0000_256x240.png (100%) rename src/{ => archivematica}/dashboard/media/vendor/jquery-ui/images/ui-icons_ffffff_256x240.png (100%) rename src/{ => archivematica}/dashboard/media/vendor/jquery-ui/jquery-ui.css (100%) rename src/{ => archivematica}/dashboard/media/vendor/jquery-ui/jquery-ui.js (100%) rename src/{ => archivematica}/dashboard/media/vendor/jquery.idle-timer.js (100%) rename src/{ => archivematica}/dashboard/media/vendor/jquery.inputmask.js (100%) rename src/{ => archivematica}/dashboard/media/vendor/jquery.js (100%) rename src/{ => archivematica}/dashboard/media/vendor/select2/README.md (100%) rename src/{ => archivematica}/dashboard/media/vendor/select2/select2.css (100%) rename src/{ => archivematica}/dashboard/media/vendor/select2/select2.js (100%) rename src/{ => archivematica}/dashboard/media/vendor/select2/select2.min.js (100%) rename src/{ => archivematica}/dashboard/media/vendor/select2/select2.png (100%) rename src/{ => archivematica}/dashboard/media/vendor/select2/spinner.gif (100%) rename src/{ => archivematica}/dashboard/media/vendor/twitter-bootstrap/.gitignore (100%) rename src/{ => archivematica}/dashboard/media/vendor/twitter-bootstrap/css/bootstrap-theme.css (100%) rename src/{ => archivematica}/dashboard/media/vendor/twitter-bootstrap/css/bootstrap-theme.css.map (100%) rename src/{ => archivematica}/dashboard/media/vendor/twitter-bootstrap/css/bootstrap.css (100%) rename src/{ => archivematica}/dashboard/media/vendor/twitter-bootstrap/css/bootstrap.css.map (100%) rename src/{ => archivematica}/dashboard/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.eot (100%) rename src/{ => archivematica}/dashboard/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.svg (100%) rename src/{ => archivematica}/dashboard/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.ttf (100%) rename src/{ => archivematica}/dashboard/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.woff (100%) rename src/{ => archivematica}/dashboard/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.woff2 (100%) rename src/{ => archivematica}/dashboard/media/vendor/twitter-bootstrap/js/bootstrap.js (100%) rename src/{ => archivematica}/dashboard/media/vendor/underscore.js (100%) rename src/{dashboard/settings/components => archivematica/dashboard/middleware}/__init__.py (100%) rename src/{ => archivematica}/dashboard/middleware/common.py (100%) rename src/{ => archivematica}/dashboard/middleware/locale.py (100%) create mode 100644 src/archivematica/dashboard/settings/__init__.py rename src/{ => archivematica}/dashboard/settings/base.py (90%) create mode 100644 src/archivematica/dashboard/settings/components/__init__.py rename src/{ => archivematica}/dashboard/settings/components/auth.py (85%) rename src/{ => archivematica}/dashboard/settings/components/cas_auth.py (100%) rename src/{ => archivematica}/dashboard/settings/components/csp.py (100%) rename src/{ => archivematica}/dashboard/settings/components/ldap_auth.py (100%) rename src/{ => archivematica}/dashboard/settings/components/oidc_auth.py (90%) rename src/{ => archivematica}/dashboard/settings/components/shibboleth_auth.py (100%) rename src/{ => archivematica}/dashboard/settings/local.py (84%) rename src/{ => archivematica}/dashboard/settings/production.py (89%) rename src/{ => archivematica}/dashboard/settings/test.py (89%) rename src/{ => archivematica}/dashboard/settings/testmysql.py (85%) rename src/{ => archivematica}/dashboard/templates/404.html (100%) rename src/{ => archivematica}/dashboard/templates/500.html (100%) rename src/{ => archivematica}/dashboard/templates/_form.html (100%) rename src/{ => archivematica}/dashboard/templates/_formset.html (100%) rename src/{ => archivematica}/dashboard/templates/_formset_table.html (100%) rename src/{ => archivematica}/dashboard/templates/_fpr_update_button.html (100%) rename src/{ => archivematica}/dashboard/templates/_messages.html (100%) rename src/{ => archivematica}/dashboard/templates/_pager.html (100%) rename src/{ => archivematica}/dashboard/templates/accounts/add.html (100%) rename src/{ => archivematica}/dashboard/templates/accounts/edit.html (100%) rename src/{ => archivematica}/dashboard/templates/accounts/list.html (100%) rename src/{ => archivematica}/dashboard/templates/accounts/logged_out.html (100%) rename src/{ => archivematica}/dashboard/templates/accounts/login.html (100%) rename src/{ => archivematica}/dashboard/templates/accounts/profile.html (100%) rename src/{ => archivematica}/dashboard/templates/administration/api.html (100%) rename src/{ => archivematica}/dashboard/templates/administration/atom_levels_of_description.html (100%) rename src/{ => archivematica}/dashboard/templates/administration/dips_as_edit.html (100%) rename src/{ => archivematica}/dashboard/templates/administration/dips_atom_edit.html (100%) rename src/{ => archivematica}/dashboard/templates/administration/general.html (100%) rename src/{ => archivematica}/dashboard/templates/administration/handle_config.html (100%) rename src/{ => archivematica}/dashboard/templates/administration/language.html (100%) rename src/{ => archivematica}/dashboard/templates/administration/locations.html (100%) rename src/{ => archivematica}/dashboard/templates/administration/premis_agent.html (100%) rename src/{ => archivematica}/dashboard/templates/administration/processing.html (100%) rename src/{ => archivematica}/dashboard/templates/administration/processing_edit.html (100%) rename src/{ => archivematica}/dashboard/templates/administration/reports/failure_detail.html (100%) rename src/{ => archivematica}/dashboard/templates/administration/reports/failures.html (100%) rename src/{ => archivematica}/dashboard/templates/administration/sidebar.html (100%) rename src/{ => archivematica}/dashboard/templates/administration/taxonomy.html (100%) rename src/{ => archivematica}/dashboard/templates/administration/term_detail.html (100%) rename src/{ => archivematica}/dashboard/templates/administration/terms.html (100%) rename src/{ => archivematica}/dashboard/templates/administration/usage.html (100%) rename src/{ => archivematica}/dashboard/templates/administration/version.html (100%) rename src/{ => archivematica}/dashboard/templates/appraisal/appraisal.html (100%) rename src/{ => archivematica}/dashboard/templates/archival_storage/_archival_storage_search_form.html (100%) rename src/{ => archivematica}/dashboard/templates/archival_storage/archival_storage.html (100%) rename src/{ => archivematica}/dashboard/templates/archival_storage/view.html (100%) rename src/{ => archivematica}/dashboard/templates/backlog/backlog.html (100%) rename src/{ => archivematica}/dashboard/templates/delete_request.html (100%) rename src/{ => archivematica}/dashboard/templates/elasticsearch_error.html (100%) rename src/{ => archivematica}/dashboard/templates/elasticsearch_not_found.html (100%) rename src/{ => archivematica}/dashboard/templates/forbidden.html (100%) rename src/{ => archivematica}/dashboard/templates/ingest/aip_browse.html (100%) rename src/{ => archivematica}/dashboard/templates/ingest/as/_search_form.html (100%) rename src/{ => archivematica}/dashboard/templates/ingest/as/match.html (100%) rename src/{ => archivematica}/dashboard/templates/ingest/as/resource_component.html (100%) rename src/{ => archivematica}/dashboard/templates/ingest/as/resource_detail.html (100%) rename src/{ => archivematica}/dashboard/templates/ingest/as/resource_list.html (100%) rename src/{ => archivematica}/dashboard/templates/ingest/as/review_matches.html (100%) rename src/{ => archivematica}/dashboard/templates/ingest/backlog/_search_form.html (100%) rename src/{ => archivematica}/dashboard/templates/ingest/detail.html (100%) rename src/{ => archivematica}/dashboard/templates/ingest/grid.html (100%) rename src/{ => archivematica}/dashboard/templates/ingest/metadata_add_files.html (100%) rename src/{ => archivematica}/dashboard/templates/ingest/metadata_edit.html (100%) rename src/{ => archivematica}/dashboard/templates/ingest/metadata_event_detail.html (100%) rename src/{ => archivematica}/dashboard/templates/ingest/metadata_list.html (100%) rename src/{ => archivematica}/dashboard/templates/ingest/microservices.html (100%) rename src/{ => archivematica}/dashboard/templates/ingest/normalization_report.html (100%) rename src/{ => archivematica}/dashboard/templates/installer/storagesetup.html (100%) rename src/{ => archivematica}/dashboard/templates/installer/welcome.html (100%) rename src/{ => archivematica}/dashboard/templates/layout.html (100%) rename src/{ => archivematica}/dashboard/templates/layout_ajax.html (100%) rename src/{ => archivematica}/dashboard/templates/layout_fluid.html (100%) rename src/{ => archivematica}/dashboard/templates/main/_tasks_pager.html (100%) rename src/{ => archivematica}/dashboard/templates/main/access.html (100%) rename src/{ => archivematica}/dashboard/templates/main/tasks.html (100%) rename src/{ => archivematica}/dashboard/templates/rights/rights_edit.html (100%) rename src/{ => archivematica}/dashboard/templates/rights/rights_grants_edit.html (100%) rename src/{ => archivematica}/dashboard/templates/rights/rights_list.html (100%) rename src/{ => archivematica}/dashboard/templates/simple_confirm.html (100%) rename src/{ => archivematica}/dashboard/templates/transfer/component.html (100%) rename src/{ => archivematica}/dashboard/templates/transfer/detail.html (100%) rename src/{ => archivematica}/dashboard/templates/transfer/grid.html (100%) rename src/{ => archivematica}/dashboard/templates/transfer/metadata_edit.html (100%) rename src/{ => archivematica}/dashboard/templates/transfer/metadata_list.html (100%) rename src/{ => archivematica}/dashboard/templates/transfer/microservices.html (100%) create mode 100644 src/archivematica/dashboard/urls.py rename src/{ => archivematica}/dashboard/wsgi.py (77%) delete mode 100644 src/dashboard/urls.py diff --git a/.dockerignore b/.dockerignore index 781214e6de..e14c75cfda 100644 --- a/.dockerignore +++ b/.dockerignore @@ -11,9 +11,10 @@ !/TRADEMARK # Exclude -src/dashboard/frontend/node_modules -src/dashboard/media/js/build +src/archivematica/dashboard/frontend/node_modules +src/archivematica/dashboard/media/js/build **/*~ **/*.log **/node_modules **/Thumbs.db +**/*.egg-info diff --git a/.gitattributes b/.gitattributes index 2db620324f..b66a74ea34 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,6 +1,6 @@ *.py ident *.sh ident -src/dashboard/frontend/app/locale/*.po linguist-generated=true -src/dashboard/frontend/app/locale/*.pot linguist-generated=true -src/dashboard/frontend/app/locale/translations.json linguist-generated=true -src/dashboard/frontend/package-lock.json linguist-generated=true +src/archivematica/dashboard/frontend/app/locale/*.po linguist-generated=true +src/archivematica/dashboard/frontend/app/locale/*.pot linguist-generated=true +src/archivematica/dashboard/frontend/app/locale/translations.json linguist-generated=true +src/archivematica/dashboard/frontend/package-lock.json linguist-generated=true diff --git a/.github/workflows/generate-sbom.yml b/.github/workflows/generate-sbom.yml index 68d6ceb108..ad494501be 100644 --- a/.github/workflows/generate-sbom.yml +++ b/.github/workflows/generate-sbom.yml @@ -20,7 +20,7 @@ jobs: uses: actions/cache@v4 with: path: .trivycache/ - key: ${{ runner.os }}-trivy-${{ hashFiles('requirements*.txt', 'src/dashboard/frontend/package-lock.json') }} + key: ${{ runner.os }}-trivy-${{ hashFiles('requirements*.txt', 'src/archivematica/dashboard/frontend/package-lock.json') }} restore-keys: | ${{ runner.os }}-trivy- diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 34655999f7..b5ad899c13 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -106,7 +106,7 @@ jobs: runs-on: "ubuntu-24.04" defaults: run: - working-directory: "./src/dashboard/frontend/" + working-directory: "./src/archivematica/dashboard/frontend/" steps: - name: "Check out repository" if: "${{ github.event_name != 'workflow_dispatch' }}" diff --git a/.gitignore b/.gitignore index 03aeeda892..9e68de73ba 100644 --- a/.gitignore +++ b/.gitignore @@ -23,5 +23,8 @@ .tox/ # frontend builds -src/dashboard/static/ -src/dashboard/media/js/build +src/archivematica/dashboard/static/ +src/archivematica/dashboard/media/js/build + +# setuptools build +**/*.egg-info diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f43158c6de..918e047337 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -6,8 +6,8 @@ repos: args: [--no-ensure-ascii, --autofix] files: | (?x)^( - src/MCPServer/assets/.*\.json| - src/(MCPClient|MCPServer|dashboard)/install/.*\.json + src/archivematica/MCPServer/assets/.*\.json| + src/archivematica/(MCPClient|MCPServer|dashboard)/install/.*\.json ) - repo: https://github.com/astral-sh/ruff-pre-commit rev: v0.9.9 @@ -27,7 +27,7 @@ repos: exclude: | (?x)^( ISSUE_TEMPLATE\.md| - src/dashboard/(frontend/app|media)/vendor/.* + src/archivematica/dashboard/(frontend/app|media)/vendor/.* ) - repo: https://github.com/thlorenz/doctoc rev: v2.2.0 @@ -37,7 +37,7 @@ repos: (?x)^( (CONTRIBUTING|SECURITY).*\.md| hack/README\.md| - src/(MCPServer|MCPClient|dashboard)/install/README\.md + src/archivematica/(MCPServer|MCPClient|dashboard)/install/README\.md ) - repo: https://github.com/citation-file-format/cffconvert # Current "2.0.0" git tag does not work because of @@ -61,5 +61,5 @@ repos: args: [--quiet, --config, .markdown-link-check.json] exclude: | (?x)^( - src/dashboard/media/vendor/.*\.md + src/archivematica/dashboard/media/vendor/.*\.md ) diff --git a/README.md b/README.md index 217812c5ea..6cad21118e 100644 --- a/README.md +++ b/README.md @@ -91,7 +91,7 @@ see the [getting started] page. [Developer guide]: https://github.com/artefactual/archivematica/blob/qa/1.x/hack/README.md [Development installation]: https://github.com/artefactual/archivematica/tree/qa/1.x/hack [documentation update]: https://github.com/artefactual/archivematica-docs/wiki -[Format Policy Registry]: https://github.com/artefactual/archivematica/tree/qa/1.x/src/dashboard/fpr +[Format Policy Registry]: https://github.com/artefactual/archivematica/tree/qa/1.x/src/archivematica/dashboard/fpr [getting started]: https://wiki.archivematica.org/Getting_started#Projects [GitHub CI]: https://github.com/artefactual/archivematica/actions/workflows/test.yml/badge.svg [Issues]: https://github.com/archivematica/Issues diff --git a/hack/Dockerfile b/hack/Dockerfile index ba786f4ad1..17c99932b0 100644 --- a/hack/Dockerfile +++ b/hack/Dockerfile @@ -116,9 +116,9 @@ RUN set -ex \ FROM node:${NODE_VERSION} AS archivematica-dashboard-frontend-builder -COPY --link src/dashboard/frontend /src/src/dashboard/frontend +COPY --link src/archivematica/dashboard/frontend /src/src/archivematica/dashboard/frontend -WORKDIR /src/src/dashboard/frontend +WORKDIR /src/src/archivematica/dashboard/frontend RUN set ex \ && npm ci @@ -148,10 +148,10 @@ RUN set -ex \ && rm -rf /var/lib/apt/lists/* /var/cache/apt/* COPY --chown=${USER_ID}:${GROUP_ID} --from=browsers-builder --link ${SELENIUM_DIR} ${SELENIUM_DIR} -COPY --chown=${USER_ID}:${GROUP_ID} --from=archivematica-dashboard-frontend-builder --link /src/src/dashboard/frontend/node_modules /src/src/dashboard/frontend/node_modules -COPY --link src/dashboard/frontend /src/src/dashboard/frontend +COPY --chown=${USER_ID}:${GROUP_ID} --from=archivematica-dashboard-frontend-builder --link /src/src/archivematica/dashboard/frontend/node_modules /src/src/archivematica/dashboard/frontend/node_modules +COPY --link src/archivematica/dashboard/frontend /src/src/archivematica/dashboard/frontend -WORKDIR /src/src/dashboard/frontend +WORKDIR /src/src/archivematica/dashboard/frontend ENTRYPOINT ["npm", "run", "test-single-run"] @@ -231,31 +231,31 @@ USER archivematica COPY --chown=${USER_ID}:${GROUP_ID} --from=pyenv-builder --link ${PYENV_DIR} ${PYENV_DIR} COPY --chown=${USER_ID}:${GROUP_ID} --link . /src +ENV PYTHONPATH=/src/src + # ----------------------------------------------------------------------------- FROM base AS archivematica-mcp-client -ENV DJANGO_SETTINGS_MODULE=settings.common -ENV PYTHONPATH=/src/src/MCPClient/:/src/src/MCPClient/clientScripts:/src/src/archivematicaCommon/:/src/src/dashboard/ -ENV ARCHIVEMATICA_MCPCLIENT_ARCHIVEMATICACLIENTMODULES=/src/src/MCPClient/archivematicaClientModules -ENV ARCHIVEMATICA_MCPCLIENT_CLIENTASSETSDIRECTORY=/src/src/MCPClient/assets/ -ENV ARCHIVEMATICA_MCPCLIENT_CLIENTSCRIPTSDIRECTORY=/src/src/MCPClient/clientScripts/ +ENV DJANGO_SETTINGS_MODULE=archivematica.MCPClient.settings.common +ENV ARCHIVEMATICA_MCPCLIENT_ARCHIVEMATICACLIENTMODULES=/src/src/archivematica/MCPClient/archivematicaClientModules +ENV ARCHIVEMATICA_MCPCLIENT_CLIENTASSETSDIRECTORY=/src/src/archivematica/MCPClient/assets/ +ENV ARCHIVEMATICA_MCPCLIENT_CLIENTSCRIPTSDIRECTORY=/src/src/archivematica/MCPClient/clientScripts/ # Some scripts in archivematica-fpr-admin executed by MCPClient rely on certain # files being available in this image (e.g. see https://git.io/vA1wF). -COPY --link src/archivematicaCommon/externals/fido/ /usr/lib/archivematica/archivematicaCommon/externals/fido/ -COPY --link src/archivematicaCommon/externals/fiwalk_plugins/ /usr/lib/archivematica/archivematicaCommon/externals/fiwalk_plugins/ +COPY --link src/archivematica/archivematicaCommon/externals/fido/ /usr/lib/archivematicaCommon/externals/fido/ +COPY --link src/archivematica/archivematicaCommon/externals/fiwalk_plugins/ /usr/lib/archivematicaCommon/externals/fiwalk_plugins/ -ENTRYPOINT ["pyenv", "exec", "python3", "/src/src/MCPClient/archivematicaClient.py"] +ENTRYPOINT ["pyenv", "exec", "python3", "-m", "archivematica.MCPClient.archivematicaClient"] # ----------------------------------------------------------------------------- FROM base AS archivematica-mcp-server -ENV DJANGO_SETTINGS_MODULE=settings.common -ENV PYTHONPATH=/src/src/MCPServer/:/src/src/archivematicaCommon/:/src/src/dashboard/ +ENV DJANGO_SETTINGS_MODULE=archivematica.MCPServer.settings.common -ENTRYPOINT ["pyenv", "exec", "python3", "/src/src/MCPServer/archivematicaMCP.py"] +ENTRYPOINT ["pyenv", "exec", "python3", "-m", "archivematica.MCPServer.archivematicaMCP"] # ----------------------------------------------------------------------------- @@ -269,34 +269,31 @@ USER root RUN set -ex \ && internalDirs=' \ - /src/src/dashboard/frontend \ - /src/src/dashboard/static \ - /src/src/dashboard/media \ + /src/src/archivematica/dashboard/frontend \ + /src/src/archivematica/dashboard/static \ + /src/src/archivematica/dashboard/media \ ' \ && mkdir -p $internalDirs \ && chown -R archivematica $internalDirs USER archivematica -COPY --chown=${USER_ID}:${GROUP_ID} --from=archivematica-dashboard-frontend-builder --link /src/src/dashboard/media/js/ /src/src/dashboard/media/js - -WORKDIR /src/src/dashboard +COPY --chown=${USER_ID}:${GROUP_ID} --from=archivematica-dashboard-frontend-builder --link /src/src/archivematica/dashboard/media/js/ /src/src/archivematica/dashboard/media/js -ENV DJANGO_SETTINGS_MODULE=settings.local -ENV PYTHONPATH=/src/src/dashboard/:/src/src/archivematicaCommon/ +ENV DJANGO_SETTINGS_MODULE=archivematica.dashboard.settings.local ENV AM_GUNICORN_BIND=0.0.0.0:8000 -ENV AM_GUNICORN_CHDIR=/src/src/dashboard +ENV AM_GUNICORN_CHDIR=/src/src/archivematica/dashboard ENV FORWARDED_ALLOW_IPS=* RUN set -ex \ - && ./manage.py collectstatic --noinput --clear \ - && ./manage.py compilemessages + && python3 -m archivematica.dashboard.manage collectstatic --noinput --clear \ + && python3 -m archivematica.dashboard.manage compilemessages -ENV DJANGO_SETTINGS_MODULE=settings.production +ENV DJANGO_SETTINGS_MODULE=archivematica.dashboard.settings.production EXPOSE 8000 -ENTRYPOINT ["pyenv", "exec", "python3", "-m", "gunicorn", "--config=/src/src/dashboard/install/dashboard.gunicorn-config.py", "wsgi:application"] +ENTRYPOINT ["pyenv", "exec", "python3", "-m", "gunicorn", "--config=/src/src/archivematica/dashboard/install/dashboard.gunicorn-config.py", "wsgi:application"] # ----------------------------------------------------------------------------- @@ -317,8 +314,6 @@ RUN set -ex \ && mkdir -p /var/archivematica/.cache/ms-playwright \ && python3 -m playwright install firefox -ENV PYTHONPATH=/src/src/dashboard/:/src/src/archivematicaCommon/ - # ----------------------------------------------------------------------------- FROM ${TARGET} diff --git a/hack/Makefile b/hack/Makefile index 34949f8c07..cec128c487 100644 --- a/hack/Makefile +++ b/hack/Makefile @@ -25,10 +25,10 @@ define compose_tests docker compose -f docker-compose.yml -f docker-compose.tests.yml $(1) endef -define run_toxenvs +define run_toxenv $(call compose_tests, \ run \ - -e DJANGO_SETTINGS_MODULE=settings.testmysql \ + -e DJANGO_SETTINGS_MODULE=$(2) \ -e PYTEST_ADDOPTS=$(subst $(SPACE),\$(SPACE),${PYTEST_ADDOPTS}) \ --user $(CALLER_UID):$(CALLER_GID) \ --workdir /src \ @@ -134,7 +134,7 @@ manage-dashboard: ## Run Django /manage.py on Dashboard, suppling [op --user $(CALLER_UID):$(CALLER_GID) \ --rm \ --no-deps \ - --entrypoint /src/src/dashboard/manage.py \ + --entrypoint /src/src/archivematica/dashboard/manage.py \ archivematica-dashboard \ $(ARG) @@ -152,13 +152,13 @@ bootstrap-dashboard-db: ## Bootstrap Dashboard (new database). docker compose run \ --rm \ --no-deps \ - --entrypoint /src/src/dashboard/manage.py \ + --entrypoint /src/src/archivematica/dashboard/manage.py \ archivematica-dashboard \ migrate --noinput docker compose run \ --rm \ --no-deps \ - --entrypoint /src/src/dashboard/manage.py \ + --entrypoint /src/src/archivematica/dashboard/manage.py \ archivematica-dashboard \ install \ --username="test" \ @@ -182,7 +182,7 @@ bootstrap-dashboard-frontend: ## Build front-end assets. -e HOME=/tmp/npm-config \ --rm \ --user $(CALLER_UID):$(CALLER_GID) \ - --volume "$(SRCDIR)/dashboard:/src/src/dashboard" \ + --volume "$(SRCDIR)/archivematica/dashboard:/src/src/archivematica/dashboard" \ --entrypoint npm \ archivematica-dashboard-frontend-builder \ ci @@ -292,22 +292,22 @@ test-build: ## Build archivematica-tests image. __TOXENVS_MCPSERVER := mcp-server test-mcp-server: start-mysql ## Run MCPServer tests. $(call grant_all_on_dbs,$(__TEST_DBS_MCPSERVER)) - $(call run_toxenvs,$(__TOXENVS_MCPSERVER)) + $(call run_toxenv,$(__TOXENVS_MCPSERVER),archivematica.MCPServer.settings.testmysql) __TOXENVS_MCPCLIENT = mcp-client test-mcp-client: start-mysql ## Run MCPClient tests. $(call grant_all_on_dbs,$(__TEST_DBS_MCPCLIENT)) - $(call run_toxenvs,$(__TOXENVS_MCPCLIENT)) + $(call run_toxenv,$(__TOXENVS_MCPCLIENT),archivematica.MCPClient.settings.testmysql) __TOXENVS_DASHBOARD = dashboard test-dashboard: start-mysql ## Run Dashboard tests. $(call grant_all_on_dbs,$(__TEST_DBS_DASHBOARD)) - $(call run_toxenvs,$(__TOXENVS_DASHBOARD)) + $(call run_toxenv,$(__TOXENVS_DASHBOARD),archivematica.dashboard.settings.testmysql) __TOXENVS_STORAGE_SERVICE = storage-service test-storage-service: start-mysql ## Run Storage Service tests. $(call grant_all_on_dbs,$(__TEST_DBS_STORAGE_SERVICE)) - $(call run_toxenvs,$(__TOXENVS_STORAGE_SERVICE)) + $(call run_toxenv,$(__TOXENVS_STORAGE_SERVICE),settings.testmysql) test-storage-service-integration: ## Run Storage Service unit and integration tests using MySQL and MinIO. $(CURDIR)/submodules/archivematica-storage-service/tests/integration/run.sh @@ -315,21 +315,25 @@ test-storage-service-integration: ## Run Storage Service unit and integration t __TOXENVS_ARCHIVEMATICA_COMMON = archivematica-common test-archivematica-common: start-mysql ## Run Archivematica Common tests. $(call grant_all_on_dbs,$(__TEST_DBS_DASHBOARD)) - $(call run_toxenvs,$(__TOXENVS_ARCHIVEMATICA_COMMON)) + $(call run_toxenv,$(__TOXENVS_ARCHIVEMATICA_COMMON),archivematica.dashboard.settings.testmysql) -__TOXENVS_MIGRATIONS = migrations-dashboard migrations-storage-service test-migrations: start-mysql ## Check there are no pending migrations. $(call create_dbs,$(__TEST_DBS_MIGRATIONS)) - $(call run_toxenvs,$(__TOXENVS_MIGRATIONS)) + $(call run_toxenv,migrations-dashboard,archivematica.dashboard.settings.testmysql) + $(call run_toxenv,migrations-storage-service,settings.testmysql) __TOXENVS_LINTING = linting test-linting: ## Check linting. - $(call run_toxenvs,$(__TOXENVS_LINTING)) + $(call run_toxenv,$(__TOXENVS_LINTING),archivematica.dashboard.settings.testmysql) -__TOXENVS_ALL := $(__TOXENVS_MCPSERVER) $(__TOXENVS_MCPCLIENT) $(__TOXENVS_DASHBOARD) $(__TOXENVS_STORAGE_SERVICE) $(__TOXENVS_ARCHIVEMATICA_COMMON) test-all: start-mysql ## Run all tests. $(call grant_all_on_dbs,$(__TEST_DBS_MCPSERVER) $(__TEST_DBS_MCPCLIENT) $(__TEST_DBS_DASHBOARD) $(__TEST_DBS_STORAGE_SERVICE) $(__TEST_DBS_ARCHIVEMATICA_COMMON)) - $(call run_toxenvs,$(__TOXENVS_ALL)) + $(call run_toxenv,$(__TOXENVS_MCPSERVER),archivematica.MCPServer.settings.testmysql) + $(call run_toxenv,$(__TEST_DBS_MCPCLIENT),archivematica.MCPClient.settings.testmysql) + $(call run_toxenv,$(__TEST_DBS_DASHBOARD),archivematica.dashboard.settings.testmysql) + $(call run_toxenv,$(__TEST_DBS_ARCHIVEMATICA_COMMON),archivematica.dashboard.settings.testmysql) + $(call run_toxenv,$(__TEST_DBS_STORAGE_SERVICE),settings.testmysql) + test-at-build: ## AMAUAT: build image. $(call compose_amauat, \ @@ -400,13 +404,13 @@ test-frontend: ## Run Dashboard JS tests. -e HOME=/tmp/npm-config \ --rm \ --user $(CALLER_UID):$(CALLER_GID) \ - --volume "$(SRCDIR)/dashboard:/src/src/dashboard" \ + --volume "$(SRCDIR)/archivematica/dashboard:/src/src/archivematica/dashboard" \ --entrypoint npm \ archivematica-dashboard-testing \ install docker run \ --rm \ - --volume "$(SRCDIR)/dashboard/frontend:/src/src/dashboard/frontend" \ + --volume "$(SRCDIR)/archivematica/dashboard/frontend:/src/src/archivematica/dashboard/frontend" \ archivematica-dashboard-testing stop: # Stop all containers. diff --git a/hack/docker-compose.yml b/hack/docker-compose.yml index f095e25552..3d61e8b0db 100644 --- a/hack/docker-compose.yml +++ b/hack/docker-compose.yml @@ -109,7 +109,7 @@ services: PYTHON_VERSION: ${PYTHON_VERSION:-3.9} environment: DJANGO_SECRET_KEY: "12345" - DJANGO_SETTINGS_MODULE: "settings.common" + DJANGO_SETTINGS_MODULE: "archivematica.MCPServer.settings.common" ARCHIVEMATICA_MCPSERVER_CLIENT_USER: "archivematica" ARCHIVEMATICA_MCPSERVER_CLIENT_PASSWORD: "demo" ARCHIVEMATICA_MCPSERVER_CLIENT_HOST: "mysql" @@ -137,7 +137,7 @@ services: PYTHON_VERSION: ${PYTHON_VERSION:-3.9} environment: DJANGO_SECRET_KEY: "12345" - DJANGO_SETTINGS_MODULE: "settings.common" + DJANGO_SETTINGS_MODULE: "archivematica.MCPClient.settings.common" ARCHIVEMATICA_MCPCLIENT_CLIENT_USER: "archivematica" ARCHIVEMATICA_MCPCLIENT_CLIENT_PASSWORD: "demo" ARCHIVEMATICA_MCPCLIENT_CLIENT_HOST: "mysql" @@ -180,7 +180,7 @@ services: AM_GUNICORN_ACCESSLOG: "/dev/null" AM_GUNICORN_RELOAD: "true" AM_GUNICORN_RELOAD_ENGINE: "auto" - DJANGO_SETTINGS_MODULE: "settings.local" + DJANGO_SETTINGS_MODULE: "archivematica.dashboard.settings.local" ARCHIVEMATICA_DASHBOARD_DASHBOARD_GEARMAN_SERVER: "gearmand:4730" ARCHIVEMATICA_DASHBOARD_DASHBOARD_ELASTICSEARCH_SERVER: "elasticsearch:9200" ARCHIVEMATICA_DASHBOARD_DASHBOARD_PROMETHEUS_ENABLED: "1" diff --git a/hack/helpers/compile-i18n-messages.sh b/hack/helpers/compile-i18n-messages.sh index b0a1413b8e..534508df7a 100755 --- a/hack/helpers/compile-i18n-messages.sh +++ b/hack/helpers/compile-i18n-messages.sh @@ -14,8 +14,8 @@ function dashboard::manage { docker compose run \ --user=$(id -u):$(id -g) \ --rm --no-deps \ - --workdir=/src/src/dashboard \ - --entrypoint=/src/src/dashboard/manage.py \ + --workdir=/src/src/archivematica/dashboard \ + --entrypoint=/src/src/archivematica/dashboard/manage.py \ archivematica-dashboard "$@" } diff --git a/hack/helpers/extract-i18n-messages.sh b/hack/helpers/extract-i18n-messages.sh index 6745e91246..94a68bf3ba 100755 --- a/hack/helpers/extract-i18n-messages.sh +++ b/hack/helpers/extract-i18n-messages.sh @@ -20,8 +20,8 @@ function dashboard::manage { docker compose run \ --user=$(id -u):$(id -g) \ --rm --no-deps \ - --workdir=/src/src/dashboard \ - --entrypoint=/src/src/dashboard/manage.py \ + --workdir=/src/src/archivematica/dashboard \ + --entrypoint=/src/src/archivematica/dashboard/manage.py \ archivematica-dashboard "$@" } @@ -46,7 +46,7 @@ dashboard::manage makemessages --all --domain djangojs --ignore build/* docker compose run \ --user=$(id -u):$(id -g) \ --rm --no-deps \ - --workdir=/src/src/dashboard/frontend \ + --workdir=/src/src/archivematica/dashboard/frontend \ --entrypoint=yarn \ archivematica-dashboard run extract-messages diff --git a/pyproject.toml b/pyproject.toml index 56eb4d9088..f8b3299687 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,3 +1,36 @@ +[build-system] +requires = ["setuptools>=74", "wheel>=0.44"] +build-backend = "setuptools.build_meta" + +[project] +name="archivematica" +description="Web- and standards-based, open-source application which allows your institution to preserve long-term access to trustworthy, authentic and reliable digital content." +requires-python = ">=3.9" +authors = [ + {name = "Artefactual Systems Inc.", email = "info@artefactual.com"}, +] +maintainers = [ + {name = "Artefactual Systems Inc.", email = "info@artefactual.com"}, +] +readme = {file = "README.md", content-type = "text/markdown"} +license = {file = "LICENSE"} +dynamic = [ + "version", +] + +[project.urls] +homepage = "https://www.archivematica.org/" +documentation = "https://www.archivematica.org/en/docs/archivematica-latest/" +repository = "https://github.com/artefacutal/archivematica" +issues = "https://github.com/archivematica/Issues/issues" + +[tool.setuptools.packages.find] +where = ["src"] +include = ["archivematica*"] + +[tool.setuptools.dynamic] +version = {attr = "archivematica.archivematicaCommon.version.get_full_version"} + [tool.pytest.ini_options] addopts = "--reuse-db -p no:cacheprovider" DJANGO_SETTINGS_MODULE="settings.test" @@ -5,7 +38,7 @@ norecursedirs = ".svn _build tmp* node_modules bower_components share .tox" [tool.coverage.run] omit = [ - "**/src/archivematicaCommon/externals/*", + "**/src/archivematica/archivematicaCommon/externals/*", "**/migrations/*", "**/settings/*", "**/tests/*", @@ -13,11 +46,11 @@ omit = [ "**/manage.py", ] include = [ - "**/src/archivematicaCommon/*", - "**/src/dashboard/*", - "**/src/MCPClient/*", - "**/src/MCPClient/clientScripts/*", - "**/src/MCPServer/*", + "**/src/archivematica/archivematicaCommon/*", + "**/src/archivematica/dashboard/*", + "**/src/archivematica/MCPClient/*", + "**/src/archivematica/MCPClient/clientScripts/*", + "**/src/archivematica/MCPServer/*", ] branch = true @@ -44,8 +77,8 @@ ignore = [ ] [tool.ruff.lint.per-file-ignores] -"src/*/settings/*" = ["F403"] -"src/dashboard/settings/*" = ["F405"] +"src/archivematica/*/settings/*" = ["F403"] +"src/archivematica/dashboard/settings/*" = ["F405"] [tool.ruff.lint.isort] force-single-line = true @@ -57,15 +90,15 @@ warn_unused_configs = true [[tool.mypy.overrides]] module = [ - "src.archivematicaCommon.executeOrRunSubProcess", - "src.MCPClient.client.*", - "src.MCPClient.clientScripts.characterize_file", - "src.MCPClient.clientScripts.has_packages", - "src.MCPClient.clientScripts.identify_file_format", - "src.MCPClient.clientScripts.normalize", - "src.MCPClient.clientScripts.policy_check", - "src.MCPClient.clientScripts.transcribe_file", - "src.MCPClient.clientScripts.validate_file", + "src.archivematica.archivematicaCommon.executeOrRunSubProcess", + "src.archivematica.MCPClient.client.*", + "src.archivematica.MCPClient.clientScripts.characterize_file", + "src.archivematica.MCPClient.clientScripts.has_packages", + "src.archivematica.MCPClient.clientScripts.identify_file_format", + "src.archivematica.MCPClient.clientScripts.normalize", + "src.archivematica.MCPClient.clientScripts.policy_check", + "src.archivematica.MCPClient.clientScripts.transcribe_file", + "src.archivematica.MCPClient.clientScripts.validate_file", "tests.archivematicaCommon.test_execute_functions", "tests.dashboard.components.accounts.test_views", "tests.dashboard.components.administration.test_administration", @@ -100,7 +133,6 @@ warn_unused_ignores = true [tool.tox] legacy_tox_ini = """ [tox] - skipsdist = True envlist = archivematica-common dashboard @@ -112,7 +144,7 @@ legacy_tox_ini = """ linting [testenv] - skip_install = True + package = editable deps = -r{toxinidir}/requirements-dev.txt commands = py.test {posargs} allowlist_externals = @@ -123,30 +155,13 @@ legacy_tox_ini = """ LOGNAME = user DJANGO_SETTINGS_MODULE = {env:DJANGO_SETTINGS_MODULE:settings.test} PYTEST_ADDOPTS = {env:PYTEST_ADDOPTS:} - SRC_DIR = {toxinidir}/src HACK_DIR = {toxinidir}/hack - # Archivematica Common - ARCHIVEMATICA_COMMON_DIR = {env:SRC_DIR}/archivematicaCommon - # Dashboard - DASHBOARD_DIR = {env:SRC_DIR}/dashboard - DASHBOARD_PYTHONPATH = {env:DASHBOARD_DIR}:{env:ARCHIVEMATICA_COMMON_DIR} - # MCP Server - MCPSERVER_DIR = {env:SRC_DIR}/MCPServer - MCPSERVER_PYTHONPATH = {env:MCPSERVER_DIR}:{env:ARCHIVEMATICA_COMMON_DIR}:{env:DASHBOARD_DIR} - # MCP Client - MCPCLIENT_DIR = {env:SRC_DIR}/MCPClient - MCPCLIENT_PYTHONPATH = {env:MCPCLIENT_DIR}:{env:MCPCLIENT_DIR}/clientScripts:{env:ARCHIVEMATICA_COMMON_DIR}:{env:DASHBOARD_DIR} # Storage Service STORAGE_SERVICE_ROOT = {env:HACK_DIR}/submodules/archivematica-storage-service STORAGE_SERVICE_DIR = {env:STORAGE_SERVICE_ROOT}/storage_service STORAGE_SERVICE_PYTHONPATH = {env:STORAGE_SERVICE_DIR}:{env:STORAGE_SERVICE_DIR}/storage_service # TOXENV-specific - archivematica-common: PYTHONPATH = {env:DASHBOARD_PYTHONPATH} - dashboard: PYTHONPATH = {env:DASHBOARD_PYTHONPATH} - mcp-server: PYTHONPATH = {env:MCPSERVER_PYTHONPATH} - mcp-client: PYTHONPATH = {env:MCPCLIENT_PYTHONPATH} storage-service: PYTHONPATH = {env:STORAGE_SERVICE_PYTHONPATH} - migrations-dashboard: PYTHONPATH = {env:DASHBOARD_PYTHONPATH} migrations-storage-service: PYTHONPATH = {env:STORAGE_SERVICE_PYTHONPATH} # Setting HOME prevents Python's pwd module to ask for a real uid inside # the container, and using {temp_dir} allows caching the pre-commit diff --git a/src/MCPServer/server/tasks/__init__.py b/src/MCPServer/server/tasks/__init__.py deleted file mode 100644 index 857e7bc711..0000000000 --- a/src/MCPServer/server/tasks/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -from server.tasks.backends import GearmanTaskBackend -from server.tasks.backends import TaskBackend -from server.tasks.backends import get_task_backend -from server.tasks.task import Task - -__all__ = ("GearmanTaskBackend", "Task", "TaskBackend", "get_task_backend") diff --git a/src/MCPClient/README.md b/src/archivematica/MCPClient/README.md similarity index 100% rename from src/MCPClient/README.md rename to src/archivematica/MCPClient/README.md diff --git a/src/MCPClient/clientScripts/__init__.py b/src/archivematica/MCPClient/__init__.py similarity index 100% rename from src/MCPClient/clientScripts/__init__.py rename to src/archivematica/MCPClient/__init__.py diff --git a/src/MCPClient/archivematicaClient.py b/src/archivematica/MCPClient/archivematicaClient.py similarity index 53% rename from src/MCPClient/archivematicaClient.py rename to src/archivematica/MCPClient/archivematicaClient.py index 96b71da686..f9ebb3cf33 100755 --- a/src/MCPClient/archivematicaClient.py +++ b/src/archivematica/MCPClient/archivematicaClient.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -from client.mcp import main +from archivematica.MCPClient.client.mcp import main if __name__ == "__main__": main() diff --git a/src/MCPClient/archivematicaClientModules b/src/archivematica/MCPClient/archivematicaClientModules similarity index 100% rename from src/MCPClient/archivematicaClientModules rename to src/archivematica/MCPClient/archivematicaClientModules diff --git a/src/MCPClient/assets/README/README.html b/src/archivematica/MCPClient/assets/README/README.html similarity index 100% rename from src/MCPClient/assets/README/README.html rename to src/archivematica/MCPClient/assets/README/README.html diff --git a/src/MCPClient/assets/README/TRANSFER_README.html b/src/archivematica/MCPClient/assets/README/TRANSFER_README.html similarity index 100% rename from src/MCPClient/assets/README/TRANSFER_README.html rename to src/archivematica/MCPClient/assets/README/TRANSFER_README.html diff --git a/src/MCPClient/assets/catalog/catalog.xml b/src/archivematica/MCPClient/assets/catalog/catalog.xml similarity index 100% rename from src/MCPClient/assets/catalog/catalog.xml rename to src/archivematica/MCPClient/assets/catalog/catalog.xml diff --git a/src/MCPClient/assets/mets/mets.xsd b/src/archivematica/MCPClient/assets/mets/mets.xsd similarity index 100% rename from src/MCPClient/assets/mets/mets.xsd rename to src/archivematica/MCPClient/assets/mets/mets.xsd diff --git a/src/MCPClient/assets/mets/xlink.xsd b/src/archivematica/MCPClient/assets/mets/xlink.xsd similarity index 100% rename from src/MCPClient/assets/mets/xlink.xsd rename to src/archivematica/MCPClient/assets/mets/xlink.xsd diff --git a/src/MCPClient/assets/mods/mods.xsd b/src/archivematica/MCPClient/assets/mods/mods.xsd similarity index 100% rename from src/MCPClient/assets/mods/mods.xsd rename to src/archivematica/MCPClient/assets/mods/mods.xsd diff --git a/src/MCPClient/assets/mods/xml.xsd b/src/archivematica/MCPClient/assets/mods/xml.xsd similarity index 100% rename from src/MCPClient/assets/mods/xml.xsd rename to src/archivematica/MCPClient/assets/mods/xml.xsd diff --git a/src/MCPClient/assets/premis/premis-v2-2.xsd b/src/archivematica/MCPClient/assets/premis/premis-v2-2.xsd similarity index 100% rename from src/MCPClient/assets/premis/premis-v2-2.xsd rename to src/archivematica/MCPClient/assets/premis/premis-v2-2.xsd diff --git a/src/MCPClient/assets/premis/premis.xsd b/src/archivematica/MCPClient/assets/premis/premis.xsd similarity index 100% rename from src/MCPClient/assets/premis/premis.xsd rename to src/archivematica/MCPClient/assets/premis/premis.xsd diff --git a/src/MCPClient/client/__init__.py b/src/archivematica/MCPClient/client/__init__.py similarity index 100% rename from src/MCPClient/client/__init__.py rename to src/archivematica/MCPClient/client/__init__.py diff --git a/src/MCPClient/client/gearman.py b/src/archivematica/MCPClient/client/gearman.py similarity index 93% rename from src/MCPClient/client/gearman.py rename to src/archivematica/MCPClient/client/gearman.py index eef6b97d47..d7c67d9845 100644 --- a/src/MCPClient/client/gearman.py +++ b/src/archivematica/MCPClient/client/gearman.py @@ -10,14 +10,14 @@ import gearman from django.conf import settings from gearman.job import GearmanJob -from gearman_encoder import JSONDataEncoder - -from client import metrics -from client.job import Job -from client.loader import load_job_modules -from client.utils import parse_command_line -from client.utils import replace_task_arguments -from client.worker import run_task + +from archivematica.archivematicaCommon.gearman_encoder import JSONDataEncoder +from archivematica.MCPClient.client import metrics +from archivematica.MCPClient.client.job import Job +from archivematica.MCPClient.client.loader import load_job_modules +from archivematica.MCPClient.client.utils import parse_command_line +from archivematica.MCPClient.client.utils import replace_task_arguments +from archivematica.MCPClient.client.worker import run_task # This is how `gearman_job.data["tasks"]` looks in the `_prepare_jobs`` method # below: diff --git a/src/MCPClient/client/job.py b/src/archivematica/MCPClient/client/job.py similarity index 99% rename from src/MCPClient/client/job.py rename to src/archivematica/MCPClient/client/job.py index e423589178..8d32ee8d39 100644 --- a/src/MCPClient/client/job.py +++ b/src/archivematica/MCPClient/client/job.py @@ -21,7 +21,8 @@ from django.conf import settings from django.utils import timezone -from main.models import Task + +from archivematica.dashboard.main.models import Task logger = logging.getLogger("archivematica.mcp.client.job") diff --git a/src/MCPClient/client/loader.py b/src/archivematica/MCPClient/client/loader.py similarity index 92% rename from src/MCPClient/client/loader.py rename to src/archivematica/MCPClient/client/loader.py index 38c4ccff2d..6bebefe5ca 100644 --- a/src/MCPClient/client/loader.py +++ b/src/archivematica/MCPClient/client/loader.py @@ -23,7 +23,9 @@ def get_supported_modules(modules_file_path: str) -> dict[str, str]: def load_module(module_name: str) -> Optional[ModuleType]: # No need to cache here as imports are already cached. try: - return importlib.import_module(f"clientScripts.{module_name}") + return importlib.import_module( + f"archivematica.MCPClient.clientScripts.{module_name}" + ) except ImportError as err: warnings.warn( f"Failed to load client script {module_name}: {err}", diff --git a/src/MCPClient/client/mcp.py b/src/archivematica/MCPClient/client/mcp.py similarity index 89% rename from src/MCPClient/client/mcp.py rename to src/archivematica/MCPClient/client/mcp.py index ab84002c47..8af20b73f3 100644 --- a/src/MCPClient/client/mcp.py +++ b/src/archivematica/MCPClient/client/mcp.py @@ -9,8 +9,8 @@ from types import FrameType from typing import Optional -from client import metrics -from client.pool import WorkerPool +from archivematica.MCPClient.client import metrics +from archivematica.MCPClient.client.pool import WorkerPool logger = logging.getLogger("archivematica.mcp.client") diff --git a/src/MCPClient/client/metrics.py b/src/archivematica/MCPClient/client/metrics.py similarity index 96% rename from src/MCPClient/client/metrics.py rename to src/archivematica/MCPClient/client/metrics.py index 03e268f084..bbed6c292f 100644 --- a/src/MCPClient/client/metrics.py +++ b/src/archivematica/MCPClient/client/metrics.py @@ -15,17 +15,9 @@ django.setup() -from common_metrics import PACKAGE_FILE_COUNT_BUCKETS -from common_metrics import PACKAGE_SIZE_BUCKETS -from common_metrics import PROCESSING_TIME_BUCKETS -from common_metrics import TASK_DURATION_BUCKETS from django.conf import settings from django.db.models import Sum from django.utils import timezone -from fpr.models import FormatVersion -from main.models import File -from main.models import FileFormatVersion -from main.models import Transfer from prometheus_client import CollectorRegistry from prometheus_client import Counter from prometheus_client import Gauge @@ -33,6 +25,15 @@ from prometheus_client import multiprocess from prometheus_client import start_http_server +from archivematica.archivematicaCommon.common_metrics import PACKAGE_FILE_COUNT_BUCKETS +from archivematica.archivematicaCommon.common_metrics import PACKAGE_SIZE_BUCKETS +from archivematica.archivematicaCommon.common_metrics import PROCESSING_TIME_BUCKETS +from archivematica.archivematicaCommon.common_metrics import TASK_DURATION_BUCKETS +from archivematica.dashboard.fpr.models import FormatVersion +from archivematica.dashboard.main.models import File +from archivematica.dashboard.main.models import FileFormatVersion +from archivematica.dashboard.main.models import Transfer + job_counter = Counter( "mcpclient_job_total", "Number of jobs processed, labeled by script", diff --git a/src/MCPClient/client/pool.py b/src/archivematica/MCPClient/client/pool.py similarity index 97% rename from src/MCPClient/client/pool.py rename to src/archivematica/MCPClient/client/pool.py index 640765f4d8..a57d52d0ae 100644 --- a/src/MCPClient/client/pool.py +++ b/src/archivematica/MCPClient/client/pool.py @@ -31,9 +31,9 @@ from django import db from django.conf import settings -from client import loader -from client import metrics -from client.gearman import MCPGearmanWorker +from archivematica.MCPClient.client import loader +from archivematica.MCPClient.client import metrics +from archivematica.MCPClient.client.gearman import MCPGearmanWorker T = TypeVar("T") diff --git a/src/MCPClient/client/utils.py b/src/archivematica/MCPClient/client/utils.py similarity index 100% rename from src/MCPClient/client/utils.py rename to src/archivematica/MCPClient/client/utils.py diff --git a/src/MCPClient/client/worker.py b/src/archivematica/MCPClient/client/worker.py similarity index 83% rename from src/MCPClient/client/worker.py rename to src/archivematica/MCPClient/client/worker.py index 0292d47c03..45c9d31479 100644 --- a/src/MCPClient/client/worker.py +++ b/src/archivematica/MCPClient/client/worker.py @@ -1,10 +1,9 @@ import logging from types import ModuleType -from dbconns import auto_close_old_connections - -from client import metrics -from client.job import Job +from archivematica.archivematicaCommon.dbconns import auto_close_old_connections +from archivematica.MCPClient.client import metrics +from archivematica.MCPClient.client.job import Job logger = logging.getLogger("archivematica.mcp.client.worker") diff --git a/src/MCPClient/settings/__init__.py b/src/archivematica/MCPClient/clientScripts/__init__.py similarity index 100% rename from src/MCPClient/settings/__init__.py rename to src/archivematica/MCPClient/clientScripts/__init__.py diff --git a/src/MCPClient/clientScripts/archivematicaCreateMETSMetadataCSV.py b/src/archivematica/MCPClient/clientScripts/archivematicaCreateMETSMetadataCSV.py similarity index 98% rename from src/MCPClient/clientScripts/archivematicaCreateMETSMetadataCSV.py rename to src/archivematica/MCPClient/clientScripts/archivematicaCreateMETSMetadataCSV.py index d5bbaa1687..9d71ff8f6d 100755 --- a/src/MCPClient/clientScripts/archivematicaCreateMETSMetadataCSV.py +++ b/src/archivematica/MCPClient/clientScripts/archivematicaCreateMETSMetadataCSV.py @@ -21,7 +21,7 @@ import sys import traceback -import archivematicaFunctions +from archivematica.archivematicaCommon import archivematicaFunctions def parseMetadata(job, SIPPath, state): diff --git a/src/MCPClient/clientScripts/archivematicaCreateMETSMetadataXML.py b/src/archivematica/MCPClient/clientScripts/archivematicaCreateMETSMetadataXML.py similarity index 97% rename from src/MCPClient/clientScripts/archivematicaCreateMETSMetadataXML.py rename to src/archivematica/MCPClient/clientScripts/archivematicaCreateMETSMetadataXML.py index bc045589d2..d41438d30e 100755 --- a/src/MCPClient/clientScripts/archivematicaCreateMETSMetadataXML.py +++ b/src/archivematica/MCPClient/clientScripts/archivematicaCreateMETSMetadataXML.py @@ -23,14 +23,15 @@ from urllib.parse import urlparse from urllib.request import urlopen -import create_mets_v2 as createmets2 -import namespaces as ns import requests -from databaseFunctions import insertIntoEvents from django.core.exceptions import ValidationError from importlib_metadata import version from lxml import etree -from main import models + +from archivematica.archivematicaCommon import namespaces as ns +from archivematica.archivematicaCommon.databaseFunctions import insertIntoEvents +from archivematica.dashboard.main import models +from archivematica.MCPClient.clientScripts import create_mets_v2 as createmets2 def process_xml_metadata(mets, sip_dir, sip_uuid, sip_type, xml_validation): diff --git a/src/MCPClient/clientScripts/archivematicaCreateMETSReingest.py b/src/archivematica/MCPClient/clientScripts/archivematicaCreateMETSReingest.py similarity index 98% rename from src/MCPClient/clientScripts/archivematicaCreateMETSReingest.py rename to src/archivematica/MCPClient/clientScripts/archivematicaCreateMETSReingest.py index faefb82414..8327c834e0 100755 --- a/src/MCPClient/clientScripts/archivematicaCreateMETSReingest.py +++ b/src/archivematica/MCPClient/clientScripts/archivematicaCreateMETSReingest.py @@ -2,14 +2,15 @@ import copy import os -import archivematicaCreateMETSMetadataCSV as createmetscsv -import archivematicaCreateMETSRights as createmetsrights -import create_mets_v2 as createmets2 import metsrw -import namespaces as ns from django.core.exceptions import ValidationError from lxml import etree -from main import models + +import archivematica.MCPClient.clientScripts.archivematicaCreateMETSMetadataCSV as createmetscsv +import archivematica.MCPClient.clientScripts.archivematicaCreateMETSRights as createmetsrights +import archivematica.MCPClient.clientScripts.create_mets_v2 as createmets2 +from archivematica.archivematicaCommon import namespaces as ns +from archivematica.dashboard.main import models def _create_premis_object(premis_object_type): diff --git a/src/MCPClient/clientScripts/archivematicaCreateMETSRights.py b/src/archivematica/MCPClient/clientScripts/archivematicaCreateMETSRights.py similarity index 98% rename from src/MCPClient/clientScripts/archivematicaCreateMETSRights.py rename to src/archivematica/MCPClient/clientScripts/archivematicaCreateMETSRights.py index 37754c963a..61fcce79af 100755 --- a/src/MCPClient/clientScripts/archivematicaCreateMETSRights.py +++ b/src/archivematica/MCPClient/clientScripts/archivematicaCreateMETSRights.py @@ -20,9 +20,10 @@ import uuid import lxml.etree as etree -import namespaces as ns -from countryCodes import getCodeForCountry -from main.models import RightsStatement + +from archivematica.archivematicaCommon import namespaces as ns +from archivematica.archivematicaCommon.countryCodes import getCodeForCountry +from archivematica.dashboard.main.models import RightsStatement RIGHTS_BASIS_OTHER = ["Policy", "Donor"] diff --git a/src/MCPClient/clientScripts/archivematicaCreateMETSRightsDspaceMDRef.py b/src/archivematica/MCPClient/clientScripts/archivematicaCreateMETSRightsDspaceMDRef.py similarity index 97% rename from src/MCPClient/clientScripts/archivematicaCreateMETSRightsDspaceMDRef.py rename to src/archivematica/MCPClient/clientScripts/archivematicaCreateMETSRightsDspaceMDRef.py index 3dd04fd956..906537f5bb 100755 --- a/src/MCPClient/clientScripts/archivematicaCreateMETSRightsDspaceMDRef.py +++ b/src/archivematica/MCPClient/clientScripts/archivematicaCreateMETSRightsDspaceMDRef.py @@ -20,9 +20,10 @@ import sys import lxml.etree as etree -import namespaces as ns from django.core.exceptions import ValidationError -from main.models import File + +from archivematica.archivematicaCommon import namespaces as ns +from archivematica.dashboard.main.models import File def createMDRefDMDSec(LABEL, itemdirectoryPath, directoryPathSTR): diff --git a/src/MCPClient/clientScripts/archivematicaCreateMETSTrim.py b/src/archivematica/MCPClient/clientScripts/archivematicaCreateMETSTrim.py similarity index 98% rename from src/MCPClient/clientScripts/archivematicaCreateMETSTrim.py rename to src/archivematica/MCPClient/clientScripts/archivematicaCreateMETSTrim.py index c3f5ed7e65..e696181731 100755 --- a/src/MCPClient/clientScripts/archivematicaCreateMETSTrim.py +++ b/src/archivematica/MCPClient/clientScripts/archivematicaCreateMETSTrim.py @@ -21,9 +21,10 @@ from datetime import datetime import lxml.etree as etree -import namespaces as ns from django.core.exceptions import ValidationError -from main.models import File + +from archivematica.archivematicaCommon import namespaces as ns +from archivematica.dashboard.main.models import File def getTrimDmdSec(job, baseDirectoryPath, sipUUID): diff --git a/src/MCPClient/clientScripts/archivematica_clamscan.py b/src/archivematica/MCPClient/clientScripts/archivematica_clamscan.py similarity index 97% rename from src/MCPClient/clientScripts/archivematica_clamscan.py rename to src/archivematica/MCPClient/clientScripts/archivematica_clamscan.py index acc4ff29e3..006a2e3638 100755 --- a/src/MCPClient/clientScripts/archivematica_clamscan.py +++ b/src/archivematica/MCPClient/clientScripts/archivematica_clamscan.py @@ -31,13 +31,14 @@ from clamd import ClamdNetworkSocket from clamd import ClamdUnixSocket from clamd import ConnectionError -from custom_handlers import get_script_logger -from databaseFunctions import insertIntoEvents from django.conf import settings as mcpclient_settings from django.core.exceptions import ValidationError from django.db import transaction -from main.models import Event -from main.models import File + +from archivematica.archivematicaCommon.custom_handlers import get_script_logger +from archivematica.archivematicaCommon.databaseFunctions import insertIntoEvents +from archivematica.dashboard.main.models import Event +from archivematica.dashboard.main.models import File logger = get_script_logger("archivematica.mcp.client.clamscan") diff --git a/src/MCPClient/clientScripts/assign_file_uuids.py b/src/archivematica/MCPClient/clientScripts/assign_file_uuids.py similarity index 93% rename from src/MCPClient/clientScripts/assign_file_uuids.py rename to src/archivematica/MCPClient/clientScripts/assign_file_uuids.py index 8514cf56a0..8b661d07d2 100755 --- a/src/MCPClient/clientScripts/assign_file_uuids.py +++ b/src/archivematica/MCPClient/clientScripts/assign_file_uuids.py @@ -38,14 +38,15 @@ django.setup() import metsrw -import namespaces as ns -from archivematicaFunctions import chunk_iterable -from archivematicaFunctions import find_mets_file -from custom_handlers import get_script_logger -from fileOperations import addFileToSIP -from fileOperations import addFileToTransfer -from main.models import File -from main.models import Transfer + +from archivematica.archivematicaCommon import namespaces as ns +from archivematica.archivematicaCommon.archivematicaFunctions import chunk_iterable +from archivematica.archivematicaCommon.archivematicaFunctions import find_mets_file +from archivematica.archivematicaCommon.custom_handlers import get_script_logger +from archivematica.archivematicaCommon.fileOperations import addFileToSIP +from archivematica.archivematicaCommon.fileOperations import addFileToTransfer +from archivematica.dashboard.main.models import File +from archivematica.dashboard.main.models import Transfer logger = get_script_logger("archivematica.mcp.client.assignFileUUID") diff --git a/src/MCPClient/clientScripts/assign_uuids_to_directories.py b/src/archivematica/MCPClient/clientScripts/assign_uuids_to_directories.py similarity index 91% rename from src/MCPClient/clientScripts/assign_uuids_to_directories.py rename to src/archivematica/MCPClient/clientScripts/assign_uuids_to_directories.py index 777a426dba..0dd9a6d903 100755 --- a/src/MCPClient/clientScripts/assign_uuids_to_directories.py +++ b/src/archivematica/MCPClient/clientScripts/assign_uuids_to_directories.py @@ -35,14 +35,15 @@ django.setup() -from archivematicaFunctions import format_subdir_path -from archivematicaFunctions import get_dir_uuids -from archivematicaFunctions import str2bool -from custom_handlers import get_script_logger from django.core.exceptions import ValidationError from django.db import transaction -from main.models import Directory -from main.models import Transfer + +from archivematica.archivematicaCommon.archivematicaFunctions import format_subdir_path +from archivematica.archivematicaCommon.archivematicaFunctions import get_dir_uuids +from archivematica.archivematicaCommon.archivematicaFunctions import str2bool +from archivematica.archivematicaCommon.custom_handlers import get_script_logger +from archivematica.dashboard.main.models import Directory +from archivematica.dashboard.main.models import Transfer logger = get_script_logger("archivematica.mcp.client.assignUUIDsToDirectories") diff --git a/src/MCPClient/clientScripts/bag_with_empty_directories.py b/src/archivematica/MCPClient/clientScripts/bag_with_empty_directories.py similarity index 97% rename from src/MCPClient/clientScripts/bag_with_empty_directories.py rename to src/archivematica/MCPClient/clientScripts/bag_with_empty_directories.py index 5022a18c7c..0f11b844fa 100755 --- a/src/MCPClient/clientScripts/bag_with_empty_directories.py +++ b/src/archivematica/MCPClient/clientScripts/bag_with_empty_directories.py @@ -24,10 +24,11 @@ django.setup() -from archivematicaFunctions import get_setting from bagit import make_bag from django.conf import settings as mcpclient_settings +from archivematica.archivematicaCommon.archivematicaFunctions import get_setting + def get_sip_directories(job, sip_dir): """Get a list of directories in the SIP, to be created after bagged.""" diff --git a/src/MCPClient/clientScripts/bind_pid.py b/src/archivematica/MCPClient/clientScripts/bind_pid.py similarity index 93% rename from src/MCPClient/clientScripts/bind_pid.py rename to src/archivematica/MCPClient/clientScripts/bind_pid.py index 15fff4194d..e411da0e25 100755 --- a/src/MCPClient/clientScripts/bind_pid.py +++ b/src/archivematica/MCPClient/clientScripts/bind_pid.py @@ -48,11 +48,11 @@ django.setup() -import bindpid -from archivematicaFunctions import str2bool -from custom_handlers import get_script_logger -from main.models import DashboardSetting -from main.models import File +from archivematica.archivematicaCommon import bindpid +from archivematica.archivematicaCommon.archivematicaFunctions import str2bool +from archivematica.archivematicaCommon.custom_handlers import get_script_logger +from archivematica.dashboard.main.models import DashboardSetting +from archivematica.dashboard.main.models import File logger = get_script_logger("archivematica.mcp.client.bind_pid") diff --git a/src/MCPClient/clientScripts/bind_pids.py b/src/archivematica/MCPClient/clientScripts/bind_pids.py similarity index 92% rename from src/MCPClient/clientScripts/bind_pids.py rename to src/archivematica/MCPClient/clientScripts/bind_pids.py index e0973d0287..5be8acde40 100755 --- a/src/MCPClient/clientScripts/bind_pids.py +++ b/src/archivematica/MCPClient/clientScripts/bind_pids.py @@ -47,19 +47,22 @@ import django django.setup() -import namespaces as ns -from archivematicaFunctions import str2bool -from bindpid import BindPIDException -from bindpid import _validate_entity_type_required_params -from bindpid import _validate_handle_server_config -from bindpid import bind_pid -from custom_handlers import get_script_logger from django.core.exceptions import ValidationError from django.db import transaction from lxml import etree -from main.models import SIP -from main.models import DashboardSetting -from main.models import Directory + +from archivematica.archivematicaCommon import namespaces as ns +from archivematica.archivematicaCommon.archivematicaFunctions import str2bool +from archivematica.archivematicaCommon.bindpid import BindPIDException +from archivematica.archivematicaCommon.bindpid import ( + _validate_entity_type_required_params, +) +from archivematica.archivematicaCommon.bindpid import _validate_handle_server_config +from archivematica.archivematicaCommon.bindpid import bind_pid +from archivematica.archivematicaCommon.custom_handlers import get_script_logger +from archivematica.dashboard.main.models import SIP +from archivematica.dashboard.main.models import DashboardSetting +from archivematica.dashboard.main.models import Directory logger = get_script_logger("archivematica.mcp.client.bind_pids") diff --git a/src/MCPClient/clientScripts/change_names.py b/src/archivematica/MCPClient/clientScripts/change_names.py similarity index 100% rename from src/MCPClient/clientScripts/change_names.py rename to src/archivematica/MCPClient/clientScripts/change_names.py diff --git a/src/MCPClient/clientScripts/change_object_names.py b/src/archivematica/MCPClient/clientScripts/change_object_names.py similarity index 95% rename from src/MCPClient/clientScripts/change_object_names.py rename to src/archivematica/MCPClient/clientScripts/change_object_names.py index 6146fcee83..303cbe5a52 100755 --- a/src/MCPClient/clientScripts/change_object_names.py +++ b/src/archivematica/MCPClient/clientScripts/change_object_names.py @@ -22,14 +22,15 @@ import django django.setup() -import change_names -from custom_handlers import get_script_logger from django.db import transaction -from main.models import SIP -from main.models import Directory -from main.models import Event -from main.models import File -from main.models import Transfer + +from archivematica.archivematicaCommon.custom_handlers import get_script_logger +from archivematica.dashboard.main.models import SIP +from archivematica.dashboard.main.models import Directory +from archivematica.dashboard.main.models import Event +from archivematica.dashboard.main.models import File +from archivematica.dashboard.main.models import Transfer +from archivematica.MCPClient.clientScripts import change_names logger = get_script_logger("archivematica.mcp.client.changeObjectNames") diff --git a/src/MCPClient/clientScripts/change_sip_name.py b/src/archivematica/MCPClient/clientScripts/change_sip_name.py similarity index 92% rename from src/MCPClient/clientScripts/change_sip_name.py rename to src/archivematica/MCPClient/clientScripts/change_sip_name.py index 0ce261290d..ada621310d 100755 --- a/src/MCPClient/clientScripts/change_sip_name.py +++ b/src/archivematica/MCPClient/clientScripts/change_sip_name.py @@ -21,10 +21,11 @@ import django django.setup() -from change_names import change_path from django.db import transaction -from main.models import SIP -from main.models import Transfer + +from archivematica.dashboard.main.models import SIP +from archivematica.dashboard.main.models import Transfer +from archivematica.MCPClient.clientScripts.change_names import change_path def call(jobs): diff --git a/src/MCPClient/clientScripts/characterize_file.py b/src/archivematica/MCPClient/clientScripts/characterize_file.py similarity index 88% rename from src/MCPClient/clientScripts/characterize_file.py rename to src/archivematica/MCPClient/clientScripts/characterize_file.py index 5eb645e5ce..189f7d0f7a 100755 --- a/src/MCPClient/clientScripts/characterize_file.py +++ b/src/archivematica/MCPClient/clientScripts/characterize_file.py @@ -15,19 +15,22 @@ django.setup() -from client.job import Job -from databaseFunctions import insertIntoFPCommandOutput -from dicts import ReplacementDict -from dicts import replace_string_values from django.conf import settings as mcpclient_settings from django.core.exceptions import ValidationError from django.db import transaction -from executeOrRunSubProcess import executeOrRun -from fpr.models import FormatVersion -from fpr.models import FPRule -from lib import setup_dicts from lxml import etree -from main.models import FPCommandOutput + +from archivematica.archivematicaCommon.databaseFunctions import ( + insertIntoFPCommandOutput, +) +from archivematica.archivematicaCommon.dicts import ReplacementDict +from archivematica.archivematicaCommon.dicts import replace_string_values +from archivematica.archivematicaCommon.executeOrRunSubProcess import executeOrRun +from archivematica.dashboard.fpr.models import FormatVersion +from archivematica.dashboard.fpr.models import FPRule +from archivematica.dashboard.main.models import FPCommandOutput +from archivematica.MCPClient.client.job import Job +from archivematica.MCPClient.clientScripts.lib import setup_dicts @dataclasses.dataclass diff --git a/src/MCPClient/clientScripts/check_for_access_directory.py b/src/archivematica/MCPClient/clientScripts/check_for_access_directory.py similarity index 97% rename from src/MCPClient/clientScripts/check_for_access_directory.py rename to src/archivematica/MCPClient/clientScripts/check_for_access_directory.py index d70bcb1feb..bb84395435 100755 --- a/src/MCPClient/clientScripts/check_for_access_directory.py +++ b/src/archivematica/MCPClient/clientScripts/check_for_access_directory.py @@ -24,9 +24,9 @@ django.setup() -from fileOperations import rename -from fileOperations import updateFileLocation -from main.models import File +from archivematica.archivematicaCommon.fileOperations import rename +from archivematica.archivematicaCommon.fileOperations import updateFileLocation +from archivematica.dashboard.main.models import File def main( diff --git a/src/MCPClient/clientScripts/check_for_service_directory.py b/src/archivematica/MCPClient/clientScripts/check_for_service_directory.py similarity index 99% rename from src/MCPClient/clientScripts/check_for_service_directory.py rename to src/archivematica/MCPClient/clientScripts/check_for_service_directory.py index 4ec5ceb0f5..be107f5862 100755 --- a/src/MCPClient/clientScripts/check_for_service_directory.py +++ b/src/archivematica/MCPClient/clientScripts/check_for_service_directory.py @@ -24,7 +24,7 @@ django.setup() -from main.models import File +from archivematica.dashboard.main.models import File def something(job, SIPDirectory, serviceDirectory, objectsDirectory, SIPUUID, date): diff --git a/src/MCPClient/clientScripts/check_for_submission_documentation.py b/src/archivematica/MCPClient/clientScripts/check_for_submission_documentation.py similarity index 100% rename from src/MCPClient/clientScripts/check_for_submission_documentation.py rename to src/archivematica/MCPClient/clientScripts/check_for_submission_documentation.py diff --git a/src/MCPClient/clientScripts/check_transfer_directory_for_objects.py b/src/archivematica/MCPClient/clientScripts/check_transfer_directory_for_objects.py similarity index 100% rename from src/MCPClient/clientScripts/check_transfer_directory_for_objects.py rename to src/archivematica/MCPClient/clientScripts/check_transfer_directory_for_objects.py diff --git a/src/MCPClient/clientScripts/cmd_chmod.py b/src/archivematica/MCPClient/clientScripts/cmd_chmod.py similarity index 81% rename from src/MCPClient/clientScripts/cmd_chmod.py rename to src/archivematica/MCPClient/clientScripts/cmd_chmod.py index 959cfbae2e..c100a74343 100755 --- a/src/MCPClient/clientScripts/cmd_chmod.py +++ b/src/archivematica/MCPClient/clientScripts/cmd_chmod.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -from executeOrRunSubProcess import executeOrRun +from archivematica.archivematicaCommon.executeOrRunSubProcess import executeOrRun def call(jobs): diff --git a/src/MCPClient/clientScripts/cmd_cp.py b/src/archivematica/MCPClient/clientScripts/cmd_cp.py similarity index 81% rename from src/MCPClient/clientScripts/cmd_cp.py rename to src/archivematica/MCPClient/clientScripts/cmd_cp.py index 35b6d2e975..5fd2684d67 100755 --- a/src/MCPClient/clientScripts/cmd_cp.py +++ b/src/archivematica/MCPClient/clientScripts/cmd_cp.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -from executeOrRunSubProcess import executeOrRun +from archivematica.archivematicaCommon.executeOrRunSubProcess import executeOrRun def call(jobs): diff --git a/src/MCPClient/clientScripts/cmd_mkdir.py b/src/archivematica/MCPClient/clientScripts/cmd_mkdir.py similarity index 81% rename from src/MCPClient/clientScripts/cmd_mkdir.py rename to src/archivematica/MCPClient/clientScripts/cmd_mkdir.py index f68a594a23..a3d15cf2fa 100755 --- a/src/MCPClient/clientScripts/cmd_mkdir.py +++ b/src/archivematica/MCPClient/clientScripts/cmd_mkdir.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -from executeOrRunSubProcess import executeOrRun +from archivematica.archivematicaCommon.executeOrRunSubProcess import executeOrRun def call(jobs): diff --git a/src/MCPClient/clientScripts/cmd_mv.py b/src/archivematica/MCPClient/clientScripts/cmd_mv.py similarity index 81% rename from src/MCPClient/clientScripts/cmd_mv.py rename to src/archivematica/MCPClient/clientScripts/cmd_mv.py index 31aa034c55..18ff8455b2 100755 --- a/src/MCPClient/clientScripts/cmd_mv.py +++ b/src/archivematica/MCPClient/clientScripts/cmd_mv.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -from executeOrRunSubProcess import executeOrRun +from archivematica.archivematicaCommon.executeOrRunSubProcess import executeOrRun def call(jobs): diff --git a/src/MCPClient/clientScripts/cmd_test.py b/src/archivematica/MCPClient/clientScripts/cmd_test.py similarity index 81% rename from src/MCPClient/clientScripts/cmd_test.py rename to src/archivematica/MCPClient/clientScripts/cmd_test.py index 86f86d71a5..785bfc90e1 100755 --- a/src/MCPClient/clientScripts/cmd_test.py +++ b/src/archivematica/MCPClient/clientScripts/cmd_test.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -from executeOrRunSubProcess import executeOrRun +from archivematica.archivematicaCommon.executeOrRunSubProcess import executeOrRun def call(jobs): diff --git a/src/MCPClient/clientScripts/cmd_tree.py b/src/archivematica/MCPClient/clientScripts/cmd_tree.py similarity index 81% rename from src/MCPClient/clientScripts/cmd_tree.py rename to src/archivematica/MCPClient/clientScripts/cmd_tree.py index f5f1a96baa..b2f0b3292f 100755 --- a/src/MCPClient/clientScripts/cmd_tree.py +++ b/src/archivematica/MCPClient/clientScripts/cmd_tree.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -from executeOrRunSubProcess import executeOrRun +from archivematica.archivematicaCommon.executeOrRunSubProcess import executeOrRun def call(jobs): diff --git a/src/MCPClient/clientScripts/compress_aip.py b/src/archivematica/MCPClient/clientScripts/compress_aip.py similarity index 96% rename from src/MCPClient/clientScripts/compress_aip.py rename to src/archivematica/MCPClient/clientScripts/compress_aip.py index 175519edac..9e0d56a7bf 100755 --- a/src/MCPClient/clientScripts/compress_aip.py +++ b/src/archivematica/MCPClient/clientScripts/compress_aip.py @@ -8,10 +8,9 @@ django.setup() - -import databaseFunctions -from executeOrRunSubProcess import executeOrRun -from main.models import SIP +from archivematica.archivematicaCommon import databaseFunctions +from archivematica.archivematicaCommon.executeOrRunSubProcess import executeOrRun +from archivematica.dashboard.main.models import SIP def update_unit(sip_uuid, compressed_location): diff --git a/src/MCPClient/clientScripts/convert_dataverse_structure.py b/src/archivematica/MCPClient/clientScripts/convert_dataverse_structure.py similarity index 99% rename from src/MCPClient/clientScripts/convert_dataverse_structure.py rename to src/archivematica/MCPClient/clientScripts/convert_dataverse_structure.py index 3c5bb2907f..d8f57032e8 100644 --- a/src/MCPClient/clientScripts/convert_dataverse_structure.py +++ b/src/archivematica/MCPClient/clientScripts/convert_dataverse_structure.py @@ -33,7 +33,8 @@ django.setup() import metsrw -from custom_handlers import get_script_logger + +from archivematica.archivematicaCommon.custom_handlers import get_script_logger logger = get_script_logger("archivematica.mcp.client.convert_dataverse_struct") diff --git a/src/MCPClient/clientScripts/copyRecursiveIfExists.sh b/src/archivematica/MCPClient/clientScripts/copyRecursiveIfExists.sh similarity index 100% rename from src/MCPClient/clientScripts/copyRecursiveIfExists.sh rename to src/archivematica/MCPClient/clientScripts/copyRecursiveIfExists.sh diff --git a/src/MCPClient/clientScripts/copySubmissionDocs.sh b/src/archivematica/MCPClient/clientScripts/copySubmissionDocs.sh similarity index 100% rename from src/MCPClient/clientScripts/copySubmissionDocs.sh rename to src/archivematica/MCPClient/clientScripts/copySubmissionDocs.sh diff --git a/src/MCPClient/clientScripts/copy_recursive.py b/src/archivematica/MCPClient/clientScripts/copy_recursive.py similarity index 85% rename from src/MCPClient/clientScripts/copy_recursive.py rename to src/archivematica/MCPClient/clientScripts/copy_recursive.py index 2d77b07fc5..9bc09c77b3 100755 --- a/src/MCPClient/clientScripts/copy_recursive.py +++ b/src/archivematica/MCPClient/clientScripts/copy_recursive.py @@ -1,7 +1,7 @@ #!/usr/bin/env python import os -from executeOrRunSubProcess import executeOrRun +from archivematica.archivematicaCommon.executeOrRunSubProcess import executeOrRun def call(jobs): diff --git a/src/MCPClient/clientScripts/copy_submission_docs.py b/src/archivematica/MCPClient/clientScripts/copy_submission_docs.py similarity index 85% rename from src/MCPClient/clientScripts/copy_submission_docs.py rename to src/archivematica/MCPClient/clientScripts/copy_submission_docs.py index 9f9828c29e..398136ffe4 100755 --- a/src/MCPClient/clientScripts/copy_submission_docs.py +++ b/src/archivematica/MCPClient/clientScripts/copy_submission_docs.py @@ -1,7 +1,7 @@ #!/usr/bin/env python import os -from executeOrRunSubProcess import executeOrRun +from archivematica.archivematicaCommon.executeOrRunSubProcess import executeOrRun def call(jobs): diff --git a/src/MCPClient/clientScripts/copy_thumbnails_to_dip_directory.py b/src/archivematica/MCPClient/clientScripts/copy_thumbnails_to_dip_directory.py similarity index 100% rename from src/MCPClient/clientScripts/copy_thumbnails_to_dip_directory.py rename to src/archivematica/MCPClient/clientScripts/copy_thumbnails_to_dip_directory.py diff --git a/src/MCPClient/clientScripts/copy_transfer_submission_documentation.py b/src/archivematica/MCPClient/clientScripts/copy_transfer_submission_documentation.py similarity index 93% rename from src/MCPClient/clientScripts/copy_transfer_submission_documentation.py rename to src/archivematica/MCPClient/clientScripts/copy_transfer_submission_documentation.py index b5e8bcdc23..1ab4b19342 100755 --- a/src/MCPClient/clientScripts/copy_transfer_submission_documentation.py +++ b/src/archivematica/MCPClient/clientScripts/copy_transfer_submission_documentation.py @@ -23,10 +23,12 @@ django.setup() -from archivematicaFunctions import find_transfer_path_from_ingest -from bag import is_bag -from main.models import SIP -from main.models import File +from archivematica.archivematicaCommon.archivematicaFunctions import ( + find_transfer_path_from_ingest, +) +from archivematica.archivematicaCommon.bag import is_bag +from archivematica.dashboard.main.models import SIP +from archivematica.dashboard.main.models import File def call(jobs): diff --git a/src/MCPClient/clientScripts/copy_transfers_metadata_and_logs.py b/src/archivematica/MCPClient/clientScripts/copy_transfers_metadata_and_logs.py similarity index 94% rename from src/MCPClient/clientScripts/copy_transfers_metadata_and_logs.py rename to src/archivematica/MCPClient/clientScripts/copy_transfers_metadata_and_logs.py index a642f31f06..ce5a5ddc85 100755 --- a/src/MCPClient/clientScripts/copy_transfers_metadata_and_logs.py +++ b/src/archivematica/MCPClient/clientScripts/copy_transfers_metadata_and_logs.py @@ -24,10 +24,12 @@ django.setup() -from archivematicaFunctions import find_transfer_path_from_ingest -from bag import is_bag -from main.models import SIP -from main.models import File +from archivematica.archivematicaCommon.archivematicaFunctions import ( + find_transfer_path_from_ingest, +) +from archivematica.archivematicaCommon.bag import is_bag +from archivematica.dashboard.main.models import SIP +from archivematica.dashboard.main.models import File def main( diff --git a/src/MCPClient/clientScripts/create_aic_mets.py b/src/archivematica/MCPClient/clientScripts/create_aic_mets.py similarity index 93% rename from src/MCPClient/clientScripts/create_aic_mets.py rename to src/archivematica/MCPClient/clientScripts/create_aic_mets.py index 7bd393510e..352d344910 100755 --- a/src/MCPClient/clientScripts/create_aic_mets.py +++ b/src/archivematica/MCPClient/clientScripts/create_aic_mets.py @@ -12,13 +12,14 @@ django.setup() -import create_mets_v2 -import databaseFunctions -import fileOperations -import namespaces as ns -import storageService as storage_service from django.utils import timezone -from main.models import UnitVariable + +from archivematica.archivematicaCommon import databaseFunctions +from archivematica.archivematicaCommon import fileOperations +from archivematica.archivematicaCommon import namespaces as ns +from archivematica.archivematicaCommon import storageService as storage_service +from archivematica.dashboard.main.models import UnitVariable +from archivematica.MCPClient.clientScripts import create_mets_v2 def get_aip_info(aic_dir, job): diff --git a/src/MCPClient/clientScripts/create_event.py b/src/archivematica/MCPClient/clientScripts/create_event.py similarity index 97% rename from src/MCPClient/clientScripts/create_event.py rename to src/archivematica/MCPClient/clientScripts/create_event.py index 742de8fcda..6e3dacadc2 100755 --- a/src/MCPClient/clientScripts/create_event.py +++ b/src/archivematica/MCPClient/clientScripts/create_event.py @@ -22,9 +22,10 @@ django.setup() -from databaseFunctions import insertIntoEvents from django.db import transaction +from archivematica.archivematicaCommon.databaseFunctions import insertIntoEvents + def call(jobs): parser = OptionParser() diff --git a/src/MCPClient/clientScripts/create_mets_dataverse_v2.py b/src/archivematica/MCPClient/clientScripts/create_mets_dataverse_v2.py similarity index 95% rename from src/MCPClient/clientScripts/create_mets_dataverse_v2.py rename to src/archivematica/MCPClient/clientScripts/create_mets_dataverse_v2.py index 34c8c5c9cb..d21b0c7310 100644 --- a/src/MCPClient/clientScripts/create_mets_dataverse_v2.py +++ b/src/archivematica/MCPClient/clientScripts/create_mets_dataverse_v2.py @@ -20,9 +20,10 @@ import sys -import archivematicaFunctions import metsrw -from custom_handlers import get_script_logger + +from archivematica.archivematicaCommon import archivematicaFunctions +from archivematica.archivematicaCommon.custom_handlers import get_script_logger logger = get_script_logger("archivematica.mcp.client.createMETSDataverse") diff --git a/src/MCPClient/clientScripts/create_mets_v2.py b/src/archivematica/MCPClient/clientScripts/create_mets_v2.py similarity index 97% rename from src/MCPClient/clientScripts/create_mets_v2.py rename to src/archivematica/MCPClient/clientScripts/create_mets_v2.py index 6ad2b73c16..05abff365f 100755 --- a/src/MCPClient/clientScripts/create_mets_v2.py +++ b/src/archivematica/MCPClient/clientScripts/create_mets_v2.py @@ -35,37 +35,56 @@ django.setup() -import archivematicaCreateMETSMetadataXML -import archivematicaCreateMETSReingest -import namespaces as ns -from archivematicaCreateMETSMetadataCSV import parseMetadata -from archivematicaCreateMETSRights import archivematicaGetRights -from archivematicaCreateMETSRightsDspaceMDRef import ( - archivematicaCreateMETSRightsDspaceMDRef, -) -from archivematicaCreateMETSTrim import getTrimAmdSec -from archivematicaCreateMETSTrim import getTrimDmdSec -from archivematicaCreateMETSTrim import getTrimFileAmdSec -from archivematicaCreateMETSTrim import getTrimFileDmdSec -from archivematicaFunctions import normalizeNonDcElementName from bagit import Bag from bagit import BagError -from change_names import change_name -from create_mets_dataverse_v2 import create_dataverse_sip_dmdsec -from create_mets_dataverse_v2 import create_dataverse_tabfile_dmdsec -from custom_handlers import get_script_logger from django.conf import settings as mcpclient_settings from django.core.exceptions import ValidationError -from main.models import SIP -from main.models import Agent -from main.models import Derivation -from main.models import Directory -from main.models import DublinCore -from main.models import Event -from main.models import File -from main.models import FileID -from main.models import FPCommandOutput -from main.models import SIPArrange + +from archivematica.archivematicaCommon import namespaces as ns +from archivematica.archivematicaCommon.archivematicaFunctions import ( + normalizeNonDcElementName, +) +from archivematica.archivematicaCommon.custom_handlers import get_script_logger +from archivematica.dashboard.main.models import SIP +from archivematica.dashboard.main.models import Agent +from archivematica.dashboard.main.models import Derivation +from archivematica.dashboard.main.models import Directory +from archivematica.dashboard.main.models import DublinCore +from archivematica.dashboard.main.models import Event +from archivematica.dashboard.main.models import File +from archivematica.dashboard.main.models import FileID +from archivematica.dashboard.main.models import FPCommandOutput +from archivematica.dashboard.main.models import SIPArrange +from archivematica.MCPClient.clientScripts import archivematicaCreateMETSMetadataXML +from archivematica.MCPClient.clientScripts import archivematicaCreateMETSReingest +from archivematica.MCPClient.clientScripts.archivematicaCreateMETSMetadataCSV import ( + parseMetadata, +) +from archivematica.MCPClient.clientScripts.archivematicaCreateMETSRights import ( + archivematicaGetRights, +) +from archivematica.MCPClient.clientScripts.archivematicaCreateMETSRightsDspaceMDRef import ( + archivematicaCreateMETSRightsDspaceMDRef, +) +from archivematica.MCPClient.clientScripts.archivematicaCreateMETSTrim import ( + getTrimAmdSec, +) +from archivematica.MCPClient.clientScripts.archivematicaCreateMETSTrim import ( + getTrimDmdSec, +) +from archivematica.MCPClient.clientScripts.archivematicaCreateMETSTrim import ( + getTrimFileAmdSec, +) +from archivematica.MCPClient.clientScripts.archivematicaCreateMETSTrim import ( + getTrimFileDmdSec, +) +from archivematica.MCPClient.clientScripts.change_names import change_name +from archivematica.MCPClient.clientScripts.create_mets_dataverse_v2 import ( + create_dataverse_sip_dmdsec, +) +from archivematica.MCPClient.clientScripts.create_mets_dataverse_v2 import ( + create_dataverse_tabfile_dmdsec, +) SIP_DIR_VAR = r"%SIPDirectory%" diff --git a/src/MCPClient/clientScripts/create_sip_from_transfer_objects.py b/src/archivematica/MCPClient/clientScripts/create_sip_from_transfer_objects.py similarity index 95% rename from src/MCPClient/clientScripts/create_sip_from_transfer_objects.py rename to src/archivematica/MCPClient/clientScripts/create_sip_from_transfer_objects.py index f68d09d3cf..d590f7bdc3 100755 --- a/src/MCPClient/clientScripts/create_sip_from_transfer_objects.py +++ b/src/archivematica/MCPClient/clientScripts/create_sip_from_transfer_objects.py @@ -24,15 +24,16 @@ django.setup() -import archivematicaFunctions from django.core.exceptions import ValidationError from django.db import transaction -from main.models import SIP -from main.models import Agent -from main.models import Directory -from main.models import File -from main.models import Transfer -from main.models import UnitVariable + +from archivematica.archivematicaCommon import archivematicaFunctions +from archivematica.dashboard.main.models import SIP +from archivematica.dashboard.main.models import Agent +from archivematica.dashboard.main.models import Directory +from archivematica.dashboard.main.models import File +from archivematica.dashboard.main.models import Transfer +from archivematica.dashboard.main.models import UnitVariable def call(jobs): diff --git a/src/MCPClient/clientScripts/create_sips_from_trim_transfer_containers.py b/src/archivematica/MCPClient/clientScripts/create_sips_from_trim_transfer_containers.py similarity index 95% rename from src/MCPClient/clientScripts/create_sips_from_trim_transfer_containers.py rename to src/archivematica/MCPClient/clientScripts/create_sips_from_trim_transfer_containers.py index ab056933cc..f337d19677 100755 --- a/src/MCPClient/clientScripts/create_sips_from_trim_transfer_containers.py +++ b/src/archivematica/MCPClient/clientScripts/create_sips_from_trim_transfer_containers.py @@ -25,10 +25,9 @@ django.setup() - -import archivematicaFunctions -import databaseFunctions -from main.models import File +from archivematica.archivematicaCommon import archivematicaFunctions +from archivematica.archivematicaCommon import databaseFunctions +from archivematica.dashboard.main.models import File def call(jobs): diff --git a/src/MCPClient/clientScripts/create_transfer_metadata.py b/src/archivematica/MCPClient/clientScripts/create_transfer_metadata.py similarity index 94% rename from src/MCPClient/clientScripts/create_transfer_metadata.py rename to src/archivematica/MCPClient/clientScripts/create_transfer_metadata.py index 322db136f6..6040469919 100755 --- a/src/MCPClient/clientScripts/create_transfer_metadata.py +++ b/src/archivematica/MCPClient/clientScripts/create_transfer_metadata.py @@ -6,8 +6,8 @@ django.setup() -from client import metrics -from main.models import Transfer +from archivematica.dashboard.main.models import Transfer +from archivematica.MCPClient.client import metrics def fetch_set(sip_uuid): diff --git a/src/MCPClient/clientScripts/create_transfer_mets.py b/src/archivematica/MCPClient/clientScripts/create_transfer_mets.py similarity index 97% rename from src/MCPClient/clientScripts/create_transfer_mets.py rename to src/archivematica/MCPClient/clientScripts/create_transfer_mets.py index 070024dd8c..02adbb416c 100755 --- a/src/MCPClient/clientScripts/create_transfer_mets.py +++ b/src/archivematica/MCPClient/clientScripts/create_transfer_mets.py @@ -28,15 +28,16 @@ django.setup() import metsrw -from archivematicaFunctions import get_dashboard_uuid -from countryCodes import getCodeForCountry -from main.models import Agent -from main.models import Derivation -from main.models import Directory -from main.models import File -from main.models import FPCommandOutput -from main.models import RightsStatement -from main.models import Transfer + +from archivematica.archivematicaCommon.archivematicaFunctions import get_dashboard_uuid +from archivematica.archivematicaCommon.countryCodes import getCodeForCountry +from archivematica.dashboard.main.models import Agent +from archivematica.dashboard.main.models import Derivation +from archivematica.dashboard.main.models import Directory +from archivematica.dashboard.main.models import File +from archivematica.dashboard.main.models import FPCommandOutput +from archivematica.dashboard.main.models import RightsStatement +from archivematica.dashboard.main.models import Transfer PREMIS_META = metsrw.plugins.premisrw.PREMIS_3_0_META FILE_PREMIS_META = PREMIS_META.copy() diff --git a/src/MCPClient/clientScripts/determine_aip_version_key_exit_code.py b/src/archivematica/MCPClient/clientScripts/determine_aip_version_key_exit_code.py similarity index 97% rename from src/MCPClient/clientScripts/determine_aip_version_key_exit_code.py rename to src/archivematica/MCPClient/clientScripts/determine_aip_version_key_exit_code.py index eda27d3e5b..0b800e677e 100755 --- a/src/MCPClient/clientScripts/determine_aip_version_key_exit_code.py +++ b/src/archivematica/MCPClient/clientScripts/determine_aip_version_key_exit_code.py @@ -19,9 +19,10 @@ import sys from typing import Optional -import namespaces as ns from lxml import etree +from archivematica.archivematicaCommon import namespaces as ns + VERSION_MAP: dict[Optional[str], int] = { # Only change exit code if AIP format changes. If unknown, default to latest # version. Currently, all AIPs are the same format so no special cases diff --git a/src/MCPClient/clientScripts/dip_generation_helper.py b/src/archivematica/MCPClient/clientScripts/dip_generation_helper.py similarity index 96% rename from src/MCPClient/clientScripts/dip_generation_helper.py rename to src/archivematica/MCPClient/clientScripts/dip_generation_helper.py index 45474b35b1..7dc4187f48 100755 --- a/src/MCPClient/clientScripts/dip_generation_helper.py +++ b/src/archivematica/MCPClient/clientScripts/dip_generation_helper.py @@ -2,13 +2,14 @@ import argparse import csv -import archivematicaFunctions import django from agentarchives import archivesspace -from custom_handlers import get_script_logger from django.core.exceptions import ValidationError from django.db.models import Q -from main import models + +from archivematica.archivematicaCommon import archivematicaFunctions +from archivematica.archivematicaCommon.custom_handlers import get_script_logger +from archivematica.dashboard.main import models django.setup() from django.db import transaction diff --git a/src/MCPClient/clientScripts/email_fail_report.py b/src/archivematica/MCPClient/clientScripts/email_fail_report.py similarity index 96% rename from src/MCPClient/clientScripts/email_fail_report.py rename to src/archivematica/MCPClient/clientScripts/email_fail_report.py index 4edc21da46..549d40d113 100755 --- a/src/MCPClient/clientScripts/email_fail_report.py +++ b/src/archivematica/MCPClient/clientScripts/email_fail_report.py @@ -18,16 +18,17 @@ import argparse import django -from custom_handlers import get_script_logger from django.conf import settings as mcpclient_settings from django.contrib.auth.models import User from django.core.mail import send_mail from django.db import connection from django.db import transaction -from externals.HTML import HTML from lxml import etree -from main.models import Job -from main.models import Report + +from archivematica.archivematicaCommon.custom_handlers import get_script_logger +from archivematica.archivematicaCommon.externals.HTML import HTML +from archivematica.dashboard.main.models import Job +from archivematica.dashboard.main.models import Report django.setup() diff --git a/src/MCPClient/clientScripts/examine_contents.py b/src/archivematica/MCPClient/clientScripts/examine_contents.py similarity index 93% rename from src/MCPClient/clientScripts/examine_contents.py rename to src/archivematica/MCPClient/clientScripts/examine_contents.py index 0a42f8bdec..5a53b805eb 100755 --- a/src/MCPClient/clientScripts/examine_contents.py +++ b/src/archivematica/MCPClient/clientScripts/examine_contents.py @@ -2,7 +2,7 @@ import multiprocessing import os -from executeOrRunSubProcess import executeOrRun +from archivematica.archivematicaCommon.executeOrRunSubProcess import executeOrRun def concurrent_instances(): diff --git a/src/MCPClient/clientScripts/extract_contents.py b/src/archivematica/MCPClient/clientScripts/extract_contents.py similarity index 91% rename from src/MCPClient/clientScripts/extract_contents.py rename to src/archivematica/MCPClient/clientScripts/extract_contents.py index 719b52d2ee..60926f1e65 100755 --- a/src/MCPClient/clientScripts/extract_contents.py +++ b/src/archivematica/MCPClient/clientScripts/extract_contents.py @@ -8,19 +8,19 @@ django.setup() -from archivematicaFunctions import format_subdir_path -from archivematicaFunctions import get_dir_uuids -from custom_handlers import get_script_logger -from databaseFunctions import fileWasRemoved -from executeOrRunSubProcess import executeOrRun -from fileOperations import addFileToTransfer -from fileOperations import updateSizeAndChecksum -from fpr.models import FPCommand -from has_packages import already_extracted -from main.models import Directory -from main.models import File -from main.models import FileFormatVersion -from main.models import Transfer +from archivematica.archivematicaCommon.archivematicaFunctions import format_subdir_path +from archivematica.archivematicaCommon.archivematicaFunctions import get_dir_uuids +from archivematica.archivematicaCommon.custom_handlers import get_script_logger +from archivematica.archivematicaCommon.databaseFunctions import fileWasRemoved +from archivematica.archivematicaCommon.executeOrRunSubProcess import executeOrRun +from archivematica.archivematicaCommon.fileOperations import addFileToTransfer +from archivematica.archivematicaCommon.fileOperations import updateSizeAndChecksum +from archivematica.dashboard.fpr.models import FPCommand +from archivematica.dashboard.main.models import Directory +from archivematica.dashboard.main.models import File +from archivematica.dashboard.main.models import FileFormatVersion +from archivematica.dashboard.main.models import Transfer +from archivematica.MCPClient.clientScripts.has_packages import already_extracted logger = get_script_logger("archivematica.mcp.client.extractContents") diff --git a/src/MCPClient/clientScripts/extract_maildir_attachments.py b/src/archivematica/MCPClient/clientScripts/extract_maildir_attachments.py similarity index 97% rename from src/MCPClient/clientScripts/extract_maildir_attachments.py rename to src/archivematica/MCPClient/clientScripts/extract_maildir_attachments.py index 292d42e0f5..32329de65a 100755 --- a/src/MCPClient/clientScripts/extract_maildir_attachments.py +++ b/src/archivematica/MCPClient/clientScripts/extract_maildir_attachments.py @@ -27,10 +27,11 @@ django.setup() from django.core.exceptions import ValidationError from django.db import transaction -from externals.extractMaildirAttachments import parse -from fileOperations import addFileToTransfer -from fileOperations import updateSizeAndChecksum -from main.models import File + +from archivematica.archivematicaCommon.externals.extractMaildirAttachments import parse +from archivematica.archivematicaCommon.fileOperations import addFileToTransfer +from archivematica.archivematicaCommon.fileOperations import updateSizeAndChecksum +from archivematica.dashboard.main.models import File class State: diff --git a/src/MCPClient/clientScripts/extract_zipped_transfer.py b/src/archivematica/MCPClient/clientScripts/extract_zipped_transfer.py similarity index 95% rename from src/MCPClient/clientScripts/extract_zipped_transfer.py rename to src/archivematica/MCPClient/clientScripts/extract_zipped_transfer.py index dc6c0406be..8a0d797baa 100755 --- a/src/MCPClient/clientScripts/extract_zipped_transfer.py +++ b/src/archivematica/MCPClient/clientScripts/extract_zipped_transfer.py @@ -24,9 +24,10 @@ django.setup() from django.db import transaction -from executeOrRunSubProcess import executeOrRun -from fileOperations import get_extract_dir_name -from main.models import Transfer + +from archivematica.archivematicaCommon.executeOrRunSubProcess import executeOrRun +from archivematica.archivematicaCommon.fileOperations import get_extract_dir_name +from archivematica.dashboard.main.models import Transfer def extract(job, target, destinationDirectory): diff --git a/src/MCPClient/clientScripts/failed_sip_cleanup.py b/src/archivematica/MCPClient/clientScripts/failed_sip_cleanup.py similarity index 88% rename from src/MCPClient/clientScripts/failed_sip_cleanup.py rename to src/archivematica/MCPClient/clientScripts/failed_sip_cleanup.py index 3caa74a2e7..fc9d546b32 100755 --- a/src/MCPClient/clientScripts/failed_sip_cleanup.py +++ b/src/archivematica/MCPClient/clientScripts/failed_sip_cleanup.py @@ -6,10 +6,9 @@ django.setup() - -import storageService as storage_service -from client import metrics -from main import models +import archivematica.archivematicaCommon.storageService as storage_service +from archivematica.dashboard.main import models +from archivematica.MCPClient.client import metrics REJECTED = "reject" FAILED = "fail" diff --git a/src/MCPClient/clientScripts/failed_transfer_cleanup.py b/src/archivematica/MCPClient/clientScripts/failed_transfer_cleanup.py similarity index 90% rename from src/MCPClient/clientScripts/failed_transfer_cleanup.py rename to src/archivematica/MCPClient/clientScripts/failed_transfer_cleanup.py index b3289090e4..40921a7b41 100755 --- a/src/MCPClient/clientScripts/failed_transfer_cleanup.py +++ b/src/archivematica/MCPClient/clientScripts/failed_transfer_cleanup.py @@ -6,11 +6,12 @@ django.setup() -import storageService as storage_service -from client import metrics from django.db import transaction -from main.models import File -from main.models import Transfer + +import archivematica.archivematicaCommon.storageService as storage_service +from archivematica.dashboard.main.models import File +from archivematica.dashboard.main.models import Transfer +from archivematica.MCPClient.client import metrics REJECTED = "reject" FAILED = "fail" diff --git a/src/MCPClient/clientScripts/file_to_folder.py b/src/archivematica/MCPClient/clientScripts/file_to_folder.py similarity index 97% rename from src/MCPClient/clientScripts/file_to_folder.py rename to src/archivematica/MCPClient/clientScripts/file_to_folder.py index a65204b246..db1cc6ded4 100755 --- a/src/MCPClient/clientScripts/file_to_folder.py +++ b/src/archivematica/MCPClient/clientScripts/file_to_folder.py @@ -6,7 +6,8 @@ django.setup() from django.db import transaction -from main.models import Transfer + +from archivematica.dashboard.main.models import Transfer def main(job, transfer_path, transfer_uuid, shared_path): diff --git a/src/MCPClient/clientScripts/get_aip_storage_locations.py b/src/archivematica/MCPClient/clientScripts/get_aip_storage_locations.py similarity index 88% rename from src/MCPClient/clientScripts/get_aip_storage_locations.py rename to src/archivematica/MCPClient/clientScripts/get_aip_storage_locations.py index 9b6e4f44cd..49227f7d43 100755 --- a/src/MCPClient/clientScripts/get_aip_storage_locations.py +++ b/src/archivematica/MCPClient/clientScripts/get_aip_storage_locations.py @@ -6,8 +6,8 @@ django.setup() -import storageService as storage_service -from custom_handlers import get_script_logger +from archivematica.archivematicaCommon import storageService as storage_service +from archivematica.archivematicaCommon.custom_handlers import get_script_logger logger = get_script_logger("archivematica.mcp.client.get_aip_storage_locations") diff --git a/src/MCPClient/clientScripts/has_packages.py b/src/archivematica/MCPClient/clientScripts/has_packages.py similarity index 83% rename from src/MCPClient/clientScripts/has_packages.py rename to src/archivematica/MCPClient/clientScripts/has_packages.py index 7a758abfb5..e6222358db 100755 --- a/src/MCPClient/clientScripts/has_packages.py +++ b/src/archivematica/MCPClient/clientScripts/has_packages.py @@ -4,12 +4,12 @@ django.setup() -from client.job import Job -from fpr.models import FPRule -from main.models import Event -from main.models import File -from main.models import FileFormatVersion -from main.models import Transfer +from archivematica.dashboard.fpr.models import FPRule +from archivematica.dashboard.main.models import Event +from archivematica.dashboard.main.models import File +from archivematica.dashboard.main.models import FileFormatVersion +from archivematica.dashboard.main.models import Transfer +from archivematica.MCPClient.client.job import Job def is_extractable(f: File) -> bool: diff --git a/src/MCPClient/clientScripts/identify_dspace_files.py b/src/archivematica/MCPClient/clientScripts/identify_dspace_files.py similarity index 96% rename from src/MCPClient/clientScripts/identify_dspace_files.py rename to src/archivematica/MCPClient/clientScripts/identify_dspace_files.py index bbdf188038..4c02895f66 100755 --- a/src/MCPClient/clientScripts/identify_dspace_files.py +++ b/src/archivematica/MCPClient/clientScripts/identify_dspace_files.py @@ -18,13 +18,14 @@ import os import django -import namespaces from django.db import transaction from lxml import etree +from archivematica.archivematicaCommon import namespaces + django.setup() -from main.models import File +from archivematica.dashboard.main.models import File def identify_dspace_files( diff --git a/src/MCPClient/clientScripts/identify_dspace_mets_files.py b/src/archivematica/MCPClient/clientScripts/identify_dspace_mets_files.py similarity index 95% rename from src/MCPClient/clientScripts/identify_dspace_mets_files.py rename to src/archivematica/MCPClient/clientScripts/identify_dspace_mets_files.py index dbc4aaf50e..4e6ad68004 100755 --- a/src/MCPClient/clientScripts/identify_dspace_mets_files.py +++ b/src/archivematica/MCPClient/clientScripts/identify_dspace_mets_files.py @@ -20,7 +20,8 @@ django.setup() from django.db import transaction -from main.models import File + +from archivematica.dashboard.main.models import File def call(jobs): diff --git a/src/MCPClient/clientScripts/identify_file_format.py b/src/archivematica/MCPClient/clientScripts/identify_file_format.py similarity index 92% rename from src/MCPClient/clientScripts/identify_file_format.py rename to src/archivematica/MCPClient/clientScripts/identify_file_format.py index 0ec9652466..43df7f1e2d 100755 --- a/src/MCPClient/clientScripts/identify_file_format.py +++ b/src/archivematica/MCPClient/clientScripts/identify_file_format.py @@ -10,18 +10,19 @@ django.setup() -from client.job import Job -from databaseFunctions import insertIntoEvents from django.db import transaction from django.utils import timezone -from executeOrRunSubProcess import executeOrRun -from fpr.models import FormatVersion -from fpr.models import IDCommand -from fpr.models import IDRule -from main.models import File -from main.models import FileFormatVersion -from main.models import FileID -from main.models import UnitVariable + +from archivematica.archivematicaCommon.databaseFunctions import insertIntoEvents +from archivematica.archivematicaCommon.executeOrRunSubProcess import executeOrRun +from archivematica.dashboard.fpr.models import FormatVersion +from archivematica.dashboard.fpr.models import IDCommand +from archivematica.dashboard.fpr.models import IDRule +from archivematica.dashboard.main.models import File +from archivematica.dashboard.main.models import FileFormatVersion +from archivematica.dashboard.main.models import FileID +from archivematica.dashboard.main.models import UnitVariable +from archivematica.MCPClient.client.job import Job SUCCESS = 0 ERROR = 255 diff --git a/src/MCPClient/clientScripts/index_aip.py b/src/archivematica/MCPClient/clientScripts/index_aip.py similarity index 92% rename from src/MCPClient/clientScripts/index_aip.py rename to src/archivematica/MCPClient/clientScripts/index_aip.py index ebd9c15c37..3892b8cf85 100755 --- a/src/MCPClient/clientScripts/index_aip.py +++ b/src/archivematica/MCPClient/clientScripts/index_aip.py @@ -5,12 +5,13 @@ from glob import glob import django -import elasticSearchFunctions -import identifier_functions -import storageService as storage_service -from custom_handlers import get_script_logger from django.core.exceptions import ValidationError -from main.models import UnitVariable + +from archivematica.archivematicaCommon import elasticSearchFunctions +from archivematica.archivematicaCommon import identifier_functions +from archivematica.archivematicaCommon import storageService as storage_service +from archivematica.archivematicaCommon.custom_handlers import get_script_logger +from archivematica.dashboard.main.models import UnitVariable django.setup() diff --git a/src/MCPClient/clientScripts/is_maildir_aip.py b/src/archivematica/MCPClient/clientScripts/is_maildir_aip.py similarity index 100% rename from src/MCPClient/clientScripts/is_maildir_aip.py rename to src/archivematica/MCPClient/clientScripts/is_maildir_aip.py diff --git a/src/MCPClient/clientScripts/json_metadata_to_csv.py b/src/archivematica/MCPClient/clientScripts/json_metadata_to_csv.py similarity index 100% rename from src/MCPClient/clientScripts/json_metadata_to_csv.py rename to src/archivematica/MCPClient/clientScripts/json_metadata_to_csv.py diff --git a/src/MCPClient/clientScripts/lib/__init__.py b/src/archivematica/MCPClient/clientScripts/lib/__init__.py similarity index 83% rename from src/MCPClient/clientScripts/lib/__init__.py rename to src/archivematica/MCPClient/clientScripts/lib/__init__.py index bd00928a7a..34c0762713 100644 --- a/src/MCPClient/clientScripts/lib/__init__.py +++ b/src/archivematica/MCPClient/clientScripts/lib/__init__.py @@ -1,4 +1,4 @@ -import dicts +from archivematica.archivematicaCommon import dicts def setup_dicts(settings): diff --git a/src/MCPClient/clientScripts/load_dublin_core.py b/src/archivematica/MCPClient/clientScripts/load_dublin_core.py similarity index 96% rename from src/MCPClient/clientScripts/load_dublin_core.py rename to src/archivematica/MCPClient/clientScripts/load_dublin_core.py index 4f70e5004f..65fe947550 100755 --- a/src/MCPClient/clientScripts/load_dublin_core.py +++ b/src/archivematica/MCPClient/clientScripts/load_dublin_core.py @@ -7,7 +7,8 @@ django.setup() from django.db import transaction -from main import models + +from archivematica.dashboard.main import models # This is the UUID of SIP from the `MetadataAppliesToTypes` table INGEST_METADATA_TYPE = "3e48343d-e2d2-4956-aaa3-b54d26eb9761" diff --git a/src/MCPClient/clientScripts/load_labels_from_csv.py b/src/archivematica/MCPClient/clientScripts/load_labels_from_csv.py similarity index 97% rename from src/MCPClient/clientScripts/load_labels_from_csv.py rename to src/archivematica/MCPClient/clientScripts/load_labels_from_csv.py index 472ec2f74f..9a3fe40132 100755 --- a/src/MCPClient/clientScripts/load_labels_from_csv.py +++ b/src/archivematica/MCPClient/clientScripts/load_labels_from_csv.py @@ -22,7 +22,8 @@ django.setup() from django.db import transaction -from main.models import File + +from archivematica.dashboard.main.models import File def call(jobs): diff --git a/src/MCPClient/clientScripts/load_premis_events_from_xml.py b/src/archivematica/MCPClient/clientScripts/load_premis_events_from_xml.py similarity index 99% rename from src/MCPClient/clientScripts/load_premis_events_from_xml.py rename to src/archivematica/MCPClient/clientScripts/load_premis_events_from_xml.py index 4e6242e4a9..1d878c9482 100644 --- a/src/MCPClient/clientScripts/load_premis_events_from_xml.py +++ b/src/archivematica/MCPClient/clientScripts/load_premis_events_from_xml.py @@ -9,9 +9,10 @@ from django.utils import dateparse from django.utils import timezone from lxml import etree -from main.models import Agent -from main.models import Event -from main.models import File + +from archivematica.dashboard.main.models import Agent +from archivematica.dashboard.main.models import Event +from archivematica.dashboard.main.models import File logger = logging.getLogger(__name__) FAILURE = 1 diff --git a/src/MCPClient/clientScripts/manual_normalization_check_for_manual_normalization_directory.py b/src/archivematica/MCPClient/clientScripts/manual_normalization_check_for_manual_normalization_directory.py similarity index 100% rename from src/MCPClient/clientScripts/manual_normalization_check_for_manual_normalization_directory.py rename to src/archivematica/MCPClient/clientScripts/manual_normalization_check_for_manual_normalization_directory.py diff --git a/src/MCPClient/clientScripts/manual_normalization_create_metadata_and_restructure.py b/src/archivematica/MCPClient/clientScripts/manual_normalization_create_metadata_and_restructure.py similarity index 96% rename from src/MCPClient/clientScripts/manual_normalization_create_metadata_and_restructure.py rename to src/archivematica/MCPClient/clientScripts/manual_normalization_create_metadata_and_restructure.py index bbd13ce02e..1632a5acfe 100755 --- a/src/MCPClient/clientScripts/manual_normalization_create_metadata_and_restructure.py +++ b/src/archivematica/MCPClient/clientScripts/manual_normalization_create_metadata_and_restructure.py @@ -19,12 +19,13 @@ django.setup() -import databaseFunctions -import fileOperations from django.core.exceptions import ValidationError from django.db.models import Q -from main.models import Event -from main.models import File + +from archivematica.archivematicaCommon import databaseFunctions +from archivematica.archivematicaCommon import fileOperations +from archivematica.dashboard.main.models import Event +from archivematica.dashboard.main.models import File def main(job): diff --git a/src/MCPClient/clientScripts/manual_normalization_identify_files_included.py b/src/archivematica/MCPClient/clientScripts/manual_normalization_identify_files_included.py similarity index 93% rename from src/MCPClient/clientScripts/manual_normalization_identify_files_included.py rename to src/archivematica/MCPClient/clientScripts/manual_normalization_identify_files_included.py index f88d8af5a4..90fb7067d6 100755 --- a/src/MCPClient/clientScripts/manual_normalization_identify_files_included.py +++ b/src/archivematica/MCPClient/clientScripts/manual_normalization_identify_files_included.py @@ -21,7 +21,7 @@ django.setup() -from fileOperations import updateFileGrpUse +from archivematica.archivematicaCommon.fileOperations import updateFileGrpUse def call(jobs): diff --git a/src/MCPClient/clientScripts/manual_normalization_move_access_files_to_dip.py b/src/archivematica/MCPClient/clientScripts/manual_normalization_move_access_files_to_dip.py similarity index 98% rename from src/MCPClient/clientScripts/manual_normalization_move_access_files_to_dip.py rename to src/archivematica/MCPClient/clientScripts/manual_normalization_move_access_files_to_dip.py index 58cd8d9734..4562cddd6a 100755 --- a/src/MCPClient/clientScripts/manual_normalization_move_access_files_to_dip.py +++ b/src/archivematica/MCPClient/clientScripts/manual_normalization_move_access_files_to_dip.py @@ -16,17 +16,17 @@ # You should have received a copy of the GNU General Public License # along with Archivematica. If not, see . import os +from optparse import OptionParser import django from django.db import transaction django.setup() -from optparse import OptionParser - -import fileOperations from django.core.exceptions import ValidationError -from main.models import File + +from archivematica.archivematicaCommon import fileOperations +from archivematica.dashboard.main.models import File def main(job): diff --git a/src/MCPClient/clientScripts/manual_normalization_remove_mn_directories.py b/src/archivematica/MCPClient/clientScripts/manual_normalization_remove_mn_directories.py similarity index 96% rename from src/MCPClient/clientScripts/manual_normalization_remove_mn_directories.py rename to src/archivematica/MCPClient/clientScripts/manual_normalization_remove_mn_directories.py index 7978e8587a..59e2ae8734 100755 --- a/src/MCPClient/clientScripts/manual_normalization_remove_mn_directories.py +++ b/src/archivematica/MCPClient/clientScripts/manual_normalization_remove_mn_directories.py @@ -22,9 +22,10 @@ django.setup() -import databaseFunctions from django.db import transaction -from main.models import File + +from archivematica.archivematicaCommon import databaseFunctions +from archivematica.dashboard.main.models import File def recursivelyRemoveEmptyDirectories(job, dir): diff --git a/src/MCPClient/clientScripts/move_or_merge.py b/src/archivematica/MCPClient/clientScripts/move_or_merge.py similarity index 97% rename from src/MCPClient/clientScripts/move_or_merge.py rename to src/archivematica/MCPClient/clientScripts/move_or_merge.py index 1dccaa4d19..9b1159214b 100755 --- a/src/MCPClient/clientScripts/move_or_merge.py +++ b/src/archivematica/MCPClient/clientScripts/move_or_merge.py @@ -4,7 +4,7 @@ import os import shutil -from custom_handlers import get_script_logger +from archivematica.archivematicaCommon.custom_handlers import get_script_logger logger = get_script_logger("archivematica.mcp.client.move_or_merge") diff --git a/src/MCPClient/clientScripts/move_sip.py b/src/archivematica/MCPClient/clientScripts/move_sip.py similarity index 94% rename from src/MCPClient/clientScripts/move_sip.py rename to src/archivematica/MCPClient/clientScripts/move_sip.py index 37f20a8bf1..be975cc768 100755 --- a/src/MCPClient/clientScripts/move_sip.py +++ b/src/archivematica/MCPClient/clientScripts/move_sip.py @@ -23,8 +23,9 @@ django.setup() from django.db import transaction -from fileOperations import rename -from main.models import SIP + +from archivematica.archivematicaCommon.fileOperations import rename +from archivematica.dashboard.main.models import SIP def updateDB(dst, sip_uuid): diff --git a/src/MCPClient/clientScripts/move_to_backlog.py b/src/archivematica/MCPClient/clientScripts/move_to_backlog.py similarity index 92% rename from src/MCPClient/clientScripts/move_to_backlog.py rename to src/archivematica/MCPClient/clientScripts/move_to_backlog.py index 257f4e2321..6c51c7e39d 100755 --- a/src/MCPClient/clientScripts/move_to_backlog.py +++ b/src/archivematica/MCPClient/clientScripts/move_to_backlog.py @@ -17,21 +17,22 @@ import django django.setup() -import elasticSearchFunctions import metsrw -import storageService as storage_service -from archivematicaFunctions import get_bag_size -from archivematicaFunctions import get_setting from bagit import make_bag -from custom_handlers import get_script_logger -from databaseFunctions import insertIntoEvents from django.conf import settings as mcpclient_settings from django.core.exceptions import ValidationError from django.db import transaction from django.db.models import Q -from main.models import Agent -from main.models import File -from main.models import UnitVariable + +import archivematica.archivematicaCommon.storageService as storage_service +from archivematica.archivematicaCommon import elasticSearchFunctions +from archivematica.archivematicaCommon.archivematicaFunctions import get_bag_size +from archivematica.archivematicaCommon.archivematicaFunctions import get_setting +from archivematica.archivematicaCommon.custom_handlers import get_script_logger +from archivematica.archivematicaCommon.databaseFunctions import insertIntoEvents +from archivematica.dashboard.main.models import Agent +from archivematica.dashboard.main.models import File +from archivematica.dashboard.main.models import UnitVariable logger = get_script_logger("archivematica.mcp.client.move_to_backlog") diff --git a/src/MCPClient/clientScripts/move_transfer.py b/src/archivematica/MCPClient/clientScripts/move_transfer.py similarity index 93% rename from src/MCPClient/clientScripts/move_transfer.py rename to src/archivematica/MCPClient/clientScripts/move_transfer.py index 6271499da8..098931f5e6 100755 --- a/src/MCPClient/clientScripts/move_transfer.py +++ b/src/archivematica/MCPClient/clientScripts/move_transfer.py @@ -21,8 +21,9 @@ django.setup() from django.db import transaction -from fileOperations import rename -from main.models import Transfer + +from archivematica.archivematicaCommon.fileOperations import rename +from archivematica.dashboard.main.models import Transfer def updateDB(dst, transferUUID): diff --git a/src/MCPClient/clientScripts/normalize.py b/src/archivematica/MCPClient/clientScripts/normalize.py similarity index 97% rename from src/MCPClient/clientScripts/normalize.py rename to src/archivematica/MCPClient/clientScripts/normalize.py index aa184041e5..0f621eab7c 100755 --- a/src/MCPClient/clientScripts/normalize.py +++ b/src/archivematica/MCPClient/clientScripts/normalize.py @@ -12,23 +12,25 @@ from typing import Optional import django -import transcoder from django.utils import timezone +from archivematica.MCPClient.clientScripts import transcoder + django.setup() -import databaseFunctions -import fileOperations -from client.job import Job -from dicts import ReplacementDict from django.conf import settings as mcpclient_settings from django.core.exceptions import ValidationError from django.db import transaction -from fpr.models import FPRule -from lib import setup_dicts -from main.models import Derivation -from main.models import File -from main.models import FileFormatVersion -from main.models import FileID + +from archivematica.archivematicaCommon import databaseFunctions +from archivematica.archivematicaCommon import fileOperations +from archivematica.archivematicaCommon.dicts import ReplacementDict +from archivematica.dashboard.fpr.models import FPRule +from archivematica.dashboard.main.models import Derivation +from archivematica.dashboard.main.models import File +from archivematica.dashboard.main.models import FileFormatVersion +from archivematica.dashboard.main.models import FileID +from archivematica.MCPClient.client.job import Job +from archivematica.MCPClient.clientScripts.lib import setup_dicts # Return codes SUCCESS = 0 diff --git a/src/MCPClient/clientScripts/normalize_report.py b/src/archivematica/MCPClient/clientScripts/normalize_report.py similarity index 94% rename from src/MCPClient/clientScripts/normalize_report.py rename to src/archivematica/MCPClient/clientScripts/normalize_report.py index 331c814c13..28a4108926 100755 --- a/src/MCPClient/clientScripts/normalize_report.py +++ b/src/archivematica/MCPClient/clientScripts/normalize_report.py @@ -3,9 +3,7 @@ import os.path from argparse import ArgumentParser -import components.helpers as helpers import django -from custom_handlers import get_script_logger from django.conf import settings as mcpclient_settings from django.contrib.auth.models import User from django.core.exceptions import ValidationError @@ -13,11 +11,14 @@ from django.db import transaction from django.template import Context from django.template import Template -from main.models import SIP -from main.models import File -from main.models import Job -from main.models import Report -from main.models import Task + +import archivematica.dashboard.components.helpers as helpers +from archivematica.archivematicaCommon.custom_handlers import get_script_logger +from archivematica.dashboard.main.models import SIP +from archivematica.dashboard.main.models import File +from archivematica.dashboard.main.models import Job +from archivematica.dashboard.main.models import Report +from archivematica.dashboard.main.models import Task django.setup() diff --git a/src/MCPClient/clientScripts/parse_dataverse_mets.py b/src/archivematica/MCPClient/clientScripts/parse_dataverse_mets.py similarity index 97% rename from src/MCPClient/clientScripts/parse_dataverse_mets.py rename to src/archivematica/MCPClient/clientScripts/parse_dataverse_mets.py index 89dd2faa69..da61f96bec 100644 --- a/src/MCPClient/clientScripts/parse_dataverse_mets.py +++ b/src/archivematica/MCPClient/clientScripts/parse_dataverse_mets.py @@ -11,14 +11,15 @@ import django django.setup() -import databaseFunctions import metsrw -from archivematicaFunctions import get_file_checksum -from custom_handlers import get_script_logger from django.core.exceptions import ValidationError from django.utils import timezone -from main.models import Agent -from main.models import File + +from archivematica.archivematicaCommon import databaseFunctions +from archivematica.archivematicaCommon.archivematicaFunctions import get_file_checksum +from archivematica.archivematicaCommon.custom_handlers import get_script_logger +from archivematica.dashboard.main.models import Agent +from archivematica.dashboard.main.models import File logger = get_script_logger("archivematica.mcp.client.parse_dataverse_mets") transfer_objects_directory = "%transferDirectory%objects" diff --git a/src/MCPClient/clientScripts/parse_external_mets.py b/src/archivematica/MCPClient/clientScripts/parse_external_mets.py similarity index 87% rename from src/MCPClient/clientScripts/parse_external_mets.py rename to src/archivematica/MCPClient/clientScripts/parse_external_mets.py index 63d2fce5a4..db5d772161 100755 --- a/src/MCPClient/clientScripts/parse_external_mets.py +++ b/src/archivematica/MCPClient/clientScripts/parse_external_mets.py @@ -2,11 +2,12 @@ import argparse import os -import parse_mets_to_db -from archivematicaFunctions import find_mets_file -from custom_handlers import get_script_logger from lxml import etree +from archivematica.archivematicaCommon.archivematicaFunctions import find_mets_file +from archivematica.archivematicaCommon.custom_handlers import get_script_logger +from archivematica.MCPClient.clientScripts import parse_mets_to_db + logger = get_script_logger("archivematica.mcp.client.parse_external_mets") diff --git a/src/MCPClient/clientScripts/parse_mets_to_db.py b/src/archivematica/MCPClient/clientScripts/parse_mets_to_db.py similarity index 98% rename from src/MCPClient/clientScripts/parse_mets_to_db.py rename to src/archivematica/MCPClient/clientScripts/parse_mets_to_db.py index 8f4b7ddcc2..e7e4ac1b7b 100755 --- a/src/MCPClient/clientScripts/parse_mets_to_db.py +++ b/src/archivematica/MCPClient/clientScripts/parse_mets_to_db.py @@ -10,11 +10,11 @@ django.setup() -import databaseFunctions -import fileOperations -import namespaces as ns -from fpr import models as fpr_models -from main import models +from archivematica.archivematicaCommon import databaseFunctions +from archivematica.archivematicaCommon import fileOperations +from archivematica.archivematicaCommon import namespaces as ns +from archivematica.dashboard.fpr import models as fpr_models +from archivematica.dashboard.main import models MD_TYPE_SIP_ID = "3e48343d-e2d2-4956-aaa3-b54d26eb9761" diff --git a/src/MCPClient/clientScripts/pid_declaration.py b/src/archivematica/MCPClient/clientScripts/pid_declaration.py similarity index 97% rename from src/MCPClient/clientScripts/pid_declaration.py rename to src/archivematica/MCPClient/clientScripts/pid_declaration.py index 38d93a0102..65b31faedf 100644 --- a/src/MCPClient/clientScripts/pid_declaration.py +++ b/src/archivematica/MCPClient/clientScripts/pid_declaration.py @@ -16,11 +16,12 @@ django.setup() -from change_names import change_name from django.core.exceptions import ValidationError -from main.models import SIP -from main.models import Directory -from main.models import File + +from archivematica.dashboard.main.models import SIP +from archivematica.dashboard.main.models import Directory +from archivematica.dashboard.main.models import File +from archivematica.MCPClient.clientScripts.change_names import change_name class DeclarePIDsException(Exception): diff --git a/src/MCPClient/clientScripts/policy_check.py b/src/archivematica/MCPClient/clientScripts/policy_check.py similarity index 96% rename from src/MCPClient/clientScripts/policy_check.py rename to src/archivematica/MCPClient/clientScripts/policy_check.py index b5d89bb71d..097a2281b6 100755 --- a/src/MCPClient/clientScripts/policy_check.py +++ b/src/archivematica/MCPClient/clientScripts/policy_check.py @@ -13,27 +13,29 @@ import json import os +from typing import Optional import django -from custom_handlers import get_script_logger + +from archivematica.archivematicaCommon.custom_handlers import get_script_logger django.setup() -from typing import Optional -import databaseFunctions -from client.job import Job -from dicts import replace_string_values from django.conf import settings as mcpclient_settings from django.core.exceptions import ValidationError from django.db import transaction -from executeOrRunSubProcess import executeOrRun -from fpr.models import FormatVersion -from fpr.models import FPRule -from lib import setup_dicts -from main.models import SIP -from main.models import Derivation -from main.models import File -from main.models import Transfer + +from archivematica.archivematicaCommon import databaseFunctions +from archivematica.archivematicaCommon.dicts import replace_string_values +from archivematica.archivematicaCommon.executeOrRunSubProcess import executeOrRun +from archivematica.dashboard.fpr.models import FormatVersion +from archivematica.dashboard.fpr.models import FPRule +from archivematica.dashboard.main.models import SIP +from archivematica.dashboard.main.models import Derivation +from archivematica.dashboard.main.models import File +from archivematica.dashboard.main.models import Transfer +from archivematica.MCPClient.client.job import Job +from archivematica.MCPClient.clientScripts.lib import setup_dicts # Note that linkTaskManagerFiles.py will take the highest exit code it has seen # from all tasks and will use that as the exit code of the job as a whole. diff --git a/src/MCPClient/clientScripts/post_store_aip_hook.py b/src/archivematica/MCPClient/clientScripts/post_store_aip_hook.py similarity index 95% rename from src/MCPClient/clientScripts/post_store_aip_hook.py rename to src/archivematica/MCPClient/clientScripts/post_store_aip_hook.py index 20c032f32c..493e3e3edd 100755 --- a/src/MCPClient/clientScripts/post_store_aip_hook.py +++ b/src/archivematica/MCPClient/clientScripts/post_store_aip_hook.py @@ -8,14 +8,17 @@ import requests django.setup() -import elasticSearchFunctions -import storageService as storage_service -from archivematicaFunctions import find_transfer_path_from_ingest -from custom_handlers import get_script_logger from django.conf import settings as mcpclient_settings from django.core.exceptions import ValidationError from django.db import transaction -from main import models + +from archivematica.archivematicaCommon import elasticSearchFunctions +from archivematica.archivematicaCommon import storageService as storage_service +from archivematica.archivematicaCommon.archivematicaFunctions import ( + find_transfer_path_from_ingest, +) +from archivematica.archivematicaCommon.custom_handlers import get_script_logger +from archivematica.dashboard.main import models logger = get_script_logger("archivematica.mcp.client.post_store_aip_hook") diff --git a/src/MCPClient/clientScripts/remove_directories.py b/src/archivematica/MCPClient/clientScripts/remove_directories.py similarity index 100% rename from src/MCPClient/clientScripts/remove_directories.py rename to src/archivematica/MCPClient/clientScripts/remove_directories.py diff --git a/src/MCPClient/clientScripts/remove_files_without_premis_metadata.py b/src/archivematica/MCPClient/clientScripts/remove_files_without_premis_metadata.py similarity index 97% rename from src/MCPClient/clientScripts/remove_files_without_premis_metadata.py rename to src/archivematica/MCPClient/clientScripts/remove_files_without_premis_metadata.py index 9e782e6d1b..7b14db5625 100755 --- a/src/MCPClient/clientScripts/remove_files_without_premis_metadata.py +++ b/src/archivematica/MCPClient/clientScripts/remove_files_without_premis_metadata.py @@ -21,7 +21,7 @@ import django django.setup() -from main.models import File +from archivematica.dashboard.main.models import File def verifyFileUUID(job, fileUUID, filePath, sipDirectory): diff --git a/src/MCPClient/clientScripts/remove_hidden_files_and_directories.py b/src/archivematica/MCPClient/clientScripts/remove_hidden_files_and_directories.py similarity index 100% rename from src/MCPClient/clientScripts/remove_hidden_files_and_directories.py rename to src/archivematica/MCPClient/clientScripts/remove_hidden_files_and_directories.py diff --git a/src/MCPClient/clientScripts/remove_unneeded_files.py b/src/archivematica/MCPClient/clientScripts/remove_unneeded_files.py similarity index 94% rename from src/MCPClient/clientScripts/remove_unneeded_files.py rename to src/archivematica/MCPClient/clientScripts/remove_unneeded_files.py index 93e6df09a5..dc769ebfad 100755 --- a/src/MCPClient/clientScripts/remove_unneeded_files.py +++ b/src/archivematica/MCPClient/clientScripts/remove_unneeded_files.py @@ -15,9 +15,10 @@ django.setup() -from databaseFunctions import fileWasRemoved from django.conf import settings as mcpclient_settings +from archivematica.archivematicaCommon.databaseFunctions import fileWasRemoved + def remove_file(job, target_file, file_uuid): removableFiles = {e.strip() for e in mcpclient_settings.REMOVABLE_FILES.split(",")} diff --git a/src/MCPClient/clientScripts/restructure_bag_aip_to_sip.py b/src/archivematica/MCPClient/clientScripts/restructure_bag_aip_to_sip.py similarity index 96% rename from src/MCPClient/clientScripts/restructure_bag_aip_to_sip.py rename to src/archivematica/MCPClient/clientScripts/restructure_bag_aip_to_sip.py index 4be52e82fb..d09d3810e4 100755 --- a/src/MCPClient/clientScripts/restructure_bag_aip_to_sip.py +++ b/src/archivematica/MCPClient/clientScripts/restructure_bag_aip_to_sip.py @@ -18,8 +18,8 @@ import os import shutil -import archivematicaFunctions -from custom_handlers import get_script_logger +from archivematica.archivematicaCommon import archivematicaFunctions +from archivematica.archivematicaCommon.custom_handlers import get_script_logger logger = get_script_logger("archivematica.mcp.client.restructureBagAIPToSIP") diff --git a/src/MCPClient/clientScripts/restructure_dip_for_content_dm_upload.py b/src/archivematica/MCPClient/clientScripts/restructure_dip_for_content_dm_upload.py similarity index 98% rename from src/MCPClient/clientScripts/restructure_dip_for_content_dm_upload.py rename to src/archivematica/MCPClient/clientScripts/restructure_dip_for_content_dm_upload.py index 0f38d64149..5a300df1ee 100755 --- a/src/MCPClient/clientScripts/restructure_dip_for_content_dm_upload.py +++ b/src/archivematica/MCPClient/clientScripts/restructure_dip_for_content_dm_upload.py @@ -22,10 +22,11 @@ import re import sys -import archivematicaFunctions -import namespaces as ns from lxml import etree +from archivematica.archivematicaCommon import archivematicaFunctions +from archivematica.archivematicaCommon import namespaces as ns + def parseDmdSec(dmdSec, label="[Placeholder title]"): """ diff --git a/src/MCPClient/clientScripts/restructure_for_compliance.py b/src/archivematica/MCPClient/clientScripts/restructure_for_compliance.py similarity index 90% rename from src/MCPClient/clientScripts/restructure_for_compliance.py rename to src/archivematica/MCPClient/clientScripts/restructure_for_compliance.py index b02a42c3c3..ef5da77305 100755 --- a/src/MCPClient/clientScripts/restructure_for_compliance.py +++ b/src/archivematica/MCPClient/clientScripts/restructure_for_compliance.py @@ -22,16 +22,23 @@ import django django.setup() -import bag -from archivematicaFunctions import OPTIONAL_FILES -from archivematicaFunctions import REQUIRED_DIRECTORIES -from archivematicaFunctions import create_structured_directory -from archivematicaFunctions import reconstruct_empty_directories -from custom_handlers import get_script_logger from django.core.exceptions import ValidationError from django.db import transaction -from main.models import SIP -from main.models import Transfer + +from archivematica.archivematicaCommon import bag +from archivematica.archivematicaCommon.archivematicaFunctions import OPTIONAL_FILES +from archivematica.archivematicaCommon.archivematicaFunctions import ( + REQUIRED_DIRECTORIES, +) +from archivematica.archivematicaCommon.archivematicaFunctions import ( + create_structured_directory, +) +from archivematica.archivematicaCommon.archivematicaFunctions import ( + reconstruct_empty_directories, +) +from archivematica.archivematicaCommon.custom_handlers import get_script_logger +from archivematica.dashboard.main.models import SIP +from archivematica.dashboard.main.models import Transfer logger = get_script_logger("archivematica.mcp.client.restructureForCompliance") diff --git a/src/MCPClient/clientScripts/restructure_for_compliance_maildir.py b/src/archivematica/MCPClient/clientScripts/restructure_for_compliance_maildir.py similarity index 100% rename from src/MCPClient/clientScripts/restructure_for_compliance_maildir.py rename to src/archivematica/MCPClient/clientScripts/restructure_for_compliance_maildir.py diff --git a/src/MCPClient/clientScripts/restructure_for_compliance_sip.py b/src/archivematica/MCPClient/clientScripts/restructure_for_compliance_sip.py similarity index 92% rename from src/MCPClient/clientScripts/restructure_for_compliance_sip.py rename to src/archivematica/MCPClient/clientScripts/restructure_for_compliance_sip.py index 0236a3d81e..2a654fbc60 100755 --- a/src/MCPClient/clientScripts/restructure_for_compliance_sip.py +++ b/src/archivematica/MCPClient/clientScripts/restructure_for_compliance_sip.py @@ -7,12 +7,15 @@ django.setup() -import archivematicaFunctions -import fileOperations -from archivematicaFunctions import OPTIONAL_FILES -from archivematicaFunctions import REQUIRED_DIRECTORIES from django.db import transaction +from archivematica.archivematicaCommon import archivematicaFunctions +from archivematica.archivematicaCommon import fileOperations +from archivematica.archivematicaCommon.archivematicaFunctions import OPTIONAL_FILES +from archivematica.archivematicaCommon.archivematicaFunctions import ( + REQUIRED_DIRECTORIES, +) + def restructureForComplianceFileUUIDsAssigned( job, diff --git a/src/MCPClient/clientScripts/retry_normalize_remove_normalized.py b/src/archivematica/MCPClient/clientScripts/retry_normalize_remove_normalized.py similarity index 96% rename from src/MCPClient/clientScripts/retry_normalize_remove_normalized.py rename to src/archivematica/MCPClient/clientScripts/retry_normalize_remove_normalized.py index 3ba38b1f27..7eb85b2974 100755 --- a/src/MCPClient/clientScripts/retry_normalize_remove_normalized.py +++ b/src/archivematica/MCPClient/clientScripts/retry_normalize_remove_normalized.py @@ -27,9 +27,10 @@ from django.db import transaction from django.utils import timezone -from main.models import Derivation -from main.models import Event -from main.models import File + +from archivematica.dashboard.main.models import Derivation +from archivematica.dashboard.main.models import Event +from archivematica.dashboard.main.models import File def removeDIP(job, SIPDirectory, SIPUUID): diff --git a/src/MCPClient/clientScripts/rights_from_csv.py b/src/archivematica/MCPClient/clientScripts/rights_from_csv.py similarity index 99% rename from src/MCPClient/clientScripts/rights_from_csv.py rename to src/archivematica/MCPClient/clientScripts/rights_from_csv.py index cfc9587f50..d66b5aba88 100755 --- a/src/MCPClient/clientScripts/rights_from_csv.py +++ b/src/archivematica/MCPClient/clientScripts/rights_from_csv.py @@ -22,7 +22,8 @@ django.setup() from django.db import transaction -from main import models + +from archivematica.dashboard.main import models class RightsRowException(Exception): diff --git a/src/MCPClient/clientScripts/save_dublin_core.py b/src/archivematica/MCPClient/clientScripts/save_dublin_core.py similarity index 96% rename from src/MCPClient/clientScripts/save_dublin_core.py rename to src/archivematica/MCPClient/clientScripts/save_dublin_core.py index 7915b1512e..efdbe948e1 100755 --- a/src/MCPClient/clientScripts/save_dublin_core.py +++ b/src/archivematica/MCPClient/clientScripts/save_dublin_core.py @@ -6,7 +6,8 @@ django.setup() from django.db import transaction -from main import models + +from archivematica.dashboard.main import models FIELDS = ( "title", diff --git a/src/MCPClient/clientScripts/set_maildir_file_grp_use_and_file_ids.py b/src/archivematica/MCPClient/clientScripts/set_maildir_file_grp_use_and_file_ids.py similarity index 93% rename from src/MCPClient/clientScripts/set_maildir_file_grp_use_and_file_ids.py rename to src/archivematica/MCPClient/clientScripts/set_maildir_file_grp_use_and_file_ids.py index 2a19364ace..037720f0b7 100755 --- a/src/MCPClient/clientScripts/set_maildir_file_grp_use_and_file_ids.py +++ b/src/archivematica/MCPClient/clientScripts/set_maildir_file_grp_use_and_file_ids.py @@ -18,14 +18,16 @@ import os import django -from custom_handlers import get_script_logger + +from archivematica.archivematicaCommon.custom_handlers import get_script_logger django.setup() from django.db import connection from django.db import transaction -from main.models import File -from main.models import FileFormatVersion -from main.models import FileID + +from archivematica.dashboard.main.models import File +from archivematica.dashboard.main.models import FileFormatVersion +from archivematica.dashboard.main.models import FileID logger = get_script_logger("archivematica.mcp.client.setMaildirFileGrpUseAndFileIDs") diff --git a/src/MCPClient/clientScripts/set_transfer_type.py b/src/archivematica/MCPClient/clientScripts/set_transfer_type.py similarity index 87% rename from src/MCPClient/clientScripts/set_transfer_type.py rename to src/archivematica/MCPClient/clientScripts/set_transfer_type.py index 036f6c8c52..766b95012d 100755 --- a/src/MCPClient/clientScripts/set_transfer_type.py +++ b/src/archivematica/MCPClient/clientScripts/set_transfer_type.py @@ -19,10 +19,11 @@ django.setup() -from client import metrics -from custom_handlers import get_script_logger from django.db import transaction -from main.models import Transfer + +from archivematica.archivematicaCommon.custom_handlers import get_script_logger +from archivematica.dashboard.main.models import Transfer +from archivematica.MCPClient.client import metrics logger = get_script_logger("archivematica.mcp.client.setTransferType") diff --git a/src/MCPClient/clientScripts/store_aip.py b/src/archivematica/MCPClient/clientScripts/store_aip.py similarity index 95% rename from src/MCPClient/clientScripts/store_aip.py rename to src/archivematica/MCPClient/clientScripts/store_aip.py index 5ff1413f13..9df3ead13e 100755 --- a/src/MCPClient/clientScripts/store_aip.py +++ b/src/archivematica/MCPClient/clientScripts/store_aip.py @@ -23,18 +23,19 @@ import django django.setup() -import storageService as storage_service -from archivematicaFunctions import escape -from client import metrics -from custom_handlers import get_script_logger from django.core.exceptions import ValidationError from django.db import transaction -from main.models import Agent -from main.models import DublinCore -from main.models import Event -from main.models import UnitVariable from metsrw.plugins import premisrw +from archivematica.archivematicaCommon import storageService as storage_service +from archivematica.archivematicaCommon.archivematicaFunctions import escape +from archivematica.archivematicaCommon.custom_handlers import get_script_logger +from archivematica.dashboard.main.models import Agent +from archivematica.dashboard.main.models import DublinCore +from archivematica.dashboard.main.models import Event +from archivematica.dashboard.main.models import UnitVariable +from archivematica.MCPClient.client import metrics + logger = get_script_logger("archivematica.mcp.client.storeAIP") diff --git a/src/MCPClient/clientScripts/store_file_modification_dates.py b/src/archivematica/MCPClient/clientScripts/store_file_modification_dates.py similarity index 95% rename from src/MCPClient/clientScripts/store_file_modification_dates.py rename to src/archivematica/MCPClient/clientScripts/store_file_modification_dates.py index 0dab5ad6d9..b48da71c2d 100755 --- a/src/MCPClient/clientScripts/store_file_modification_dates.py +++ b/src/archivematica/MCPClient/clientScripts/store_file_modification_dates.py @@ -21,10 +21,11 @@ import django django.setup() -from custom_handlers import get_script_logger from django.db import transaction from django.utils.timezone import get_current_timezone -from main import models + +from archivematica.archivematicaCommon.custom_handlers import get_script_logger +from archivematica.dashboard.main import models logger = get_script_logger("archivematica.mcp.client.storeFileModificationDates") diff --git a/src/MCPClient/clientScripts/transcoder.py b/src/archivematica/MCPClient/clientScripts/transcoder.py similarity index 98% rename from src/MCPClient/clientScripts/transcoder.py rename to src/archivematica/MCPClient/clientScripts/transcoder.py index 72822f90f8..3e3fb63dbd 100755 --- a/src/MCPClient/clientScripts/transcoder.py +++ b/src/archivematica/MCPClient/clientScripts/transcoder.py @@ -16,7 +16,8 @@ # You should have received a copy of the GNU General Public License # along with Archivematica. If not, see . from django.db.models import F -from executeOrRunSubProcess import executeOrRun + +from archivematica.archivematicaCommon.executeOrRunSubProcess import executeOrRun class Command: diff --git a/src/MCPClient/clientScripts/transcribe_file.py b/src/archivematica/MCPClient/clientScripts/transcribe_file.py similarity index 90% rename from src/MCPClient/clientScripts/transcribe_file.py rename to src/archivematica/MCPClient/clientScripts/transcribe_file.py index f92def343d..0a633eb327 100755 --- a/src/MCPClient/clientScripts/transcribe_file.py +++ b/src/archivematica/MCPClient/clientScripts/transcribe_file.py @@ -11,20 +11,21 @@ django.setup() -import databaseFunctions -import fileOperations -from client.job import Job -from dicts import ReplacementDict from django.conf import settings as mcpclient_settings from django.core.exceptions import ValidationError from django.db import transaction from django.utils import timezone -from executeOrRunSubProcess import executeOrRun -from fpr.models import FPRule -from lib import setup_dicts -from main.models import Derivation -from main.models import File -from main.models import FileFormatVersion + +from archivematica.archivematicaCommon import databaseFunctions +from archivematica.archivematicaCommon import fileOperations +from archivematica.archivematicaCommon.dicts import ReplacementDict +from archivematica.archivematicaCommon.executeOrRunSubProcess import executeOrRun +from archivematica.dashboard.fpr.models import FPRule +from archivematica.dashboard.main.models import Derivation +from archivematica.dashboard.main.models import File +from archivematica.dashboard.main.models import FileFormatVersion +from archivematica.MCPClient.client.job import Job +from archivematica.MCPClient.clientScripts.lib import setup_dicts @dataclasses.dataclass diff --git a/src/MCPClient/clientScripts/trim_create_rights_entries.py b/src/archivematica/MCPClient/clientScripts/trim_create_rights_entries.py similarity index 92% rename from src/MCPClient/clientScripts/trim_create_rights_entries.py rename to src/archivematica/MCPClient/clientScripts/trim_create_rights_entries.py index a62cd9894c..77d965c695 100755 --- a/src/MCPClient/clientScripts/trim_create_rights_entries.py +++ b/src/archivematica/MCPClient/clientScripts/trim_create_rights_entries.py @@ -29,13 +29,16 @@ django.setup() from django.db import transaction -from fileOperations import getFileUUIDLike -from main.models import RightsStatement -from main.models import RightsStatementOtherRightsDocumentationIdentifier -from main.models import RightsStatementOtherRightsInformation -from main.models import RightsStatementRightsGranted -from main.models import RightsStatementRightsGrantedNote -from main.models import RightsStatementRightsGrantedRestriction + +from archivematica.archivematicaCommon.fileOperations import getFileUUIDLike +from archivematica.dashboard.main.models import RightsStatement +from archivematica.dashboard.main.models import ( + RightsStatementOtherRightsDocumentationIdentifier, +) +from archivematica.dashboard.main.models import RightsStatementOtherRightsInformation +from archivematica.dashboard.main.models import RightsStatementRightsGranted +from archivematica.dashboard.main.models import RightsStatementRightsGrantedNote +from archivematica.dashboard.main.models import RightsStatementRightsGrantedRestriction def callWithException(exception): diff --git a/src/MCPClient/clientScripts/trim_restructure_for_compliance.py b/src/archivematica/MCPClient/clientScripts/trim_restructure_for_compliance.py similarity index 95% rename from src/MCPClient/clientScripts/trim_restructure_for_compliance.py rename to src/archivematica/MCPClient/clientScripts/trim_restructure_for_compliance.py index 124ed60057..84defcd719 100755 --- a/src/MCPClient/clientScripts/trim_restructure_for_compliance.py +++ b/src/archivematica/MCPClient/clientScripts/trim_restructure_for_compliance.py @@ -21,11 +21,14 @@ django.setup() -import archivematicaFunctions -import fileOperations -from archivematicaFunctions import REQUIRED_DIRECTORIES from django.db import transaction +from archivematica.archivematicaCommon import archivematicaFunctions +from archivematica.archivematicaCommon import fileOperations +from archivematica.archivematicaCommon.archivematicaFunctions import ( + REQUIRED_DIRECTORIES, +) + def restructureTRIMForComplianceFileUUIDsAssigned( job, diff --git a/src/MCPClient/clientScripts/trim_verify_checksums.py b/src/archivematica/MCPClient/clientScripts/trim_verify_checksums.py similarity index 95% rename from src/MCPClient/clientScripts/trim_verify_checksums.py rename to src/archivematica/MCPClient/clientScripts/trim_verify_checksums.py index c48c6b046c..b03cd9d8f2 100755 --- a/src/MCPClient/clientScripts/trim_verify_checksums.py +++ b/src/archivematica/MCPClient/clientScripts/trim_verify_checksums.py @@ -23,10 +23,11 @@ from lxml import etree as etree django.setup() -import databaseFunctions -from archivematicaFunctions import get_file_checksum from django.db import transaction -from fileOperations import getFileUUIDLike + +from archivematica.archivematicaCommon import databaseFunctions +from archivematica.archivematicaCommon.archivematicaFunctions import get_file_checksum +from archivematica.archivematicaCommon.fileOperations import getFileUUIDLike def call(jobs): diff --git a/src/MCPClient/clientScripts/trim_verify_manifest.py b/src/archivematica/MCPClient/clientScripts/trim_verify_manifest.py similarity index 98% rename from src/MCPClient/clientScripts/trim_verify_manifest.py rename to src/archivematica/MCPClient/clientScripts/trim_verify_manifest.py index 3a57cfddaa..b8f6fb3058 100755 --- a/src/MCPClient/clientScripts/trim_verify_manifest.py +++ b/src/archivematica/MCPClient/clientScripts/trim_verify_manifest.py @@ -23,9 +23,10 @@ import django django.setup() -import databaseFunctions from django.db import transaction -from fileOperations import getFileUUIDLike + +from archivematica.archivematicaCommon import databaseFunctions +from archivematica.archivematicaCommon.fileOperations import getFileUUIDLike def call(jobs): diff --git a/src/MCPClient/clientScripts/update_size_and_checksum.py b/src/archivematica/MCPClient/clientScripts/update_size_and_checksum.py similarity index 93% rename from src/MCPClient/clientScripts/update_size_and_checksum.py rename to src/archivematica/MCPClient/clientScripts/update_size_and_checksum.py index 3f06991e56..207e4b5101 100755 --- a/src/MCPClient/clientScripts/update_size_and_checksum.py +++ b/src/archivematica/MCPClient/clientScripts/update_size_and_checksum.py @@ -25,14 +25,15 @@ django.setup() import metsrw -import parse_mets_to_db -from archivematicaFunctions import find_mets_file -from custom_handlers import get_script_logger -from databaseFunctions import insertIntoDerivations -from fileOperations import get_size_and_checksum -from fileOperations import updateSizeAndChecksum -from main.models import File -from main.models import FileFormatVersion + +from archivematica.archivematicaCommon.archivematicaFunctions import find_mets_file +from archivematica.archivematicaCommon.custom_handlers import get_script_logger +from archivematica.archivematicaCommon.databaseFunctions import insertIntoDerivations +from archivematica.archivematicaCommon.fileOperations import get_size_and_checksum +from archivematica.archivematicaCommon.fileOperations import updateSizeAndChecksum +from archivematica.dashboard.main.models import File +from archivematica.dashboard.main.models import FileFormatVersion +from archivematica.MCPClient.clientScripts import parse_mets_to_db logger = get_script_logger("archivematica.mcp.client.updateSizeAndChecksum") diff --git a/src/MCPClient/clientScripts/upload_archivesspace.py b/src/archivematica/MCPClient/clientScripts/upload_archivesspace.py similarity index 97% rename from src/MCPClient/clientScripts/upload_archivesspace.py rename to src/archivematica/MCPClient/clientScripts/upload_archivesspace.py index 97fd7361d0..ec6a728452 100755 --- a/src/MCPClient/clientScripts/upload_archivesspace.py +++ b/src/archivematica/MCPClient/clientScripts/upload_archivesspace.py @@ -6,10 +6,11 @@ import django from agentarchives.archivesspace import ArchivesSpaceClient from agentarchives.archivesspace import ArchivesSpaceError -from fpr.models import FormatVersion -from main.models import ArchivesSpaceDIPObjectResourcePairing -from main.models import File -from xml2obj import mets_file + +from archivematica.archivematicaCommon.xml2obj import mets_file +from archivematica.dashboard.fpr.models import FormatVersion +from archivematica.dashboard.main.models import ArchivesSpaceDIPObjectResourcePairing +from archivematica.dashboard.main.models import File django.setup() from django.core.exceptions import ValidationError diff --git a/src/MCPClient/clientScripts/upload_qubit.py b/src/archivematica/MCPClient/clientScripts/upload_qubit.py similarity index 98% rename from src/MCPClient/clientScripts/upload_qubit.py rename to src/archivematica/MCPClient/clientScripts/upload_qubit.py index 5568fc6a0e..687a3a47d8 100755 --- a/src/MCPClient/clientScripts/upload_qubit.py +++ b/src/archivematica/MCPClient/clientScripts/upload_qubit.py @@ -26,15 +26,17 @@ import django import requests -from custom_handlers import get_script_logger + +from archivematica.archivematicaCommon.custom_handlers import get_script_logger django.setup() -import main.models as models from django.conf import settings as mcpclient_settings from django.core.exceptions import ValidationError from django.db import transaction +import archivematica.dashboard.main.models as models + logger = get_script_logger("archivematica.upload.qubit") PREFIX = "[uploadDIP]" diff --git a/src/MCPClient/clientScripts/validate_file.py b/src/archivematica/MCPClient/clientScripts/validate_file.py similarity index 95% rename from src/MCPClient/clientScripts/validate_file.py rename to src/archivematica/MCPClient/clientScripts/validate_file.py index 65f506f9c5..a5db83608d 100755 --- a/src/MCPClient/clientScripts/validate_file.py +++ b/src/archivematica/MCPClient/clientScripts/validate_file.py @@ -27,20 +27,21 @@ django.setup() -import databaseFunctions -from client.job import Job -from custom_handlers import get_script_logger -from dicts import replace_string_values from django.conf import settings as mcpclient_settings from django.core.exceptions import ValidationError from django.db import transaction -from executeOrRunSubProcess import executeOrRun -from fpr.models import FormatVersion -from fpr.models import FPRule -from lib import setup_dicts -from main.models import SIP -from main.models import Derivation -from main.models import File + +from archivematica.archivematicaCommon import databaseFunctions +from archivematica.archivematicaCommon.custom_handlers import get_script_logger +from archivematica.archivematicaCommon.dicts import replace_string_values +from archivematica.archivematicaCommon.executeOrRunSubProcess import executeOrRun +from archivematica.dashboard.fpr.models import FormatVersion +from archivematica.dashboard.fpr.models import FPRule +from archivematica.dashboard.main.models import SIP +from archivematica.dashboard.main.models import Derivation +from archivematica.dashboard.main.models import File +from archivematica.MCPClient.client.job import Job +from archivematica.MCPClient.clientScripts.lib import setup_dicts SUCCESS_CODE = 0 FAIL_CODE = 1 diff --git a/src/MCPClient/clientScripts/verify_aip.py b/src/archivematica/MCPClient/clientScripts/verify_aip.py similarity index 96% rename from src/MCPClient/clientScripts/verify_aip.py rename to src/archivematica/MCPClient/clientScripts/verify_aip.py index 31b9f7be3a..f7352ab24d 100755 --- a/src/MCPClient/clientScripts/verify_aip.py +++ b/src/archivematica/MCPClient/clientScripts/verify_aip.py @@ -7,15 +7,16 @@ import django django.setup() -import databaseFunctions -from archivematicaFunctions import get_setting from bagit import Bag from bagit import BagError from django.conf import settings as mcpclient_settings from django.db import transaction -from executeOrRunSubProcess import executeOrRun -from main.models import SIP -from main.models import File + +from archivematica.archivematicaCommon import databaseFunctions +from archivematica.archivematicaCommon.archivematicaFunctions import get_setting +from archivematica.archivematicaCommon.executeOrRunSubProcess import executeOrRun +from archivematica.dashboard.main.models import SIP +from archivematica.dashboard.main.models import File class VerifyChecksumsError(Exception): diff --git a/src/MCPClient/clientScripts/verify_and_restructure_transfer_bag.py b/src/archivematica/MCPClient/clientScripts/verify_and_restructure_transfer_bag.py similarity index 92% rename from src/MCPClient/clientScripts/verify_and_restructure_transfer_bag.py rename to src/archivematica/MCPClient/clientScripts/verify_and_restructure_transfer_bag.py index 865cba3395..2bd61f8165 100755 --- a/src/MCPClient/clientScripts/verify_and_restructure_transfer_bag.py +++ b/src/archivematica/MCPClient/clientScripts/verify_and_restructure_transfer_bag.py @@ -23,13 +23,15 @@ django.setup() -import bag -import fileOperations -from archivematicaFunctions import OPTIONAL_FILES -from archivematicaFunctions import REQUIRED_DIRECTORIES -from databaseFunctions import insertIntoEvents -from main.models import File -from move_or_merge import move_or_merge +from archivematica.archivematicaCommon import bag +from archivematica.archivematicaCommon import fileOperations +from archivematica.archivematicaCommon.archivematicaFunctions import OPTIONAL_FILES +from archivematica.archivematicaCommon.archivematicaFunctions import ( + REQUIRED_DIRECTORIES, +) +from archivematica.archivematicaCommon.databaseFunctions import insertIntoEvents +from archivematica.dashboard.main.models import File +from archivematica.MCPClient.clientScripts.move_or_merge import move_or_merge def restructureBagForComplianceFileUUIDsAssigned( diff --git a/src/MCPClient/clientScripts/verify_checksum.py b/src/archivematica/MCPClient/clientScripts/verify_checksum.py similarity index 97% rename from src/MCPClient/clientScripts/verify_checksum.py rename to src/archivematica/MCPClient/clientScripts/verify_checksum.py index 8e4efed629..e7f71daa7e 100755 --- a/src/MCPClient/clientScripts/verify_checksum.py +++ b/src/archivematica/MCPClient/clientScripts/verify_checksum.py @@ -37,10 +37,10 @@ from django.db import transaction django.setup() -from custom_handlers import get_script_logger -from main.models import Event -from main.models import File -from main.models import Transfer +from archivematica.archivematicaCommon.custom_handlers import get_script_logger +from archivematica.dashboard.main.models import Event +from archivematica.dashboard.main.models import File +from archivematica.dashboard.main.models import Transfer logger = get_script_logger("archivematica.mcp.client.verify_checksum") diff --git a/src/MCPClient/clientScripts/verify_checksums_in_file_sec_of_dspace_mets_files.py b/src/archivematica/MCPClient/clientScripts/verify_checksums_in_file_sec_of_dspace_mets_files.py similarity index 97% rename from src/MCPClient/clientScripts/verify_checksums_in_file_sec_of_dspace_mets_files.py rename to src/archivematica/MCPClient/clientScripts/verify_checksums_in_file_sec_of_dspace_mets_files.py index fdca386cd8..11d6c8b79a 100755 --- a/src/MCPClient/clientScripts/verify_checksums_in_file_sec_of_dspace_mets_files.py +++ b/src/archivematica/MCPClient/clientScripts/verify_checksums_in_file_sec_of_dspace_mets_files.py @@ -20,7 +20,8 @@ import sys import lxml.etree as etree -from archivematicaFunctions import get_file_checksum + +from archivematica.archivematicaCommon.archivematicaFunctions import get_file_checksum def verifyMetsFileSecChecksums(job, metsFile, date, taskUUID, relativeDirectory="./"): diff --git a/src/MCPClient/clientScripts/verify_mets.py b/src/archivematica/MCPClient/clientScripts/verify_mets.py similarity index 100% rename from src/MCPClient/clientScripts/verify_mets.py rename to src/archivematica/MCPClient/clientScripts/verify_mets.py diff --git a/src/MCPClient/clientScripts/verify_sip_compliance.py b/src/archivematica/MCPClient/clientScripts/verify_sip_compliance.py similarity index 98% rename from src/MCPClient/clientScripts/verify_sip_compliance.py rename to src/archivematica/MCPClient/clientScripts/verify_sip_compliance.py index eb9dd43df9..5678ccc2c4 100755 --- a/src/MCPClient/clientScripts/verify_sip_compliance.py +++ b/src/archivematica/MCPClient/clientScripts/verify_sip_compliance.py @@ -18,7 +18,7 @@ import os import sys -from client import metrics +from archivematica.MCPClient.client import metrics REQUIRED_DIRECTORIES = ( "objects", diff --git a/src/MCPClient/clientScripts/verify_transfer_compliance.py b/src/archivematica/MCPClient/clientScripts/verify_transfer_compliance.py similarity index 96% rename from src/MCPClient/clientScripts/verify_transfer_compliance.py rename to src/archivematica/MCPClient/clientScripts/verify_transfer_compliance.py index 137aa6513c..9b2a8bdbe2 100755 --- a/src/MCPClient/clientScripts/verify_transfer_compliance.py +++ b/src/archivematica/MCPClient/clientScripts/verify_transfer_compliance.py @@ -18,7 +18,7 @@ import os import sys -from verify_sip_compliance import checkDirectory +from archivematica.MCPClient.clientScripts.verify_sip_compliance import checkDirectory REQUIRED_DIRECTORIES = ( "objects", diff --git a/src/MCPClient/install/README.md b/src/archivematica/MCPClient/install/README.md similarity index 100% rename from src/MCPClient/install/README.md rename to src/archivematica/MCPClient/install/README.md diff --git a/src/MCPClient/install/clientConfig.conf b/src/archivematica/MCPClient/install/clientConfig.conf similarity index 100% rename from src/MCPClient/install/clientConfig.conf rename to src/archivematica/MCPClient/install/clientConfig.conf diff --git a/src/MCPClient/install/clientConfig.logging.json b/src/archivematica/MCPClient/install/clientConfig.logging.json similarity index 81% rename from src/MCPClient/install/clientConfig.logging.json rename to src/archivematica/MCPClient/install/clientConfig.logging.json index e25426db1e..2db616ab74 100644 --- a/src/MCPClient/install/clientConfig.logging.json +++ b/src/archivematica/MCPClient/install/clientConfig.logging.json @@ -9,7 +9,7 @@ "handlers": { "logfile": { "backupCount": 5, - "class": "custom_handlers.GroupWriteRotatingFileHandler", + "class": "archivematica.archivematicaCommon.custom_handlers.GroupWriteRotatingFileHandler", "filename": "/var/log/archivematica/MCPClient/MCPClient.log", "formatter": "detailed", "level": "INFO", @@ -17,7 +17,7 @@ }, "verboselogfile": { "backupCount": 5, - "class": "custom_handlers.GroupWriteRotatingFileHandler", + "class": "archivematica.archivematicaCommon.custom_handlers.GroupWriteRotatingFileHandler", "filename": "/var/log/archivematica/MCPClient/MCPClient.debug.log", "formatter": "detailed", "level": "DEBUG", diff --git a/src/MCPServer/settings/__init__.py b/src/archivematica/MCPClient/settings/__init__.py similarity index 100% rename from src/MCPServer/settings/__init__.py rename to src/archivematica/MCPClient/settings/__init__.py diff --git a/src/MCPClient/settings/common.py b/src/archivematica/MCPClient/settings/common.py similarity index 96% rename from src/MCPClient/settings/common.py rename to src/archivematica/MCPClient/settings/common.py index dab115af11..2bb32828b6 100644 --- a/src/MCPClient/settings/common.py +++ b/src/archivematica/MCPClient/settings/common.py @@ -23,11 +23,12 @@ from io import StringIO from pathlib import Path -import email_settings -from appconfig import Config -from appconfig import process_search_enabled from django.core.exceptions import ImproperlyConfigured +from archivematica.archivematicaCommon import email_settings +from archivematica.archivematicaCommon.appconfig import Config +from archivematica.archivematicaCommon.appconfig import process_search_enabled + def _get_settings_from_file(path): spec = importlib.util.spec_from_file_location(path.stem, path) @@ -304,11 +305,11 @@ def workers(config, section): "django.contrib.contenttypes", "django.contrib.sessions", "django.contrib.messages", - "components.accounts", - "main", - "components.mcp", - "components.administration", - "fpr", + "archivematica.dashboard.components.accounts", + "archivematica.dashboard.main", + "archivematica.dashboard.components.mcp", + "archivematica.dashboard.components.administration", + "archivematica.dashboard.fpr", # Only needed because archivematicaClient calls django.setup() # which imports the ApiAccess model through the helpers module of # the dashboard diff --git a/src/MCPClient/settings/test.py b/src/archivematica/MCPClient/settings/test.py similarity index 95% rename from src/MCPClient/settings/test.py rename to src/archivematica/MCPClient/settings/test.py index d786c2d26c..9ade43b419 100644 --- a/src/MCPClient/settings/test.py +++ b/src/archivematica/MCPClient/settings/test.py @@ -16,7 +16,7 @@ # along with Archivematica. If not, see . """Test settings and globals.""" -from .common import * +from archivematica.MCPClient.settings.common import * DATABASES = { "default": { diff --git a/src/MCPClient/settings/testmysql.py b/src/archivematica/MCPClient/settings/testmysql.py similarity index 85% rename from src/MCPClient/settings/testmysql.py rename to src/archivematica/MCPClient/settings/testmysql.py index 27feae1582..f3e031f1ab 100644 --- a/src/MCPClient/settings/testmysql.py +++ b/src/archivematica/MCPClient/settings/testmysql.py @@ -1,4 +1,4 @@ -from .test import * +from archivematica.MCPClient.settings.test import * DATABASES = { "default": { diff --git a/src/archivematicaCommon/__init__.py b/src/archivematica/MCPServer/__init__.py similarity index 100% rename from src/archivematicaCommon/__init__.py rename to src/archivematica/MCPServer/__init__.py diff --git a/src/MCPServer/archivematicaMCP.py b/src/archivematica/MCPServer/archivematicaMCP.py similarity index 61% rename from src/MCPServer/archivematicaMCP.py rename to src/archivematica/MCPServer/archivematicaMCP.py index 9bbe6f8ecf..c0d0ec8029 100755 --- a/src/MCPServer/archivematicaMCP.py +++ b/src/archivematica/MCPServer/archivematicaMCP.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -from server.mcp import main +from archivematica.MCPServer.server.mcp import main # TODO: update the entrypoint and remove this alias main() diff --git a/src/MCPServer/assets/workflow-schema-v1.json b/src/archivematica/MCPServer/assets/workflow-schema-v1.json similarity index 100% rename from src/MCPServer/assets/workflow-schema-v1.json rename to src/archivematica/MCPServer/assets/workflow-schema-v1.json diff --git a/src/MCPServer/assets/workflow.json b/src/archivematica/MCPServer/assets/workflow.json similarity index 100% rename from src/MCPServer/assets/workflow.json rename to src/archivematica/MCPServer/assets/workflow.json diff --git a/src/MCPServer/install/README.md b/src/archivematica/MCPServer/install/README.md similarity index 100% rename from src/MCPServer/install/README.md rename to src/archivematica/MCPServer/install/README.md diff --git a/src/MCPServer/install/serverConfig.conf b/src/archivematica/MCPServer/install/serverConfig.conf similarity index 100% rename from src/MCPServer/install/serverConfig.conf rename to src/archivematica/MCPServer/install/serverConfig.conf diff --git a/src/MCPServer/install/serverConfig.logging.json b/src/archivematica/MCPServer/install/serverConfig.logging.json similarity index 81% rename from src/MCPServer/install/serverConfig.logging.json rename to src/archivematica/MCPServer/install/serverConfig.logging.json index 622532ce0e..8f169418b1 100644 --- a/src/MCPServer/install/serverConfig.logging.json +++ b/src/archivematica/MCPServer/install/serverConfig.logging.json @@ -9,7 +9,7 @@ "handlers": { "logfile": { "backupCount": 5, - "class": "custom_handlers.GroupWriteRotatingFileHandler", + "class": "archivematica.archivematicaCommon.custom_handlers.GroupWriteRotatingFileHandler", "filename": "/var/log/archivematica/MCPServer/MCPServer.log", "formatter": "detailed", "level": "INFO", @@ -17,7 +17,7 @@ }, "verboselogfile": { "backupCount": 5, - "class": "custom_handlers.GroupWriteRotatingFileHandler", + "class": "archivematica.archivematicaCommon.custom_handlers.GroupWriteRotatingFileHandler", "filename": "/var/log/archivematica/MCPServer/MCPServer.debug.log", "formatter": "detailed", "level": "DEBUG", diff --git a/src/MCPServer/server/__init__.py b/src/archivematica/MCPServer/server/__init__.py similarity index 100% rename from src/MCPServer/server/__init__.py rename to src/archivematica/MCPServer/server/__init__.py diff --git a/src/MCPServer/server/jobs/__init__.py b/src/archivematica/MCPServer/server/jobs/__init__.py similarity index 50% rename from src/MCPServer/server/jobs/__init__.py rename to src/archivematica/MCPServer/server/jobs/__init__.py index 6e515bf25c..913db2007c 100644 --- a/src/MCPServer/server/jobs/__init__.py +++ b/src/archivematica/MCPServer/server/jobs/__init__.py @@ -13,19 +13,19 @@ * `LocalJob`, handling work done directly on MCPServer """ -from server.jobs.base import Job -from server.jobs.chain import JobChain -from server.jobs.client import ClientScriptJob -from server.jobs.client import DirectoryClientScriptJob -from server.jobs.client import FilesClientScriptJob -from server.jobs.client import OutputClientScriptJob -from server.jobs.decisions import DecisionJob -from server.jobs.decisions import NextChainDecisionJob -from server.jobs.decisions import OutputDecisionJob -from server.jobs.decisions import UpdateContextDecisionJob -from server.jobs.local import GetUnitVarLinkJob -from server.jobs.local import LocalJob -from server.jobs.local import SetUnitVarLinkJob +from archivematica.MCPServer.server.jobs.base import Job +from archivematica.MCPServer.server.jobs.chain import JobChain +from archivematica.MCPServer.server.jobs.client import ClientScriptJob +from archivematica.MCPServer.server.jobs.client import DirectoryClientScriptJob +from archivematica.MCPServer.server.jobs.client import FilesClientScriptJob +from archivematica.MCPServer.server.jobs.client import OutputClientScriptJob +from archivematica.MCPServer.server.jobs.decisions import DecisionJob +from archivematica.MCPServer.server.jobs.decisions import NextChainDecisionJob +from archivematica.MCPServer.server.jobs.decisions import OutputDecisionJob +from archivematica.MCPServer.server.jobs.decisions import UpdateContextDecisionJob +from archivematica.MCPServer.server.jobs.local import GetUnitVarLinkJob +from archivematica.MCPServer.server.jobs.local import LocalJob +from archivematica.MCPServer.server.jobs.local import SetUnitVarLinkJob __all__ = ( "ClientScriptJob", diff --git a/src/MCPServer/server/jobs/base.py b/src/archivematica/MCPServer/server/jobs/base.py similarity index 96% rename from src/MCPServer/server/jobs/base.py rename to src/archivematica/MCPServer/server/jobs/base.py index 2c7249571c..5847d4f0a5 100644 --- a/src/MCPServer/server/jobs/base.py +++ b/src/archivematica/MCPServer/server/jobs/base.py @@ -6,9 +6,10 @@ import logging import uuid -from dbconns import auto_close_old_connections from django.utils import timezone -from main import models + +from archivematica.archivematicaCommon.dbconns import auto_close_old_connections +from archivematica.dashboard.main import models logger = logging.getLogger("archivematica.mcp.server.jobs") diff --git a/src/MCPServer/server/jobs/chain.py b/src/archivematica/MCPServer/server/jobs/chain.py similarity index 86% rename from src/MCPServer/server/jobs/chain.py rename to src/archivematica/MCPServer/server/jobs/chain.py index fd5ac0c741..cc8fafd983 100644 --- a/src/MCPServer/server/jobs/chain.py +++ b/src/archivematica/MCPServer/server/jobs/chain.py @@ -11,14 +11,14 @@ import logging -from server.jobs.client import DirectoryClientScriptJob -from server.jobs.client import FilesClientScriptJob -from server.jobs.client import OutputClientScriptJob -from server.jobs.decisions import NextChainDecisionJob -from server.jobs.decisions import OutputDecisionJob -from server.jobs.decisions import UpdateContextDecisionJob -from server.jobs.local import GetUnitVarLinkJob -from server.jobs.local import SetUnitVarLinkJob +from archivematica.MCPServer.server.jobs.client import DirectoryClientScriptJob +from archivematica.MCPServer.server.jobs.client import FilesClientScriptJob +from archivematica.MCPServer.server.jobs.client import OutputClientScriptJob +from archivematica.MCPServer.server.jobs.decisions import NextChainDecisionJob +from archivematica.MCPServer.server.jobs.decisions import OutputDecisionJob +from archivematica.MCPServer.server.jobs.decisions import UpdateContextDecisionJob +from archivematica.MCPServer.server.jobs.local import GetUnitVarLinkJob +from archivematica.MCPServer.server.jobs.local import SetUnitVarLinkJob logger = logging.getLogger("archivematica.mcp.server.jobs.chain") diff --git a/src/MCPServer/server/jobs/client.py b/src/archivematica/MCPServer/server/jobs/client.py similarity index 95% rename from src/MCPServer/server/jobs/client.py rename to src/archivematica/MCPServer/server/jobs/client.py index da2cf40923..334a4a34ed 100644 --- a/src/MCPServer/server/jobs/client.py +++ b/src/archivematica/MCPServer/server/jobs/client.py @@ -6,15 +6,15 @@ import json import logging -from dbconns import auto_close_old_connections from django.conf import settings from django.core.exceptions import ValidationError -from main import models -from server import metrics -from server.jobs.base import Job -from server.tasks import Task -from server.tasks import get_task_backend +from archivematica.archivematicaCommon.dbconns import auto_close_old_connections +from archivematica.dashboard.main import models +from archivematica.MCPServer.server import metrics +from archivematica.MCPServer.server.jobs.base import Job +from archivematica.MCPServer.server.tasks import Task +from archivematica.MCPServer.server.tasks import get_task_backend logger = logging.getLogger("archivematica.mcp.server.jobs.client") diff --git a/src/MCPServer/server/jobs/decisions.py b/src/archivematica/MCPServer/server/jobs/decisions.py similarity index 95% rename from src/MCPServer/server/jobs/decisions.py rename to src/archivematica/MCPServer/server/jobs/decisions.py index d17e728eb2..bab0913550 100644 --- a/src/MCPServer/server/jobs/decisions.py +++ b/src/archivematica/MCPServer/server/jobs/decisions.py @@ -7,14 +7,13 @@ import threading from collections import OrderedDict -from dbconns import auto_close_old_connections -from main import models - -from server.jobs.base import Job -from server.processing_config import load_preconfigured_choice -from server.processing_config import load_processing_xml -from server.translation import TranslationLabel -from server.workflow_abilities import choice_is_available +from archivematica.archivematicaCommon.dbconns import auto_close_old_connections +from archivematica.dashboard.main import models +from archivematica.MCPServer.server.jobs.base import Job +from archivematica.MCPServer.server.processing_config import load_preconfigured_choice +from archivematica.MCPServer.server.processing_config import load_processing_xml +from archivematica.MCPServer.server.translation import TranslationLabel +from archivematica.MCPServer.server.workflow_abilities import choice_is_available logger = logging.getLogger("archivematica.mcp.server.jobs.decisions") @@ -112,7 +111,7 @@ def get_choices(self): @auto_close_old_connections() def decide(self, choice): # TODO: fix circular imports :( - from server.jobs import JobChain + from archivematica.MCPServer.server.jobs import JobChain if choice not in self.get_choices(): raise ValueError(f"{choice} is not one of the available choices") diff --git a/src/MCPServer/server/jobs/local.py b/src/archivematica/MCPServer/server/jobs/local.py similarity index 91% rename from src/MCPServer/server/jobs/local.py rename to src/archivematica/MCPServer/server/jobs/local.py index c9d869c461..a7f6a2e355 100644 --- a/src/MCPServer/server/jobs/local.py +++ b/src/archivematica/MCPServer/server/jobs/local.py @@ -5,11 +5,11 @@ import abc import logging -from dbconns import auto_close_old_connections from django.core.exceptions import ValidationError -from main import models -from server.jobs.base import Job +from archivematica.archivematicaCommon.dbconns import auto_close_old_connections +from archivematica.dashboard.main import models +from archivematica.MCPServer.server.jobs.base import Job logger = logging.getLogger("archivematica.mcp.server.jobs.local") diff --git a/src/MCPServer/server/mcp.py b/src/archivematica/MCPServer/server/mcp.py similarity index 86% rename from src/MCPServer/server/mcp.py rename to src/archivematica/MCPServer/server/mcp.py index 5c8808165a..c917da8b22 100644 --- a/src/MCPServer/server/mcp.py +++ b/src/archivematica/MCPServer/server/mcp.py @@ -34,19 +34,19 @@ from django.conf import settings -from server import metrics -from server import rpc_server -from server import shared_dirs -from server.jobs import Job -from server.jobs import JobChain -from server.packages import DIP -from server.packages import SIP -from server.packages import Package -from server.packages import Transfer -from server.queues import PackageQueue -from server.tasks import Task -from server.watch_dirs import watch_directories -from server.workflow import load_workflow +from archivematica.MCPServer.server import metrics +from archivematica.MCPServer.server import rpc_server +from archivematica.MCPServer.server import shared_dirs +from archivematica.MCPServer.server.jobs import Job +from archivematica.MCPServer.server.jobs import JobChain +from archivematica.MCPServer.server.packages import DIP +from archivematica.MCPServer.server.packages import SIP +from archivematica.MCPServer.server.packages import Package +from archivematica.MCPServer.server.packages import Transfer +from archivematica.MCPServer.server.queues import PackageQueue +from archivematica.MCPServer.server.tasks import Task +from archivematica.MCPServer.server.watch_dirs import watch_directories +from archivematica.MCPServer.server.workflow import load_workflow logger = logging.getLogger("archivematica.mcp.server") diff --git a/src/MCPServer/server/metrics.py b/src/archivematica/MCPServer/server/metrics.py similarity index 96% rename from src/MCPServer/server/metrics.py rename to src/archivematica/MCPServer/server/metrics.py index e328f1229e..e1119b4849 100644 --- a/src/MCPServer/server/metrics.py +++ b/src/archivematica/MCPServer/server/metrics.py @@ -5,14 +5,15 @@ import functools import os -from common_metrics import TASK_DURATION_BUCKETS from django.conf import settings from prometheus_client import Counter from prometheus_client import Gauge from prometheus_client import Histogram from prometheus_client import Info from prometheus_client import start_http_server -from version import get_full_version + +from archivematica.archivematicaCommon.common_metrics import TASK_DURATION_BUCKETS +from archivematica.archivematicaCommon.version import get_full_version gearman_active_jobs_gauge = Gauge( "mcpserver_gearman_active_jobs", "Number of gearman jobs currently being processed" diff --git a/src/MCPServer/server/packages.py b/src/archivematica/MCPServer/server/packages.py similarity index 98% rename from src/MCPServer/server/packages.py rename to src/archivematica/MCPServer/server/packages.py index db066b3861..389fba2fb8 100644 --- a/src/MCPServer/server/packages.py +++ b/src/archivematica/MCPServer/server/packages.py @@ -10,16 +10,18 @@ from uuid import UUID from uuid import uuid4 -import storageService as storage_service -from dbconns import auto_close_old_connections from django.conf import settings from django.core.exceptions import ValidationError from django.utils import timezone -from main import models -from server.jobs import JobChain -from server.processing_config import processing_configuration_file_exists -from server.utils import uuid_from_path +import archivematica.archivematicaCommon.storageService as storage_service +from archivematica.archivematicaCommon.dbconns import auto_close_old_connections +from archivematica.dashboard.main import models +from archivematica.MCPServer.server.jobs import JobChain +from archivematica.MCPServer.server.processing_config import ( + processing_configuration_file_exists, +) +from archivematica.MCPServer.server.utils import uuid_from_path logger = logging.getLogger("archivematica.mcp.server.packages") diff --git a/src/MCPServer/server/processing_config.py b/src/archivematica/MCPServer/server/processing_config.py similarity index 98% rename from src/MCPServer/server/processing_config.py rename to src/archivematica/MCPServer/server/processing_config.py index b896b7e7ca..c42f0a5f5e 100644 --- a/src/MCPServer/server/processing_config.py +++ b/src/archivematica/MCPServer/server/processing_config.py @@ -9,11 +9,11 @@ import logging import os -import storageService as storage_service from django.conf import settings from lxml import etree -from server.workflow_abilities import choice_is_available +import archivematica.archivematicaCommon.storageService as storage_service +from archivematica.MCPServer.server.workflow_abilities import choice_is_available logger = logging.getLogger("archivematica.mcp.server.processing_config") diff --git a/src/MCPServer/server/queues.py b/src/archivematica/MCPServer/server/queues.py similarity index 98% rename from src/MCPServer/server/queues.py rename to src/archivematica/MCPServer/server/queues.py index a68d692098..5e0b762f74 100644 --- a/src/MCPServer/server/queues.py +++ b/src/archivematica/MCPServer/server/queues.py @@ -9,10 +9,10 @@ from django.conf import settings -from server import metrics -from server.jobs import DecisionJob -from server.packages import DIP -from server.packages import SIP +from archivematica.MCPServer.server import metrics +from archivematica.MCPServer.server.jobs import DecisionJob +from archivematica.MCPServer.server.packages import DIP +from archivematica.MCPServer.server.packages import SIP logger = logging.getLogger("archivematica.mcp.server.queues") diff --git a/src/MCPServer/server/rpc_server.py b/src/archivematica/MCPServer/server/rpc_server.py similarity index 97% rename from src/MCPServer/server/rpc_server.py rename to src/archivematica/MCPServer/server/rpc_server.py index 712966b385..8b4d8ec6b0 100644 --- a/src/MCPServer/server/rpc_server.py +++ b/src/archivematica/MCPServer/server/rpc_server.py @@ -18,19 +18,19 @@ from socket import gethostname import gearman -from dbconns import auto_close_old_connections from django.conf import settings as django_settings from django.db import connection from gearman import GearmanWorker -from gearman_encoder import JSONDataEncoder from lxml import etree -from main.models import SIP -from main.models import Job -from main.models import Transfer -from server.packages import create_package -from server.packages import get_approve_transfer_chain_id -from server.processing_config import get_processing_fields +from archivematica.archivematicaCommon.dbconns import auto_close_old_connections +from archivematica.archivematicaCommon.gearman_encoder import JSONDataEncoder +from archivematica.dashboard.main.models import SIP +from archivematica.dashboard.main.models import Job +from archivematica.dashboard.main.models import Transfer +from archivematica.MCPServer.server.packages import create_package +from archivematica.MCPServer.server.packages import get_approve_transfer_chain_id +from archivematica.MCPServer.server.processing_config import get_processing_fields logger = logging.getLogger("archivematica.mcp.server.rpc_server") diff --git a/src/MCPServer/server/shared_dirs.py b/src/archivematica/MCPServer/server/shared_dirs.py similarity index 94% rename from src/MCPServer/server/shared_dirs.py rename to src/archivematica/MCPServer/server/shared_dirs.py index d359bafedb..e8f8bdd464 100644 --- a/src/MCPServer/server/shared_dirs.py +++ b/src/archivematica/MCPServer/server/shared_dirs.py @@ -4,8 +4,9 @@ import os from django.conf import settings -from processing import BUILTIN_CONFIGS -from processing import install_builtin_config + +from archivematica.archivematicaCommon.processing import BUILTIN_CONFIGS +from archivematica.archivematicaCommon.processing import install_builtin_config logger = logging.getLogger("archivematica.mcp.server.shareddirs") diff --git a/src/archivematica/MCPServer/server/tasks/__init__.py b/src/archivematica/MCPServer/server/tasks/__init__.py new file mode 100644 index 0000000000..abf57bcf47 --- /dev/null +++ b/src/archivematica/MCPServer/server/tasks/__init__.py @@ -0,0 +1,6 @@ +from archivematica.MCPServer.server.tasks.backends import GearmanTaskBackend +from archivematica.MCPServer.server.tasks.backends import TaskBackend +from archivematica.MCPServer.server.tasks.backends import get_task_backend +from archivematica.MCPServer.server.tasks.task import Task + +__all__ = ("GearmanTaskBackend", "Task", "TaskBackend", "get_task_backend") diff --git a/src/MCPServer/server/tasks/backends/__init__.py b/src/archivematica/MCPServer/server/tasks/backends/__init__.py similarity index 77% rename from src/MCPServer/server/tasks/backends/__init__.py rename to src/archivematica/MCPServer/server/tasks/backends/__init__.py index 1d013a132f..e5816360a6 100644 --- a/src/MCPServer/server/tasks/backends/__init__.py +++ b/src/archivematica/MCPServer/server/tasks/backends/__init__.py @@ -4,8 +4,10 @@ import threading -from server.tasks.backends.base import TaskBackend -from server.tasks.backends.gearman_backend import GearmanTaskBackend +from archivematica.MCPServer.server.tasks.backends.base import TaskBackend +from archivematica.MCPServer.server.tasks.backends.gearman_backend import ( + GearmanTaskBackend, +) backend_local = threading.local() diff --git a/src/MCPServer/server/tasks/backends/base.py b/src/archivematica/MCPServer/server/tasks/backends/base.py similarity index 100% rename from src/MCPServer/server/tasks/backends/base.py rename to src/archivematica/MCPServer/server/tasks/backends/base.py diff --git a/src/MCPServer/server/tasks/backends/gearman_backend.py b/src/archivematica/MCPServer/server/tasks/backends/gearman_backend.py similarity index 97% rename from src/MCPServer/server/tasks/backends/gearman_backend.py rename to src/archivematica/MCPServer/server/tasks/backends/gearman_backend.py index 1518a3e4a7..ced79b8e82 100644 --- a/src/MCPServer/server/tasks/backends/gearman_backend.py +++ b/src/archivematica/MCPServer/server/tasks/backends/gearman_backend.py @@ -12,11 +12,11 @@ from gearman.constants import JOB_COMPLETE from gearman.constants import JOB_FAILED from gearman.constants import JOB_UNKNOWN -from gearman_encoder import JSONDataEncoder -from server import metrics -from server.tasks.backends.base import TaskBackend -from server.tasks.task import Task +from archivematica.archivematicaCommon.gearman_encoder import JSONDataEncoder +from archivematica.MCPServer.server import metrics +from archivematica.MCPServer.server.tasks.backends.base import TaskBackend +from archivematica.MCPServer.server.tasks.task import Task logger = logging.getLogger("archivematica.mcp.server.jobs.tasks") diff --git a/src/MCPServer/server/tasks/task.py b/src/archivematica/MCPServer/server/tasks/task.py similarity index 96% rename from src/MCPServer/server/tasks/task.py rename to src/archivematica/MCPServer/server/tasks/task.py index c455c6566b..747c0dfcfb 100644 --- a/src/MCPServer/server/tasks/task.py +++ b/src/archivematica/MCPServer/server/tasks/task.py @@ -9,9 +9,10 @@ import os import uuid -from dbconns import auto_close_old_connections from django.utils import timezone -from main import models + +from archivematica.archivematicaCommon.dbconns import auto_close_old_connections +from archivematica.dashboard.main import models logger = logging.getLogger("archivematica.mcp.server.tasks") diff --git a/src/MCPServer/server/translation.py b/src/archivematica/MCPServer/server/translation.py similarity index 100% rename from src/MCPServer/server/translation.py rename to src/archivematica/MCPServer/server/translation.py diff --git a/src/MCPServer/server/utils.py b/src/archivematica/MCPServer/server/utils.py similarity index 100% rename from src/MCPServer/server/utils.py rename to src/archivematica/MCPServer/server/utils.py diff --git a/src/MCPServer/server/watch_dirs.py b/src/archivematica/MCPServer/server/watch_dirs.py similarity index 100% rename from src/MCPServer/server/watch_dirs.py rename to src/archivematica/MCPServer/server/watch_dirs.py diff --git a/src/MCPServer/server/workflow.py b/src/archivematica/MCPServer/server/workflow.py similarity index 97% rename from src/MCPServer/server/workflow.py rename to src/archivematica/MCPServer/server/workflow.py index 0e697081d1..b137ce11b1 100644 --- a/src/MCPServer/server/workflow.py +++ b/src/archivematica/MCPServer/server/workflow.py @@ -22,9 +22,9 @@ from jsonschema import validate from jsonschema.exceptions import ValidationError -from server.jobs import Job -from server.translation import FALLBACK_LANG -from server.translation import TranslationLabel +from archivematica.MCPServer.server.jobs import Job +from archivematica.MCPServer.server.translation import FALLBACK_LANG +from archivematica.MCPServer.server.translation import TranslationLabel _LATEST_SCHEMA = "workflow-schema-v1.json" ASSETS_DIR = os.path.join( diff --git a/src/MCPServer/server/workflow_abilities.py b/src/archivematica/MCPServer/server/workflow_abilities.py similarity index 100% rename from src/MCPServer/server/workflow_abilities.py rename to src/archivematica/MCPServer/server/workflow_abilities.py diff --git a/src/archivematicaCommon/externals/HTML/__init__.py b/src/archivematica/MCPServer/settings/__init__.py similarity index 100% rename from src/archivematicaCommon/externals/HTML/__init__.py rename to src/archivematica/MCPServer/settings/__init__.py diff --git a/src/MCPServer/settings/common.py b/src/archivematica/MCPServer/settings/common.py similarity index 95% rename from src/MCPServer/settings/common.py rename to src/archivematica/MCPServer/settings/common.py index a6e62ff000..a5b324b8ec 100644 --- a/src/MCPServer/settings/common.py +++ b/src/archivematica/MCPServer/settings/common.py @@ -21,10 +21,12 @@ import os from io import StringIO -import email_settings -from appconfig import Config -from appconfig import process_search_enabled -from appconfig import process_watched_directory_interval +from archivematica.archivematicaCommon import email_settings +from archivematica.archivematicaCommon.appconfig import Config +from archivematica.archivematicaCommon.appconfig import process_search_enabled +from archivematica.archivematicaCommon.appconfig import ( + process_watched_directory_interval, +) CONFIG_MAPPING = { # [MCPServer] @@ -204,9 +206,9 @@ INSTALLED_APPS = ( "django.contrib.auth", "django.contrib.contenttypes", - "main", - "components.administration", - "fpr", + "archivematica.dashboard.main", + "archivematica.dashboard.components.administration", + "archivematica.dashboard.fpr", ) # Make this unique, and don't share it with anybody. diff --git a/src/MCPServer/settings/test.py b/src/archivematica/MCPServer/settings/test.py similarity index 95% rename from src/MCPServer/settings/test.py rename to src/archivematica/MCPServer/settings/test.py index d786c2d26c..0c4d027054 100644 --- a/src/MCPServer/settings/test.py +++ b/src/archivematica/MCPServer/settings/test.py @@ -16,7 +16,7 @@ # along with Archivematica. If not, see . """Test settings and globals.""" -from .common import * +from archivematica.MCPServer.settings.common import * DATABASES = { "default": { diff --git a/src/MCPServer/settings/testmysql.py b/src/archivematica/MCPServer/settings/testmysql.py similarity index 85% rename from src/MCPServer/settings/testmysql.py rename to src/archivematica/MCPServer/settings/testmysql.py index 69b4e01c4b..b67ff016bc 100644 --- a/src/MCPServer/settings/testmysql.py +++ b/src/archivematica/MCPServer/settings/testmysql.py @@ -1,4 +1,4 @@ -from .test import * +from archivematica.MCPServer.settings.test import * DATABASES = { "default": { diff --git a/src/archivematicaCommon/README.txt b/src/archivematica/archivematicaCommon/README.txt similarity index 100% rename from src/archivematicaCommon/README.txt rename to src/archivematica/archivematicaCommon/README.txt diff --git a/src/archivematicaCommon/externals/__init__.py b/src/archivematica/archivematicaCommon/__init__.py similarity index 100% rename from src/archivematicaCommon/externals/__init__.py rename to src/archivematica/archivematicaCommon/__init__.py diff --git a/src/archivematicaCommon/appconfig.py b/src/archivematica/archivematicaCommon/appconfig.py similarity index 98% rename from src/archivematicaCommon/appconfig.py rename to src/archivematica/archivematicaCommon/appconfig.py index 177bd3c2d7..8ca14ea7d1 100644 --- a/src/archivematicaCommon/appconfig.py +++ b/src/archivematica/archivematicaCommon/appconfig.py @@ -17,7 +17,8 @@ import configparser from django.core.exceptions import ImproperlyConfigured -from env_configparser import EnvConfigParser + +from archivematica.archivematicaCommon.env_configparser import EnvConfigParser class Config: diff --git a/src/archivematicaCommon/archivematicaFunctions.py b/src/archivematica/archivematicaCommon/archivematicaFunctions.py similarity index 99% rename from src/archivematicaCommon/archivematicaFunctions.py rename to src/archivematica/archivematicaCommon/archivematicaFunctions.py index 1078b2b8ae..8b662c632a 100644 --- a/src/archivematicaCommon/archivematicaFunctions.py +++ b/src/archivematica/archivematicaCommon/archivematicaFunctions.py @@ -35,8 +35,9 @@ from amclient import AMClient from django.apps import apps from lxml import etree -from namespaces import NSMAP -from namespaces import xml_find_premis + +from archivematica.archivematicaCommon.namespaces import NSMAP +from archivematica.archivematicaCommon.namespaces import xml_find_premis REQUIRED_DIRECTORIES = ( "logs", @@ -571,7 +572,7 @@ def jhove_validation_command(module): import sys from lxml import etree -from namespaces import jhoveBNS +from archivematica.archivematicaCommon.namespaces import jhoveBNS class JhoveException(Exception): pass diff --git a/src/archivematicaCommon/bag.py b/src/archivematica/archivematicaCommon/bag.py similarity index 100% rename from src/archivematicaCommon/bag.py rename to src/archivematica/archivematicaCommon/bag.py diff --git a/src/archivematicaCommon/bindpid.py b/src/archivematica/archivematicaCommon/bindpid.py similarity index 100% rename from src/archivematicaCommon/bindpid.py rename to src/archivematica/archivematicaCommon/bindpid.py diff --git a/src/archivematicaCommon/common_metrics.py b/src/archivematica/archivematicaCommon/common_metrics.py similarity index 100% rename from src/archivematicaCommon/common_metrics.py rename to src/archivematica/archivematicaCommon/common_metrics.py diff --git a/src/archivematicaCommon/countryCodes.py b/src/archivematica/archivematicaCommon/countryCodes.py similarity index 100% rename from src/archivematicaCommon/countryCodes.py rename to src/archivematica/archivematicaCommon/countryCodes.py diff --git a/src/archivematicaCommon/custom_handlers.py b/src/archivematica/archivematicaCommon/custom_handlers.py similarity index 100% rename from src/archivematicaCommon/custom_handlers.py rename to src/archivematica/archivematicaCommon/custom_handlers.py diff --git a/src/archivematicaCommon/databaseFunctions.py b/src/archivematica/archivematicaCommon/databaseFunctions.py similarity index 96% rename from src/archivematicaCommon/databaseFunctions.py rename to src/archivematica/archivematicaCommon/databaseFunctions.py index de31eb5067..756f94408a 100644 --- a/src/archivematicaCommon/databaseFunctions.py +++ b/src/archivematica/archivematicaCommon/databaseFunctions.py @@ -19,12 +19,13 @@ import uuid from django.utils import timezone -from main.models import SIP -from main.models import Agent -from main.models import Derivation -from main.models import Event -from main.models import File -from main.models import FPCommandOutput + +from archivematica.dashboard.main.models import SIP +from archivematica.dashboard.main.models import Agent +from archivematica.dashboard.main.models import Derivation +from archivematica.dashboard.main.models import Event +from archivematica.dashboard.main.models import File +from archivematica.dashboard.main.models import FPCommandOutput LOGGER = logging.getLogger("archivematica.common") diff --git a/src/archivematicaCommon/dbconns.py b/src/archivematica/archivematicaCommon/dbconns.py similarity index 100% rename from src/archivematicaCommon/dbconns.py rename to src/archivematica/archivematicaCommon/dbconns.py diff --git a/src/archivematicaCommon/dicts.py b/src/archivematica/archivematicaCommon/dicts.py similarity index 99% rename from src/archivematicaCommon/dicts.py rename to src/archivematica/archivematicaCommon/dicts.py index 8c1e7741ae..d3c2d534ef 100644 --- a/src/archivematicaCommon/dicts.py +++ b/src/archivematica/archivematicaCommon/dicts.py @@ -18,7 +18,7 @@ import re import uuid -from main import models +from archivematica.dashboard.main import models config = {} diff --git a/src/archivematicaCommon/elasticSearchFunctions.py b/src/archivematica/archivematicaCommon/elasticSearchFunctions.py similarity index 99% rename from src/archivematicaCommon/elasticSearchFunctions.py rename to src/archivematica/archivematicaCommon/elasticSearchFunctions.py index 4176d96d81..8f5b96de46 100644 --- a/src/archivematicaCommon/elasticSearchFunctions.py +++ b/src/archivematica/archivematicaCommon/elasticSearchFunctions.py @@ -23,19 +23,20 @@ import sys import time -import namespaces as ns -import version -from archivematicaFunctions import get_dashboard_uuid from django.db.models import Min from django.db.models import Q from elasticsearch import Elasticsearch from elasticsearch import ImproperlyConfigured from elasticsearch.helpers import bulk -from externals import xmltodict from lxml import etree -from main.models import File -from main.models import Identifier -from main.models import Transfer + +from archivematica.archivematicaCommon import namespaces as ns +from archivematica.archivematicaCommon import version +from archivematica.archivematicaCommon.archivematicaFunctions import get_dashboard_uuid +from archivematica.archivematicaCommon.externals import xmltodict +from archivematica.dashboard.main.models import File +from archivematica.dashboard.main.models import Identifier +from archivematica.dashboard.main.models import Transfer logger = logging.getLogger("archivematica.common") diff --git a/src/archivematicaCommon/email_settings.py b/src/archivematica/archivematicaCommon/email_settings.py similarity index 100% rename from src/archivematicaCommon/email_settings.py rename to src/archivematica/archivematicaCommon/email_settings.py diff --git a/src/archivematicaCommon/env_configparser.py b/src/archivematica/archivematicaCommon/env_configparser.py similarity index 100% rename from src/archivematicaCommon/env_configparser.py rename to src/archivematica/archivematicaCommon/env_configparser.py diff --git a/src/archivematicaCommon/executeOrRunSubProcess.py b/src/archivematica/archivematicaCommon/executeOrRunSubProcess.py similarity index 99% rename from src/archivematicaCommon/executeOrRunSubProcess.py rename to src/archivematica/archivematicaCommon/executeOrRunSubProcess.py index 8eb804c02a..e62600c292 100644 --- a/src/archivematicaCommon/executeOrRunSubProcess.py +++ b/src/archivematica/archivematicaCommon/executeOrRunSubProcess.py @@ -24,7 +24,7 @@ from typing import Optional from typing import Union -from archivematicaFunctions import escape +from archivematica.archivematicaCommon.archivematicaFunctions import escape Arguments = list[str] Input = Union[str, bytes, io.IOBase] diff --git a/src/archivematicaCommon/externals/HTML/HTML.py b/src/archivematica/archivematicaCommon/externals/HTML/HTML.py similarity index 100% rename from src/archivematicaCommon/externals/HTML/HTML.py rename to src/archivematica/archivematicaCommon/externals/HTML/HTML.py diff --git a/src/archivematicaCommon/externals/HTML/Licence_CeCILL_V2-en.html b/src/archivematica/archivematicaCommon/externals/HTML/Licence_CeCILL_V2-en.html similarity index 100% rename from src/archivematicaCommon/externals/HTML/Licence_CeCILL_V2-en.html rename to src/archivematica/archivematicaCommon/externals/HTML/Licence_CeCILL_V2-en.html diff --git a/src/archivematicaCommon/externals/HTML/Licence_CeCILL_V2-fr.html b/src/archivematica/archivematicaCommon/externals/HTML/Licence_CeCILL_V2-fr.html similarity index 100% rename from src/archivematicaCommon/externals/HTML/Licence_CeCILL_V2-fr.html rename to src/archivematica/archivematicaCommon/externals/HTML/Licence_CeCILL_V2-fr.html diff --git a/src/dashboard/__init__.py b/src/archivematica/archivematicaCommon/externals/HTML/__init__.py similarity index 100% rename from src/dashboard/__init__.py rename to src/archivematica/archivematicaCommon/externals/HTML/__init__.py diff --git a/src/dashboard/components/__init__.py b/src/archivematica/archivematicaCommon/externals/__init__.py similarity index 100% rename from src/dashboard/components/__init__.py rename to src/archivematica/archivematicaCommon/externals/__init__.py diff --git a/src/archivematicaCommon/externals/extractMaildirAttachments.py b/src/archivematica/archivematicaCommon/externals/extractMaildirAttachments.py similarity index 100% rename from src/archivematicaCommon/externals/extractMaildirAttachments.py rename to src/archivematica/archivematicaCommon/externals/extractMaildirAttachments.py diff --git a/src/archivematicaCommon/externals/fido/archivematica_format_extensions.xml b/src/archivematica/archivematicaCommon/externals/fido/archivematica_format_extensions.xml similarity index 100% rename from src/archivematicaCommon/externals/fido/archivematica_format_extensions.xml rename to src/archivematica/archivematicaCommon/externals/fido/archivematica_format_extensions.xml diff --git a/src/archivematicaCommon/externals/fiwalk_plugins/ficonfig.txt b/src/archivematica/archivematicaCommon/externals/fiwalk_plugins/ficonfig.txt similarity index 100% rename from src/archivematicaCommon/externals/fiwalk_plugins/ficonfig.txt rename to src/archivematica/archivematicaCommon/externals/fiwalk_plugins/ficonfig.txt diff --git a/src/archivematicaCommon/externals/fiwalk_plugins/pronom_ident.py b/src/archivematica/archivematicaCommon/externals/fiwalk_plugins/pronom_ident.py similarity index 100% rename from src/archivematicaCommon/externals/fiwalk_plugins/pronom_ident.py rename to src/archivematica/archivematicaCommon/externals/fiwalk_plugins/pronom_ident.py diff --git a/src/archivematicaCommon/externals/maildirToMbox.py b/src/archivematica/archivematicaCommon/externals/maildirToMbox.py similarity index 100% rename from src/archivematicaCommon/externals/maildirToMbox.py rename to src/archivematica/archivematicaCommon/externals/maildirToMbox.py diff --git a/src/archivematicaCommon/externals/xmltodict.py b/src/archivematica/archivematicaCommon/externals/xmltodict.py similarity index 100% rename from src/archivematicaCommon/externals/xmltodict.py rename to src/archivematica/archivematicaCommon/externals/xmltodict.py diff --git a/src/archivematicaCommon/fileOperations.py b/src/archivematica/archivematicaCommon/fileOperations.py similarity index 96% rename from src/archivematicaCommon/fileOperations.py rename to src/archivematica/archivematicaCommon/fileOperations.py index 1371b8c683..f4ca83ef6e 100644 --- a/src/archivematicaCommon/fileOperations.py +++ b/src/archivematica/archivematicaCommon/fileOperations.py @@ -22,13 +22,13 @@ import uuid from pathlib import Path -from archivematicaFunctions import get_file_checksum -from archivematicaFunctions import get_setting -from databaseFunctions import insertIntoEvents -from databaseFunctions import insertIntoFiles -from executeOrRunSubProcess import executeOrRun -from main.models import File -from main.models import Transfer +from archivematica.archivematicaCommon.archivematicaFunctions import get_file_checksum +from archivematica.archivematicaCommon.archivematicaFunctions import get_setting +from archivematica.archivematicaCommon.databaseFunctions import insertIntoEvents +from archivematica.archivematicaCommon.databaseFunctions import insertIntoFiles +from archivematica.archivematicaCommon.executeOrRunSubProcess import executeOrRun +from archivematica.dashboard.main.models import File +from archivematica.dashboard.main.models import Transfer def get_size_and_checksum(file_path, file_size=None, checksum=None, checksum_type=None): diff --git a/src/archivematicaCommon/gearman_encoder.py b/src/archivematica/archivematicaCommon/gearman_encoder.py similarity index 100% rename from src/archivematicaCommon/gearman_encoder.py rename to src/archivematica/archivematicaCommon/gearman_encoder.py diff --git a/src/archivematicaCommon/identifier_functions.py b/src/archivematica/archivematicaCommon/identifier_functions.py similarity index 100% rename from src/archivematicaCommon/identifier_functions.py rename to src/archivematica/archivematicaCommon/identifier_functions.py diff --git a/src/archivematicaCommon/namespaces.py b/src/archivematica/archivematicaCommon/namespaces.py similarity index 100% rename from src/archivematicaCommon/namespaces.py rename to src/archivematica/archivematicaCommon/namespaces.py diff --git a/src/archivematicaCommon/processing.py b/src/archivematica/archivematicaCommon/processing.py similarity index 100% rename from src/archivematicaCommon/processing.py rename to src/archivematica/archivematicaCommon/processing.py diff --git a/src/archivematicaCommon/storageService.py b/src/archivematica/archivematicaCommon/storageService.py similarity index 99% rename from src/archivematicaCommon/storageService.py rename to src/archivematica/archivematicaCommon/storageService.py index dfc038a4f0..f9a5cc0400 100644 --- a/src/archivematicaCommon/storageService.py +++ b/src/archivematica/archivematicaCommon/storageService.py @@ -3,12 +3,13 @@ import platform import urllib -import archivematicaFunctions as am import requests -from common_metrics import ss_api_timer from django.conf import settings as django_settings from requests.auth import AuthBase +from archivematica.archivematicaCommon import archivematicaFunctions as am +from archivematica.archivematicaCommon.common_metrics import ss_api_timer + LOGGER = logging.getLogger("archivematica.common") diff --git a/src/archivematicaCommon/version.py b/src/archivematica/archivematicaCommon/version.py similarity index 100% rename from src/archivematicaCommon/version.py rename to src/archivematica/archivematicaCommon/version.py diff --git a/src/archivematicaCommon/xml2obj.py b/src/archivematica/archivematicaCommon/xml2obj.py similarity index 100% rename from src/archivematicaCommon/xml2obj.py rename to src/archivematica/archivematicaCommon/xml2obj.py diff --git a/src/dashboard/components/access/__init__.py b/src/archivematica/dashboard/__init__.py similarity index 100% rename from src/dashboard/components/access/__init__.py rename to src/archivematica/dashboard/__init__.py diff --git a/src/dashboard/components/accounts/__init__.py b/src/archivematica/dashboard/components/__init__.py similarity index 100% rename from src/dashboard/components/accounts/__init__.py rename to src/archivematica/dashboard/components/__init__.py diff --git a/src/dashboard/components/administration/__init__.py b/src/archivematica/dashboard/components/access/__init__.py similarity index 100% rename from src/dashboard/components/administration/__init__.py rename to src/archivematica/dashboard/components/access/__init__.py diff --git a/src/dashboard/components/access/urls.py b/src/archivematica/dashboard/components/access/urls.py similarity index 95% rename from src/dashboard/components/access/urls.py rename to src/archivematica/dashboard/components/access/urls.py index 5e9937fa16..eea9d7bb45 100644 --- a/src/dashboard/components/access/urls.py +++ b/src/archivematica/dashboard/components/access/urls.py @@ -1,7 +1,8 @@ -from components.access import views from django.urls import path from django.urls import re_path +from archivematica.dashboard.components.access import views + app_name = "access" urlpatterns = [ path("archivesspace/", views.all_records), diff --git a/src/dashboard/components/access/views.py b/src/archivematica/dashboard/components/access/views.py similarity index 96% rename from src/dashboard/components/access/views.py rename to src/archivematica/dashboard/components/access/views.py index 5ac3b35045..3cc193ddb1 100644 --- a/src/dashboard/components/access/views.py +++ b/src/archivematica/dashboard/components/access/views.py @@ -4,20 +4,21 @@ import uuid from functools import wraps -import archivematicaFunctions -import components.filesystem_ajax.views as filesystem_views import django.http from agentarchives.archivesspace import ArchivesSpaceError from agentarchives.archivesspace import AuthenticationError -from components import helpers -from components.ingest.views_as import get_as_system_client from django.shortcuts import redirect from django.utils import timezone -from main.models import SIP -from main.models import ArchivesSpaceDigitalObject -from main.models import DublinCore -from main.models import SIPArrange -from main.models import SIPArrangeAccessMapping + +import archivematica.dashboard.components.filesystem_ajax.views as filesystem_views +from archivematica.archivematicaCommon import archivematicaFunctions +from archivematica.dashboard.components import helpers +from archivematica.dashboard.components.ingest.views_as import get_as_system_client +from archivematica.dashboard.main.models import SIP +from archivematica.dashboard.main.models import ArchivesSpaceDigitalObject +from archivematica.dashboard.main.models import DublinCore +from archivematica.dashboard.main.models import SIPArrange +from archivematica.dashboard.main.models import SIPArrangeAccessMapping logger = logging.getLogger("archivematica.dashboard") diff --git a/src/dashboard/components/administration/migrations/__init__.py b/src/archivematica/dashboard/components/accounts/__init__.py similarity index 100% rename from src/dashboard/components/administration/migrations/__init__.py rename to src/archivematica/dashboard/components/accounts/__init__.py diff --git a/src/dashboard/components/accounts/apps.py b/src/archivematica/dashboard/components/accounts/apps.py similarity index 64% rename from src/dashboard/components/accounts/apps.py rename to src/archivematica/dashboard/components/accounts/apps.py index 2e8ad652bc..0248bf3d22 100644 --- a/src/dashboard/components/accounts/apps.py +++ b/src/archivematica/dashboard/components/accounts/apps.py @@ -3,11 +3,11 @@ class AccountsConfig(AppConfig): default_auto_field = "django.db.models.AutoField" - name = "components.accounts" + name = "archivematica.dashboard.components.accounts" verbose_name = "Dashboard Accounts" def ready(self): try: - import components.accounts.signals # noqa + import archivematica.dashboard.components.accounts.signals # noqa except ImportError: pass diff --git a/src/dashboard/components/accounts/backends.py b/src/archivematica/dashboard/components/accounts/backends.py similarity index 98% rename from src/dashboard/components/accounts/backends.py rename to src/archivematica/dashboard/components/accounts/backends.py index 38cda4608d..2a06a7d92f 100644 --- a/src/dashboard/components/accounts/backends.py +++ b/src/archivematica/dashboard/components/accounts/backends.py @@ -1,6 +1,5 @@ import json -from components.helpers import generate_api_key from django.conf import settings from django.core.exceptions import ImproperlyConfigured from django_auth_ldap.backend import LDAPBackend @@ -9,6 +8,8 @@ from mozilla_django_oidc.auth import OIDCAuthenticationBackend from shibboleth.backends import ShibbolethRemoteUserBackend +from archivematica.dashboard.components.helpers import generate_api_key + class CustomShibbolethRemoteUserBackend(ShibbolethRemoteUserBackend): def configure_user(self, user): diff --git a/src/dashboard/components/accounts/forms.py b/src/archivematica/dashboard/components/accounts/forms.py similarity index 98% rename from src/dashboard/components/accounts/forms.py rename to src/archivematica/dashboard/components/accounts/forms.py index 91ad4072c1..acf48bf15c 100644 --- a/src/dashboard/components/accounts/forms.py +++ b/src/archivematica/dashboard/components/accounts/forms.py @@ -22,7 +22,8 @@ from django.contrib.auth.password_validation import validate_password from django.core.exceptions import ValidationError from django.utils.translation import gettext as _ -from main.models import UserProfile + +from archivematica.dashboard.main.models import UserProfile class UserCreationForm(DjangoUserCreationForm): diff --git a/src/dashboard/components/accounts/signals.py b/src/archivematica/dashboard/components/accounts/signals.py similarity index 97% rename from src/dashboard/components/accounts/signals.py rename to src/archivematica/dashboard/components/accounts/signals.py index 436cb435d5..6443dd2c6a 100644 --- a/src/dashboard/components/accounts/signals.py +++ b/src/archivematica/dashboard/components/accounts/signals.py @@ -1,6 +1,5 @@ import logging -from components.helpers import generate_api_key from django.conf import settings from django.contrib.auth import get_user_model from django.db import transaction @@ -8,6 +7,8 @@ from django_auth_ldap.backend import populate_user from django_cas_ng.signals import cas_user_authenticated +from archivematica.dashboard.components.helpers import generate_api_key + logger = logging.getLogger("archivematica.dashboard") diff --git a/src/dashboard/components/accounts/urls.py b/src/archivematica/dashboard/components/accounts/urls.py similarity index 93% rename from src/dashboard/components/accounts/urls.py rename to src/archivematica/dashboard/components/accounts/urls.py index e9e360fb99..d8f60c22d9 100644 --- a/src/dashboard/components/accounts/urls.py +++ b/src/archivematica/dashboard/components/accounts/urls.py @@ -15,10 +15,11 @@ # You should have received a copy of the GNU General Public License # along with Archivematica. If not, see . import django.contrib.auth.views -from components.accounts import views from django.conf import settings from django.urls import path +from archivematica.dashboard.components.accounts import views + app_name = "accounts" urlpatterns = [ path("", views.list, name="accounts_index"), @@ -38,7 +39,7 @@ ] elif "mozilla_django_oidc" in settings.INSTALLED_APPS: - from components.accounts.views import CustomOIDCLogoutView + from archivematica.dashboard.components.accounts.views import CustomOIDCLogoutView urlpatterns += [ path( diff --git a/src/dashboard/components/accounts/validators.py b/src/archivematica/dashboard/components/accounts/validators.py similarity index 100% rename from src/dashboard/components/accounts/validators.py rename to src/archivematica/dashboard/components/accounts/validators.py diff --git a/src/dashboard/components/accounts/views.py b/src/archivematica/dashboard/components/accounts/views.py similarity index 95% rename from src/dashboard/components/accounts/views.py rename to src/archivematica/dashboard/components/accounts/views.py index 86f33cb66e..16193d2f78 100644 --- a/src/dashboard/components/accounts/views.py +++ b/src/archivematica/dashboard/components/accounts/views.py @@ -16,12 +16,6 @@ # along with Archivematica. If not, see . from urllib.parse import urlencode -import components.decorators as decorators -from components.accounts.forms import ApiKeyForm -from components.accounts.forms import UserChangeForm -from components.accounts.forms import UserCreationForm -from components.accounts.forms import UserProfileForm -from components.helpers import generate_api_key from django.conf import settings from django.contrib import messages from django.contrib.auth.decorators import user_passes_test @@ -34,11 +28,18 @@ from django.shortcuts import render from django.urls import reverse from django.utils.translation import gettext as _ -from main.models import UserProfile from mozilla_django_oidc.views import OIDCAuthenticationRequestView from mozilla_django_oidc.views import OIDCLogoutView from tastypie.models import ApiKey +import archivematica.dashboard.components.decorators as decorators +from archivematica.dashboard.components.accounts.forms import ApiKeyForm +from archivematica.dashboard.components.accounts.forms import UserChangeForm +from archivematica.dashboard.components.accounts.forms import UserCreationForm +from archivematica.dashboard.components.accounts.forms import UserProfileForm +from archivematica.dashboard.components.helpers import generate_api_key +from archivematica.dashboard.main.models import UserProfile + @user_passes_test(lambda u: u.is_superuser, login_url="/forbidden/") def list(request): diff --git a/src/dashboard/components/api/__init__.py b/src/archivematica/dashboard/components/administration/__init__.py similarity index 100% rename from src/dashboard/components/api/__init__.py rename to src/archivematica/dashboard/components/administration/__init__.py diff --git a/src/dashboard/components/administration/apps.py b/src/archivematica/dashboard/components/administration/apps.py similarity index 67% rename from src/dashboard/components/administration/apps.py rename to src/archivematica/dashboard/components/administration/apps.py index 4a3ff61b4c..5b81a3dd14 100644 --- a/src/dashboard/components/administration/apps.py +++ b/src/archivematica/dashboard/components/administration/apps.py @@ -3,4 +3,4 @@ class AdministrationAppConfig(AppConfig): default_auto_field = "django.db.models.AutoField" - name = "components.administration" + name = "archivematica.dashboard.components.administration" diff --git a/src/dashboard/components/administration/forms.py b/src/archivematica/dashboard/components/administration/forms.py similarity index 97% rename from src/dashboard/components/administration/forms.py rename to src/archivematica/dashboard/components/administration/forms.py index 451bdc1e4a..cc135b6242 100644 --- a/src/dashboard/components/administration/forms.py +++ b/src/archivematica/dashboard/components/administration/forms.py @@ -16,18 +16,19 @@ # along with Archivematica. If not, see . import os -from components import helpers -from contrib.mcp.client import MCPClient from django import forms from django.conf import settings from django.forms.widgets import Select from django.forms.widgets import TextInput from django.utils.translation import gettext_lazy as _ -from installer.forms import load_site_url -from installer.forms import site_url_field from lxml import etree -from main.models import Agent -from main.models import TaxonomyTerm + +from archivematica.dashboard.components import helpers +from archivematica.dashboard.contrib.mcp.client import MCPClient +from archivematica.dashboard.installer.forms import load_site_url +from archivematica.dashboard.installer.forms import site_url_field +from archivematica.dashboard.main.models import Agent +from archivematica.dashboard.main.models import TaxonomyTerm class AgentForm(forms.ModelForm): diff --git a/src/dashboard/components/administration/forms_dip_upload.py b/src/archivematica/dashboard/components/administration/forms_dip_upload.py similarity index 100% rename from src/dashboard/components/administration/forms_dip_upload.py rename to src/archivematica/dashboard/components/administration/forms_dip_upload.py diff --git a/src/dashboard/components/administration/migrations/0001_initial.py b/src/archivematica/dashboard/components/administration/migrations/0001_initial.py similarity index 95% rename from src/dashboard/components/administration/migrations/0001_initial.py rename to src/archivematica/dashboard/components/administration/migrations/0001_initial.py index 14abb7364d..aa86a31568 100644 --- a/src/dashboard/components/administration/migrations/0001_initial.py +++ b/src/archivematica/dashboard/components/administration/migrations/0001_initial.py @@ -1,9 +1,10 @@ import uuid -import main.models from django.db import migrations from django.db import models +import archivematica.dashboard.main.models as main_models + class Migration(migrations.Migration): dependencies: list[tuple[str, str]] = [] @@ -14,7 +15,7 @@ class Migration(migrations.Migration): fields=[ ( "id", - main.models.UUIDField( + main_models.UUIDField( primary_key=True, db_column="pk", serialize=False, @@ -53,7 +54,7 @@ class Migration(migrations.Migration): fields=[ ( "id", - main.models.UUIDField( + main_models.UUIDField( primary_key=True, db_column="pk", serialize=False, diff --git a/src/dashboard/components/administration/migrations/0002_archivesspaceconfig.py b/src/archivematica/dashboard/components/administration/migrations/0002_archivesspaceconfig.py similarity index 98% rename from src/dashboard/components/administration/migrations/0002_archivesspaceconfig.py rename to src/archivematica/dashboard/components/administration/migrations/0002_archivesspaceconfig.py index 28427dfa89..8ede3da86c 100644 --- a/src/dashboard/components/administration/migrations/0002_archivesspaceconfig.py +++ b/src/archivematica/dashboard/components/administration/migrations/0002_archivesspaceconfig.py @@ -1,9 +1,10 @@ import uuid -import main.models from django.db import migrations from django.db import models +import archivematica.dashboard.main.models as main_models + def insert_data(apps, schema_editor): # Insert default values into the ArchivesSpaceConfig table. @@ -23,7 +24,7 @@ class Migration(migrations.Migration): fields=[ ( "id", - main.models.UUIDField( + main_models.UUIDField( primary_key=True, db_column="pk", serialize=False, diff --git a/src/dashboard/components/administration/migrations/0003_archivesspace_help_text.py b/src/archivematica/dashboard/components/administration/migrations/0003_archivesspace_help_text.py similarity index 100% rename from src/dashboard/components/administration/migrations/0003_archivesspace_help_text.py rename to src/archivematica/dashboard/components/administration/migrations/0003_archivesspace_help_text.py diff --git a/src/dashboard/components/administration/migrations/0004_archivesspaceconfig_inherit_notes.py b/src/archivematica/dashboard/components/administration/migrations/0004_archivesspaceconfig_inherit_notes.py similarity index 100% rename from src/dashboard/components/administration/migrations/0004_archivesspaceconfig_inherit_notes.py rename to src/archivematica/dashboard/components/administration/migrations/0004_archivesspaceconfig_inherit_notes.py diff --git a/src/dashboard/components/administration/migrations/0005_archivesspace_inherit_note_default.py b/src/archivematica/dashboard/components/administration/migrations/0005_archivesspace_inherit_note_default.py similarity index 100% rename from src/dashboard/components/administration/migrations/0005_archivesspace_inherit_note_default.py rename to src/archivematica/dashboard/components/administration/migrations/0005_archivesspace_inherit_note_default.py diff --git a/src/dashboard/components/administration/migrations/0006_use_statement_optional.py b/src/archivematica/dashboard/components/administration/migrations/0006_use_statement_optional.py similarity index 100% rename from src/dashboard/components/administration/migrations/0006_use_statement_optional.py rename to src/archivematica/dashboard/components/administration/migrations/0006_use_statement_optional.py diff --git a/src/dashboard/components/administration/migrations/0007_delete_unused_models.py b/src/archivematica/dashboard/components/administration/migrations/0007_delete_unused_models.py similarity index 100% rename from src/dashboard/components/administration/migrations/0007_delete_unused_models.py rename to src/archivematica/dashboard/components/administration/migrations/0007_delete_unused_models.py diff --git a/src/dashboard/components/appraisal/__init__.py b/src/archivematica/dashboard/components/administration/migrations/__init__.py similarity index 100% rename from src/dashboard/components/appraisal/__init__.py rename to src/archivematica/dashboard/components/administration/migrations/__init__.py diff --git a/src/dashboard/components/administration/models.py b/src/archivematica/dashboard/components/administration/models.py similarity index 100% rename from src/dashboard/components/administration/models.py rename to src/archivematica/dashboard/components/administration/models.py diff --git a/src/dashboard/components/administration/urls.py b/src/archivematica/dashboard/components/administration/urls.py similarity index 91% rename from src/dashboard/components/administration/urls.py rename to src/archivematica/dashboard/components/administration/urls.py index 9c444278d2..ddb97222f1 100644 --- a/src/dashboard/components/administration/urls.py +++ b/src/archivematica/dashboard/components/administration/urls.py @@ -14,16 +14,19 @@ # # You should have received a copy of the GNU General Public License # along with Archivematica. If not, see . -from components.administration import views -from components.administration import views_dip_upload -from components.administration import views_processing -from components.administration.forms import ProcessingConfigurationForm from django.conf import settings from django.urls import include from django.urls import path from django.urls import re_path from django.views.generic import TemplateView +from archivematica.dashboard.components.administration import views +from archivematica.dashboard.components.administration import views_dip_upload +from archivematica.dashboard.components.administration import views_processing +from archivematica.dashboard.components.administration.forms import ( + ProcessingConfigurationForm, +) + app_name = "administration" urlpatterns = [ path("", views.administration, name="administration_index"), diff --git a/src/dashboard/components/administration/views.py b/src/archivematica/dashboard/components/administration/views.py similarity index 95% rename from src/dashboard/components/administration/views.py rename to src/archivematica/dashboard/components/administration/views.py index e5918f6c1d..29466ce9de 100644 --- a/src/dashboard/components/administration/views.py +++ b/src/archivematica/dashboard/components/administration/views.py @@ -20,16 +20,6 @@ import shutil import subprocess -import components.administration.views_processing as processing_views -import components.decorators as decorators -import components.helpers as helpers -import storageService as storage_service -from components.administration.forms import AgentForm -from components.administration.forms import ChecksumSettingsForm -from components.administration.forms import GeneralSettingsForm -from components.administration.forms import HandleForm -from components.administration.forms import StorageSettingsForm -from components.administration.forms import TaxonomyTermForm from django.conf import settings as django_settings from django.contrib import messages from django.contrib.auth.decorators import user_passes_test @@ -43,10 +33,21 @@ from django.template.defaultfilters import filesizeformat from django.urls import reverse from django.utils.translation import gettext as _ -from installer.steps import setup_pipeline_in_ss -from main import models -from version import get_full_version -from version import get_preservation_system_identifier + +import archivematica.archivematicaCommon.storageService as storage_service +import archivematica.dashboard.components.administration.views_processing as processing_views +import archivematica.dashboard.components.decorators as decorators +import archivematica.dashboard.components.helpers as helpers +from archivematica.archivematicaCommon.version import get_full_version +from archivematica.archivematicaCommon.version import get_preservation_system_identifier +from archivematica.dashboard.components.administration.forms import AgentForm +from archivematica.dashboard.components.administration.forms import ChecksumSettingsForm +from archivematica.dashboard.components.administration.forms import GeneralSettingsForm +from archivematica.dashboard.components.administration.forms import HandleForm +from archivematica.dashboard.components.administration.forms import StorageSettingsForm +from archivematica.dashboard.components.administration.forms import TaxonomyTermForm +from archivematica.dashboard.installer.steps import setup_pipeline_in_ss +from archivematica.dashboard.main import models logger = logging.getLogger("archivematica.dashboard") diff --git a/src/dashboard/components/administration/views_dip_upload.py b/src/archivematica/dashboard/components/administration/views_dip_upload.py similarity index 81% rename from src/dashboard/components/administration/views_dip_upload.py rename to src/archivematica/dashboard/components/administration/views_dip_upload.py index 6596a54ca8..bc55d495f8 100644 --- a/src/dashboard/components/administration/views_dip_upload.py +++ b/src/archivematica/dashboard/components/administration/views_dip_upload.py @@ -1,9 +1,14 @@ -from components.administration.forms_dip_upload import ArchivesSpaceConfigForm -from components.administration.forms_dip_upload import AtomConfigForm from django.contrib import messages from django.shortcuts import render from django.utils.translation import gettext as _ -from main.models import DashboardSetting + +from archivematica.dashboard.components.administration.forms_dip_upload import ( + ArchivesSpaceConfigForm, +) +from archivematica.dashboard.components.administration.forms_dip_upload import ( + AtomConfigForm, +) +from archivematica.dashboard.main.models import DashboardSetting _AS_DICTNAME = "upload-archivesspace_v0.0" _ATOM_DICTNAME = "upload-qubit_v0.0" diff --git a/src/dashboard/components/administration/views_processing.py b/src/archivematica/dashboard/components/administration/views_processing.py similarity index 94% rename from src/dashboard/components/administration/views_processing.py rename to src/archivematica/dashboard/components/administration/views_processing.py index abd23e539d..8c46c5c02c 100644 --- a/src/dashboard/components/administration/views_processing.py +++ b/src/archivematica/dashboard/components/administration/views_processing.py @@ -19,15 +19,17 @@ import re from glob import iglob -from components import helpers from django.contrib import messages from django.http import Http404 from django.shortcuts import redirect from django.shortcuts import render from django.utils.translation import gettext as _ -from processing import install_builtin_config -from .forms import ProcessingConfigurationForm +from archivematica.archivematicaCommon.processing import install_builtin_config +from archivematica.dashboard.components import helpers +from archivematica.dashboard.components.administration.forms import ( + ProcessingConfigurationForm, +) logger = logging.getLogger("archivematica.dashboard") diff --git a/src/dashboard/components/advanced_search.py b/src/archivematica/dashboard/components/advanced_search.py similarity index 100% rename from src/dashboard/components/advanced_search.py rename to src/archivematica/dashboard/components/advanced_search.py diff --git a/src/dashboard/components/archival_storage/__init__.py b/src/archivematica/dashboard/components/api/__init__.py similarity index 100% rename from src/dashboard/components/archival_storage/__init__.py rename to src/archivematica/dashboard/components/api/__init__.py diff --git a/src/dashboard/components/api/urls.py b/src/archivematica/dashboard/components/api/urls.py similarity index 98% rename from src/dashboard/components/api/urls.py rename to src/archivematica/dashboard/components/api/urls.py index f5b5c953d1..ace95cf2b7 100644 --- a/src/dashboard/components/api/urls.py +++ b/src/archivematica/dashboard/components/api/urls.py @@ -14,11 +14,12 @@ # # You should have received a copy of the GNU General Public License # along with Archivematica. If not, see . -from components.api import views from django.conf import settings from django.urls import path from django.urls import re_path +from archivematica.dashboard.components.api import views + app_name = "api" urlpatterns = [ re_path(r"transfer/approve", views.approve_transfer, name="approve_transfer"), diff --git a/src/dashboard/components/api/validators.py b/src/archivematica/dashboard/components/api/validators.py similarity index 100% rename from src/dashboard/components/api/validators.py rename to src/archivematica/dashboard/components/api/validators.py diff --git a/src/dashboard/components/api/views.py b/src/archivematica/dashboard/components/api/views.py similarity index 98% rename from src/dashboard/components/api/views.py rename to src/archivematica/dashboard/components/api/views.py index 24686cd835..3c0edf8ee4 100644 --- a/src/dashboard/components/api/views.py +++ b/src/archivematica/dashboard/components/api/views.py @@ -22,24 +22,26 @@ import uuid from cgi import parse_header -import archivematicaFunctions import django.http -from components import helpers -from components.filesystem_ajax import views as filesystem_ajax_views -from components.unit import views as unit_views -from contrib.mcp.client import MCPClient from django.conf import settings as django_settings from django.core.exceptions import ValidationError from django.db.models import Q from django.views.decorators.csrf import csrf_exempt -from main import models -from processing import install_builtin_config from tastypie.authentication import ApiKeyAuthentication from tastypie.authentication import MultiAuthentication from tastypie.authentication import SessionAuthentication -from version import get_full_version -from . import validators +from archivematica.archivematicaCommon import archivematicaFunctions +from archivematica.archivematicaCommon.processing import install_builtin_config +from archivematica.archivematicaCommon.version import get_full_version +from archivematica.dashboard.components import helpers +from archivematica.dashboard.components.api import validators +from archivematica.dashboard.components.filesystem_ajax import ( + views as filesystem_ajax_views, +) +from archivematica.dashboard.components.unit import views as unit_views +from archivematica.dashboard.contrib.mcp.client import MCPClient +from archivematica.dashboard.main import models LOGGER = logging.getLogger("archivematica.dashboard") SHARED_PATH_TEMPLATE_VAL = "%sharedPath%" diff --git a/src/dashboard/components/backlog/__init__.py b/src/archivematica/dashboard/components/appraisal/__init__.py similarity index 100% rename from src/dashboard/components/backlog/__init__.py rename to src/archivematica/dashboard/components/appraisal/__init__.py diff --git a/src/dashboard/components/appraisal/urls.py b/src/archivematica/dashboard/components/appraisal/urls.py similarity index 65% rename from src/dashboard/components/appraisal/urls.py rename to src/archivematica/dashboard/components/appraisal/urls.py index f9aea1b859..5cfd8789e2 100644 --- a/src/dashboard/components/appraisal/urls.py +++ b/src/archivematica/dashboard/components/appraisal/urls.py @@ -1,5 +1,6 @@ -from components.appraisal import views from django.urls import path +from archivematica.dashboard.components.appraisal import views + app_name = "appraisal" urlpatterns = [path("", views.appraisal, name="appraisal_index")] diff --git a/src/dashboard/components/appraisal/views.py b/src/archivematica/dashboard/components/appraisal/views.py similarity index 100% rename from src/dashboard/components/appraisal/views.py rename to src/archivematica/dashboard/components/appraisal/views.py diff --git a/src/dashboard/components/file/__init__.py b/src/archivematica/dashboard/components/archival_storage/__init__.py similarity index 100% rename from src/dashboard/components/file/__init__.py rename to src/archivematica/dashboard/components/archival_storage/__init__.py diff --git a/src/dashboard/components/archival_storage/atom.py b/src/archivematica/dashboard/components/archival_storage/atom.py similarity index 96% rename from src/dashboard/components/archival_storage/atom.py rename to src/archivematica/dashboard/components/archival_storage/atom.py index d5f8dbcca2..95e3111354 100644 --- a/src/dashboard/components/archival_storage/atom.py +++ b/src/archivematica/dashboard/components/archival_storage/atom.py @@ -22,9 +22,10 @@ from agentarchives.atom.client import AtomClient from agentarchives.atom.client import AtomError from agentarchives.atom.client import CommunicationError -from main.models import DashboardSetting from metsrw import METSDocument -from storageService import extract_file + +from archivematica.archivematicaCommon.storageService import extract_file +from archivematica.dashboard.main.models import DashboardSetting logger = logging.getLogger("archivematica.dashboard") diff --git a/src/dashboard/components/archival_storage/forms.py b/src/archivematica/dashboard/components/archival_storage/forms.py similarity index 96% rename from src/dashboard/components/archival_storage/forms.py rename to src/archivematica/dashboard/components/archival_storage/forms.py index baeb8111cd..93fe598847 100644 --- a/src/dashboard/components/archival_storage/forms.py +++ b/src/archivematica/dashboard/components/archival_storage/forms.py @@ -17,13 +17,14 @@ import pathlib from agentarchives.atom.client import CommunicationError -from components import helpers -from components.archival_storage.atom import get_atom_client from django import forms from django.utils.translation import gettext as _ from requests import ConnectionError from requests import Timeout +from archivematica.dashboard.components import helpers +from archivematica.dashboard.components.archival_storage.atom import get_atom_client + class CreateAICForm(forms.Form): results = forms.CharField( diff --git a/src/dashboard/components/archival_storage/urls.py b/src/archivematica/dashboard/components/archival_storage/urls.py similarity index 96% rename from src/dashboard/components/archival_storage/urls.py rename to src/archivematica/dashboard/components/archival_storage/urls.py index 41c95c808a..13b4882659 100644 --- a/src/dashboard/components/archival_storage/urls.py +++ b/src/archivematica/dashboard/components/archival_storage/urls.py @@ -14,11 +14,12 @@ # # You should have received a copy of the GNU General Public License # along with Archivematica. If not, see . -from components.archival_storage import views from django.conf import settings from django.urls import path from django.urls import re_path +from archivematica.dashboard.components.archival_storage import views + app_name = "archival_storage" urlpatterns = [ re_path( diff --git a/src/dashboard/components/archival_storage/views.py b/src/archivematica/dashboard/components/archival_storage/views.py similarity index 97% rename from src/dashboard/components/archival_storage/views.py rename to src/archivematica/dashboard/components/archival_storage/views.py index 8a41e6d2b6..3d0b3ff746 100644 --- a/src/dashboard/components/archival_storage/views.py +++ b/src/archivematica/dashboard/components/archival_storage/views.py @@ -22,16 +22,6 @@ from collections import OrderedDict from datetime import datetime -import databaseFunctions -import elasticSearchFunctions as es -import storageService as storage_service -from archivematicaFunctions import AMCLIENT_ERROR_CODES -from archivematicaFunctions import setup_amclient -from components import advanced_search -from components import helpers -from components.archival_storage import forms -from components.archival_storage.atom import AtomMetadataUploadError -from components.archival_storage.atom import upload_dip_metadata_to_atom from django.conf import settings from django.contrib import messages from django.http import Http404 @@ -45,6 +35,23 @@ from django.utils.translation import gettext as _ from elasticsearch import ElasticsearchException +from archivematica.archivematicaCommon import databaseFunctions +from archivematica.archivematicaCommon import elasticSearchFunctions as es +from archivematica.archivematicaCommon import storageService as storage_service +from archivematica.archivematicaCommon.archivematicaFunctions import ( + AMCLIENT_ERROR_CODES, +) +from archivematica.archivematicaCommon.archivematicaFunctions import setup_amclient +from archivematica.dashboard.components import advanced_search +from archivematica.dashboard.components import helpers +from archivematica.dashboard.components.archival_storage import forms +from archivematica.dashboard.components.archival_storage.atom import ( + AtomMetadataUploadError, +) +from archivematica.dashboard.components.archival_storage.atom import ( + upload_dip_metadata_to_atom, +) + logger = logging.getLogger("archivematica.dashboard") AIPSTOREPATH = "/var/archivematica/sharedDirectory/www/AIPsStore" diff --git a/src/dashboard/components/filesystem_ajax/__init__.py b/src/archivematica/dashboard/components/backlog/__init__.py similarity index 100% rename from src/dashboard/components/filesystem_ajax/__init__.py rename to src/archivematica/dashboard/components/backlog/__init__.py diff --git a/src/dashboard/components/backlog/urls.py b/src/archivematica/dashboard/components/backlog/urls.py similarity index 95% rename from src/dashboard/components/backlog/urls.py rename to src/archivematica/dashboard/components/backlog/urls.py index a5ef37e8e7..b483a5289e 100644 --- a/src/dashboard/components/backlog/urls.py +++ b/src/archivematica/dashboard/components/backlog/urls.py @@ -14,11 +14,12 @@ # # You should have received a copy of the GNU General Public License # along with Archivematica. If not, see . -from components.backlog import views from django.conf import settings from django.urls import path from django.urls import re_path +from archivematica.dashboard.components.backlog import views + app_name = "backlog" urlpatterns = [ path("", views.execute, name="backlog_index"), diff --git a/src/dashboard/components/backlog/views.py b/src/archivematica/dashboard/components/backlog/views.py similarity index 95% rename from src/dashboard/components/backlog/views.py rename to src/archivematica/dashboard/components/backlog/views.py index 0b2ecdf2fe..a16b06492a 100644 --- a/src/dashboard/components/backlog/views.py +++ b/src/archivematica/dashboard/components/backlog/views.py @@ -17,14 +17,7 @@ import json import logging -import elasticSearchFunctions as es import requests -import storageService as storage_service -from archivematicaFunctions import AMCLIENT_ERROR_CODES -from archivematicaFunctions import setup_amclient -from components import advanced_search -from components import decorators -from components import helpers from django.conf import settings from django.contrib import messages from django.http import Http404 @@ -35,6 +28,16 @@ from django.urls import reverse from django.utils.translation import gettext as _ +from archivematica.archivematicaCommon import elasticSearchFunctions as es +from archivematica.archivematicaCommon import storageService as storage_service +from archivematica.archivematicaCommon.archivematicaFunctions import ( + AMCLIENT_ERROR_CODES, +) +from archivematica.archivematicaCommon.archivematicaFunctions import setup_amclient +from archivematica.dashboard.components import advanced_search +from archivematica.dashboard.components import decorators +from archivematica.dashboard.components import helpers + logger = logging.getLogger("archivematica.dashboard") diff --git a/src/dashboard/components/decorators.py b/src/archivematica/dashboard/components/decorators.py similarity index 97% rename from src/dashboard/components/decorators.py rename to src/archivematica/dashboard/components/decorators.py index 0c74bf6b48..1e2eceb69a 100644 --- a/src/dashboard/components/decorators.py +++ b/src/archivematica/dashboard/components/decorators.py @@ -17,7 +17,8 @@ from django.http import Http404 from django.shortcuts import render from django.utils.functional import wraps -from main import models + +from archivematica.dashboard.main import models # Try to update context instead of sending new params diff --git a/src/dashboard/components/ingest/__init__.py b/src/archivematica/dashboard/components/file/__init__.py similarity index 100% rename from src/dashboard/components/ingest/__init__.py rename to src/archivematica/dashboard/components/file/__init__.py diff --git a/src/dashboard/components/file/urls.py b/src/archivematica/dashboard/components/file/urls.py similarity index 90% rename from src/dashboard/components/file/urls.py rename to src/archivematica/dashboard/components/file/urls.py index 2829d70ddf..d964af16e2 100644 --- a/src/dashboard/components/file/urls.py +++ b/src/archivematica/dashboard/components/file/urls.py @@ -1,7 +1,8 @@ -from components.file import views from django.conf import settings from django.urls import re_path +from archivematica.dashboard.components.file import views + app_name = "file" urlpatterns = [ re_path( diff --git a/src/dashboard/components/file/views.py b/src/archivematica/dashboard/components/file/views.py similarity index 96% rename from src/dashboard/components/file/views.py rename to src/archivematica/dashboard/components/file/views.py index 7eadd86dfc..443f85c2a0 100644 --- a/src/dashboard/components/file/views.py +++ b/src/archivematica/dashboard/components/file/views.py @@ -2,13 +2,14 @@ import logging import os -import elasticSearchFunctions import requests -import storageService as storage_service -from components import helpers from django.conf import settings as django_settings from django.views.generic import View -from main import models + +from archivematica.archivematicaCommon import elasticSearchFunctions +from archivematica.archivematicaCommon import storageService as storage_service +from archivematica.dashboard.components import helpers +from archivematica.dashboard.main import models logger = logging.getLogger("archivematica.dashboard") diff --git a/src/dashboard/components/mcp/__init__.py b/src/archivematica/dashboard/components/filesystem_ajax/__init__.py similarity index 100% rename from src/dashboard/components/mcp/__init__.py rename to src/archivematica/dashboard/components/filesystem_ajax/__init__.py diff --git a/src/dashboard/components/filesystem_ajax/helpers.py b/src/archivematica/dashboard/components/filesystem_ajax/helpers.py similarity index 94% rename from src/dashboard/components/filesystem_ajax/helpers.py rename to src/archivematica/dashboard/components/filesystem_ajax/helpers.py index 6a6d33a708..aea98ad0d1 100644 --- a/src/dashboard/components/filesystem_ajax/helpers.py +++ b/src/archivematica/dashboard/components/filesystem_ajax/helpers.py @@ -17,8 +17,8 @@ import logging import os -from archivematicaFunctions import b64encode_string -from components import helpers +from archivematica.archivematicaCommon.archivematicaFunctions import b64encode_string +from archivematica.dashboard.components import helpers logger = logging.getLogger("archivematica.dashboard") diff --git a/src/dashboard/components/filesystem_ajax/urls.py b/src/archivematica/dashboard/components/filesystem_ajax/urls.py similarity index 96% rename from src/dashboard/components/filesystem_ajax/urls.py rename to src/archivematica/dashboard/components/filesystem_ajax/urls.py index 5ca1ae0583..3b1261d2a1 100644 --- a/src/dashboard/components/filesystem_ajax/urls.py +++ b/src/archivematica/dashboard/components/filesystem_ajax/urls.py @@ -14,11 +14,12 @@ # # You should have received a copy of the GNU General Public License # along with Archivematica. If not, see . -from components.filesystem_ajax import views from django.conf import settings from django.urls import path from django.urls import re_path +from archivematica.dashboard.components.filesystem_ajax import views + app_name = "filesystem_ajax" urlpatterns = [ path("download_ss/", views.download_ss), diff --git a/src/dashboard/components/filesystem_ajax/views.py b/src/archivematica/dashboard/components/filesystem_ajax/views.py similarity index 98% rename from src/dashboard/components/filesystem_ajax/views.py rename to src/archivematica/dashboard/components/filesystem_ajax/views.py index 20acde5de0..99edf8794c 100644 --- a/src/dashboard/components/filesystem_ajax/views.py +++ b/src/archivematica/dashboard/components/filesystem_ajax/views.py @@ -22,20 +22,21 @@ import tempfile import uuid -import archivematicaFunctions -import components.filesystem_ajax.helpers as filesystem_ajax_helpers -import databaseFunctions import django.http import django.template.defaultfilters -import elasticSearchFunctions -import storageService as storage_service -from archivematicaFunctions import b64decode_string -from archivematicaFunctions import b64encode_string -from components import helpers from django.conf import settings as django_settings from django.utils.translation import gettext as _ from django.utils.translation import ngettext -from main import models + +import archivematica.dashboard.components.filesystem_ajax.helpers as filesystem_ajax_helpers +from archivematica.archivematicaCommon import archivematicaFunctions +from archivematica.archivematicaCommon import databaseFunctions +from archivematica.archivematicaCommon import elasticSearchFunctions +from archivematica.archivematicaCommon import storageService as storage_service +from archivematica.archivematicaCommon.archivematicaFunctions import b64decode_string +from archivematica.archivematicaCommon.archivematicaFunctions import b64encode_string +from archivematica.dashboard.components import helpers +from archivematica.dashboard.main import models logger = logging.getLogger("archivematica.dashboard") diff --git a/src/dashboard/components/helpers.py b/src/archivematica/dashboard/components/helpers.py similarity index 99% rename from src/dashboard/components/helpers.py rename to src/archivematica/dashboard/components/helpers.py index 8404bbd740..a0e505097a 100644 --- a/src/dashboard/components/helpers.py +++ b/src/archivematica/dashboard/components/helpers.py @@ -38,9 +38,10 @@ from django.urls import reverse from django.utils.dateformat import format from django.utils.translation import gettext as _ -from main import models from tastypie.models import ApiKey +from archivematica.dashboard.main import models + logger = logging.getLogger("archivematica.dashboard") diff --git a/src/dashboard/components/rights/__init__.py b/src/archivematica/dashboard/components/ingest/__init__.py similarity index 100% rename from src/dashboard/components/rights/__init__.py rename to src/archivematica/dashboard/components/ingest/__init__.py diff --git a/src/dashboard/components/ingest/forms.py b/src/archivematica/dashboard/components/ingest/forms.py similarity index 98% rename from src/dashboard/components/ingest/forms.py rename to src/archivematica/dashboard/components/ingest/forms.py index d6832f2d3d..554cf2cec2 100644 --- a/src/dashboard/components/ingest/forms.py +++ b/src/archivematica/dashboard/components/ingest/forms.py @@ -16,7 +16,8 @@ # along with Archivematica. If not, see . from django import forms from django.conf import settings -from main import models + +from archivematica.dashboard.main import models class DublinCoreMetadataForm(forms.ModelForm): diff --git a/src/dashboard/components/ingest/pair_matcher.py b/src/archivematica/dashboard/components/ingest/pair_matcher.py similarity index 98% rename from src/dashboard/components/ingest/pair_matcher.py rename to src/archivematica/dashboard/components/ingest/pair_matcher.py index c6b25b8fc3..a3d032e0bc 100644 --- a/src/dashboard/components/ingest/pair_matcher.py +++ b/src/archivematica/dashboard/components/ingest/pair_matcher.py @@ -2,7 +2,6 @@ import os import xml.etree.ElementTree as ElementTree -from components import helpers from django.conf import settings as django_settings from django.http import Http404 from django.http import HttpResponse @@ -10,7 +9,9 @@ from django.shortcuts import render from django.urls import reverse from lazy_paged_sequence import LazyPagedSequence -from main import models + +from archivematica.dashboard.components import helpers +from archivematica.dashboard.main import models PAGE_SIZE = 30 diff --git a/src/dashboard/components/ingest/urls.py b/src/archivematica/dashboard/components/ingest/urls.py similarity index 97% rename from src/dashboard/components/ingest/urls.py rename to src/archivematica/dashboard/components/ingest/urls.py index 95ec61d23a..e1d2830f80 100644 --- a/src/dashboard/components/ingest/urls.py +++ b/src/archivematica/dashboard/components/ingest/urls.py @@ -14,12 +14,13 @@ # # You should have received a copy of the GNU General Public License # along with Archivematica. If not, see . -from components.ingest import views -from components.ingest import views_as from django.conf import settings from django.urls import path from django.urls import re_path +from archivematica.dashboard.components.ingest import views +from archivematica.dashboard.components.ingest import views_as + app_name = "ingest" urlpatterns = [ path("", views.ingest_grid, name="ingest_index"), diff --git a/src/dashboard/components/ingest/views.py b/src/archivematica/dashboard/components/ingest/views.py similarity index 96% rename from src/dashboard/components/ingest/views.py rename to src/archivematica/dashboard/components/ingest/views.py index 4627558c49..59ab46557d 100644 --- a/src/dashboard/components/ingest/views.py +++ b/src/archivematica/dashboard/components/ingest/views.py @@ -22,16 +22,7 @@ import uuid from urllib.parse import urljoin -import elasticSearchFunctions import requests -import storageService as storage_service -from archivematicaFunctions import b64encode_string -from components import advanced_search -from components import decorators -from components import helpers -from components.ingest import forms as ingest_forms -from components.ingest.views_NormalizationReport import getNormalizationReportQuery -from contrib.mcp.client import MCPClient from django.conf import settings as django_settings from django.contrib import messages from django.core.exceptions import ValidationError @@ -45,8 +36,20 @@ from django.utils.text import slugify from django.utils.translation import gettext as _ from django.views.generic import View -from main import forms -from main import models + +from archivematica.archivematicaCommon import elasticSearchFunctions +from archivematica.archivematicaCommon import storageService as storage_service +from archivematica.archivematicaCommon.archivematicaFunctions import b64encode_string +from archivematica.dashboard.components import advanced_search +from archivematica.dashboard.components import decorators +from archivematica.dashboard.components import helpers +from archivematica.dashboard.components.ingest import forms as ingest_forms +from archivematica.dashboard.components.ingest.views_NormalizationReport import ( + getNormalizationReportQuery, +) +from archivematica.dashboard.contrib.mcp.client import MCPClient +from archivematica.dashboard.main import forms +from archivematica.dashboard.main import models logger = logging.getLogger("archivematica.dashboard") diff --git a/src/dashboard/components/ingest/views_NormalizationReport.py b/src/archivematica/dashboard/components/ingest/views_NormalizationReport.py similarity index 98% rename from src/dashboard/components/ingest/views_NormalizationReport.py rename to src/archivematica/dashboard/components/ingest/views_NormalizationReport.py index c170a2355a..0ef340a0de 100755 --- a/src/dashboard/components/ingest/views_NormalizationReport.py +++ b/src/archivematica/dashboard/components/ingest/views_NormalizationReport.py @@ -16,9 +16,10 @@ # # You should have received a copy of the GNU General Public License # along with Archivematica. If not, see . -from components import helpers from django.db import connection +from archivematica.dashboard.components import helpers + def getNormalizationReportQuery(sipUUID, idsRestriction=""): if idsRestriction: diff --git a/src/dashboard/components/ingest/views_as.py b/src/archivematica/dashboard/components/ingest/views_as.py similarity index 97% rename from src/dashboard/components/ingest/views_as.py rename to src/archivematica/dashboard/components/ingest/views_as.py index d2983eb5e4..3b88c8f4ff 100644 --- a/src/dashboard/components/ingest/views_as.py +++ b/src/archivematica/dashboard/components/ingest/views_as.py @@ -6,9 +6,6 @@ from agentarchives.archivesspace import ArchivesSpaceError from agentarchives.archivesspace import AuthenticationError from agentarchives.archivesspace import ConnectionError -from components import advanced_search -from components.ingest import pair_matcher -from contrib.mcp.client import MCPClient from django.contrib import messages from django.http import HttpResponse from django.http import HttpResponseBadRequest @@ -16,7 +13,11 @@ from django.http import HttpResponseServerError from django.urls import reverse from django.utils.translation import gettext as _ -from main import models + +from archivematica.dashboard.components import advanced_search +from archivematica.dashboard.components.ingest import pair_matcher +from archivematica.dashboard.contrib.mcp.client import MCPClient +from archivematica.dashboard.main import models logger = logging.getLogger("archivematica.dashboard") diff --git a/src/dashboard/components/transfer/__init__.py b/src/archivematica/dashboard/components/mcp/__init__.py similarity index 100% rename from src/dashboard/components/transfer/__init__.py rename to src/archivematica/dashboard/components/mcp/__init__.py diff --git a/src/dashboard/components/mcp/urls.py b/src/archivematica/dashboard/components/mcp/urls.py similarity index 94% rename from src/dashboard/components/mcp/urls.py rename to src/archivematica/dashboard/components/mcp/urls.py index 78dd73a717..f099b05ac0 100644 --- a/src/dashboard/components/mcp/urls.py +++ b/src/archivematica/dashboard/components/mcp/urls.py @@ -14,9 +14,10 @@ # # You should have received a copy of the GNU General Public License # along with Archivematica. If not, see . -from components.mcp import views from django.urls import path +from archivematica.dashboard.components.mcp import views + app_name = "mcp" urlpatterns = [ path("execute/", views.execute, name="execute"), diff --git a/src/dashboard/components/mcp/views.py b/src/archivematica/dashboard/components/mcp/views.py similarity index 95% rename from src/dashboard/components/mcp/views.py rename to src/archivematica/dashboard/components/mcp/views.py index a60373d304..0c75c6fc33 100644 --- a/src/dashboard/components/mcp/views.py +++ b/src/archivematica/dashboard/components/mcp/views.py @@ -14,10 +14,11 @@ # # You should have received a copy of the GNU General Public License # along with Archivematica. If not, see . -from contrib.mcp.client import MCPClient from django.http import HttpResponse from lxml import etree +from archivematica.dashboard.contrib.mcp.client import MCPClient + def execute(request): result = "" diff --git a/src/dashboard/components/unit/__init__.py b/src/archivematica/dashboard/components/rights/__init__.py similarity index 100% rename from src/dashboard/components/unit/__init__.py rename to src/archivematica/dashboard/components/rights/__init__.py diff --git a/src/dashboard/components/rights/forms.py b/src/archivematica/dashboard/components/rights/forms.py similarity index 99% rename from src/dashboard/components/rights/forms.py rename to src/archivematica/dashboard/components/rights/forms.py index b474b80be7..a2ce699fa3 100644 --- a/src/dashboard/components/rights/forms.py +++ b/src/archivematica/dashboard/components/rights/forms.py @@ -17,7 +17,8 @@ from django import forms from django.conf import settings from django.utils.translation import gettext as _ -from main import models + +from archivematica.dashboard.main import models class RightsForm(forms.ModelForm): diff --git a/src/dashboard/components/rights/ingest_urls.py b/src/archivematica/dashboard/components/rights/ingest_urls.py similarity index 95% rename from src/dashboard/components/rights/ingest_urls.py rename to src/archivematica/dashboard/components/rights/ingest_urls.py index d1715e96ed..4eb92280c8 100644 --- a/src/dashboard/components/rights/ingest_urls.py +++ b/src/archivematica/dashboard/components/rights/ingest_urls.py @@ -14,9 +14,10 @@ # # You should have received a copy of the GNU General Public License # along with Archivematica. If not, see . -from components.rights import views from django.urls import path +from archivematica.dashboard.components.rights import views + app_name = "rights_ingest" urlpatterns = [ path("", views.ingest_rights_list, name="index"), diff --git a/src/dashboard/components/rights/load.py b/src/archivematica/dashboard/components/rights/load.py similarity index 95% rename from src/dashboard/components/rights/load.py rename to src/archivematica/dashboard/components/rights/load.py index 9265f635fa..f82f42bf95 100644 --- a/src/dashboard/components/rights/load.py +++ b/src/archivematica/dashboard/components/rights/load.py @@ -7,16 +7,18 @@ ``premisrw``. """ -from components.helpers import get_metadata_type_id_by_description -from main.models import SIP -from main.models import File -from main.models import RightsStatement -from main.models import RightsStatementCopyright -from main.models import RightsStatementLicense -from main.models import RightsStatementOtherRightsInformation -from main.models import RightsStatementRightsGranted -from main.models import RightsStatementStatuteInformation -from main.models import Transfer +from archivematica.dashboard.components.helpers import ( + get_metadata_type_id_by_description, +) +from archivematica.dashboard.main.models import SIP +from archivematica.dashboard.main.models import File +from archivematica.dashboard.main.models import RightsStatement +from archivematica.dashboard.main.models import RightsStatementCopyright +from archivematica.dashboard.main.models import RightsStatementLicense +from archivematica.dashboard.main.models import RightsStatementOtherRightsInformation +from archivematica.dashboard.main.models import RightsStatementRightsGranted +from archivematica.dashboard.main.models import RightsStatementStatuteInformation +from archivematica.dashboard.main.models import Transfer def load_rights(obj, rights): diff --git a/src/dashboard/components/rights/transfer_urls.py b/src/archivematica/dashboard/components/rights/transfer_urls.py similarity index 95% rename from src/dashboard/components/rights/transfer_urls.py rename to src/archivematica/dashboard/components/rights/transfer_urls.py index dfed6f5c1e..5e3d434464 100644 --- a/src/dashboard/components/rights/transfer_urls.py +++ b/src/archivematica/dashboard/components/rights/transfer_urls.py @@ -14,9 +14,10 @@ # # You should have received a copy of the GNU General Public License # along with Archivematica. If not, see . -from components.rights import views from django.urls import path +from archivematica.dashboard.components.rights import views + app_name = "rights_transfer" urlpatterns = [ path("", views.transfer_rights_list, name="index"), diff --git a/src/dashboard/components/rights/views.py b/src/archivematica/dashboard/components/rights/views.py similarity index 99% rename from src/dashboard/components/rights/views.py rename to src/archivematica/dashboard/components/rights/views.py index 6e28b0f9af..490b18bce0 100644 --- a/src/dashboard/components/rights/views.py +++ b/src/archivematica/dashboard/components/rights/views.py @@ -17,16 +17,17 @@ import logging import re -from components import decorators -from components import helpers -from components.rights import forms from django.forms.models import inlineformset_factory from django.http import HttpResponse from django.shortcuts import redirect from django.shortcuts import render from django.urls import reverse from django.utils.translation import gettext as _ -from main import models + +from archivematica.dashboard.components import decorators +from archivematica.dashboard.components import helpers +from archivematica.dashboard.components.rights import forms +from archivematica.dashboard.main import models LOGGER = logging.getLogger("archivematica.dashboard") diff --git a/src/dashboard/contrib/__init__.py b/src/archivematica/dashboard/components/transfer/__init__.py similarity index 100% rename from src/dashboard/contrib/__init__.py rename to src/archivematica/dashboard/components/transfer/__init__.py diff --git a/src/dashboard/components/transfer/urls.py b/src/archivematica/dashboard/components/transfer/urls.py similarity index 97% rename from src/dashboard/components/transfer/urls.py rename to src/archivematica/dashboard/components/transfer/urls.py index 0417cb7c34..eacc4c6e76 100644 --- a/src/dashboard/components/transfer/urls.py +++ b/src/archivematica/dashboard/components/transfer/urls.py @@ -14,11 +14,12 @@ # # You should have received a copy of the GNU General Public License # along with Archivematica. If not, see . -from components.transfer import views from django.conf import settings from django.urls import path from django.urls import re_path +from archivematica.dashboard.components.transfer import views + app_name = "transfer" urlpatterns = [ path("", views.grid, name="transfer_index"), diff --git a/src/dashboard/components/transfer/views.py b/src/archivematica/dashboard/components/transfer/views.py similarity index 95% rename from src/dashboard/components/transfer/views.py rename to src/archivematica/dashboard/components/transfer/views.py index 2909858438..3be65a1f34 100644 --- a/src/dashboard/components/transfer/views.py +++ b/src/archivematica/dashboard/components/transfer/views.py @@ -18,18 +18,19 @@ import logging from uuid import uuid4 -import components.decorators as decorators -import storageService as storage_service -from components import helpers -from components.ingest.forms import DublinCoreMetadataForm -from contrib.mcp.client import MCPClient from django.conf import settings as django_settings from django.core.exceptions import ValidationError from django.http import HttpResponse from django.shortcuts import redirect from django.shortcuts import render from django.utils.translation import gettext as _ -from main import models + +import archivematica.dashboard.components.decorators as decorators +from archivematica.archivematicaCommon import storageService as storage_service +from archivematica.dashboard.components import helpers +from archivematica.dashboard.components.ingest.forms import DublinCoreMetadataForm +from archivematica.dashboard.contrib.mcp.client import MCPClient +from archivematica.dashboard.main import models logger = logging.getLogger("archivematica.dashboard") diff --git a/src/dashboard/contrib/mcp/__init__.py b/src/archivematica/dashboard/components/unit/__init__.py similarity index 100% rename from src/dashboard/contrib/mcp/__init__.py rename to src/archivematica/dashboard/components/unit/__init__.py diff --git a/src/dashboard/components/unit/urls.py b/src/archivematica/dashboard/components/unit/urls.py similarity index 96% rename from src/dashboard/components/unit/urls.py rename to src/archivematica/dashboard/components/unit/urls.py index 3a88d62102..1350b28347 100644 --- a/src/dashboard/components/unit/urls.py +++ b/src/archivematica/dashboard/components/unit/urls.py @@ -14,11 +14,12 @@ # # You should have received a copy of the GNU General Public License # along with Archivematica. If not, see . -from components.unit import views from django.conf import settings from django.urls import path from django.urls import re_path +from archivematica.dashboard.components.unit import views + app_name = "unit" # The first segment of these urls is '^(?Ptransfer|ingest)/' # All views should expect a first parameter of unit_type, with a value of 'transfer' or 'ingest' diff --git a/src/dashboard/components/unit/views.py b/src/archivematica/dashboard/components/unit/views.py similarity index 96% rename from src/dashboard/components/unit/views.py rename to src/archivematica/dashboard/components/unit/views.py index 20b1fb001a..f954c09bc1 100644 --- a/src/dashboard/components/unit/views.py +++ b/src/archivematica/dashboard/components/unit/views.py @@ -17,10 +17,11 @@ import logging import django.http -from components import helpers -from contrib.mcp.client import MCPClient from django.shortcuts import render -from main import models + +from archivematica.dashboard.components import helpers +from archivematica.dashboard.contrib.mcp.client import MCPClient +from archivematica.dashboard.main import models LOGGER = logging.getLogger("archivematica.dashboard") diff --git a/src/dashboard/fpr/management/__init__.py b/src/archivematica/dashboard/contrib/__init__.py similarity index 100% rename from src/dashboard/fpr/management/__init__.py rename to src/archivematica/dashboard/contrib/__init__.py diff --git a/src/dashboard/fpr/management/commands/__init__.py b/src/archivematica/dashboard/contrib/mcp/__init__.py similarity index 100% rename from src/dashboard/fpr/management/commands/__init__.py rename to src/archivematica/dashboard/contrib/mcp/__init__.py diff --git a/src/dashboard/contrib/mcp/client.py b/src/archivematica/dashboard/contrib/mcp/client.py similarity index 98% rename from src/dashboard/contrib/mcp/client.py rename to src/archivematica/dashboard/contrib/mcp/client.py index f27d924358..13f5a20d6a 100644 --- a/src/dashboard/contrib/mcp/client.py +++ b/src/archivematica/dashboard/contrib/mcp/client.py @@ -19,8 +19,9 @@ import gearman from django.conf import settings from django.utils.translation import get_language -from gearman_encoder import JSONDataEncoder -from main.models import Job + +from archivematica.archivematicaCommon.gearman_encoder import JSONDataEncoder +from archivematica.dashboard.main.models import Job LOGGER = logging.getLogger("archivematica.dashboard.mcp.client") diff --git a/src/dashboard/fpr/__init__.py b/src/archivematica/dashboard/fpr/__init__.py similarity index 100% rename from src/dashboard/fpr/__init__.py rename to src/archivematica/dashboard/fpr/__init__.py diff --git a/src/dashboard/fpr/apps.py b/src/archivematica/dashboard/fpr/apps.py similarity index 74% rename from src/dashboard/fpr/apps.py rename to src/archivematica/dashboard/fpr/apps.py index 6c9ada111d..3ffe44e282 100644 --- a/src/dashboard/fpr/apps.py +++ b/src/archivematica/dashboard/fpr/apps.py @@ -3,4 +3,4 @@ class FPRAppConfig(AppConfig): default_auto_field = "django.db.models.AutoField" - name = "fpr" + name = "archivematica.dashboard.fpr" diff --git a/src/dashboard/fpr/forms.py b/src/archivematica/dashboard/fpr/forms.py similarity index 99% rename from src/dashboard/fpr/forms.py rename to src/archivematica/dashboard/fpr/forms.py index 1d39ff1713..350b30bf57 100644 --- a/src/dashboard/fpr/forms.py +++ b/src/archivematica/dashboard/fpr/forms.py @@ -1,6 +1,7 @@ from django import forms from django.utils.translation import gettext_lazy as _ -from fpr import models as fprmodels + +from archivematica.dashboard.fpr import models as fprmodels # ########## FORMATS ############ diff --git a/src/dashboard/fpr/helpers.py b/src/archivematica/dashboard/fpr/helpers.py similarity index 100% rename from src/dashboard/fpr/helpers.py rename to src/archivematica/dashboard/fpr/helpers.py diff --git a/src/dashboard/fpr/migrations/__init__.py b/src/archivematica/dashboard/fpr/management/__init__.py similarity index 100% rename from src/dashboard/fpr/migrations/__init__.py rename to src/archivematica/dashboard/fpr/management/__init__.py diff --git a/src/dashboard/fpr/templatetags/__init__.py b/src/archivematica/dashboard/fpr/management/commands/__init__.py similarity index 100% rename from src/dashboard/fpr/templatetags/__init__.py rename to src/archivematica/dashboard/fpr/management/commands/__init__.py diff --git a/src/dashboard/fpr/management/commands/get_fpr_changes.py b/src/archivematica/dashboard/fpr/management/commands/get_fpr_changes.py similarity index 100% rename from src/dashboard/fpr/management/commands/get_fpr_changes.py rename to src/archivematica/dashboard/fpr/management/commands/get_fpr_changes.py diff --git a/src/dashboard/fpr/management/commands/import_pronom_ids.py b/src/archivematica/dashboard/fpr/management/commands/import_pronom_ids.py similarity index 96% rename from src/dashboard/fpr/management/commands/import_pronom_ids.py rename to src/archivematica/dashboard/fpr/management/commands/import_pronom_ids.py index 1e5537ead5..8347e60560 100644 --- a/src/dashboard/fpr/management/commands/import_pronom_ids.py +++ b/src/archivematica/dashboard/fpr/management/commands/import_pronom_ids.py @@ -4,13 +4,14 @@ from django.core.management.base import BaseCommand from django.db import connection -from fpr.models import Format -from fpr.models import FormatGroup -from fpr.models import FormatVersion -from fpr.models import IDCommand -from fpr.models import IDRule from lxml import etree +from archivematica.dashboard.fpr.models import Format +from archivematica.dashboard.fpr.models import FormatGroup +from archivematica.dashboard.fpr.models import FormatVersion +from archivematica.dashboard.fpr.models import IDCommand +from archivematica.dashboard.fpr.models import IDRule + # Introduced in fpr/migrations/0035_python3_compatibility.py FILE_BY_EXTENSION_CMD_UUID = "8546b624-7894-4201-8df6-f239d5e0d5ba" diff --git a/src/dashboard/fpr/migrations-data/mc_validate_cmd.py b/src/archivematica/dashboard/fpr/migrations-data/mc_validate_cmd.py similarity index 100% rename from src/dashboard/fpr/migrations-data/mc_validate_cmd.py rename to src/archivematica/dashboard/fpr/migrations-data/mc_validate_cmd.py diff --git a/src/dashboard/fpr/migrations/0001_initial.py b/src/archivematica/dashboard/fpr/migrations/0001_initial.py similarity index 98% rename from src/dashboard/fpr/migrations/0001_initial.py rename to src/archivematica/dashboard/fpr/migrations/0001_initial.py index 40823113c2..856d6a2862 100644 --- a/src/dashboard/fpr/migrations/0001_initial.py +++ b/src/archivematica/dashboard/fpr/migrations/0001_initial.py @@ -1,10 +1,11 @@ import uuid import autoslug.fields -import main.models from django.db import migrations from django.db import models +import archivematica.dashboard.main.models as main_models + class Migration(migrations.Migration): dependencies: list[tuple[str, str]] = [] @@ -272,7 +273,7 @@ class Migration(migrations.Migration): ), ( "uuid", - main.models.UUIDField( + main_models.UUIDField( help_text="Unique identifier", unique=True, max_length=36, @@ -304,7 +305,7 @@ class Migration(migrations.Migration): ), ( "uuid", - main.models.UUIDField( + main_models.UUIDField( help_text="Unique identifier", unique=True, max_length=36, @@ -338,7 +339,7 @@ class Migration(migrations.Migration): ("lastmodified", models.DateTimeField(auto_now_add=True)), ( "uuid", - main.models.UUIDField( + main_models.UUIDField( help_text="Unique identifier", unique=True, max_length=36, @@ -404,7 +405,7 @@ class Migration(migrations.Migration): ("lastmodified", models.DateTimeField(auto_now_add=True)), ( "uuid", - main.models.UUIDField( + main_models.UUIDField( help_text="Unique identifier", unique=True, max_length=36, @@ -497,7 +498,7 @@ class Migration(migrations.Migration): ("lastmodified", models.DateTimeField(auto_now_add=True)), ( "uuid", - main.models.UUIDField( + main_models.UUIDField( help_text="Unique identifier", unique=True, max_length=36, @@ -569,7 +570,7 @@ class Migration(migrations.Migration): ), ( "uuid", - main.models.UUIDField( + main_models.UUIDField( help_text="Unique identifier", unique=True, max_length=36, @@ -605,7 +606,7 @@ class Migration(migrations.Migration): ("lastmodified", models.DateTimeField(auto_now_add=True)), ( "uuid", - main.models.UUIDField( + main_models.UUIDField( help_text="Unique identifier", unique=True, max_length=36, @@ -679,7 +680,7 @@ class Migration(migrations.Migration): ("lastmodified", models.DateTimeField(auto_now_add=True)), ( "uuid", - main.models.UUIDField( + main_models.UUIDField( help_text="Unique identifier", unique=True, max_length=36, @@ -731,7 +732,7 @@ class Migration(migrations.Migration): ), ( "uuid", - main.models.UUIDField( + main_models.UUIDField( help_text="Unique identifier", unique=True, max_length=36, diff --git a/src/dashboard/fpr/migrations/0002_initial_data.py b/src/archivematica/dashboard/fpr/migrations/0002_initial_data.py similarity index 100% rename from src/dashboard/fpr/migrations/0002_initial_data.py rename to src/archivematica/dashboard/fpr/migrations/0002_initial_data.py diff --git a/src/dashboard/fpr/migrations/0003_pronom_84.py b/src/archivematica/dashboard/fpr/migrations/0003_pronom_84.py similarity index 100% rename from src/dashboard/fpr/migrations/0003_pronom_84.py rename to src/archivematica/dashboard/fpr/migrations/0003_pronom_84.py diff --git a/src/dashboard/fpr/migrations/0004_pronom_88.py b/src/archivematica/dashboard/fpr/migrations/0004_pronom_88.py similarity index 100% rename from src/dashboard/fpr/migrations/0004_pronom_88.py rename to src/archivematica/dashboard/fpr/migrations/0004_pronom_88.py diff --git a/src/dashboard/fpr/migrations/0005_update_tool_versions.py b/src/archivematica/dashboard/fpr/migrations/0005_update_tool_versions.py similarity index 100% rename from src/dashboard/fpr/migrations/0005_update_tool_versions.py rename to src/archivematica/dashboard/fpr/migrations/0005_update_tool_versions.py diff --git a/src/dashboard/fpr/migrations/0006_i18n_models.py b/src/archivematica/dashboard/fpr/migrations/0006_i18n_models.py similarity index 100% rename from src/dashboard/fpr/migrations/0006_i18n_models.py rename to src/archivematica/dashboard/fpr/migrations/0006_i18n_models.py diff --git a/src/dashboard/fpr/migrations/0007_embedded_default_thumbnail.py b/src/archivematica/dashboard/fpr/migrations/0007_embedded_default_thumbnail.py similarity index 100% rename from src/dashboard/fpr/migrations/0007_embedded_default_thumbnail.py rename to src/archivematica/dashboard/fpr/migrations/0007_embedded_default_thumbnail.py diff --git a/src/dashboard/fpr/migrations/0008_update_django_autoslug.py b/src/archivematica/dashboard/fpr/migrations/0008_update_django_autoslug.py similarity index 100% rename from src/dashboard/fpr/migrations/0008_update_django_autoslug.py rename to src/archivematica/dashboard/fpr/migrations/0008_update_django_autoslug.py diff --git a/src/dashboard/fpr/migrations/0009_pronom_90.py b/src/archivematica/dashboard/fpr/migrations/0009_pronom_90.py similarity index 100% rename from src/dashboard/fpr/migrations/0009_pronom_90.py rename to src/archivematica/dashboard/fpr/migrations/0009_pronom_90.py diff --git a/src/dashboard/fpr/migrations/0010_update_fido_136.py b/src/archivematica/dashboard/fpr/migrations/0010_update_fido_136.py similarity index 100% rename from src/dashboard/fpr/migrations/0010_update_fido_136.py rename to src/archivematica/dashboard/fpr/migrations/0010_update_fido_136.py diff --git a/src/dashboard/fpr/migrations/0011_mediaconch_validation.py b/src/archivematica/dashboard/fpr/migrations/0011_mediaconch_validation.py similarity index 100% rename from src/dashboard/fpr/migrations/0011_mediaconch_validation.py rename to src/archivematica/dashboard/fpr/migrations/0011_mediaconch_validation.py diff --git a/src/dashboard/fpr/migrations/0012_mediaconch_policy_checks.py b/src/archivematica/dashboard/fpr/migrations/0012_mediaconch_policy_checks.py similarity index 100% rename from src/dashboard/fpr/migrations/0012_mediaconch_policy_checks.py rename to src/archivematica/dashboard/fpr/migrations/0012_mediaconch_policy_checks.py diff --git a/src/dashboard/fpr/migrations/0013_normalization_rules_mov.py b/src/archivematica/dashboard/fpr/migrations/0013_normalization_rules_mov.py similarity index 100% rename from src/dashboard/fpr/migrations/0013_normalization_rules_mov.py rename to src/archivematica/dashboard/fpr/migrations/0013_normalization_rules_mov.py diff --git a/src/dashboard/fpr/migrations/0014_fix_fits_command.py b/src/archivematica/dashboard/fpr/migrations/0014_fix_fits_command.py similarity index 100% rename from src/dashboard/fpr/migrations/0014_fix_fits_command.py rename to src/archivematica/dashboard/fpr/migrations/0014_fix_fits_command.py diff --git a/src/dashboard/fpr/migrations/0015_pronom_92.py b/src/archivematica/dashboard/fpr/migrations/0015_pronom_92.py similarity index 100% rename from src/dashboard/fpr/migrations/0015_pronom_92.py rename to src/archivematica/dashboard/fpr/migrations/0015_pronom_92.py diff --git a/src/dashboard/fpr/migrations/0016_update_idtools.py b/src/archivematica/dashboard/fpr/migrations/0016_update_idtools.py similarity index 100% rename from src/dashboard/fpr/migrations/0016_update_idtools.py rename to src/archivematica/dashboard/fpr/migrations/0016_update_idtools.py diff --git a/src/dashboard/fpr/migrations/0017_ocr_unique_names.py b/src/archivematica/dashboard/fpr/migrations/0017_ocr_unique_names.py similarity index 100% rename from src/dashboard/fpr/migrations/0017_ocr_unique_names.py rename to src/archivematica/dashboard/fpr/migrations/0017_ocr_unique_names.py diff --git a/src/dashboard/fpr/migrations/0018_slug_unique.py b/src/archivematica/dashboard/fpr/migrations/0018_slug_unique.py similarity index 100% rename from src/dashboard/fpr/migrations/0018_slug_unique.py rename to src/archivematica/dashboard/fpr/migrations/0018_slug_unique.py diff --git a/src/dashboard/fpr/migrations/0019_fix_gs_command.py b/src/archivematica/dashboard/fpr/migrations/0019_fix_gs_command.py similarity index 100% rename from src/dashboard/fpr/migrations/0019_fix_gs_command.py rename to src/archivematica/dashboard/fpr/migrations/0019_fix_gs_command.py diff --git a/src/dashboard/fpr/migrations/0020_pronom_93.py b/src/archivematica/dashboard/fpr/migrations/0020_pronom_93.py similarity index 100% rename from src/dashboard/fpr/migrations/0020_pronom_93.py rename to src/archivematica/dashboard/fpr/migrations/0020_pronom_93.py diff --git a/src/dashboard/fpr/migrations/0021_normalize_jp2_with_ffmpeg_for_preservation.py b/src/archivematica/dashboard/fpr/migrations/0021_normalize_jp2_with_ffmpeg_for_preservation.py similarity index 100% rename from src/dashboard/fpr/migrations/0021_normalize_jp2_with_ffmpeg_for_preservation.py rename to src/archivematica/dashboard/fpr/migrations/0021_normalize_jp2_with_ffmpeg_for_preservation.py diff --git a/src/dashboard/fpr/migrations/0022_pronom_94.py b/src/archivematica/dashboard/fpr/migrations/0022_pronom_94.py similarity index 100% rename from src/dashboard/fpr/migrations/0022_pronom_94.py rename to src/archivematica/dashboard/fpr/migrations/0022_pronom_94.py diff --git a/src/dashboard/fpr/migrations/0023_update_idtools.py b/src/archivematica/dashboard/fpr/migrations/0023_update_idtools.py similarity index 100% rename from src/dashboard/fpr/migrations/0023_update_idtools.py rename to src/archivematica/dashboard/fpr/migrations/0023_update_idtools.py diff --git a/src/dashboard/fpr/migrations/0024_update_fido.py b/src/archivematica/dashboard/fpr/migrations/0024_update_fido.py similarity index 100% rename from src/dashboard/fpr/migrations/0024_update_fido.py rename to src/archivematica/dashboard/fpr/migrations/0024_update_fido.py diff --git a/src/dashboard/fpr/migrations/0025_update_fido_1312.py b/src/archivematica/dashboard/fpr/migrations/0025_update_fido_1312.py similarity index 100% rename from src/dashboard/fpr/migrations/0025_update_fido_1312.py rename to src/archivematica/dashboard/fpr/migrations/0025_update_fido_1312.py diff --git a/src/dashboard/fpr/migrations/0026_fits_nailgun_compat.py b/src/archivematica/dashboard/fpr/migrations/0026_fits_nailgun_compat.py similarity index 100% rename from src/dashboard/fpr/migrations/0026_fits_nailgun_compat.py rename to src/archivematica/dashboard/fpr/migrations/0026_fits_nailgun_compat.py diff --git a/src/dashboard/fpr/migrations/0027_idcommand_tool_disallow_blank.py b/src/archivematica/dashboard/fpr/migrations/0027_idcommand_tool_disallow_blank.py similarity index 100% rename from src/dashboard/fpr/migrations/0027_idcommand_tool_disallow_blank.py rename to src/archivematica/dashboard/fpr/migrations/0027_idcommand_tool_disallow_blank.py diff --git a/src/dashboard/fpr/migrations/0028_idcommand_unique_enabled.py b/src/archivematica/dashboard/fpr/migrations/0028_idcommand_unique_enabled.py similarity index 100% rename from src/dashboard/fpr/migrations/0028_idcommand_unique_enabled.py rename to src/archivematica/dashboard/fpr/migrations/0028_idcommand_unique_enabled.py diff --git a/src/dashboard/fpr/migrations/0029_update_inkscape_svg_command.py b/src/archivematica/dashboard/fpr/migrations/0029_update_inkscape_svg_command.py similarity index 100% rename from src/dashboard/fpr/migrations/0029_update_inkscape_svg_command.py rename to src/archivematica/dashboard/fpr/migrations/0029_update_inkscape_svg_command.py diff --git a/src/dashboard/fpr/migrations/0030_update_jhove_command.py b/src/archivematica/dashboard/fpr/migrations/0030_update_jhove_command.py similarity index 100% rename from src/dashboard/fpr/migrations/0030_update_jhove_command.py rename to src/archivematica/dashboard/fpr/migrations/0030_update_jhove_command.py diff --git a/src/dashboard/fpr/migrations/0031_update_normalization_rules.py b/src/archivematica/dashboard/fpr/migrations/0031_update_normalization_rules.py similarity index 100% rename from src/dashboard/fpr/migrations/0031_update_normalization_rules.py rename to src/archivematica/dashboard/fpr/migrations/0031_update_normalization_rules.py diff --git a/src/dashboard/fpr/migrations/0032_pronom_96.py b/src/archivematica/dashboard/fpr/migrations/0032_pronom_96.py similarity index 100% rename from src/dashboard/fpr/migrations/0032_pronom_96.py rename to src/archivematica/dashboard/fpr/migrations/0032_pronom_96.py diff --git a/src/dashboard/fpr/migrations/0033_update_idtools.py b/src/archivematica/dashboard/fpr/migrations/0033_update_idtools.py similarity index 100% rename from src/dashboard/fpr/migrations/0033_update_idtools.py rename to src/archivematica/dashboard/fpr/migrations/0033_update_idtools.py diff --git a/src/dashboard/fpr/migrations/0034_delete_unused_models.py b/src/archivematica/dashboard/fpr/migrations/0034_delete_unused_models.py similarity index 100% rename from src/dashboard/fpr/migrations/0034_delete_unused_models.py rename to src/archivematica/dashboard/fpr/migrations/0034_delete_unused_models.py diff --git a/src/dashboard/fpr/migrations/0035_python3_compatibility.py b/src/archivematica/dashboard/fpr/migrations/0035_python3_compatibility.py similarity index 100% rename from src/dashboard/fpr/migrations/0035_python3_compatibility.py rename to src/archivematica/dashboard/fpr/migrations/0035_python3_compatibility.py diff --git a/src/dashboard/fpr/migrations/0036_pronom_109.py b/src/archivematica/dashboard/fpr/migrations/0036_pronom_109.py similarity index 100% rename from src/dashboard/fpr/migrations/0036_pronom_109.py rename to src/archivematica/dashboard/fpr/migrations/0036_pronom_109.py diff --git a/src/dashboard/fpr/migrations/0037_update_idtools.py b/src/archivematica/dashboard/fpr/migrations/0037_update_idtools.py similarity index 100% rename from src/dashboard/fpr/migrations/0037_update_idtools.py rename to src/archivematica/dashboard/fpr/migrations/0037_update_idtools.py diff --git a/src/dashboard/fpr/migrations/0038_use_uuidfield.py b/src/archivematica/dashboard/fpr/migrations/0038_use_uuidfield.py similarity index 85% rename from src/dashboard/fpr/migrations/0038_use_uuidfield.py rename to src/archivematica/dashboard/fpr/migrations/0038_use_uuidfield.py index c2c6ff2c40..15a4decd81 100644 --- a/src/dashboard/fpr/migrations/0038_use_uuidfield.py +++ b/src/archivematica/dashboard/fpr/migrations/0038_use_uuidfield.py @@ -1,9 +1,10 @@ # Generated by Django 1.11.29 on 2023-08-11 16:29 import uuid -import main.models from django.db import migrations +import archivematica.dashboard.main.models as main_models + class Migration(migrations.Migration): dependencies = [ @@ -14,7 +15,7 @@ class Migration(migrations.Migration): migrations.AlterField( model_name="format", name="uuid", - field=main.models.UUIDField( + field=main_models.UUIDField( default=uuid.uuid4, editable=False, help_text="Unique identifier", @@ -24,7 +25,7 @@ class Migration(migrations.Migration): migrations.AlterField( model_name="formatgroup", name="uuid", - field=main.models.UUIDField( + field=main_models.UUIDField( default=uuid.uuid4, editable=False, help_text="Unique identifier", @@ -34,7 +35,7 @@ class Migration(migrations.Migration): migrations.AlterField( model_name="formatversion", name="uuid", - field=main.models.UUIDField( + field=main_models.UUIDField( default=uuid.uuid4, editable=False, help_text="Unique identifier", @@ -44,7 +45,7 @@ class Migration(migrations.Migration): migrations.AlterField( model_name="fpcommand", name="uuid", - field=main.models.UUIDField( + field=main_models.UUIDField( default=uuid.uuid4, editable=False, help_text="Unique identifier", @@ -54,7 +55,7 @@ class Migration(migrations.Migration): migrations.AlterField( model_name="fprule", name="uuid", - field=main.models.UUIDField( + field=main_models.UUIDField( default=uuid.uuid4, editable=False, help_text="Unique identifier", @@ -64,7 +65,7 @@ class Migration(migrations.Migration): migrations.AlterField( model_name="fptool", name="uuid", - field=main.models.UUIDField( + field=main_models.UUIDField( default=uuid.uuid4, editable=False, help_text="Unique identifier", @@ -74,7 +75,7 @@ class Migration(migrations.Migration): migrations.AlterField( model_name="idcommand", name="uuid", - field=main.models.UUIDField( + field=main_models.UUIDField( default=uuid.uuid4, editable=False, help_text="Unique identifier", @@ -84,7 +85,7 @@ class Migration(migrations.Migration): migrations.AlterField( model_name="idrule", name="uuid", - field=main.models.UUIDField( + field=main_models.UUIDField( default=uuid.uuid4, editable=False, help_text="Unique identifier", @@ -94,7 +95,7 @@ class Migration(migrations.Migration): migrations.AlterField( model_name="idtool", name="uuid", - field=main.models.UUIDField( + field=main_models.UUIDField( default=uuid.uuid4, editable=False, help_text="Unique identifier", diff --git a/src/dashboard/fpr/migrations/0039_django32.py b/src/archivematica/dashboard/fpr/migrations/0039_django32.py similarity index 100% rename from src/dashboard/fpr/migrations/0039_django32.py rename to src/archivematica/dashboard/fpr/migrations/0039_django32.py diff --git a/src/dashboard/fpr/migrations/0040_update_jhove_validation.py b/src/archivematica/dashboard/fpr/migrations/0040_update_jhove_validation.py similarity index 100% rename from src/dashboard/fpr/migrations/0040_update_jhove_validation.py rename to src/archivematica/dashboard/fpr/migrations/0040_update_jhove_validation.py diff --git a/src/dashboard/fpr/migrations/0041_pronom_116.py b/src/archivematica/dashboard/fpr/migrations/0041_pronom_116.py similarity index 100% rename from src/dashboard/fpr/migrations/0041_pronom_116.py rename to src/archivematica/dashboard/fpr/migrations/0041_pronom_116.py diff --git a/src/dashboard/fpr/migrations/0042_update_idtools.py b/src/archivematica/dashboard/fpr/migrations/0042_update_idtools.py similarity index 100% rename from src/dashboard/fpr/migrations/0042_update_idtools.py rename to src/archivematica/dashboard/fpr/migrations/0042_update_idtools.py diff --git a/src/dashboard/fpr/migrations/0043_update_default_thumbnail_command.py b/src/archivematica/dashboard/fpr/migrations/0043_update_default_thumbnail_command.py similarity index 100% rename from src/dashboard/fpr/migrations/0043_update_default_thumbnail_command.py rename to src/archivematica/dashboard/fpr/migrations/0043_update_default_thumbnail_command.py diff --git a/src/dashboard/fpr/migrations/0044_remove_fits.py b/src/archivematica/dashboard/fpr/migrations/0044_remove_fits.py similarity index 100% rename from src/dashboard/fpr/migrations/0044_remove_fits.py rename to src/archivematica/dashboard/fpr/migrations/0044_remove_fits.py diff --git a/src/dashboard/fpr/migrations/0045_update_event_detail_commands.py b/src/archivematica/dashboard/fpr/migrations/0045_update_event_detail_commands.py similarity index 100% rename from src/dashboard/fpr/migrations/0045_update_event_detail_commands.py rename to src/archivematica/dashboard/fpr/migrations/0045_update_event_detail_commands.py diff --git a/src/dashboard/fpr/migrations/0046_update_jhove_module_validation.py b/src/archivematica/dashboard/fpr/migrations/0046_update_jhove_module_validation.py similarity index 98% rename from src/dashboard/fpr/migrations/0046_update_jhove_module_validation.py rename to src/archivematica/dashboard/fpr/migrations/0046_update_jhove_module_validation.py index acf861e109..62d7bc18a8 100644 --- a/src/dashboard/fpr/migrations/0046_update_jhove_module_validation.py +++ b/src/archivematica/dashboard/fpr/migrations/0046_update_jhove_module_validation.py @@ -1,6 +1,9 @@ -from archivematicaFunctions import jhove_validation_command from django.db import migrations +from archivematica.archivematicaCommon.archivematicaFunctions import ( + jhove_validation_command, +) + JHOVE_TOOL_ID = "085d8690-93b7-4d31-84f7-2c5f4cbf6735" OLD_JHOVE_CMD_ID = "cb335c49-e6ce-445f-a774-494a6f2300c6" diff --git a/src/dashboard/installer/__init__.py b/src/archivematica/dashboard/fpr/migrations/__init__.py similarity index 100% rename from src/dashboard/installer/__init__.py rename to src/archivematica/dashboard/fpr/migrations/__init__.py diff --git a/src/dashboard/fpr/migrations/initial_data.json b/src/archivematica/dashboard/fpr/migrations/initial_data.json similarity index 100% rename from src/dashboard/fpr/migrations/initial_data.json rename to src/archivematica/dashboard/fpr/migrations/initial_data.json diff --git a/src/dashboard/fpr/migrations/pronom84_formatgroups_new.json b/src/archivematica/dashboard/fpr/migrations/pronom84_formatgroups_new.json similarity index 100% rename from src/dashboard/fpr/migrations/pronom84_formatgroups_new.json rename to src/archivematica/dashboard/fpr/migrations/pronom84_formatgroups_new.json diff --git a/src/dashboard/fpr/migrations/pronom84_formats_all.json b/src/archivematica/dashboard/fpr/migrations/pronom84_formats_all.json similarity index 100% rename from src/dashboard/fpr/migrations/pronom84_formats_all.json rename to src/archivematica/dashboard/fpr/migrations/pronom84_formats_all.json diff --git a/src/dashboard/fpr/migrations/pronom84_formatversions_all.json b/src/archivematica/dashboard/fpr/migrations/pronom84_formatversions_all.json similarity index 100% rename from src/dashboard/fpr/migrations/pronom84_formatversions_all.json rename to src/archivematica/dashboard/fpr/migrations/pronom84_formatversions_all.json diff --git a/src/dashboard/fpr/migrations/pronom84_fprules_all.json b/src/archivematica/dashboard/fpr/migrations/pronom84_fprules_all.json similarity index 100% rename from src/dashboard/fpr/migrations/pronom84_fprules_all.json rename to src/archivematica/dashboard/fpr/migrations/pronom84_fprules_all.json diff --git a/src/dashboard/fpr/migrations/pronom84_fptools_all.json b/src/archivematica/dashboard/fpr/migrations/pronom84_fptools_all.json similarity index 100% rename from src/dashboard/fpr/migrations/pronom84_fptools_all.json rename to src/archivematica/dashboard/fpr/migrations/pronom84_fptools_all.json diff --git a/src/dashboard/fpr/migrations/pronom84_idcommands_all.json b/src/archivematica/dashboard/fpr/migrations/pronom84_idcommands_all.json similarity index 100% rename from src/dashboard/fpr/migrations/pronom84_idcommands_all.json rename to src/archivematica/dashboard/fpr/migrations/pronom84_idcommands_all.json diff --git a/src/dashboard/fpr/migrations/pronom84_idrules_all.json b/src/archivematica/dashboard/fpr/migrations/pronom84_idrules_all.json similarity index 100% rename from src/dashboard/fpr/migrations/pronom84_idrules_all.json rename to src/archivematica/dashboard/fpr/migrations/pronom84_idrules_all.json diff --git a/src/dashboard/fpr/migrations/pronom84_idtools_all.json b/src/archivematica/dashboard/fpr/migrations/pronom84_idtools_all.json similarity index 100% rename from src/dashboard/fpr/migrations/pronom84_idtools_all.json rename to src/archivematica/dashboard/fpr/migrations/pronom84_idtools_all.json diff --git a/src/dashboard/fpr/migrations/pronom_109.json b/src/archivematica/dashboard/fpr/migrations/pronom_109.json similarity index 100% rename from src/dashboard/fpr/migrations/pronom_109.json rename to src/archivematica/dashboard/fpr/migrations/pronom_109.json diff --git a/src/dashboard/fpr/migrations/pronom_116.json b/src/archivematica/dashboard/fpr/migrations/pronom_116.json similarity index 100% rename from src/dashboard/fpr/migrations/pronom_116.json rename to src/archivematica/dashboard/fpr/migrations/pronom_116.json diff --git a/src/dashboard/fpr/migrations/pronom_88.json b/src/archivematica/dashboard/fpr/migrations/pronom_88.json similarity index 100% rename from src/dashboard/fpr/migrations/pronom_88.json rename to src/archivematica/dashboard/fpr/migrations/pronom_88.json diff --git a/src/dashboard/fpr/migrations/pronom_90.json b/src/archivematica/dashboard/fpr/migrations/pronom_90.json similarity index 100% rename from src/dashboard/fpr/migrations/pronom_90.json rename to src/archivematica/dashboard/fpr/migrations/pronom_90.json diff --git a/src/dashboard/fpr/migrations/pronom_92.json b/src/archivematica/dashboard/fpr/migrations/pronom_92.json similarity index 100% rename from src/dashboard/fpr/migrations/pronom_92.json rename to src/archivematica/dashboard/fpr/migrations/pronom_92.json diff --git a/src/dashboard/fpr/migrations/pronom_93.json b/src/archivematica/dashboard/fpr/migrations/pronom_93.json similarity index 100% rename from src/dashboard/fpr/migrations/pronom_93.json rename to src/archivematica/dashboard/fpr/migrations/pronom_93.json diff --git a/src/dashboard/fpr/migrations/pronom_94.json b/src/archivematica/dashboard/fpr/migrations/pronom_94.json similarity index 100% rename from src/dashboard/fpr/migrations/pronom_94.json rename to src/archivematica/dashboard/fpr/migrations/pronom_94.json diff --git a/src/dashboard/fpr/migrations/pronom_96.json b/src/archivematica/dashboard/fpr/migrations/pronom_96.json similarity index 100% rename from src/dashboard/fpr/migrations/pronom_96.json rename to src/archivematica/dashboard/fpr/migrations/pronom_96.json diff --git a/src/dashboard/fpr/models.py b/src/archivematica/dashboard/fpr/models.py similarity index 99% rename from src/dashboard/fpr/models.py rename to src/archivematica/dashboard/fpr/models.py index e504394f14..ae72166f0a 100644 --- a/src/dashboard/fpr/models.py +++ b/src/archivematica/dashboard/fpr/models.py @@ -14,7 +14,8 @@ from django.db import connection from django.db import models from django.utils.translation import gettext_lazy as _ -from main.models import UUIDField + +from archivematica.dashboard.main.models import UUIDField logger = logging.getLogger(__name__) diff --git a/src/dashboard/fpr/templates/fpr/_sidebar.html b/src/archivematica/dashboard/fpr/templates/fpr/_sidebar.html similarity index 100% rename from src/dashboard/fpr/templates/fpr/_sidebar.html rename to src/archivematica/dashboard/fpr/templates/fpr/_sidebar.html diff --git a/src/dashboard/fpr/templates/fpr/app_layout.html b/src/archivematica/dashboard/fpr/templates/fpr/app_layout.html similarity index 100% rename from src/dashboard/fpr/templates/fpr/app_layout.html rename to src/archivematica/dashboard/fpr/templates/fpr/app_layout.html diff --git a/src/dashboard/fpr/templates/fpr/disable.html b/src/archivematica/dashboard/fpr/templates/fpr/disable.html similarity index 100% rename from src/dashboard/fpr/templates/fpr/disable.html rename to src/archivematica/dashboard/fpr/templates/fpr/disable.html diff --git a/src/dashboard/fpr/templates/fpr/format/detail.html b/src/archivematica/dashboard/fpr/templates/fpr/format/detail.html similarity index 100% rename from src/dashboard/fpr/templates/fpr/format/detail.html rename to src/archivematica/dashboard/fpr/templates/fpr/format/detail.html diff --git a/src/dashboard/fpr/templates/fpr/format/form.html b/src/archivematica/dashboard/fpr/templates/fpr/format/form.html similarity index 100% rename from src/dashboard/fpr/templates/fpr/format/form.html rename to src/archivematica/dashboard/fpr/templates/fpr/format/form.html diff --git a/src/dashboard/fpr/templates/fpr/format/group/delete.html b/src/archivematica/dashboard/fpr/templates/fpr/format/group/delete.html similarity index 100% rename from src/dashboard/fpr/templates/fpr/format/group/delete.html rename to src/archivematica/dashboard/fpr/templates/fpr/format/group/delete.html diff --git a/src/dashboard/fpr/templates/fpr/format/group/form.html b/src/archivematica/dashboard/fpr/templates/fpr/format/group/form.html similarity index 100% rename from src/dashboard/fpr/templates/fpr/format/group/form.html rename to src/archivematica/dashboard/fpr/templates/fpr/format/group/form.html diff --git a/src/dashboard/fpr/templates/fpr/format/group/list.html b/src/archivematica/dashboard/fpr/templates/fpr/format/group/list.html similarity index 100% rename from src/dashboard/fpr/templates/fpr/format/group/list.html rename to src/archivematica/dashboard/fpr/templates/fpr/format/group/list.html diff --git a/src/dashboard/fpr/templates/fpr/format/list.html b/src/archivematica/dashboard/fpr/templates/fpr/format/list.html similarity index 100% rename from src/dashboard/fpr/templates/fpr/format/list.html rename to src/archivematica/dashboard/fpr/templates/fpr/format/list.html diff --git a/src/dashboard/fpr/templates/fpr/format/version/detail.html b/src/archivematica/dashboard/fpr/templates/fpr/format/version/detail.html similarity index 100% rename from src/dashboard/fpr/templates/fpr/format/version/detail.html rename to src/archivematica/dashboard/fpr/templates/fpr/format/version/detail.html diff --git a/src/dashboard/fpr/templates/fpr/format/version/form.html b/src/archivematica/dashboard/fpr/templates/fpr/format/version/form.html similarity index 100% rename from src/dashboard/fpr/templates/fpr/format/version/form.html rename to src/archivematica/dashboard/fpr/templates/fpr/format/version/form.html diff --git a/src/dashboard/fpr/templates/fpr/fpcommand/detail.html b/src/archivematica/dashboard/fpr/templates/fpr/fpcommand/detail.html similarity index 100% rename from src/dashboard/fpr/templates/fpr/fpcommand/detail.html rename to src/archivematica/dashboard/fpr/templates/fpr/fpcommand/detail.html diff --git a/src/dashboard/fpr/templates/fpr/fpcommand/form.html b/src/archivematica/dashboard/fpr/templates/fpr/fpcommand/form.html similarity index 100% rename from src/dashboard/fpr/templates/fpr/fpcommand/form.html rename to src/archivematica/dashboard/fpr/templates/fpr/fpcommand/form.html diff --git a/src/dashboard/fpr/templates/fpr/fpcommand/list.html b/src/archivematica/dashboard/fpr/templates/fpr/fpcommand/list.html similarity index 100% rename from src/dashboard/fpr/templates/fpr/fpcommand/list.html rename to src/archivematica/dashboard/fpr/templates/fpr/fpcommand/list.html diff --git a/src/dashboard/fpr/templates/fpr/fprule/detail.html b/src/archivematica/dashboard/fpr/templates/fpr/fprule/detail.html similarity index 100% rename from src/dashboard/fpr/templates/fpr/fprule/detail.html rename to src/archivematica/dashboard/fpr/templates/fpr/fprule/detail.html diff --git a/src/dashboard/fpr/templates/fpr/fprule/form.html b/src/archivematica/dashboard/fpr/templates/fpr/fprule/form.html similarity index 100% rename from src/dashboard/fpr/templates/fpr/fprule/form.html rename to src/archivematica/dashboard/fpr/templates/fpr/fprule/form.html diff --git a/src/dashboard/fpr/templates/fpr/fprule/list.html b/src/archivematica/dashboard/fpr/templates/fpr/fprule/list.html similarity index 100% rename from src/dashboard/fpr/templates/fpr/fprule/list.html rename to src/archivematica/dashboard/fpr/templates/fpr/fprule/list.html diff --git a/src/dashboard/fpr/templates/fpr/fptool/detail.html b/src/archivematica/dashboard/fpr/templates/fpr/fptool/detail.html similarity index 100% rename from src/dashboard/fpr/templates/fpr/fptool/detail.html rename to src/archivematica/dashboard/fpr/templates/fpr/fptool/detail.html diff --git a/src/dashboard/fpr/templates/fpr/fptool/form.html b/src/archivematica/dashboard/fpr/templates/fpr/fptool/form.html similarity index 100% rename from src/dashboard/fpr/templates/fpr/fptool/form.html rename to src/archivematica/dashboard/fpr/templates/fpr/fptool/form.html diff --git a/src/dashboard/fpr/templates/fpr/fptool/list.html b/src/archivematica/dashboard/fpr/templates/fpr/fptool/list.html similarity index 100% rename from src/dashboard/fpr/templates/fpr/fptool/list.html rename to src/archivematica/dashboard/fpr/templates/fpr/fptool/list.html diff --git a/src/dashboard/fpr/templates/fpr/idcommand/detail.html b/src/archivematica/dashboard/fpr/templates/fpr/idcommand/detail.html similarity index 100% rename from src/dashboard/fpr/templates/fpr/idcommand/detail.html rename to src/archivematica/dashboard/fpr/templates/fpr/idcommand/detail.html diff --git a/src/dashboard/fpr/templates/fpr/idcommand/form.html b/src/archivematica/dashboard/fpr/templates/fpr/idcommand/form.html similarity index 100% rename from src/dashboard/fpr/templates/fpr/idcommand/form.html rename to src/archivematica/dashboard/fpr/templates/fpr/idcommand/form.html diff --git a/src/dashboard/fpr/templates/fpr/idcommand/list.html b/src/archivematica/dashboard/fpr/templates/fpr/idcommand/list.html similarity index 100% rename from src/dashboard/fpr/templates/fpr/idcommand/list.html rename to src/archivematica/dashboard/fpr/templates/fpr/idcommand/list.html diff --git a/src/dashboard/fpr/templates/fpr/idrule/detail.html b/src/archivematica/dashboard/fpr/templates/fpr/idrule/detail.html similarity index 100% rename from src/dashboard/fpr/templates/fpr/idrule/detail.html rename to src/archivematica/dashboard/fpr/templates/fpr/idrule/detail.html diff --git a/src/dashboard/fpr/templates/fpr/idrule/form.html b/src/archivematica/dashboard/fpr/templates/fpr/idrule/form.html similarity index 100% rename from src/dashboard/fpr/templates/fpr/idrule/form.html rename to src/archivematica/dashboard/fpr/templates/fpr/idrule/form.html diff --git a/src/dashboard/fpr/templates/fpr/idrule/list.html b/src/archivematica/dashboard/fpr/templates/fpr/idrule/list.html similarity index 100% rename from src/dashboard/fpr/templates/fpr/idrule/list.html rename to src/archivematica/dashboard/fpr/templates/fpr/idrule/list.html diff --git a/src/dashboard/fpr/templates/fpr/idtool/detail.html b/src/archivematica/dashboard/fpr/templates/fpr/idtool/detail.html similarity index 100% rename from src/dashboard/fpr/templates/fpr/idtool/detail.html rename to src/archivematica/dashboard/fpr/templates/fpr/idtool/detail.html diff --git a/src/dashboard/fpr/templates/fpr/idtool/form.html b/src/archivematica/dashboard/fpr/templates/fpr/idtool/form.html similarity index 100% rename from src/dashboard/fpr/templates/fpr/idtool/form.html rename to src/archivematica/dashboard/fpr/templates/fpr/idtool/form.html diff --git a/src/dashboard/fpr/templates/fpr/idtool/list.html b/src/archivematica/dashboard/fpr/templates/fpr/idtool/list.html similarity index 100% rename from src/dashboard/fpr/templates/fpr/idtool/list.html rename to src/archivematica/dashboard/fpr/templates/fpr/idtool/list.html diff --git a/src/dashboard/fpr/templates/fpr/revisions/list.html b/src/archivematica/dashboard/fpr/templates/fpr/revisions/list.html similarity index 100% rename from src/dashboard/fpr/templates/fpr/revisions/list.html rename to src/archivematica/dashboard/fpr/templates/fpr/revisions/list.html diff --git a/src/dashboard/installer/management/__init__.py b/src/archivematica/dashboard/fpr/templatetags/__init__.py similarity index 100% rename from src/dashboard/installer/management/__init__.py rename to src/archivematica/dashboard/fpr/templatetags/__init__.py diff --git a/src/dashboard/fpr/templatetags/revisions_link.py b/src/archivematica/dashboard/fpr/templatetags/revisions_link.py similarity index 100% rename from src/dashboard/fpr/templatetags/revisions_link.py rename to src/archivematica/dashboard/fpr/templatetags/revisions_link.py diff --git a/src/dashboard/fpr/urls.py b/src/archivematica/dashboard/fpr/urls.py similarity index 99% rename from src/dashboard/fpr/urls.py rename to src/archivematica/dashboard/fpr/urls.py index a56494e961..a8ff5186a4 100644 --- a/src/dashboard/fpr/urls.py +++ b/src/archivematica/dashboard/fpr/urls.py @@ -1,6 +1,7 @@ from django.urls import path from django.urls import re_path -from fpr import views + +from archivematica.dashboard.fpr import views UUID_REGEX = r"[\w]{8}(-[\w]{4}){3}-[\w]{12}" diff --git a/src/dashboard/fpr/utils.py b/src/archivematica/dashboard/fpr/utils.py similarity index 100% rename from src/dashboard/fpr/utils.py rename to src/archivematica/dashboard/fpr/utils.py diff --git a/src/dashboard/fpr/views.py b/src/archivematica/dashboard/fpr/views.py similarity index 99% rename from src/dashboard/fpr/views.py rename to src/archivematica/dashboard/fpr/views.py index 7b15734baa..a421cd2e96 100644 --- a/src/dashboard/fpr/views.py +++ b/src/archivematica/dashboard/fpr/views.py @@ -7,9 +7,10 @@ from django.shortcuts import render from django.urls import reverse from django.utils.translation import gettext as _ -from fpr import forms as fprforms -from fpr import models as fprmodels -from fpr import utils + +from archivematica.dashboard.fpr import forms as fprforms +from archivematica.dashboard.fpr import models as fprmodels +from archivematica.dashboard.fpr import utils CLASS_CATEGORY_MAP = { "format": fprmodels.Format, diff --git a/src/dashboard/frontend/.eslintrc b/src/archivematica/dashboard/frontend/.eslintrc similarity index 100% rename from src/dashboard/frontend/.eslintrc rename to src/archivematica/dashboard/frontend/.eslintrc diff --git a/src/dashboard/frontend/.gitignore b/src/archivematica/dashboard/frontend/.gitignore similarity index 100% rename from src/dashboard/frontend/.gitignore rename to src/archivematica/dashboard/frontend/.gitignore diff --git a/src/dashboard/frontend/README.md b/src/archivematica/dashboard/frontend/README.md similarity index 100% rename from src/dashboard/frontend/README.md rename to src/archivematica/dashboard/frontend/README.md diff --git a/src/dashboard/frontend/app/alert/alert.controller.js b/src/archivematica/dashboard/frontend/app/alert/alert.controller.js similarity index 100% rename from src/dashboard/frontend/app/alert/alert.controller.js rename to src/archivematica/dashboard/frontend/app/alert/alert.controller.js diff --git a/src/dashboard/frontend/app/analysis/analysis.controller.js b/src/archivematica/dashboard/frontend/app/analysis/analysis.controller.js similarity index 100% rename from src/dashboard/frontend/app/analysis/analysis.controller.js rename to src/archivematica/dashboard/frontend/app/analysis/analysis.controller.js diff --git a/src/dashboard/frontend/app/analysis/analysis.html b/src/archivematica/dashboard/frontend/app/analysis/analysis.html similarity index 100% rename from src/dashboard/frontend/app/analysis/analysis.html rename to src/archivematica/dashboard/frontend/app/analysis/analysis.html diff --git a/src/dashboard/frontend/app/app.css b/src/archivematica/dashboard/frontend/app/app.css similarity index 100% rename from src/dashboard/frontend/app/app.css rename to src/archivematica/dashboard/frontend/app/app.css diff --git a/src/dashboard/frontend/app/app.js b/src/archivematica/dashboard/frontend/app/app.js similarity index 100% rename from src/dashboard/frontend/app/app.js rename to src/archivematica/dashboard/frontend/app/app.js diff --git a/src/dashboard/frontend/app/archivesspace/archivesspace.controller.js b/src/archivematica/dashboard/frontend/app/archivesspace/archivesspace.controller.js similarity index 100% rename from src/dashboard/frontend/app/archivesspace/archivesspace.controller.js rename to src/archivematica/dashboard/frontend/app/archivesspace/archivesspace.controller.js diff --git a/src/dashboard/frontend/app/archivesspace/form.html b/src/archivematica/dashboard/frontend/app/archivesspace/form.html similarity index 100% rename from src/dashboard/frontend/app/archivesspace/form.html rename to src/archivematica/dashboard/frontend/app/archivesspace/form.html diff --git a/src/dashboard/frontend/app/arrangement/arrangement.controller.js b/src/archivematica/dashboard/frontend/app/arrangement/arrangement.controller.js similarity index 100% rename from src/dashboard/frontend/app/arrangement/arrangement.controller.js rename to src/archivematica/dashboard/frontend/app/arrangement/arrangement.controller.js diff --git a/src/dashboard/frontend/app/arrangement/edit_metadata_form.html b/src/archivematica/dashboard/frontend/app/arrangement/edit_metadata_form.html similarity index 100% rename from src/dashboard/frontend/app/arrangement/edit_metadata_form.html rename to src/archivematica/dashboard/frontend/app/arrangement/edit_metadata_form.html diff --git a/src/dashboard/frontend/app/browse/browse.controller.js b/src/archivematica/dashboard/frontend/app/browse/browse.controller.js similarity index 100% rename from src/dashboard/frontend/app/browse/browse.controller.js rename to src/archivematica/dashboard/frontend/app/browse/browse.controller.js diff --git a/src/dashboard/frontend/app/browser.css b/src/archivematica/dashboard/frontend/app/browser.css similarity index 100% rename from src/dashboard/frontend/app/browser.css rename to src/archivematica/dashboard/frontend/app/browser.css diff --git a/src/dashboard/frontend/app/checklist/checklist.directive.js b/src/archivematica/dashboard/frontend/app/checklist/checklist.directive.js similarity index 100% rename from src/dashboard/frontend/app/checklist/checklist.directive.js rename to src/archivematica/dashboard/frontend/app/checklist/checklist.directive.js diff --git a/src/dashboard/frontend/app/components/version/interpolate-filter.js b/src/archivematica/dashboard/frontend/app/components/version/interpolate-filter.js similarity index 100% rename from src/dashboard/frontend/app/components/version/interpolate-filter.js rename to src/archivematica/dashboard/frontend/app/components/version/interpolate-filter.js diff --git a/src/dashboard/frontend/app/components/version/interpolate-filter_test.js b/src/archivematica/dashboard/frontend/app/components/version/interpolate-filter_test.js similarity index 100% rename from src/dashboard/frontend/app/components/version/interpolate-filter_test.js rename to src/archivematica/dashboard/frontend/app/components/version/interpolate-filter_test.js diff --git a/src/dashboard/frontend/app/components/version/version-directive.js b/src/archivematica/dashboard/frontend/app/components/version/version-directive.js similarity index 100% rename from src/dashboard/frontend/app/components/version/version-directive.js rename to src/archivematica/dashboard/frontend/app/components/version/version-directive.js diff --git a/src/dashboard/frontend/app/components/version/version-directive_test.js b/src/archivematica/dashboard/frontend/app/components/version/version-directive_test.js similarity index 100% rename from src/dashboard/frontend/app/components/version/version-directive_test.js rename to src/archivematica/dashboard/frontend/app/components/version/version-directive_test.js diff --git a/src/dashboard/frontend/app/components/version/version.js b/src/archivematica/dashboard/frontend/app/components/version/version.js similarity index 100% rename from src/dashboard/frontend/app/components/version/version.js rename to src/archivematica/dashboard/frontend/app/components/version/version.js diff --git a/src/dashboard/frontend/app/components/version/version_test.js b/src/archivematica/dashboard/frontend/app/components/version/version_test.js similarity index 100% rename from src/dashboard/frontend/app/components/version/version_test.js rename to src/archivematica/dashboard/frontend/app/components/version/version_test.js diff --git a/src/dashboard/frontend/app/examine_contents/examine_contents.controller.js b/src/archivematica/dashboard/frontend/app/examine_contents/examine_contents.controller.js similarity index 100% rename from src/dashboard/frontend/app/examine_contents/examine_contents.controller.js rename to src/archivematica/dashboard/frontend/app/examine_contents/examine_contents.controller.js diff --git a/src/dashboard/frontend/app/examine_contents/examine_contents.html b/src/archivematica/dashboard/frontend/app/examine_contents/examine_contents.html similarity index 100% rename from src/dashboard/frontend/app/examine_contents/examine_contents.html rename to src/archivematica/dashboard/frontend/app/examine_contents/examine_contents.html diff --git a/src/dashboard/frontend/app/examine_contents/file_info.html b/src/archivematica/dashboard/frontend/app/examine_contents/file_info.html similarity index 100% rename from src/dashboard/frontend/app/examine_contents/file_info.html rename to src/archivematica/dashboard/frontend/app/examine_contents/file_info.html diff --git a/src/dashboard/frontend/app/facet_selector/facet_selector.controller.js b/src/archivematica/dashboard/frontend/app/facet_selector/facet_selector.controller.js similarity index 100% rename from src/dashboard/frontend/app/facet_selector/facet_selector.controller.js rename to src/archivematica/dashboard/frontend/app/facet_selector/facet_selector.controller.js diff --git a/src/dashboard/frontend/app/file_list/file_list.controller.js b/src/archivematica/dashboard/frontend/app/file_list/file_list.controller.js similarity index 100% rename from src/dashboard/frontend/app/file_list/file_list.controller.js rename to src/archivematica/dashboard/frontend/app/file_list/file_list.controller.js diff --git a/src/dashboard/frontend/app/filters/aggregation.filter.js b/src/archivematica/dashboard/frontend/app/filters/aggregation.filter.js similarity index 100% rename from src/dashboard/frontend/app/filters/aggregation.filter.js rename to src/archivematica/dashboard/frontend/app/filters/aggregation.filter.js diff --git a/src/dashboard/frontend/app/filters/facet.filter.js b/src/archivematica/dashboard/frontend/app/filters/facet.filter.js similarity index 100% rename from src/dashboard/frontend/app/filters/facet.filter.js rename to src/archivematica/dashboard/frontend/app/filters/facet.filter.js diff --git a/src/dashboard/frontend/app/fixtures/archivesspace/levels b/src/archivematica/dashboard/frontend/app/fixtures/archivesspace/levels similarity index 100% rename from src/dashboard/frontend/app/fixtures/archivesspace/levels rename to src/archivematica/dashboard/frontend/app/fixtures/archivesspace/levels diff --git a/src/dashboard/frontend/app/front_page/appraisal_tab.html b/src/archivematica/dashboard/frontend/app/front_page/appraisal_tab.html similarity index 100% rename from src/dashboard/frontend/app/front_page/appraisal_tab.html rename to src/archivematica/dashboard/frontend/app/front_page/appraisal_tab.html diff --git a/src/dashboard/frontend/app/front_page/transfer_browser.html b/src/archivematica/dashboard/frontend/app/front_page/transfer_browser.html similarity index 100% rename from src/dashboard/frontend/app/front_page/transfer_browser.html rename to src/archivematica/dashboard/frontend/app/front_page/transfer_browser.html diff --git a/src/dashboard/frontend/app/header/header.controller.js b/src/archivematica/dashboard/frontend/app/header/header.controller.js similarity index 100% rename from src/dashboard/frontend/app/header/header.controller.js rename to src/archivematica/dashboard/frontend/app/header/header.controller.js diff --git a/src/dashboard/frontend/app/locale/extract.pot b/src/archivematica/dashboard/frontend/app/locale/extract.pot similarity index 100% rename from src/dashboard/frontend/app/locale/extract.pot rename to src/archivematica/dashboard/frontend/app/locale/extract.pot diff --git a/src/dashboard/frontend/app/locale/translations.es.po b/src/archivematica/dashboard/frontend/app/locale/translations.es.po similarity index 100% rename from src/dashboard/frontend/app/locale/translations.es.po rename to src/archivematica/dashboard/frontend/app/locale/translations.es.po diff --git a/src/dashboard/frontend/app/locale/translations.fr.po b/src/archivematica/dashboard/frontend/app/locale/translations.fr.po similarity index 100% rename from src/dashboard/frontend/app/locale/translations.fr.po rename to src/archivematica/dashboard/frontend/app/locale/translations.fr.po diff --git a/src/dashboard/frontend/app/locale/translations.ja.po b/src/archivematica/dashboard/frontend/app/locale/translations.ja.po similarity index 100% rename from src/dashboard/frontend/app/locale/translations.ja.po rename to src/archivematica/dashboard/frontend/app/locale/translations.ja.po diff --git a/src/dashboard/frontend/app/locale/translations.json b/src/archivematica/dashboard/frontend/app/locale/translations.json similarity index 100% rename from src/dashboard/frontend/app/locale/translations.json rename to src/archivematica/dashboard/frontend/app/locale/translations.json diff --git a/src/dashboard/frontend/app/locale/translations.pt.po b/src/archivematica/dashboard/frontend/app/locale/translations.pt.po similarity index 100% rename from src/dashboard/frontend/app/locale/translations.pt.po rename to src/archivematica/dashboard/frontend/app/locale/translations.pt.po diff --git a/src/dashboard/frontend/app/locale/translations.pt_BR.po b/src/archivematica/dashboard/frontend/app/locale/translations.pt_BR.po similarity index 100% rename from src/dashboard/frontend/app/locale/translations.pt_BR.po rename to src/archivematica/dashboard/frontend/app/locale/translations.pt_BR.po diff --git a/src/dashboard/frontend/app/locale/translations.sv.po b/src/archivematica/dashboard/frontend/app/locale/translations.sv.po similarity index 100% rename from src/dashboard/frontend/app/locale/translations.sv.po rename to src/archivematica/dashboard/frontend/app/locale/translations.sv.po diff --git a/src/dashboard/frontend/app/media/images/logo_header.png b/src/archivematica/dashboard/frontend/app/media/images/logo_header.png similarity index 100% rename from src/dashboard/frontend/app/media/images/logo_header.png rename to src/archivematica/dashboard/frontend/app/media/images/logo_header.png diff --git a/src/dashboard/frontend/app/preview/preview.controller.js b/src/archivematica/dashboard/frontend/app/preview/preview.controller.js similarity index 100% rename from src/dashboard/frontend/app/preview/preview.controller.js rename to src/archivematica/dashboard/frontend/app/preview/preview.controller.js diff --git a/src/dashboard/frontend/app/preview/preview.html b/src/archivematica/dashboard/frontend/app/preview/preview.html similarity index 100% rename from src/dashboard/frontend/app/preview/preview.html rename to src/archivematica/dashboard/frontend/app/preview/preview.html diff --git a/src/dashboard/frontend/app/report/format.html b/src/archivematica/dashboard/frontend/app/report/format.html similarity index 100% rename from src/dashboard/frontend/app/report/format.html rename to src/archivematica/dashboard/frontend/app/report/format.html diff --git a/src/dashboard/frontend/app/report/report.controller.js b/src/archivematica/dashboard/frontend/app/report/report.controller.js similarity index 100% rename from src/dashboard/frontend/app/report/report.controller.js rename to src/archivematica/dashboard/frontend/app/report/report.controller.js diff --git a/src/dashboard/frontend/app/report/tags.html b/src/archivematica/dashboard/frontend/app/report/tags.html similarity index 100% rename from src/dashboard/frontend/app/report/tags.html rename to src/archivematica/dashboard/frontend/app/report/tags.html diff --git a/src/dashboard/frontend/app/search/search.controller.js b/src/archivematica/dashboard/frontend/app/search/search.controller.js similarity index 100% rename from src/dashboard/frontend/app/search/search.controller.js rename to src/archivematica/dashboard/frontend/app/search/search.controller.js diff --git a/src/dashboard/frontend/app/services/alert.service.js b/src/archivematica/dashboard/frontend/app/services/alert.service.js similarity index 100% rename from src/dashboard/frontend/app/services/alert.service.js rename to src/archivematica/dashboard/frontend/app/services/alert.service.js diff --git a/src/dashboard/frontend/app/services/archivesspace.service.js b/src/archivematica/dashboard/frontend/app/services/archivesspace.service.js similarity index 100% rename from src/dashboard/frontend/app/services/archivesspace.service.js rename to src/archivematica/dashboard/frontend/app/services/archivesspace.service.js diff --git a/src/dashboard/frontend/app/services/browse.service.js b/src/archivematica/dashboard/frontend/app/services/browse.service.js similarity index 100% rename from src/dashboard/frontend/app/services/browse.service.js rename to src/archivematica/dashboard/frontend/app/services/browse.service.js diff --git a/src/dashboard/frontend/app/services/facet.service.js b/src/archivematica/dashboard/frontend/app/services/facet.service.js similarity index 100% rename from src/dashboard/frontend/app/services/facet.service.js rename to src/archivematica/dashboard/frontend/app/services/facet.service.js diff --git a/src/dashboard/frontend/app/services/file.service.js b/src/archivematica/dashboard/frontend/app/services/file.service.js similarity index 100% rename from src/dashboard/frontend/app/services/file.service.js rename to src/archivematica/dashboard/frontend/app/services/file.service.js diff --git a/src/dashboard/frontend/app/services/selected.service.js b/src/archivematica/dashboard/frontend/app/services/selected.service.js similarity index 100% rename from src/dashboard/frontend/app/services/selected.service.js rename to src/archivematica/dashboard/frontend/app/services/selected.service.js diff --git a/src/dashboard/frontend/app/services/sip_arrange.service.js b/src/archivematica/dashboard/frontend/app/services/sip_arrange.service.js similarity index 100% rename from src/dashboard/frontend/app/services/sip_arrange.service.js rename to src/archivematica/dashboard/frontend/app/services/sip_arrange.service.js diff --git a/src/dashboard/frontend/app/services/source_locations.service.js b/src/archivematica/dashboard/frontend/app/services/source_locations.service.js similarity index 100% rename from src/dashboard/frontend/app/services/source_locations.service.js rename to src/archivematica/dashboard/frontend/app/services/source_locations.service.js diff --git a/src/dashboard/frontend/app/services/tag.service.js b/src/archivematica/dashboard/frontend/app/services/tag.service.js similarity index 100% rename from src/dashboard/frontend/app/services/tag.service.js rename to src/archivematica/dashboard/frontend/app/services/tag.service.js diff --git a/src/dashboard/frontend/app/services/transfer.service.js b/src/archivematica/dashboard/frontend/app/services/transfer.service.js similarity index 100% rename from src/dashboard/frontend/app/services/transfer.service.js rename to src/archivematica/dashboard/frontend/app/services/transfer.service.js diff --git a/src/dashboard/frontend/app/services/transfer_browser_transfer.service.js b/src/archivematica/dashboard/frontend/app/services/transfer_browser_transfer.service.js similarity index 100% rename from src/dashboard/frontend/app/services/transfer_browser_transfer.service.js rename to src/archivematica/dashboard/frontend/app/services/transfer_browser_transfer.service.js diff --git a/src/dashboard/frontend/app/tree/tree.controller.js b/src/archivematica/dashboard/frontend/app/tree/tree.controller.js similarity index 100% rename from src/dashboard/frontend/app/tree/tree.controller.js rename to src/archivematica/dashboard/frontend/app/tree/tree.controller.js diff --git a/src/dashboard/frontend/app/tree/tree.directive.js b/src/archivematica/dashboard/frontend/app/tree/tree.directive.js similarity index 100% rename from src/dashboard/frontend/app/tree/tree.directive.js rename to src/archivematica/dashboard/frontend/app/tree/tree.directive.js diff --git a/src/dashboard/frontend/app/ui/minimize-bar.html b/src/archivematica/dashboard/frontend/app/ui/minimize-bar.html similarity index 100% rename from src/dashboard/frontend/app/ui/minimize-bar.html rename to src/archivematica/dashboard/frontend/app/ui/minimize-bar.html diff --git a/src/dashboard/frontend/app/ui/minimize-panel.html b/src/archivematica/dashboard/frontend/app/ui/minimize-panel.html similarity index 100% rename from src/dashboard/frontend/app/ui/minimize-panel.html rename to src/archivematica/dashboard/frontend/app/ui/minimize-panel.html diff --git a/src/dashboard/frontend/app/ui/ui.directive.js b/src/archivematica/dashboard/frontend/app/ui/ui.directive.js similarity index 100% rename from src/dashboard/frontend/app/ui/ui.directive.js rename to src/archivematica/dashboard/frontend/app/ui/ui.directive.js diff --git a/src/dashboard/frontend/app/vendor/angular-charts/angular-charts.js b/src/archivematica/dashboard/frontend/app/vendor/angular-charts/angular-charts.js similarity index 100% rename from src/dashboard/frontend/app/vendor/angular-charts/angular-charts.js rename to src/archivematica/dashboard/frontend/app/vendor/angular-charts/angular-charts.js diff --git a/src/dashboard/frontend/app/visualizations/formats_by_files.html b/src/archivematica/dashboard/frontend/app/visualizations/formats_by_files.html similarity index 100% rename from src/dashboard/frontend/app/visualizations/formats_by_files.html rename to src/archivematica/dashboard/frontend/app/visualizations/formats_by_files.html diff --git a/src/dashboard/frontend/app/visualizations/formats_by_size.html b/src/archivematica/dashboard/frontend/app/visualizations/formats_by_size.html similarity index 100% rename from src/dashboard/frontend/app/visualizations/formats_by_size.html rename to src/archivematica/dashboard/frontend/app/visualizations/formats_by_size.html diff --git a/src/dashboard/frontend/app/visualizations/visualizations.controller.js b/src/archivematica/dashboard/frontend/app/visualizations/visualizations.controller.js similarity index 100% rename from src/dashboard/frontend/app/visualizations/visualizations.controller.js rename to src/archivematica/dashboard/frontend/app/visualizations/visualizations.controller.js diff --git a/src/dashboard/frontend/app/visualizations/visualizations.html b/src/archivematica/dashboard/frontend/app/visualizations/visualizations.html similarity index 100% rename from src/dashboard/frontend/app/visualizations/visualizations.html rename to src/archivematica/dashboard/frontend/app/visualizations/visualizations.html diff --git a/src/dashboard/frontend/package-lock.json b/src/archivematica/dashboard/frontend/package-lock.json similarity index 100% rename from src/dashboard/frontend/package-lock.json rename to src/archivematica/dashboard/frontend/package-lock.json diff --git a/src/dashboard/frontend/package.json b/src/archivematica/dashboard/frontend/package.json similarity index 100% rename from src/dashboard/frontend/package.json rename to src/archivematica/dashboard/frontend/package.json diff --git a/src/dashboard/frontend/test/karma.conf.js b/src/archivematica/dashboard/frontend/test/karma.conf.js similarity index 100% rename from src/dashboard/frontend/test/karma.conf.js rename to src/archivematica/dashboard/frontend/test/karma.conf.js diff --git a/src/dashboard/frontend/test/tests.webpack.js b/src/archivematica/dashboard/frontend/test/tests.webpack.js similarity index 100% rename from src/dashboard/frontend/test/tests.webpack.js rename to src/archivematica/dashboard/frontend/test/tests.webpack.js diff --git a/src/dashboard/frontend/test/unit/aggregationFiltersSpec.js b/src/archivematica/dashboard/frontend/test/unit/aggregationFiltersSpec.js similarity index 100% rename from src/dashboard/frontend/test/unit/aggregationFiltersSpec.js rename to src/archivematica/dashboard/frontend/test/unit/aggregationFiltersSpec.js diff --git a/src/dashboard/frontend/test/unit/archivesspaceSpec.js b/src/archivematica/dashboard/frontend/test/unit/archivesspaceSpec.js similarity index 100% rename from src/dashboard/frontend/test/unit/archivesspaceSpec.js rename to src/archivematica/dashboard/frontend/test/unit/archivesspaceSpec.js diff --git a/src/dashboard/frontend/test/unit/arrangementSpec.js b/src/archivematica/dashboard/frontend/test/unit/arrangementSpec.js similarity index 100% rename from src/dashboard/frontend/test/unit/arrangementSpec.js rename to src/archivematica/dashboard/frontend/test/unit/arrangementSpec.js diff --git a/src/dashboard/frontend/test/unit/browseSpec.js b/src/archivematica/dashboard/frontend/test/unit/browseSpec.js similarity index 100% rename from src/dashboard/frontend/test/unit/browseSpec.js rename to src/archivematica/dashboard/frontend/test/unit/browseSpec.js diff --git a/src/dashboard/frontend/test/unit/facetSpec.js b/src/archivematica/dashboard/frontend/test/unit/facetSpec.js similarity index 100% rename from src/dashboard/frontend/test/unit/facetSpec.js rename to src/archivematica/dashboard/frontend/test/unit/facetSpec.js diff --git a/src/dashboard/frontend/test/unit/fileSpec.js b/src/archivematica/dashboard/frontend/test/unit/fileSpec.js similarity index 100% rename from src/dashboard/frontend/test/unit/fileSpec.js rename to src/archivematica/dashboard/frontend/test/unit/fileSpec.js diff --git a/src/dashboard/frontend/test/unit/locationsSpec.js b/src/archivematica/dashboard/frontend/test/unit/locationsSpec.js similarity index 100% rename from src/dashboard/frontend/test/unit/locationsSpec.js rename to src/archivematica/dashboard/frontend/test/unit/locationsSpec.js diff --git a/src/dashboard/frontend/test/unit/selectedFilesSpec.js b/src/archivematica/dashboard/frontend/test/unit/selectedFilesSpec.js similarity index 100% rename from src/dashboard/frontend/test/unit/selectedFilesSpec.js rename to src/archivematica/dashboard/frontend/test/unit/selectedFilesSpec.js diff --git a/src/dashboard/frontend/test/unit/sip_arrangeSpec.js b/src/archivematica/dashboard/frontend/test/unit/sip_arrangeSpec.js similarity index 100% rename from src/dashboard/frontend/test/unit/sip_arrangeSpec.js rename to src/archivematica/dashboard/frontend/test/unit/sip_arrangeSpec.js diff --git a/src/dashboard/frontend/test/unit/tagSpec.js b/src/archivematica/dashboard/frontend/test/unit/tagSpec.js similarity index 100% rename from src/dashboard/frontend/test/unit/tagSpec.js rename to src/archivematica/dashboard/frontend/test/unit/tagSpec.js diff --git a/src/dashboard/frontend/test/unit/transferSpec.js b/src/archivematica/dashboard/frontend/test/unit/transferSpec.js similarity index 100% rename from src/dashboard/frontend/test/unit/transferSpec.js rename to src/archivematica/dashboard/frontend/test/unit/transferSpec.js diff --git a/src/dashboard/frontend/test/unit/treeSpec.js b/src/archivematica/dashboard/frontend/test/unit/treeSpec.js similarity index 100% rename from src/dashboard/frontend/test/unit/treeSpec.js rename to src/archivematica/dashboard/frontend/test/unit/treeSpec.js diff --git a/src/dashboard/frontend/test/unit/vendor/jquery.js b/src/archivematica/dashboard/frontend/test/unit/vendor/jquery.js similarity index 100% rename from src/dashboard/frontend/test/unit/vendor/jquery.js rename to src/archivematica/dashboard/frontend/test/unit/vendor/jquery.js diff --git a/src/dashboard/frontend/tools/extract_features.py b/src/archivematica/dashboard/frontend/tools/extract_features.py similarity index 100% rename from src/dashboard/frontend/tools/extract_features.py rename to src/archivematica/dashboard/frontend/tools/extract_features.py diff --git a/src/dashboard/frontend/webpack.config.js b/src/archivematica/dashboard/frontend/webpack.config.js similarity index 100% rename from src/dashboard/frontend/webpack.config.js rename to src/archivematica/dashboard/frontend/webpack.config.js diff --git a/src/dashboard/install/README.md b/src/archivematica/dashboard/install/README.md similarity index 100% rename from src/dashboard/install/README.md rename to src/archivematica/dashboard/install/README.md diff --git a/src/dashboard/install/archivematica-dashboard.service b/src/archivematica/dashboard/install/archivematica-dashboard.service similarity index 100% rename from src/dashboard/install/archivematica-dashboard.service rename to src/archivematica/dashboard/install/archivematica-dashboard.service diff --git a/src/dashboard/install/dashboard.conf b/src/archivematica/dashboard/install/dashboard.conf similarity index 100% rename from src/dashboard/install/dashboard.conf rename to src/archivematica/dashboard/install/dashboard.conf diff --git a/src/dashboard/install/dashboard.gunicorn-config.py b/src/archivematica/dashboard/install/dashboard.gunicorn-config.py similarity index 100% rename from src/dashboard/install/dashboard.gunicorn-config.py rename to src/archivematica/dashboard/install/dashboard.gunicorn-config.py diff --git a/src/dashboard/install/dashboard.logging.json b/src/archivematica/dashboard/install/dashboard.logging.json similarity index 89% rename from src/dashboard/install/dashboard.logging.json rename to src/archivematica/dashboard/install/dashboard.logging.json index 50818dbbe1..32d5655a80 100644 --- a/src/dashboard/install/dashboard.logging.json +++ b/src/archivematica/dashboard/install/dashboard.logging.json @@ -22,7 +22,7 @@ }, "logfile": { "backupCount": 5, - "class": "custom_handlers.GroupWriteRotatingFileHandler", + "class": "archivematica.archivematicaCommon.custom_handlers.GroupWriteRotatingFileHandler", "filename": "/var/log/archivematica/dashboard/dashboard.log", "formatter": "detailed", "level": "INFO", @@ -41,7 +41,7 @@ }, "verboselogfile": { "backupCount": 5, - "class": "custom_handlers.GroupWriteRotatingFileHandler", + "class": "archivematica.archivematicaCommon.custom_handlers.GroupWriteRotatingFileHandler", "filename": "/var/log/archivematica/dashboard/dashboard.debug.log", "formatter": "detailed", "level": "DEBUG", diff --git a/src/dashboard/installer/management/commands/__init__.py b/src/archivematica/dashboard/installer/__init__.py similarity index 100% rename from src/dashboard/installer/management/commands/__init__.py rename to src/archivematica/dashboard/installer/__init__.py diff --git a/src/dashboard/installer/forms.py b/src/archivematica/dashboard/installer/forms.py similarity index 98% rename from src/dashboard/installer/forms.py rename to src/archivematica/dashboard/installer/forms.py index 48e7091343..11bed1a323 100644 --- a/src/dashboard/installer/forms.py +++ b/src/archivematica/dashboard/installer/forms.py @@ -20,7 +20,8 @@ from django.contrib.auth.models import User from django.forms.widgets import TextInput from django.utils.translation import gettext_lazy as _ -from main.models import DashboardSetting + +from archivematica.dashboard.main.models import DashboardSetting site_url_field = forms.CharField( label=_("Site URL"), diff --git a/src/dashboard/main/__init__.py b/src/archivematica/dashboard/installer/management/__init__.py similarity index 100% rename from src/dashboard/main/__init__.py rename to src/archivematica/dashboard/installer/management/__init__.py diff --git a/src/dashboard/main/management/__init__.py b/src/archivematica/dashboard/installer/management/commands/__init__.py similarity index 100% rename from src/dashboard/main/management/__init__.py rename to src/archivematica/dashboard/installer/management/commands/__init__.py diff --git a/src/dashboard/installer/management/commands/install.py b/src/archivematica/dashboard/installer/management/commands/install.py similarity index 89% rename from src/dashboard/installer/management/commands/install.py rename to src/archivematica/dashboard/installer/management/commands/install.py index 47ce61222d..7a63105a85 100644 --- a/src/dashboard/installer/management/commands/install.py +++ b/src/archivematica/dashboard/installer/management/commands/install.py @@ -14,15 +14,16 @@ # # You should have received a copy of the GNU General Public License # along with Archivematica. If not, see . -from components import helpers -from components.administration.forms import StorageSettingsForm from django.core.management.base import BaseCommand from django.core.management.base import CommandError from django.http import QueryDict from django.utils import termcolors -from installer.steps import create_super_user -from installer.steps import setup_pipeline -from installer.steps import setup_pipeline_in_ss + +from archivematica.dashboard.components import helpers +from archivematica.dashboard.components.administration.forms import StorageSettingsForm +from archivematica.dashboard.installer.steps import create_super_user +from archivematica.dashboard.installer.steps import setup_pipeline +from archivematica.dashboard.installer.steps import setup_pipeline_in_ss class Command(BaseCommand): diff --git a/src/dashboard/installer/middleware.py b/src/archivematica/dashboard/installer/middleware.py similarity index 97% rename from src/dashboard/installer/middleware.py rename to src/archivematica/dashboard/installer/middleware.py index 6fb7fe0fe5..613d61453b 100644 --- a/src/dashboard/installer/middleware.py +++ b/src/archivematica/dashboard/installer/middleware.py @@ -16,12 +16,13 @@ # along with Archivematica. If not, see . from re import compile as re_compile -import components.helpers as helpers from django.conf import settings from django.shortcuts import redirect from django.urls import reverse from django.utils.deprecation import MiddlewareMixin +import archivematica.dashboard.components.helpers as helpers + EXEMPT_URLS = None diff --git a/src/dashboard/installer/steps.py b/src/archivematica/dashboard/installer/steps.py similarity index 92% rename from src/dashboard/installer/steps.py rename to src/archivematica/dashboard/installer/steps.py index 52128cf01f..393b334098 100644 --- a/src/dashboard/installer/steps.py +++ b/src/archivematica/dashboard/installer/steps.py @@ -17,15 +17,16 @@ import logging import uuid -import components.helpers as helpers -import storageService as storage_service from django.conf import settings as django_settings from django.contrib.auth import get_user_model -from main.models import Agent -from main.models import DashboardSetting -from main.models import User from tastypie.models import ApiKey +import archivematica.dashboard.components.helpers as helpers +from archivematica.archivematicaCommon import storageService as storage_service +from archivematica.dashboard.main.models import Agent +from archivematica.dashboard.main.models import DashboardSetting +from archivematica.dashboard.main.models import User + logger = logging.getLogger("archivematica.dashboard") diff --git a/src/dashboard/installer/urls.py b/src/archivematica/dashboard/installer/urls.py similarity index 94% rename from src/dashboard/installer/urls.py rename to src/archivematica/dashboard/installer/urls.py index 62f2bfcd5c..ec640e0f9e 100644 --- a/src/dashboard/installer/urls.py +++ b/src/archivematica/dashboard/installer/urls.py @@ -15,7 +15,8 @@ # You should have received a copy of the GNU General Public License # along with Archivematica. If not, see . from django.urls import path -from installer import views + +from archivematica.dashboard.installer import views app_name = "installer" urlpatterns = [ diff --git a/src/dashboard/installer/views.py b/src/archivematica/dashboard/installer/views.py similarity index 89% rename from src/dashboard/installer/views.py rename to src/archivematica/dashboard/installer/views.py index 7254a9586e..7a4086eef2 100644 --- a/src/dashboard/installer/views.py +++ b/src/archivematica/dashboard/installer/views.py @@ -14,8 +14,6 @@ # # You should have received a copy of the GNU General Public License # along with Archivematica. If not, see . -from components import helpers -from components.administration.forms import StorageSettingsForm from django.contrib import messages from django.contrib.auth import authenticate from django.contrib.auth import login @@ -23,12 +21,15 @@ from django.shortcuts import redirect from django.shortcuts import render from django.utils.translation import gettext as _ -from installer.forms import OrganizationForm -from installer.forms import SuperUserCreationForm -from installer.steps import setup_pipeline -from installer.steps import setup_pipeline_in_ss from tastypie.models import ApiKey +from archivematica.dashboard.components import helpers +from archivematica.dashboard.components.administration.forms import StorageSettingsForm +from archivematica.dashboard.installer.forms import OrganizationForm +from archivematica.dashboard.installer.forms import SuperUserCreationForm +from archivematica.dashboard.installer.steps import setup_pipeline +from archivematica.dashboard.installer.steps import setup_pipeline_in_ss + def welcome(request): # This form will be only accessible when there is no uuid diff --git a/src/dashboard/locale/en/LC_MESSAGES/django.po b/src/archivematica/dashboard/locale/en/LC_MESSAGES/django.po similarity index 100% rename from src/dashboard/locale/en/LC_MESSAGES/django.po rename to src/archivematica/dashboard/locale/en/LC_MESSAGES/django.po diff --git a/src/dashboard/locale/en/LC_MESSAGES/djangojs.po b/src/archivematica/dashboard/locale/en/LC_MESSAGES/djangojs.po similarity index 100% rename from src/dashboard/locale/en/LC_MESSAGES/djangojs.po rename to src/archivematica/dashboard/locale/en/LC_MESSAGES/djangojs.po diff --git a/src/dashboard/locale/es/LC_MESSAGES/django.po b/src/archivematica/dashboard/locale/es/LC_MESSAGES/django.po similarity index 100% rename from src/dashboard/locale/es/LC_MESSAGES/django.po rename to src/archivematica/dashboard/locale/es/LC_MESSAGES/django.po diff --git a/src/dashboard/locale/es/LC_MESSAGES/djangojs.po b/src/archivematica/dashboard/locale/es/LC_MESSAGES/djangojs.po similarity index 100% rename from src/dashboard/locale/es/LC_MESSAGES/djangojs.po rename to src/archivematica/dashboard/locale/es/LC_MESSAGES/djangojs.po diff --git a/src/dashboard/locale/fr/LC_MESSAGES/django.po b/src/archivematica/dashboard/locale/fr/LC_MESSAGES/django.po similarity index 100% rename from src/dashboard/locale/fr/LC_MESSAGES/django.po rename to src/archivematica/dashboard/locale/fr/LC_MESSAGES/django.po diff --git a/src/dashboard/locale/fr/LC_MESSAGES/djangojs.po b/src/archivematica/dashboard/locale/fr/LC_MESSAGES/djangojs.po similarity index 100% rename from src/dashboard/locale/fr/LC_MESSAGES/djangojs.po rename to src/archivematica/dashboard/locale/fr/LC_MESSAGES/djangojs.po diff --git a/src/dashboard/locale/ja/LC_MESSAGES/django.po b/src/archivematica/dashboard/locale/ja/LC_MESSAGES/django.po similarity index 100% rename from src/dashboard/locale/ja/LC_MESSAGES/django.po rename to src/archivematica/dashboard/locale/ja/LC_MESSAGES/django.po diff --git a/src/dashboard/locale/ja/LC_MESSAGES/djangojs.po b/src/archivematica/dashboard/locale/ja/LC_MESSAGES/djangojs.po similarity index 100% rename from src/dashboard/locale/ja/LC_MESSAGES/djangojs.po rename to src/archivematica/dashboard/locale/ja/LC_MESSAGES/djangojs.po diff --git a/src/dashboard/locale/no/LC_MESSAGES/django.po b/src/archivematica/dashboard/locale/no/LC_MESSAGES/django.po similarity index 100% rename from src/dashboard/locale/no/LC_MESSAGES/django.po rename to src/archivematica/dashboard/locale/no/LC_MESSAGES/django.po diff --git a/src/dashboard/locale/no/LC_MESSAGES/djangojs.po b/src/archivematica/dashboard/locale/no/LC_MESSAGES/djangojs.po similarity index 100% rename from src/dashboard/locale/no/LC_MESSAGES/djangojs.po rename to src/archivematica/dashboard/locale/no/LC_MESSAGES/djangojs.po diff --git a/src/dashboard/locale/pt/LC_MESSAGES/django.po b/src/archivematica/dashboard/locale/pt/LC_MESSAGES/django.po similarity index 100% rename from src/dashboard/locale/pt/LC_MESSAGES/django.po rename to src/archivematica/dashboard/locale/pt/LC_MESSAGES/django.po diff --git a/src/dashboard/locale/pt/LC_MESSAGES/djangojs.po b/src/archivematica/dashboard/locale/pt/LC_MESSAGES/djangojs.po similarity index 100% rename from src/dashboard/locale/pt/LC_MESSAGES/djangojs.po rename to src/archivematica/dashboard/locale/pt/LC_MESSAGES/djangojs.po diff --git a/src/dashboard/locale/pt_BR/LC_MESSAGES/django.po b/src/archivematica/dashboard/locale/pt_BR/LC_MESSAGES/django.po similarity index 100% rename from src/dashboard/locale/pt_BR/LC_MESSAGES/django.po rename to src/archivematica/dashboard/locale/pt_BR/LC_MESSAGES/django.po diff --git a/src/dashboard/locale/pt_BR/LC_MESSAGES/djangojs.po b/src/archivematica/dashboard/locale/pt_BR/LC_MESSAGES/djangojs.po similarity index 100% rename from src/dashboard/locale/pt_BR/LC_MESSAGES/djangojs.po rename to src/archivematica/dashboard/locale/pt_BR/LC_MESSAGES/djangojs.po diff --git a/src/dashboard/locale/sv/LC_MESSAGES/django.po b/src/archivematica/dashboard/locale/sv/LC_MESSAGES/django.po similarity index 100% rename from src/dashboard/locale/sv/LC_MESSAGES/django.po rename to src/archivematica/dashboard/locale/sv/LC_MESSAGES/django.po diff --git a/src/dashboard/locale/sv/LC_MESSAGES/djangojs.po b/src/archivematica/dashboard/locale/sv/LC_MESSAGES/djangojs.po similarity index 100% rename from src/dashboard/locale/sv/LC_MESSAGES/djangojs.po rename to src/archivematica/dashboard/locale/sv/LC_MESSAGES/djangojs.po diff --git a/src/dashboard/main/migrations/__init__.py b/src/archivematica/dashboard/main/__init__.py similarity index 100% rename from src/dashboard/main/migrations/__init__.py rename to src/archivematica/dashboard/main/__init__.py diff --git a/src/dashboard/main/apps.py b/src/archivematica/dashboard/main/apps.py similarity index 57% rename from src/dashboard/main/apps.py rename to src/archivematica/dashboard/main/apps.py index f28d2e21c8..409559d235 100644 --- a/src/dashboard/main/apps.py +++ b/src/archivematica/dashboard/main/apps.py @@ -3,7 +3,7 @@ class MainAppConfig(AppConfig): default_auto_field = "django.db.models.AutoField" - name = "main" + name = "archivematica.dashboard.main" def ready(self): - import main.signals # noqa: F401 + import archivematica.dashboard.main.signals # noqa: F401 diff --git a/src/dashboard/main/context_processors.py b/src/archivematica/dashboard/main/context_processors.py similarity index 100% rename from src/dashboard/main/context_processors.py rename to src/archivematica/dashboard/main/context_processors.py diff --git a/src/dashboard/main/forms.py b/src/archivematica/dashboard/main/forms.py similarity index 95% rename from src/dashboard/main/forms.py rename to src/archivematica/dashboard/main/forms.py index 7423a5f6f4..1066f79685 100644 --- a/src/dashboard/main/forms.py +++ b/src/archivematica/dashboard/main/forms.py @@ -16,7 +16,8 @@ # along with Archivematica. If not, see . from django import forms from django.conf import settings -from main import models + +from archivematica.dashboard.main import models class EventDetailForm(forms.ModelForm): diff --git a/src/dashboard/main/templatetags/__init__.py b/src/archivematica/dashboard/main/management/__init__.py similarity index 100% rename from src/dashboard/main/templatetags/__init__.py rename to src/archivematica/dashboard/main/management/__init__.py diff --git a/src/dashboard/main/management/commands/__init__.py b/src/archivematica/dashboard/main/management/commands/__init__.py similarity index 96% rename from src/dashboard/main/management/commands/__init__.py rename to src/archivematica/dashboard/main/management/commands/__init__.py index a4d8ed54cf..433152abbe 100644 --- a/src/dashboard/main/management/commands/__init__.py +++ b/src/archivematica/dashboard/main/management/commands/__init__.py @@ -1,11 +1,12 @@ import time -import elasticSearchFunctions as es from django.conf import settings as django_settings from django.core.management.base import BaseCommand from django.core.management.base import CommandError from elasticsearch import ElasticsearchException +from archivematica.archivematicaCommon import elasticSearchFunctions as es + class DashboardCommand(BaseCommand): def success(self, message): diff --git a/src/dashboard/main/management/commands/purge_transient_processing_data.py b/src/archivematica/dashboard/main/management/commands/purge_transient_processing_data.py similarity index 97% rename from src/dashboard/main/management/commands/purge_transient_processing_data.py rename to src/archivematica/dashboard/main/management/commands/purge_transient_processing_data.py index 4e1be20e3a..88abe935de 100644 --- a/src/dashboard/main/management/commands/purge_transient_processing_data.py +++ b/src/archivematica/dashboard/main/management/commands/purge_transient_processing_data.py @@ -34,14 +34,15 @@ import logging import traceback -import elasticSearchFunctions as es from django.conf import settings as django_settings from django.core.management.base import CommandError from django.utils import timezone from django.utils.dateparse import parse_duration from elasticsearch import ElasticsearchException -from main import models -from main.management.commands import DashboardCommand + +from archivematica.archivematicaCommon import elasticSearchFunctions as es +from archivematica.dashboard.main import models +from archivematica.dashboard.main.management.commands import DashboardCommand class Command(DashboardCommand): diff --git a/src/dashboard/main/management/commands/rebuild_aip_index_from_storage_service.py b/src/archivematica/dashboard/main/management/commands/rebuild_aip_index_from_storage_service.py similarity index 96% rename from src/dashboard/main/management/commands/rebuild_aip_index_from_storage_service.py rename to src/archivematica/dashboard/main/management/commands/rebuild_aip_index_from_storage_service.py index f7c06aecdb..e4b1e95e49 100644 --- a/src/dashboard/main/management/commands/rebuild_aip_index_from_storage_service.py +++ b/src/archivematica/dashboard/main/management/commands/rebuild_aip_index_from_storage_service.py @@ -39,13 +39,14 @@ import sys import tempfile -import archivematicaFunctions as am -import elasticSearchFunctions as es -import storageService from elasticsearch import ElasticsearchException from lxml import etree -from main.management.commands import DashboardCommand -from main.management.commands import setup_es_for_aip_reindexing + +from archivematica.archivematicaCommon import archivematicaFunctions as am +from archivematica.archivematicaCommon import elasticSearchFunctions as es +from archivematica.archivematicaCommon import storageService +from archivematica.dashboard.main.management.commands import DashboardCommand +from archivematica.dashboard.main.management.commands import setup_es_for_aip_reindexing PACKAGE_TYPES_TO_INDEX = ("AIP", "AIC") diff --git a/src/dashboard/main/management/commands/rebuild_elasticsearch_aip_index_from_files.py b/src/archivematica/dashboard/main/management/commands/rebuild_elasticsearch_aip_index_from_files.py similarity index 96% rename from src/dashboard/main/management/commands/rebuild_elasticsearch_aip_index_from_files.py rename to src/archivematica/dashboard/main/management/commands/rebuild_elasticsearch_aip_index_from_files.py index 01352d3b19..0453955ef1 100644 --- a/src/dashboard/main/management/commands/rebuild_elasticsearch_aip_index_from_files.py +++ b/src/archivematica/dashboard/main/management/commands/rebuild_elasticsearch_aip_index_from_files.py @@ -40,14 +40,15 @@ import sys import tempfile -import archivematicaFunctions as am -import elasticSearchFunctions -import namespaces as ns -import storageService as storage_service from django.core.management.base import CommandError from lxml import etree -from main.management.commands import DashboardCommand -from main.management.commands import setup_es_for_aip_reindexing + +from archivematica.archivematicaCommon import archivematicaFunctions as am +from archivematica.archivematicaCommon import elasticSearchFunctions +from archivematica.archivematicaCommon import namespaces as ns +from archivematica.archivematicaCommon import storageService as storage_service +from archivematica.dashboard.main.management.commands import DashboardCommand +from archivematica.dashboard.main.management.commands import setup_es_for_aip_reindexing def extract_file(archive_path, destination_dir, relative_path): diff --git a/src/dashboard/main/management/commands/rebuild_transfer_backlog.py b/src/archivematica/dashboard/main/management/commands/rebuild_transfer_backlog.py similarity index 95% rename from src/dashboard/main/management/commands/rebuild_transfer_backlog.py rename to src/archivematica/dashboard/main/management/commands/rebuild_transfer_backlog.py index 0d65a65e7d..933c3d7f3a 100644 --- a/src/dashboard/main/management/commands/rebuild_transfer_backlog.py +++ b/src/archivematica/dashboard/main/management/commands/rebuild_transfer_backlog.py @@ -47,24 +47,25 @@ from pathlib import Path from subprocess import CalledProcessError -import archivematicaFunctions as am import bagit -import elasticSearchFunctions as es import metsrw -import storageService -from components.rights.load import load_rights from django.conf import settings as django_settings from django.core.exceptions import ValidationError from django.core.management.base import CommandError -from fileOperations import addFileToTransfer -from fileOperations import extract_package -from fpr.models import FormatVersion -from main.management.commands import DashboardCommand -from main.management.commands import boolean_input -from main.models import Agent -from main.models import FileFormatVersion -from main.models import FileID -from main.models import Transfer + +from archivematica.archivematicaCommon import archivematicaFunctions as am +from archivematica.archivematicaCommon import elasticSearchFunctions as es +from archivematica.archivematicaCommon import storageService +from archivematica.archivematicaCommon.fileOperations import addFileToTransfer +from archivematica.archivematicaCommon.fileOperations import extract_package +from archivematica.dashboard.components.rights.load import load_rights +from archivematica.dashboard.fpr.models import FormatVersion +from archivematica.dashboard.main.management.commands import DashboardCommand +from archivematica.dashboard.main.management.commands import boolean_input +from archivematica.dashboard.main.models import Agent +from archivematica.dashboard.main.models import FileFormatVersion +from archivematica.dashboard.main.models import FileID +from archivematica.dashboard.main.models import Transfer logger = logging.getLogger("archivematica.dashboard") diff --git a/src/dashboard/main/management/commands/reindex_from_remote_cluster.py b/src/archivematica/dashboard/main/management/commands/reindex_from_remote_cluster.py similarity index 97% rename from src/dashboard/main/management/commands/reindex_from_remote_cluster.py rename to src/archivematica/dashboard/main/management/commands/reindex_from_remote_cluster.py index 32456985e9..08c6d44158 100644 --- a/src/dashboard/main/management/commands/reindex_from_remote_cluster.py +++ b/src/archivematica/dashboard/main/management/commands/reindex_from_remote_cluster.py @@ -16,9 +16,10 @@ import sys import elasticsearch -import elasticSearchFunctions from django.conf import settings -from main.management.commands import DashboardCommand + +from archivematica.archivematicaCommon import elasticSearchFunctions +from archivematica.dashboard.main.management.commands import DashboardCommand class Command(DashboardCommand): diff --git a/src/dashboard/main/management/commands/resolve_pending_jobs.py b/src/archivematica/dashboard/main/management/commands/resolve_pending_jobs.py similarity index 97% rename from src/dashboard/main/management/commands/resolve_pending_jobs.py rename to src/archivematica/dashboard/main/management/commands/resolve_pending_jobs.py index 95492b5654..ea0285b21a 100644 --- a/src/dashboard/main/management/commands/resolve_pending_jobs.py +++ b/src/archivematica/dashboard/main/management/commands/resolve_pending_jobs.py @@ -13,11 +13,12 @@ public APIs. This is an alternative to the old mcp-rpc-cli command. """ -from contrib.mcp.client import MCPClient from django.contrib.auth import get_user_model from django.core.management.base import CommandError from lxml import etree -from main.management.commands import DashboardCommand + +from archivematica.dashboard.contrib.mcp.client import MCPClient +from archivematica.dashboard.main.management.commands import DashboardCommand class Command(DashboardCommand): diff --git a/src/dashboard/main/management/commands/update_elasticsearch_mappings.py b/src/archivematica/dashboard/main/management/commands/update_elasticsearch_mappings.py similarity index 94% rename from src/dashboard/main/management/commands/update_elasticsearch_mappings.py rename to src/archivematica/dashboard/main/management/commands/update_elasticsearch_mappings.py index ce75324deb..3621b6b787 100644 --- a/src/dashboard/main/management/commands/update_elasticsearch_mappings.py +++ b/src/archivematica/dashboard/main/management/commands/update_elasticsearch_mappings.py @@ -12,10 +12,11 @@ import sys -import elasticSearchFunctions as es from django.conf import settings from elasticsearch import ElasticsearchException -from main.management.commands import DashboardCommand + +from archivematica.archivematicaCommon import elasticSearchFunctions as es +from archivematica.dashboard.main.management.commands import DashboardCommand class Command(DashboardCommand): diff --git a/src/dashboard/main/migrations/0001_initial.py b/src/archivematica/dashboard/main/migrations/0001_initial.py similarity index 98% rename from src/dashboard/main/migrations/0001_initial.py rename to src/archivematica/dashboard/main/migrations/0001_initial.py index 1196db369b..81c90de7ce 100644 --- a/src/dashboard/main/migrations/0001_initial.py +++ b/src/archivematica/dashboard/main/migrations/0001_initial.py @@ -1,9 +1,10 @@ import uuid -import main.models from django.db import migrations from django.db import models +import archivematica.dashboard.main.models as main_models + class Migration(migrations.Migration): dependencies = [("fpr", "__first__")] @@ -18,7 +19,7 @@ class Migration(migrations.Migration): ), ( "sipuuid", - main.models.UUIDField( + main_models.UUIDField( max_length=36, db_column="SIPUUID", blank=True, @@ -190,7 +191,7 @@ class Migration(migrations.Migration): ), ( "event_id", - main.models.UUIDField( + main_models.UUIDField( null=True, db_column="eventIdentifierUUID", editable=False, @@ -227,7 +228,7 @@ class Migration(migrations.Migration): fields=[ ( "uuid", - main.models.UUIDField( + main_models.UUIDField( max_length=36, serialize=False, primary_key=True, @@ -374,7 +375,7 @@ class Migration(migrations.Migration): fields=[ ( "jobuuid", - main.models.UUIDField( + main_models.UUIDField( primary_key=True, db_column="jobUUID", serialize=False, @@ -401,7 +402,7 @@ class Migration(migrations.Migration): ("directory", models.TextField(blank=True)), ( "sipuuid", - main.models.UUIDField( + main_models.UUIDField( max_length=36, db_column="SIPUUID", default=uuid.uuid4 ), ), @@ -435,7 +436,7 @@ class Migration(migrations.Migration): fields=[ ( "id", - main.models.UUIDField( + main_models.UUIDField( primary_key=True, db_column="pk", serialize=False, @@ -468,7 +469,7 @@ class Migration(migrations.Migration): fields=[ ( "id", - main.models.UUIDField( + main_models.UUIDField( primary_key=True, db_column="pk", serialize=False, @@ -502,7 +503,7 @@ class Migration(migrations.Migration): fields=[ ( "id", - main.models.UUIDField( + main_models.UUIDField( primary_key=True, db_column="pk", serialize=False, @@ -533,7 +534,7 @@ class Migration(migrations.Migration): fields=[ ( "id", - main.models.UUIDField( + main_models.UUIDField( primary_key=True, db_column="pk", serialize=False, @@ -570,7 +571,7 @@ class Migration(migrations.Migration): fields=[ ( "id", - main.models.UUIDField( + main_models.UUIDField( primary_key=True, db_column="pk", serialize=False, @@ -633,7 +634,7 @@ class Migration(migrations.Migration): fields=[ ( "id", - main.models.UUIDField( + main_models.UUIDField( primary_key=True, db_column="pk", serialize=False, @@ -1492,7 +1493,7 @@ class Migration(migrations.Migration): fields=[ ( "uuid", - main.models.UUIDField( + main_models.UUIDField( max_length=36, serialize=False, primary_key=True, @@ -1563,7 +1564,7 @@ class Migration(migrations.Migration): ("arrange_path", models.CharField(max_length=255)), ( "file_uuid", - main.models.UUIDField( + main_models.UUIDField( default=uuid.uuid4, max_length=36, null=True, @@ -1573,7 +1574,7 @@ class Migration(migrations.Migration): ), ( "transfer_uuid", - main.models.UUIDField( + main_models.UUIDField( default=uuid.uuid4, max_length=36, null=True, @@ -1592,7 +1593,7 @@ class Migration(migrations.Migration): fields=[ ( "id", - main.models.UUIDField( + main_models.UUIDField( primary_key=True, db_column="pk", serialize=False, @@ -1674,7 +1675,7 @@ class Migration(migrations.Migration): fields=[ ( "taskuuid", - main.models.UUIDField( + main_models.UUIDField( max_length=36, serialize=False, primary_key=True, @@ -1727,7 +1728,7 @@ class Migration(migrations.Migration): fields=[ ( "id", - main.models.UUIDField( + main_models.UUIDField( primary_key=True, db_column="pk", serialize=False, @@ -1772,7 +1773,7 @@ class Migration(migrations.Migration): fields=[ ( "id", - main.models.UUIDField( + main_models.UUIDField( primary_key=True, db_column="pk", serialize=False, @@ -1816,7 +1817,7 @@ class Migration(migrations.Migration): fields=[ ( "id", - main.models.UUIDField( + main_models.UUIDField( primary_key=True, db_column="pk", serialize=False, @@ -1859,7 +1860,7 @@ class Migration(migrations.Migration): fields=[ ( "id", - main.models.UUIDField( + main_models.UUIDField( primary_key=True, db_column="pk", serialize=False, @@ -1902,7 +1903,7 @@ class Migration(migrations.Migration): fields=[ ( "id", - main.models.UUIDField( + main_models.UUIDField( primary_key=True, db_column="pk", serialize=False, @@ -1937,7 +1938,7 @@ class Migration(migrations.Migration): fields=[ ( "id", - main.models.UUIDField( + main_models.UUIDField( primary_key=True, db_column="pk", serialize=False, @@ -1967,7 +1968,7 @@ class Migration(migrations.Migration): fields=[ ( "id", - main.models.UUIDField( + main_models.UUIDField( primary_key=True, db_column="pk", serialize=False, @@ -2001,7 +2002,7 @@ class Migration(migrations.Migration): fields=[ ( "uuid", - main.models.UUIDField( + main_models.UUIDField( max_length=36, serialize=False, primary_key=True, @@ -2051,7 +2052,7 @@ class Migration(migrations.Migration): fields=[ ( "id", - main.models.UUIDField( + main_models.UUIDField( primary_key=True, db_column="pk", serialize=False, @@ -2092,7 +2093,7 @@ class Migration(migrations.Migration): fields=[ ( "id", - main.models.UUIDField( + main_models.UUIDField( primary_key=True, db_column="pk", serialize=False, @@ -2124,7 +2125,7 @@ class Migration(migrations.Migration): fields=[ ( "id", - main.models.UUIDField( + main_models.UUIDField( primary_key=True, db_column="pk", serialize=False, @@ -2148,7 +2149,7 @@ class Migration(migrations.Migration): fields=[ ( "id", - main.models.UUIDField( + main_models.UUIDField( primary_key=True, db_column="pk", serialize=False, @@ -2166,7 +2167,7 @@ class Migration(migrations.Migration): ), ( "unituuid", - main.models.UUIDField( + main_models.UUIDField( help_text="Semantically a foreign key to SIP or Transfer", max_length=36, null=True, @@ -2207,7 +2208,7 @@ class Migration(migrations.Migration): fields=[ ( "id", - main.models.UUIDField( + main_models.UUIDField( primary_key=True, db_column="pk", serialize=False, @@ -2249,7 +2250,7 @@ class Migration(migrations.Migration): fields=[ ( "id", - main.models.UUIDField( + main_models.UUIDField( primary_key=True, db_column="pk", serialize=False, diff --git a/src/dashboard/main/migrations/0002_initial_data.py b/src/archivematica/dashboard/main/migrations/0002_initial_data.py similarity index 100% rename from src/dashboard/main/migrations/0002_initial_data.py rename to src/archivematica/dashboard/main/migrations/0002_initial_data.py diff --git a/src/dashboard/main/migrations/0003_archivesspacedipobjectresourcepairing.py b/src/archivematica/dashboard/main/migrations/0003_archivesspacedipobjectresourcepairing.py similarity index 89% rename from src/dashboard/main/migrations/0003_archivesspacedipobjectresourcepairing.py rename to src/archivematica/dashboard/main/migrations/0003_archivesspacedipobjectresourcepairing.py index d81950ba44..3c763e1434 100644 --- a/src/dashboard/main/migrations/0003_archivesspacedipobjectresourcepairing.py +++ b/src/archivematica/dashboard/main/migrations/0003_archivesspacedipobjectresourcepairing.py @@ -1,9 +1,10 @@ import uuid -import main.models from django.db import migrations from django.db import models +import archivematica.dashboard.main.models as main_models + class Migration(migrations.Migration): dependencies = [("main", "0002_initial_data")] @@ -18,13 +19,13 @@ class Migration(migrations.Migration): ), ( "dipuuid", - main.models.UUIDField( + main_models.UUIDField( max_length=50, db_column="dipUUID", default=uuid.uuid4 ), ), ( "fileuuid", - main.models.UUIDField( + main_models.UUIDField( max_length=50, db_column="fileUUID", default=uuid.uuid4 ), ), diff --git a/src/dashboard/main/migrations/0003_archivesspacedipobjectresourcepairing_data.py b/src/archivematica/dashboard/main/migrations/0003_archivesspacedipobjectresourcepairing_data.py similarity index 100% rename from src/dashboard/main/migrations/0003_archivesspacedipobjectresourcepairing_data.py rename to src/archivematica/dashboard/main/migrations/0003_archivesspacedipobjectresourcepairing_data.py diff --git a/src/dashboard/main/migrations/0004_rights.py b/src/archivematica/dashboard/main/migrations/0004_rights.py similarity index 100% rename from src/dashboard/main/migrations/0004_rights.py rename to src/archivematica/dashboard/main/migrations/0004_rights.py diff --git a/src/dashboard/main/migrations/0005_reingest.py b/src/archivematica/dashboard/main/migrations/0005_reingest.py similarity index 100% rename from src/dashboard/main/migrations/0005_reingest.py rename to src/archivematica/dashboard/main/migrations/0005_reingest.py diff --git a/src/dashboard/main/migrations/0005_reingest_data.py b/src/archivematica/dashboard/main/migrations/0005_reingest_data.py similarity index 100% rename from src/dashboard/main/migrations/0005_reingest_data.py rename to src/archivematica/dashboard/main/migrations/0005_reingest_data.py diff --git a/src/dashboard/main/migrations/0006_levelofdescription.py b/src/archivematica/dashboard/main/migrations/0006_levelofdescription.py similarity index 95% rename from src/dashboard/main/migrations/0006_levelofdescription.py rename to src/archivematica/dashboard/main/migrations/0006_levelofdescription.py index c8d823e4f7..0d26f61c4f 100644 --- a/src/dashboard/main/migrations/0006_levelofdescription.py +++ b/src/archivematica/dashboard/main/migrations/0006_levelofdescription.py @@ -1,9 +1,10 @@ import uuid -import main.models from django.db import migrations from django.db import models +import archivematica.dashboard.main.models as main_models + def data_migration(apps, schema_editor): # Set AtoM DIP upload defaults @@ -33,7 +34,7 @@ class Migration(migrations.Migration): fields=[ ( "id", - main.models.UUIDField( + main_models.UUIDField( primary_key=True, db_column="pk", serialize=False, diff --git a/src/dashboard/main/migrations/0007_django_upgrade_tweaks.py b/src/archivematica/dashboard/main/migrations/0007_django_upgrade_tweaks.py similarity index 100% rename from src/dashboard/main/migrations/0007_django_upgrade_tweaks.py rename to src/archivematica/dashboard/main/migrations/0007_django_upgrade_tweaks.py diff --git a/src/dashboard/main/migrations/0008_fpcommandoutput.py b/src/archivematica/dashboard/main/migrations/0008_fpcommandoutput.py similarity index 100% rename from src/dashboard/main/migrations/0008_fpcommandoutput.py rename to src/archivematica/dashboard/main/migrations/0008_fpcommandoutput.py diff --git a/src/dashboard/main/migrations/0009_matching_gui.py b/src/archivematica/dashboard/main/migrations/0009_matching_gui.py similarity index 100% rename from src/dashboard/main/migrations/0009_matching_gui.py rename to src/archivematica/dashboard/main/migrations/0009_matching_gui.py diff --git a/src/dashboard/main/migrations/0010_dip_upload_store.py b/src/archivematica/dashboard/main/migrations/0010_dip_upload_store.py similarity index 100% rename from src/dashboard/main/migrations/0010_dip_upload_store.py rename to src/archivematica/dashboard/main/migrations/0010_dip_upload_store.py diff --git a/src/dashboard/main/migrations/0011_version_number.py b/src/archivematica/dashboard/main/migrations/0011_version_number.py similarity index 100% rename from src/dashboard/main/migrations/0011_version_number.py rename to src/archivematica/dashboard/main/migrations/0011_version_number.py diff --git a/src/dashboard/main/migrations/0012_file_id_text.py b/src/archivematica/dashboard/main/migrations/0012_file_id_text.py similarity index 100% rename from src/dashboard/main/migrations/0012_file_id_text.py rename to src/archivematica/dashboard/main/migrations/0012_file_id_text.py diff --git a/src/dashboard/main/migrations/0013_upload_archivesspace_inherit_notes.py b/src/archivematica/dashboard/main/migrations/0013_upload_archivesspace_inherit_notes.py similarity index 100% rename from src/dashboard/main/migrations/0013_upload_archivesspace_inherit_notes.py rename to src/archivematica/dashboard/main/migrations/0013_upload_archivesspace_inherit_notes.py diff --git a/src/dashboard/main/migrations/0014_aic_fixes.py b/src/archivematica/dashboard/main/migrations/0014_aic_fixes.py similarity index 100% rename from src/dashboard/main/migrations/0014_aic_fixes.py rename to src/archivematica/dashboard/main/migrations/0014_aic_fixes.py diff --git a/src/dashboard/main/migrations/0015_no_normalize_thumbnails.py b/src/archivematica/dashboard/main/migrations/0015_no_normalize_thumbnails.py similarity index 100% rename from src/dashboard/main/migrations/0015_no_normalize_thumbnails.py rename to src/archivematica/dashboard/main/migrations/0015_no_normalize_thumbnails.py diff --git a/src/dashboard/main/migrations/0016_file_currentlocation_nullable.py b/src/archivematica/dashboard/main/migrations/0016_file_currentlocation_nullable.py similarity index 100% rename from src/dashboard/main/migrations/0016_file_currentlocation_nullable.py rename to src/archivematica/dashboard/main/migrations/0016_file_currentlocation_nullable.py diff --git a/src/dashboard/main/migrations/0017_update_seigfried.py b/src/archivematica/dashboard/main/migrations/0017_update_seigfried.py similarity index 100% rename from src/dashboard/main/migrations/0017_update_seigfried.py rename to src/archivematica/dashboard/main/migrations/0017_update_seigfried.py diff --git a/src/dashboard/main/migrations/0018_archivesspace_sip_arrange.py b/src/archivematica/dashboard/main/migrations/0018_archivesspace_sip_arrange.py similarity index 100% rename from src/dashboard/main/migrations/0018_archivesspace_sip_arrange.py rename to src/archivematica/dashboard/main/migrations/0018_archivesspace_sip_arrange.py diff --git a/src/dashboard/main/migrations/0019_normalization_report.py b/src/archivematica/dashboard/main/migrations/0019_normalization_report.py similarity index 100% rename from src/dashboard/main/migrations/0019_normalization_report.py rename to src/archivematica/dashboard/main/migrations/0019_normalization_report.py diff --git a/src/dashboard/main/migrations/0020_index_after_processing_decision.py b/src/archivematica/dashboard/main/migrations/0020_index_after_processing_decision.py similarity index 100% rename from src/dashboard/main/migrations/0020_index_after_processing_decision.py rename to src/archivematica/dashboard/main/migrations/0020_index_after_processing_decision.py diff --git a/src/dashboard/main/migrations/0021_checksum_algorithms.py b/src/archivematica/dashboard/main/migrations/0021_checksum_algorithms.py similarity index 100% rename from src/dashboard/main/migrations/0021_checksum_algorithms.py rename to src/archivematica/dashboard/main/migrations/0021_checksum_algorithms.py diff --git a/src/dashboard/main/migrations/0022_email_report_args.py b/src/archivematica/dashboard/main/migrations/0022_email_report_args.py similarity index 100% rename from src/dashboard/main/migrations/0022_email_report_args.py rename to src/archivematica/dashboard/main/migrations/0022_email_report_args.py diff --git a/src/dashboard/main/migrations/0023_blob_fields.py b/src/archivematica/dashboard/main/migrations/0023_blob_fields.py similarity index 100% rename from src/dashboard/main/migrations/0023_blob_fields.py rename to src/archivematica/dashboard/main/migrations/0023_blob_fields.py diff --git a/src/dashboard/main/migrations/0024_agenttype.py b/src/archivematica/dashboard/main/migrations/0024_agenttype.py similarity index 100% rename from src/dashboard/main/migrations/0024_agenttype.py rename to src/archivematica/dashboard/main/migrations/0024_agenttype.py diff --git a/src/dashboard/main/migrations/0025_copyrightstatus_controlled_vocab.py b/src/archivematica/dashboard/main/migrations/0025_copyrightstatus_controlled_vocab.py similarity index 100% rename from src/dashboard/main/migrations/0025_copyrightstatus_controlled_vocab.py rename to src/archivematica/dashboard/main/migrations/0025_copyrightstatus_controlled_vocab.py diff --git a/src/dashboard/main/migrations/0026_agent_m2m_event.py b/src/archivematica/dashboard/main/migrations/0026_agent_m2m_event.py similarity index 100% rename from src/dashboard/main/migrations/0026_agent_m2m_event.py rename to src/archivematica/dashboard/main/migrations/0026_agent_m2m_event.py diff --git a/src/dashboard/main/migrations/0027_full_reingest.py b/src/archivematica/dashboard/main/migrations/0027_full_reingest.py similarity index 100% rename from src/dashboard/main/migrations/0027_full_reingest.py rename to src/archivematica/dashboard/main/migrations/0027_full_reingest.py diff --git a/src/dashboard/main/migrations/0028_version_number.py b/src/archivematica/dashboard/main/migrations/0028_version_number.py similarity index 100% rename from src/dashboard/main/migrations/0028_version_number.py rename to src/archivematica/dashboard/main/migrations/0028_version_number.py diff --git a/src/dashboard/main/migrations/0029_backlog_removal_event.py b/src/archivematica/dashboard/main/migrations/0029_backlog_removal_event.py similarity index 100% rename from src/dashboard/main/migrations/0029_backlog_removal_event.py rename to src/archivematica/dashboard/main/migrations/0029_backlog_removal_event.py diff --git a/src/dashboard/main/migrations/0030_rights_import.py b/src/archivematica/dashboard/main/migrations/0030_rights_import.py similarity index 100% rename from src/dashboard/main/migrations/0030_rights_import.py rename to src/archivematica/dashboard/main/migrations/0030_rights_import.py diff --git a/src/dashboard/main/migrations/0031_job_currentstep_choices.py b/src/archivematica/dashboard/main/migrations/0031_job_currentstep_choices.py similarity index 100% rename from src/dashboard/main/migrations/0031_job_currentstep_choices.py rename to src/archivematica/dashboard/main/migrations/0031_job_currentstep_choices.py diff --git a/src/dashboard/main/migrations/0032_dashboardsetting_scope.py b/src/archivematica/dashboard/main/migrations/0032_dashboardsetting_scope.py similarity index 98% rename from src/dashboard/main/migrations/0032_dashboardsetting_scope.py rename to src/archivematica/dashboard/main/migrations/0032_dashboardsetting_scope.py index 44a753d582..5b87ed2ac2 100644 --- a/src/dashboard/main/migrations/0032_dashboardsetting_scope.py +++ b/src/archivematica/dashboard/main/migrations/0032_dashboardsetting_scope.py @@ -2,9 +2,10 @@ from django.db import migrations from django.db import models -from main.models import DashboardSetting -from main.models import DashboardSettingManager -from main.models import Job + +from archivematica.dashboard.main.models import DashboardSetting +from archivematica.dashboard.main.models import DashboardSettingManager +from archivematica.dashboard.main.models import Job def data_migration_atom_to_dict(apps, schema_editor): diff --git a/src/dashboard/main/migrations/0033_store_transfer_file_modification_dates.py b/src/archivematica/dashboard/main/migrations/0033_store_transfer_file_modification_dates.py similarity index 98% rename from src/dashboard/main/migrations/0033_store_transfer_file_modification_dates.py rename to src/archivematica/dashboard/main/migrations/0033_store_transfer_file_modification_dates.py index 7e26a3683e..f984c999e6 100644 --- a/src/dashboard/main/migrations/0033_store_transfer_file_modification_dates.py +++ b/src/archivematica/dashboard/main/migrations/0033_store_transfer_file_modification_dates.py @@ -1,6 +1,7 @@ from django.db import migrations from django.db import models -from main.models import Job + +from archivematica.dashboard.main.models import Job # Can't use apps.get_model for this model as we need to access class attributes diff --git a/src/dashboard/main/migrations/0034_add_readme_to_aips.py b/src/archivematica/dashboard/main/migrations/0034_add_readme_to_aips.py similarity index 98% rename from src/dashboard/main/migrations/0034_add_readme_to_aips.py rename to src/archivematica/dashboard/main/migrations/0034_add_readme_to_aips.py index 1d8dd38fe0..44e10d51fa 100644 --- a/src/dashboard/main/migrations/0034_add_readme_to_aips.py +++ b/src/archivematica/dashboard/main/migrations/0034_add_readme_to_aips.py @@ -1,5 +1,6 @@ from django.db import migrations -from main.models import Job + +from archivematica.dashboard.main.models import Job # Can't use apps.get_model for this model as we need to access class attributes diff --git a/src/dashboard/main/migrations/0035_fix_workflow_dip_generation.py b/src/archivematica/dashboard/main/migrations/0035_fix_workflow_dip_generation.py similarity index 100% rename from src/dashboard/main/migrations/0035_fix_workflow_dip_generation.py rename to src/archivematica/dashboard/main/migrations/0035_fix_workflow_dip_generation.py diff --git a/src/dashboard/main/migrations/0036_mediaconch_validation.py b/src/archivematica/dashboard/main/migrations/0036_mediaconch_validation.py similarity index 100% rename from src/dashboard/main/migrations/0036_mediaconch_validation.py rename to src/archivematica/dashboard/main/migrations/0036_mediaconch_validation.py diff --git a/src/dashboard/main/migrations/0037_mediaconch_policy_checks.py b/src/archivematica/dashboard/main/migrations/0037_mediaconch_policy_checks.py similarity index 100% rename from src/dashboard/main/migrations/0037_mediaconch_policy_checks.py rename to src/archivematica/dashboard/main/migrations/0037_mediaconch_policy_checks.py diff --git a/src/dashboard/main/migrations/0038_fix_workflow_store_dip.py b/src/archivematica/dashboard/main/migrations/0038_fix_workflow_store_dip.py similarity index 100% rename from src/dashboard/main/migrations/0038_fix_workflow_store_dip.py rename to src/archivematica/dashboard/main/migrations/0038_fix_workflow_store_dip.py diff --git a/src/dashboard/main/migrations/0039_delete_sudo_clientscript.py b/src/archivematica/dashboard/main/migrations/0039_delete_sudo_clientscript.py similarity index 100% rename from src/dashboard/main/migrations/0039_delete_sudo_clientscript.py rename to src/archivematica/dashboard/main/migrations/0039_delete_sudo_clientscript.py diff --git a/src/dashboard/main/migrations/0040_directory_model.py b/src/archivematica/dashboard/main/migrations/0040_directory_model.py similarity index 99% rename from src/dashboard/main/migrations/0040_directory_model.py rename to src/archivematica/dashboard/main/migrations/0040_directory_model.py index 928e1e7453..672aa248f6 100644 --- a/src/dashboard/main/migrations/0040_directory_model.py +++ b/src/archivematica/dashboard/main/migrations/0040_directory_model.py @@ -1,9 +1,10 @@ import uuid -import main.models from django.db import migrations from django.db import models +import archivematica.dashboard.main.models as main_models + def data_migration(apps, schema_editor): """Creates the ``Directory`` model, primarily so that directories can be @@ -228,7 +229,7 @@ class Migration(migrations.Migration): fields=[ ( "uuid", - main.models.UUIDField( + main_models.UUIDField( max_length=36, serialize=False, primary_key=True, diff --git a/src/dashboard/main/migrations/0041_bind_pids.py b/src/archivematica/dashboard/main/migrations/0041_bind_pids.py similarity index 100% rename from src/dashboard/main/migrations/0041_bind_pids.py rename to src/archivematica/dashboard/main/migrations/0041_bind_pids.py diff --git a/src/dashboard/main/migrations/0042_directory_uuids_all_transfer_types.py b/src/archivematica/dashboard/main/migrations/0042_directory_uuids_all_transfer_types.py similarity index 100% rename from src/dashboard/main/migrations/0042_directory_uuids_all_transfer_types.py rename to src/archivematica/dashboard/main/migrations/0042_directory_uuids_all_transfer_types.py diff --git a/src/dashboard/main/migrations/0043_remove_create_pointer_file_ms.py b/src/archivematica/dashboard/main/migrations/0043_remove_create_pointer_file_ms.py similarity index 100% rename from src/dashboard/main/migrations/0043_remove_create_pointer_file_ms.py rename to src/archivematica/dashboard/main/migrations/0043_remove_create_pointer_file_ms.py diff --git a/src/dashboard/main/migrations/0044_update_idtools.py b/src/archivematica/dashboard/main/migrations/0044_update_idtools.py similarity index 100% rename from src/dashboard/main/migrations/0044_update_idtools.py rename to src/archivematica/dashboard/main/migrations/0044_update_idtools.py diff --git a/src/dashboard/main/migrations/0045_archivesspace_config_dict.py b/src/archivematica/dashboard/main/migrations/0045_archivesspace_config_dict.py similarity index 100% rename from src/dashboard/main/migrations/0045_archivesspace_config_dict.py rename to src/archivematica/dashboard/main/migrations/0045_archivesspace_config_dict.py diff --git a/src/dashboard/main/migrations/0046_optional_normative_structmap.py b/src/archivematica/dashboard/main/migrations/0046_optional_normative_structmap.py similarity index 99% rename from src/dashboard/main/migrations/0046_optional_normative_structmap.py rename to src/archivematica/dashboard/main/migrations/0046_optional_normative_structmap.py index 4a600c9336..46ddda9170 100644 --- a/src/dashboard/main/migrations/0046_optional_normative_structmap.py +++ b/src/archivematica/dashboard/main/migrations/0046_optional_normative_structmap.py @@ -1,5 +1,6 @@ from django.db import migrations -from main.models import Job + +from archivematica.dashboard.main.models import Job # Can't use apps.get_model for this model as we need to access class attributes diff --git a/src/dashboard/main/migrations/0047_version_number.py b/src/archivematica/dashboard/main/migrations/0047_version_number.py similarity index 100% rename from src/dashboard/main/migrations/0047_version_number.py rename to src/archivematica/dashboard/main/migrations/0047_version_number.py diff --git a/src/dashboard/main/migrations/0048_fix_upload_qubit_setting.py b/src/archivematica/dashboard/main/migrations/0048_fix_upload_qubit_setting.py similarity index 100% rename from src/dashboard/main/migrations/0048_fix_upload_qubit_setting.py rename to src/archivematica/dashboard/main/migrations/0048_fix_upload_qubit_setting.py diff --git a/src/dashboard/main/migrations/0049_change_pointer_file_filegrpuse.py b/src/archivematica/dashboard/main/migrations/0049_change_pointer_file_filegrpuse.py similarity index 100% rename from src/dashboard/main/migrations/0049_change_pointer_file_filegrpuse.py rename to src/archivematica/dashboard/main/migrations/0049_change_pointer_file_filegrpuse.py diff --git a/src/dashboard/main/migrations/0050_remove_magic_links.py b/src/archivematica/dashboard/main/migrations/0050_remove_magic_links.py similarity index 99% rename from src/dashboard/main/migrations/0050_remove_magic_links.py rename to src/archivematica/dashboard/main/migrations/0050_remove_magic_links.py index 0f8d76a43c..a140886895 100644 --- a/src/dashboard/main/migrations/0050_remove_magic_links.py +++ b/src/archivematica/dashboard/main/migrations/0050_remove_magic_links.py @@ -3,7 +3,8 @@ from collections import namedtuple from django.db import migrations -from main.models import Job + +from archivematica.dashboard.main.models import Job # Can't use apps.get_model for this model as we need to access class attributes. diff --git a/src/dashboard/main/migrations/0051_remove_verify_premis_checksums.py b/src/archivematica/dashboard/main/migrations/0051_remove_verify_premis_checksums.py similarity index 100% rename from src/dashboard/main/migrations/0051_remove_verify_premis_checksums.py rename to src/archivematica/dashboard/main/migrations/0051_remove_verify_premis_checksums.py diff --git a/src/dashboard/main/migrations/0052_correct_extract_packages_fallback_link.py b/src/archivematica/dashboard/main/migrations/0052_correct_extract_packages_fallback_link.py similarity index 100% rename from src/dashboard/main/migrations/0052_correct_extract_packages_fallback_link.py rename to src/archivematica/dashboard/main/migrations/0052_correct_extract_packages_fallback_link.py diff --git a/src/dashboard/main/migrations/0053_remove_mcp_unused_field.py b/src/archivematica/dashboard/main/migrations/0053_remove_mcp_unused_field.py similarity index 100% rename from src/dashboard/main/migrations/0053_remove_mcp_unused_field.py rename to src/archivematica/dashboard/main/migrations/0053_remove_mcp_unused_field.py diff --git a/src/dashboard/main/migrations/0054_index_aip_silent_error_branch.py b/src/archivematica/dashboard/main/migrations/0054_index_aip_silent_error_branch.py similarity index 96% rename from src/dashboard/main/migrations/0054_index_aip_silent_error_branch.py rename to src/archivematica/dashboard/main/migrations/0054_index_aip_silent_error_branch.py index 56395db45c..42653c50ad 100644 --- a/src/dashboard/main/migrations/0054_index_aip_silent_error_branch.py +++ b/src/archivematica/dashboard/main/migrations/0054_index_aip_silent_error_branch.py @@ -1,5 +1,6 @@ from django.db import migrations -from main.models import Job + +from archivematica.dashboard.main.models import Job # Can't use apps.get_model for this model as we need to access class attributes. diff --git a/src/dashboard/main/migrations/0055_normalize_thumbnail_mode_selection.py b/src/archivematica/dashboard/main/migrations/0055_normalize_thumbnail_mode_selection.py similarity index 100% rename from src/dashboard/main/migrations/0055_normalize_thumbnail_mode_selection.py rename to src/archivematica/dashboard/main/migrations/0055_normalize_thumbnail_mode_selection.py diff --git a/src/dashboard/main/migrations/0056_transfer_access_system_id.py b/src/archivematica/dashboard/main/migrations/0056_transfer_access_system_id.py similarity index 100% rename from src/dashboard/main/migrations/0056_transfer_access_system_id.py rename to src/archivematica/dashboard/main/migrations/0056_transfer_access_system_id.py diff --git a/src/dashboard/main/migrations/0057_7zip_no_compression.py b/src/archivematica/dashboard/main/migrations/0057_7zip_no_compression.py similarity index 100% rename from src/dashboard/main/migrations/0057_7zip_no_compression.py rename to src/archivematica/dashboard/main/migrations/0057_7zip_no_compression.py diff --git a/src/dashboard/main/migrations/0058_fix_unit_variable_pull_link.py b/src/archivematica/dashboard/main/migrations/0058_fix_unit_variable_pull_link.py similarity index 94% rename from src/dashboard/main/migrations/0058_fix_unit_variable_pull_link.py rename to src/archivematica/dashboard/main/migrations/0058_fix_unit_variable_pull_link.py index 708d674ce0..ed8600d290 100644 --- a/src/dashboard/main/migrations/0058_fix_unit_variable_pull_link.py +++ b/src/archivematica/dashboard/main/migrations/0058_fix_unit_variable_pull_link.py @@ -3,7 +3,8 @@ """ from django.db import migrations -from main.models import Job + +from archivematica.dashboard.main.models import Job # Can't use apps.get_model for this model as we need to access class attributes. diff --git a/src/dashboard/main/migrations/0059_siparrange_longblob.py b/src/archivematica/dashboard/main/migrations/0059_siparrange_longblob.py similarity index 95% rename from src/dashboard/main/migrations/0059_siparrange_longblob.py rename to src/archivematica/dashboard/main/migrations/0059_siparrange_longblob.py index e4eca2719a..17a38298b1 100644 --- a/src/dashboard/main/migrations/0059_siparrange_longblob.py +++ b/src/archivematica/dashboard/main/migrations/0059_siparrange_longblob.py @@ -1,10 +1,11 @@ import uuid -import main.models from django.db import OperationalError from django.db import migrations from django.db import models +import archivematica.dashboard.main.models as main_models + def drop_original_path_unique_key(apps, schema_editor): """Drop the unique key index from `original_path`. @@ -47,7 +48,7 @@ class Migration(migrations.Migration): migrations.AlterField( model_name="siparrange", name="file_uuid", - field=main.models.UUIDField( + field=main_models.UUIDField( null=True, default=uuid.uuid4, editable=False, diff --git a/src/dashboard/main/migrations/0060_delete_orphan_mscl.py b/src/archivematica/dashboard/main/migrations/0060_delete_orphan_mscl.py similarity index 100% rename from src/dashboard/main/migrations/0060_delete_orphan_mscl.py rename to src/archivematica/dashboard/main/migrations/0060_delete_orphan_mscl.py diff --git a/src/dashboard/main/migrations/0061_create_dataverse_transfer_type.py b/src/archivematica/dashboard/main/migrations/0061_create_dataverse_transfer_type.py similarity index 99% rename from src/dashboard/main/migrations/0061_create_dataverse_transfer_type.py rename to src/archivematica/dashboard/main/migrations/0061_create_dataverse_transfer_type.py index 288f2908e9..475d4f2fad 100644 --- a/src/dashboard/main/migrations/0061_create_dataverse_transfer_type.py +++ b/src/archivematica/dashboard/main/migrations/0061_create_dataverse_transfer_type.py @@ -17,7 +17,8 @@ """ from django.db import migrations -from main.models import Job + +from archivematica.dashboard.main.models import Job # We can't use apps.get_model for this model as we need to access class # attributes. diff --git a/src/dashboard/main/migrations/0062_atom_upload_exit_code.py b/src/archivematica/dashboard/main/migrations/0062_atom_upload_exit_code.py similarity index 96% rename from src/dashboard/main/migrations/0062_atom_upload_exit_code.py rename to src/archivematica/dashboard/main/migrations/0062_atom_upload_exit_code.py index a8dc839e02..615fc40116 100644 --- a/src/dashboard/main/migrations/0062_atom_upload_exit_code.py +++ b/src/archivematica/dashboard/main/migrations/0062_atom_upload_exit_code.py @@ -4,7 +4,8 @@ """ from django.db import migrations -from main.models import Job + +from archivematica.dashboard.main.models import Job ATOM_DIP_UPLOAD_CONFIG_EXIT_CODE_ZERO = "c9e90d83-533f-44c3-8220-083a6eb91751" diff --git a/src/dashboard/main/migrations/0063_update_idtools.py b/src/archivematica/dashboard/main/migrations/0063_update_idtools.py similarity index 100% rename from src/dashboard/main/migrations/0063_update_idtools.py rename to src/archivematica/dashboard/main/migrations/0063_update_idtools.py diff --git a/src/dashboard/main/migrations/0064_version_number.py b/src/archivematica/dashboard/main/migrations/0064_version_number.py similarity index 100% rename from src/dashboard/main/migrations/0064_version_number.py rename to src/archivematica/dashboard/main/migrations/0064_version_number.py diff --git a/src/dashboard/main/migrations/0065_version_number.py b/src/archivematica/dashboard/main/migrations/0065_version_number.py similarity index 100% rename from src/dashboard/main/migrations/0065_version_number.py rename to src/archivematica/dashboard/main/migrations/0065_version_number.py diff --git a/src/dashboard/main/migrations/0066_archivesspace_base_url.py b/src/archivematica/dashboard/main/migrations/0066_archivesspace_base_url.py similarity index 100% rename from src/dashboard/main/migrations/0066_archivesspace_base_url.py rename to src/archivematica/dashboard/main/migrations/0066_archivesspace_base_url.py diff --git a/src/dashboard/main/migrations/0067_delete_workflow_models.py b/src/archivematica/dashboard/main/migrations/0067_delete_workflow_models.py similarity index 96% rename from src/dashboard/main/migrations/0067_delete_workflow_models.py rename to src/archivematica/dashboard/main/migrations/0067_delete_workflow_models.py index 04d9729518..f8e24ab00c 100644 --- a/src/dashboard/main/migrations/0067_delete_workflow_models.py +++ b/src/archivematica/dashboard/main/migrations/0067_delete_workflow_models.py @@ -1,8 +1,9 @@ import uuid -import main.models from django.db import migrations +import archivematica.dashboard.main.models as main_models + class Migration(migrations.Migration): dependencies = [("main", "0066_archivesspace_base_url")] @@ -57,7 +58,7 @@ class Migration(migrations.Migration): migrations.AlterField( model_name="job", name="microservicechainlink", - field=main.models.UUIDField( + field=main_models.UUIDField( max_length=36, null=True, editable=False, @@ -69,7 +70,7 @@ class Migration(migrations.Migration): migrations.AlterField( model_name="unitvariable", name="microservicechainlink", - field=main.models.UUIDField( + field=main_models.UUIDField( max_length=36, null=True, editable=False, diff --git a/src/dashboard/main/migrations/0068_version_number.py b/src/archivematica/dashboard/main/migrations/0068_version_number.py similarity index 100% rename from src/dashboard/main/migrations/0068_version_number.py rename to src/archivematica/dashboard/main/migrations/0068_version_number.py diff --git a/src/dashboard/main/migrations/0069_remove_atk.py b/src/archivematica/dashboard/main/migrations/0069_remove_atk.py similarity index 100% rename from src/dashboard/main/migrations/0069_remove_atk.py rename to src/archivematica/dashboard/main/migrations/0069_remove_atk.py diff --git a/src/dashboard/main/migrations/0070_index_jobs.py b/src/archivematica/dashboard/main/migrations/0070_index_jobs.py similarity index 89% rename from src/dashboard/main/migrations/0070_index_jobs.py rename to src/archivematica/dashboard/main/migrations/0070_index_jobs.py index 16fdd3730a..30e9062e42 100644 --- a/src/dashboard/main/migrations/0070_index_jobs.py +++ b/src/archivematica/dashboard/main/migrations/0070_index_jobs.py @@ -1,8 +1,9 @@ import uuid -import main.models from django.db import migrations +import archivematica.dashboard.main.models as main_models + class Migration(migrations.Migration): dependencies = [("main", "0069_remove_atk")] @@ -11,7 +12,7 @@ class Migration(migrations.Migration): migrations.AlterField( model_name="job", name="sipuuid", - field=main.models.UUIDField( + field=main_models.UUIDField( max_length=36, db_column="SIPUUID", db_index=True, default=uuid.uuid4 ), ), diff --git a/src/dashboard/main/migrations/0071_index_unitvariables_runsql.py b/src/archivematica/dashboard/main/migrations/0071_index_unitvariables_runsql.py similarity index 100% rename from src/dashboard/main/migrations/0071_index_unitvariables_runsql.py rename to src/archivematica/dashboard/main/migrations/0071_index_unitvariables_runsql.py diff --git a/src/dashboard/main/migrations/0072_index_files.py b/src/archivematica/dashboard/main/migrations/0072_index_files.py similarity index 100% rename from src/dashboard/main/migrations/0072_index_files.py rename to src/archivematica/dashboard/main/migrations/0072_index_files.py diff --git a/src/dashboard/main/migrations/0073_index_files_runsql.py b/src/archivematica/dashboard/main/migrations/0073_index_files_runsql.py similarity index 100% rename from src/dashboard/main/migrations/0073_index_files_runsql.py rename to src/archivematica/dashboard/main/migrations/0073_index_files_runsql.py diff --git a/src/dashboard/main/migrations/0074_version_number.py b/src/archivematica/dashboard/main/migrations/0074_version_number.py similarity index 100% rename from src/dashboard/main/migrations/0074_version_number.py rename to src/archivematica/dashboard/main/migrations/0074_version_number.py diff --git a/src/dashboard/main/migrations/0075_userprofile_system_emails.py b/src/archivematica/dashboard/main/migrations/0075_userprofile_system_emails.py similarity index 100% rename from src/dashboard/main/migrations/0075_userprofile_system_emails.py rename to src/archivematica/dashboard/main/migrations/0075_userprofile_system_emails.py diff --git a/src/dashboard/main/migrations/0076_version_number.py b/src/archivematica/dashboard/main/migrations/0076_version_number.py similarity index 100% rename from src/dashboard/main/migrations/0076_version_number.py rename to src/archivematica/dashboard/main/migrations/0076_version_number.py diff --git a/src/dashboard/main/migrations/0077_uuid_fields.py b/src/archivematica/dashboard/main/migrations/0077_uuid_fields.py similarity index 82% rename from src/dashboard/main/migrations/0077_uuid_fields.py rename to src/archivematica/dashboard/main/migrations/0077_uuid_fields.py index d36cb0ecae..85169dad85 100644 --- a/src/dashboard/main/migrations/0077_uuid_fields.py +++ b/src/archivematica/dashboard/main/migrations/0077_uuid_fields.py @@ -2,9 +2,10 @@ import uuid -import main.models from django.db import migrations +import archivematica.dashboard.main.models as main_models + class Migration(migrations.Migration): dependencies = [("main", "0076_version_number")] @@ -13,7 +14,7 @@ class Migration(migrations.Migration): migrations.AlterField( model_name="event", name="event_id", - field=main.models.UUIDField( + field=main_models.UUIDField( db_column="eventIdentifierUUID", null=True, unique=True, @@ -23,7 +24,7 @@ class Migration(migrations.Migration): migrations.AlterField( model_name="job", name="microservicechainlink", - field=main.models.UUIDField( + field=main_models.UUIDField( blank=True, db_column="MicroServiceChainLinksPK", null=True, @@ -33,19 +34,19 @@ class Migration(migrations.Migration): migrations.AlterField( model_name="siparrange", name="file_uuid", - field=main.models.UUIDField( + field=main_models.UUIDField( blank=True, default=uuid.uuid4, null=True, unique=True ), ), migrations.AlterField( model_name="siparrange", name="transfer_uuid", - field=main.models.UUIDField(blank=True, default=uuid.uuid4, null=True), + field=main_models.UUIDField(blank=True, default=uuid.uuid4, null=True), ), migrations.AlterField( model_name="unitvariable", name="microservicechainlink", - field=main.models.UUIDField( + field=main_models.UUIDField( blank=True, db_column="microServiceChainLink", null=True, diff --git a/src/dashboard/main/migrations/0078_username_check.py b/src/archivematica/dashboard/main/migrations/0078_username_check.py similarity index 100% rename from src/dashboard/main/migrations/0078_username_check.py rename to src/archivematica/dashboard/main/migrations/0078_username_check.py diff --git a/src/dashboard/main/migrations/0079_version_number.py b/src/archivematica/dashboard/main/migrations/0079_version_number.py similarity index 100% rename from src/dashboard/main/migrations/0079_version_number.py rename to src/archivematica/dashboard/main/migrations/0079_version_number.py diff --git a/src/dashboard/main/migrations/0080_delete_software_agent.py b/src/archivematica/dashboard/main/migrations/0080_delete_software_agent.py similarity index 100% rename from src/dashboard/main/migrations/0080_delete_software_agent.py rename to src/archivematica/dashboard/main/migrations/0080_delete_software_agent.py diff --git a/src/dashboard/main/migrations/0081_package_status.py b/src/archivematica/dashboard/main/migrations/0081_package_status.py similarity index 100% rename from src/dashboard/main/migrations/0081_package_status.py rename to src/archivematica/dashboard/main/migrations/0081_package_status.py diff --git a/src/dashboard/main/migrations/0082_use_uuidfield.py b/src/archivematica/dashboard/main/migrations/0082_use_uuidfield.py similarity index 83% rename from src/dashboard/main/migrations/0082_use_uuidfield.py rename to src/archivematica/dashboard/main/migrations/0082_use_uuidfield.py index e99246d46d..6c9f71e2cc 100644 --- a/src/dashboard/main/migrations/0082_use_uuidfield.py +++ b/src/archivematica/dashboard/main/migrations/0082_use_uuidfield.py @@ -1,9 +1,10 @@ # Generated by Django 1.11.29 on 2023-08-11 16:29 import uuid -import main.models from django.db import migrations +import archivematica.dashboard.main.models as main_models + class Migration(migrations.Migration): dependencies = [ @@ -14,7 +15,7 @@ class Migration(migrations.Migration): migrations.AlterField( model_name="job", name="jobuuid", - field=main.models.UUIDField( + field=main_models.UUIDField( db_column="jobUUID", default=uuid.uuid4, primary_key=True, @@ -24,56 +25,56 @@ class Migration(migrations.Migration): migrations.AlterField( model_name="levelofdescription", name="id", - field=main.models.UUIDField( + field=main_models.UUIDField( db_column="pk", default=uuid.uuid4, primary_key=True, serialize=False ), ), migrations.AlterField( model_name="metadataappliestotype", name="id", - field=main.models.UUIDField( + field=main_models.UUIDField( db_column="pk", default=uuid.uuid4, primary_key=True, serialize=False ), ), migrations.AlterField( model_name="taxonomy", name="id", - field=main.models.UUIDField( + field=main_models.UUIDField( db_column="pk", default=uuid.uuid4, primary_key=True, serialize=False ), ), migrations.AlterField( model_name="taxonomyterm", name="id", - field=main.models.UUIDField( + field=main_models.UUIDField( db_column="pk", default=uuid.uuid4, primary_key=True, serialize=False ), ), migrations.AlterField( model_name="transfermetadatafield", name="id", - field=main.models.UUIDField( + field=main_models.UUIDField( db_column="pk", default=uuid.uuid4, primary_key=True, serialize=False ), ), migrations.AlterField( model_name="transfermetadatafieldvalue", name="id", - field=main.models.UUIDField( + field=main_models.UUIDField( db_column="pk", default=uuid.uuid4, primary_key=True, serialize=False ), ), migrations.AlterField( model_name="transfermetadataset", name="id", - field=main.models.UUIDField( + field=main_models.UUIDField( db_column="pk", default=uuid.uuid4, primary_key=True, serialize=False ), ), migrations.AlterField( model_name="unitvariable", name="id", - field=main.models.UUIDField( + field=main_models.UUIDField( db_column="pk", default=uuid.uuid4, primary_key=True, serialize=False ), ), diff --git a/src/dashboard/main/migrations/0083_unpickle_access_target.py b/src/archivematica/dashboard/main/migrations/0083_unpickle_access_target.py similarity index 100% rename from src/dashboard/main/migrations/0083_unpickle_access_target.py rename to src/archivematica/dashboard/main/migrations/0083_unpickle_access_target.py diff --git a/src/dashboard/main/migrations/0084_alter_job_index_together.py b/src/archivematica/dashboard/main/migrations/0084_alter_job_index_together.py similarity index 100% rename from src/dashboard/main/migrations/0084_alter_job_index_together.py rename to src/archivematica/dashboard/main/migrations/0084_alter_job_index_together.py diff --git a/src/dashboard/middleware/__init__.py b/src/archivematica/dashboard/main/migrations/__init__.py similarity index 100% rename from src/dashboard/middleware/__init__.py rename to src/archivematica/dashboard/main/migrations/__init__.py diff --git a/src/dashboard/main/models.py b/src/archivematica/dashboard/main/models.py similarity index 99% rename from src/dashboard/main/models.py rename to src/archivematica/dashboard/main/models.py index a7cf03c3f3..35c847196a 100644 --- a/src/dashboard/main/models.py +++ b/src/archivematica/dashboard/main/models.py @@ -32,7 +32,8 @@ from django.db.models.signals import post_save from django.dispatch import receiver from django.utils.translation import gettext_lazy as _ -from version import get_preservation_system_identifier + +from archivematica.archivematicaCommon.version import get_preservation_system_identifier # Core Django, alphabetical by import source # Third party dependencies, alphabetical by import source diff --git a/src/dashboard/main/signals.py b/src/archivematica/dashboard/main/signals.py similarity index 93% rename from src/dashboard/main/signals.py rename to src/archivematica/dashboard/main/signals.py index 5834dcdaea..c8c2112cf3 100644 --- a/src/dashboard/main/signals.py +++ b/src/archivematica/dashboard/main/signals.py @@ -2,10 +2,11 @@ from django.db.models.signals import post_delete from django.db.models.signals import post_save from django.dispatch import receiver -from main.models import RightsStatement -from main.models import RightsStatementRightsGranted from prometheus_client import Counter +from archivematica.dashboard.main.models import RightsStatement +from archivematica.dashboard.main.models import RightsStatementRightsGranted + @receiver(post_delete, sender=RightsStatementRightsGranted) def delete_rights_statement(sender, **kwargs): diff --git a/src/dashboard/settings/__init__.py b/src/archivematica/dashboard/main/templatetags/__init__.py similarity index 100% rename from src/dashboard/settings/__init__.py rename to src/archivematica/dashboard/main/templatetags/__init__.py diff --git a/src/dashboard/main/templatetags/active.py b/src/archivematica/dashboard/main/templatetags/active.py similarity index 100% rename from src/dashboard/main/templatetags/active.py rename to src/archivematica/dashboard/main/templatetags/active.py diff --git a/src/dashboard/main/templatetags/breadcrumb.py b/src/archivematica/dashboard/main/templatetags/breadcrumb.py similarity index 100% rename from src/dashboard/main/templatetags/breadcrumb.py rename to src/archivematica/dashboard/main/templatetags/breadcrumb.py diff --git a/src/dashboard/main/templatetags/forms.py b/src/archivematica/dashboard/main/templatetags/forms.py similarity index 100% rename from src/dashboard/main/templatetags/forms.py rename to src/archivematica/dashboard/main/templatetags/forms.py diff --git a/src/dashboard/main/templatetags/job_status.py b/src/archivematica/dashboard/main/templatetags/job_status.py similarity index 94% rename from src/dashboard/main/templatetags/job_status.py rename to src/archivematica/dashboard/main/templatetags/job_status.py index 88fb9080b7..244d062edf 100644 --- a/src/dashboard/main/templatetags/job_status.py +++ b/src/archivematica/dashboard/main/templatetags/job_status.py @@ -15,7 +15,8 @@ # You should have received a copy of the GNU General Public License # along with Archivematica. If not, see . from django.template import Library -from main.models import Job + +from archivematica.dashboard.main.models import Job register = Library() diff --git a/src/dashboard/main/templatetags/keyvalue.py b/src/archivematica/dashboard/main/templatetags/keyvalue.py similarity index 100% rename from src/dashboard/main/templatetags/keyvalue.py rename to src/archivematica/dashboard/main/templatetags/keyvalue.py diff --git a/src/dashboard/main/templatetags/lang.py b/src/archivematica/dashboard/main/templatetags/lang.py similarity index 100% rename from src/dashboard/main/templatetags/lang.py rename to src/archivematica/dashboard/main/templatetags/lang.py diff --git a/src/dashboard/main/templatetags/user.py b/src/archivematica/dashboard/main/templatetags/user.py similarity index 100% rename from src/dashboard/main/templatetags/user.py rename to src/archivematica/dashboard/main/templatetags/user.py diff --git a/src/dashboard/main/urls.py b/src/archivematica/dashboard/main/urls.py similarity index 97% rename from src/dashboard/main/urls.py rename to src/archivematica/dashboard/main/urls.py index 3a6125ac89..d7444b0b0c 100644 --- a/src/dashboard/main/urls.py +++ b/src/archivematica/dashboard/main/urls.py @@ -17,7 +17,8 @@ from django.conf import settings from django.urls import path from django.urls import re_path -from main import views + +from archivematica.dashboard.main import views app_name = "main" urlpatterns = [ diff --git a/src/dashboard/main/views.py b/src/archivematica/dashboard/main/views.py similarity index 97% rename from src/dashboard/main/views.py rename to src/archivematica/dashboard/main/views.py index ff83043fd7..a0044df6bb 100644 --- a/src/dashboard/main/views.py +++ b/src/archivematica/dashboard/main/views.py @@ -14,9 +14,6 @@ # # You should have received a copy of the GNU General Public License # along with Archivematica. If not, see . -from archivematicaFunctions import escape -from components import helpers -from contrib.mcp.client import MCPClient from django.conf import settings as django_settings from django.shortcuts import get_object_or_404 from django.shortcuts import redirect @@ -29,7 +26,11 @@ from django.views.decorators.http import last_modified from django.views.i18n import JavaScriptCatalog from lxml import etree -from main import models + +from archivematica.archivematicaCommon.archivematicaFunctions import escape +from archivematica.dashboard.components import helpers +from archivematica.dashboard.contrib.mcp.client import MCPClient +from archivematica.dashboard.main import models @cache_page(86400, key_prefix="js18n-%s" % get_language()) diff --git a/src/dashboard/manage.py b/src/archivematica/dashboard/manage.py similarity index 62% rename from src/dashboard/manage.py rename to src/archivematica/dashboard/manage.py index 1bd1b11b71..5d34f6faff 100755 --- a/src/dashboard/manage.py +++ b/src/archivematica/dashboard/manage.py @@ -3,7 +3,9 @@ import sys if __name__ == "__main__": - os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings.local") + os.environ.setdefault( + "DJANGO_SETTINGS_MODULE", "archivematica.dashboard.settings.local" + ) from django.core.management import execute_from_command_line diff --git a/src/dashboard/media/css/archival_storage.css b/src/archivematica/dashboard/media/css/archival_storage.css similarity index 100% rename from src/dashboard/media/css/archival_storage.css rename to src/archivematica/dashboard/media/css/archival_storage.css diff --git a/src/dashboard/media/css/as_match.css b/src/archivematica/dashboard/media/css/as_match.css similarity index 100% rename from src/dashboard/media/css/as_match.css rename to src/archivematica/dashboard/media/css/as_match.css diff --git a/src/dashboard/media/css/backbone-file-explorer.css b/src/archivematica/dashboard/media/css/backbone-file-explorer.css similarity index 100% rename from src/dashboard/media/css/backbone-file-explorer.css rename to src/archivematica/dashboard/media/css/backbone-file-explorer.css diff --git a/src/dashboard/media/css/backlog.css b/src/archivematica/dashboard/media/css/backlog.css similarity index 100% rename from src/dashboard/media/css/backlog.css rename to src/archivematica/dashboard/media/css/backlog.css diff --git a/src/dashboard/media/css/base.css b/src/archivematica/dashboard/media/css/base.css similarity index 100% rename from src/dashboard/media/css/base.css rename to src/archivematica/dashboard/media/css/base.css diff --git a/src/dashboard/media/css/directory_picker.css b/src/archivematica/dashboard/media/css/directory_picker.css similarity index 100% rename from src/dashboard/media/css/directory_picker.css rename to src/archivematica/dashboard/media/css/directory_picker.css diff --git a/src/dashboard/media/css/fonts.css b/src/archivematica/dashboard/media/css/fonts.css similarity index 100% rename from src/dashboard/media/css/fonts.css rename to src/archivematica/dashboard/media/css/fonts.css diff --git a/src/dashboard/media/css/reset.css b/src/archivematica/dashboard/media/css/reset.css similarity index 100% rename from src/dashboard/media/css/reset.css rename to src/archivematica/dashboard/media/css/reset.css diff --git a/src/dashboard/media/css/search.css b/src/archivematica/dashboard/media/css/search.css similarity index 100% rename from src/dashboard/media/css/search.css rename to src/archivematica/dashboard/media/css/search.css diff --git a/src/dashboard/media/css/style.css b/src/archivematica/dashboard/media/css/style.css similarity index 100% rename from src/dashboard/media/css/style.css rename to src/archivematica/dashboard/media/css/style.css diff --git a/src/dashboard/media/css/transfer_grid.css b/src/archivematica/dashboard/media/css/transfer_grid.css similarity index 100% rename from src/dashboard/media/css/transfer_grid.css rename to src/archivematica/dashboard/media/css/transfer_grid.css diff --git a/src/dashboard/media/images/1x1-pixel.png b/src/archivematica/dashboard/media/images/1x1-pixel.png similarity index 100% rename from src/dashboard/media/images/1x1-pixel.png rename to src/archivematica/dashboard/media/images/1x1-pixel.png diff --git a/src/dashboard/media/images/accept.png b/src/archivematica/dashboard/media/images/accept.png similarity index 100% rename from src/dashboard/media/images/accept.png rename to src/archivematica/dashboard/media/images/accept.png diff --git a/src/dashboard/media/images/ajax-loader.gif b/src/archivematica/dashboard/media/images/ajax-loader.gif similarity index 100% rename from src/dashboard/media/images/ajax-loader.gif rename to src/archivematica/dashboard/media/images/ajax-loader.gif diff --git a/src/dashboard/media/images/arrow_refresh.png b/src/archivematica/dashboard/media/images/arrow_refresh.png similarity index 100% rename from src/dashboard/media/images/arrow_refresh.png rename to src/archivematica/dashboard/media/images/arrow_refresh.png diff --git a/src/dashboard/media/images/attach.png b/src/archivematica/dashboard/media/images/attach.png similarity index 100% rename from src/dashboard/media/images/attach.png rename to src/archivematica/dashboard/media/images/attach.png diff --git a/src/dashboard/media/images/bell.png b/src/archivematica/dashboard/media/images/bell.png similarity index 100% rename from src/dashboard/media/images/bell.png rename to src/archivematica/dashboard/media/images/bell.png diff --git a/src/dashboard/media/images/bullet_arrow_down.png b/src/archivematica/dashboard/media/images/bullet_arrow_down.png similarity index 100% rename from src/dashboard/media/images/bullet_arrow_down.png rename to src/archivematica/dashboard/media/images/bullet_arrow_down.png diff --git a/src/dashboard/media/images/bullet_arrow_up.png b/src/archivematica/dashboard/media/images/bullet_arrow_up.png similarity index 100% rename from src/dashboard/media/images/bullet_arrow_up.png rename to src/archivematica/dashboard/media/images/bullet_arrow_up.png diff --git a/src/dashboard/media/images/bullet_delete.png b/src/archivematica/dashboard/media/images/bullet_delete.png similarity index 100% rename from src/dashboard/media/images/bullet_delete.png rename to src/archivematica/dashboard/media/images/bullet_delete.png diff --git a/src/dashboard/media/images/bullet_green.png b/src/archivematica/dashboard/media/images/bullet_green.png similarity index 100% rename from src/dashboard/media/images/bullet_green.png rename to src/archivematica/dashboard/media/images/bullet_green.png diff --git a/src/dashboard/media/images/bullet_orange.png b/src/archivematica/dashboard/media/images/bullet_orange.png similarity index 100% rename from src/dashboard/media/images/bullet_orange.png rename to src/archivematica/dashboard/media/images/bullet_orange.png diff --git a/src/dashboard/media/images/cancel.png b/src/archivematica/dashboard/media/images/cancel.png similarity index 100% rename from src/dashboard/media/images/cancel.png rename to src/archivematica/dashboard/media/images/cancel.png diff --git a/src/dashboard/media/images/clock.png b/src/archivematica/dashboard/media/images/clock.png similarity index 100% rename from src/dashboard/media/images/clock.png rename to src/archivematica/dashboard/media/images/clock.png diff --git a/src/dashboard/media/images/cog.png b/src/archivematica/dashboard/media/images/cog.png similarity index 100% rename from src/dashboard/media/images/cog.png rename to src/archivematica/dashboard/media/images/cog.png diff --git a/src/dashboard/media/images/delete.png b/src/archivematica/dashboard/media/images/delete.png similarity index 100% rename from src/dashboard/media/images/delete.png rename to src/archivematica/dashboard/media/images/delete.png diff --git a/src/dashboard/media/images/error.png b/src/archivematica/dashboard/media/images/error.png similarity index 100% rename from src/dashboard/media/images/error.png rename to src/archivematica/dashboard/media/images/error.png diff --git a/src/dashboard/media/images/favicon.ico b/src/archivematica/dashboard/media/images/favicon.ico similarity index 100% rename from src/dashboard/media/images/favicon.ico rename to src/archivematica/dashboard/media/images/favicon.ico diff --git a/src/dashboard/media/images/filefolder.png b/src/archivematica/dashboard/media/images/filefolder.png similarity index 100% rename from src/dashboard/media/images/filefolder.png rename to src/archivematica/dashboard/media/images/filefolder.png diff --git a/src/dashboard/media/images/filefolderopen.png b/src/archivematica/dashboard/media/images/filefolderopen.png similarity index 100% rename from src/dashboard/media/images/filefolderopen.png rename to src/archivematica/dashboard/media/images/filefolderopen.png diff --git a/src/dashboard/media/images/folder.png b/src/archivematica/dashboard/media/images/folder.png similarity index 100% rename from src/dashboard/media/images/folder.png rename to src/archivematica/dashboard/media/images/folder.png diff --git a/src/dashboard/media/images/logo_header.png b/src/archivematica/dashboard/media/images/logo_header.png similarity index 100% rename from src/dashboard/media/images/logo_header.png rename to src/archivematica/dashboard/media/images/logo_header.png diff --git a/src/dashboard/media/images/logo_login.gif b/src/archivematica/dashboard/media/images/logo_login.gif similarity index 100% rename from src/dashboard/media/images/logo_login.gif rename to src/archivematica/dashboard/media/images/logo_login.gif diff --git a/src/dashboard/media/images/logo_welcome.gif b/src/archivematica/dashboard/media/images/logo_welcome.gif similarity index 100% rename from src/dashboard/media/images/logo_welcome.gif rename to src/archivematica/dashboard/media/images/logo_welcome.gif diff --git a/src/dashboard/media/images/package_go.png b/src/archivematica/dashboard/media/images/package_go.png similarity index 100% rename from src/dashboard/media/images/package_go.png rename to src/archivematica/dashboard/media/images/package_go.png diff --git a/src/dashboard/media/images/pencil_add.png b/src/archivematica/dashboard/media/images/pencil_add.png similarity index 100% rename from src/dashboard/media/images/pencil_add.png rename to src/archivematica/dashboard/media/images/pencil_add.png diff --git a/src/dashboard/media/images/table_edit.png b/src/archivematica/dashboard/media/images/table_edit.png similarity index 100% rename from src/dashboard/media/images/table_edit.png rename to src/archivematica/dashboard/media/images/table_edit.png diff --git a/src/dashboard/media/images/tick.png b/src/archivematica/dashboard/media/images/tick.png similarity index 100% rename from src/dashboard/media/images/tick.png rename to src/archivematica/dashboard/media/images/tick.png diff --git a/src/dashboard/media/images/user_comment.png b/src/archivematica/dashboard/media/images/user_comment.png similarity index 100% rename from src/dashboard/media/images/user_comment.png rename to src/archivematica/dashboard/media/images/user_comment.png diff --git a/src/dashboard/media/images/vcard_edit.png b/src/archivematica/dashboard/media/images/vcard_edit.png similarity index 100% rename from src/dashboard/media/images/vcard_edit.png rename to src/archivematica/dashboard/media/images/vcard_edit.png diff --git a/src/dashboard/media/images/zoom.png b/src/archivematica/dashboard/media/images/zoom.png similarity index 100% rename from src/dashboard/media/images/zoom.png rename to src/archivematica/dashboard/media/images/zoom.png diff --git a/src/dashboard/media/images/zoom_out.png b/src/archivematica/dashboard/media/images/zoom_out.png similarity index 100% rename from src/dashboard/media/images/zoom_out.png rename to src/archivematica/dashboard/media/images/zoom_out.png diff --git a/src/dashboard/media/js/administration/atom_levels_of_description.js b/src/archivematica/dashboard/media/js/administration/atom_levels_of_description.js similarity index 100% rename from src/dashboard/media/js/administration/atom_levels_of_description.js rename to src/archivematica/dashboard/media/js/administration/atom_levels_of_description.js diff --git a/src/dashboard/media/js/advanced-search-query-creator.js b/src/archivematica/dashboard/media/js/advanced-search-query-creator.js similarity index 100% rename from src/dashboard/media/js/advanced-search-query-creator.js rename to src/archivematica/dashboard/media/js/advanced-search-query-creator.js diff --git a/src/dashboard/media/js/archival_storage/archival_storage_search.js b/src/archivematica/dashboard/media/js/archival_storage/archival_storage_search.js similarity index 100% rename from src/dashboard/media/js/archival_storage/archival_storage_search.js rename to src/archivematica/dashboard/media/js/archival_storage/archival_storage_search.js diff --git a/src/dashboard/media/js/backlog/backlog-search.js b/src/archivematica/dashboard/media/js/backlog/backlog-search.js similarity index 100% rename from src/dashboard/media/js/backlog/backlog-search.js rename to src/archivematica/dashboard/media/js/backlog/backlog-search.js diff --git a/src/dashboard/media/js/contextual_help.js b/src/archivematica/dashboard/media/js/contextual_help.js similarity index 100% rename from src/dashboard/media/js/contextual_help.js rename to src/archivematica/dashboard/media/js/contextual_help.js diff --git a/src/dashboard/media/js/directory_picker.js b/src/archivematica/dashboard/media/js/directory_picker.js similarity index 100% rename from src/dashboard/media/js/directory_picker.js rename to src/archivematica/dashboard/media/js/directory_picker.js diff --git a/src/dashboard/media/js/file-explorer.js b/src/archivematica/dashboard/media/js/file-explorer.js similarity index 100% rename from src/dashboard/media/js/file-explorer.js rename to src/archivematica/dashboard/media/js/file-explorer.js diff --git a/src/dashboard/media/js/file_browser.js b/src/archivematica/dashboard/media/js/file_browser.js similarity index 100% rename from src/dashboard/media/js/file_browser.js rename to src/archivematica/dashboard/media/js/file_browser.js diff --git a/src/dashboard/media/js/ingest.js b/src/archivematica/dashboard/media/js/ingest.js similarity index 100% rename from src/dashboard/media/js/ingest.js rename to src/archivematica/dashboard/media/js/ingest.js diff --git a/src/dashboard/media/js/ingest/aip_browser.js b/src/archivematica/dashboard/media/js/ingest/aip_browser.js similarity index 100% rename from src/dashboard/media/js/ingest/aip_browser.js rename to src/archivematica/dashboard/media/js/ingest/aip_browser.js diff --git a/src/dashboard/media/js/ingest/as_matcher.js b/src/archivematica/dashboard/media/js/ingest/as_matcher.js similarity index 100% rename from src/dashboard/media/js/ingest/as_matcher.js rename to src/archivematica/dashboard/media/js/ingest/as_matcher.js diff --git a/src/dashboard/media/js/ingest/as_matcher_setup.js b/src/archivematica/dashboard/media/js/ingest/as_matcher_setup.js similarity index 100% rename from src/dashboard/media/js/ingest/as_matcher_setup.js rename to src/archivematica/dashboard/media/js/ingest/as_matcher_setup.js diff --git a/src/dashboard/media/js/ingest/backlog.js b/src/archivematica/dashboard/media/js/ingest/backlog.js similarity index 100% rename from src/dashboard/media/js/ingest/backlog.js rename to src/archivematica/dashboard/media/js/ingest/backlog.js diff --git a/src/dashboard/media/js/ingest/metadata_form.js b/src/archivematica/dashboard/media/js/ingest/metadata_form.js similarity index 100% rename from src/dashboard/media/js/ingest/metadata_form.js rename to src/archivematica/dashboard/media/js/ingest/metadata_form.js diff --git a/src/dashboard/media/js/ingest/normalization_report.js b/src/archivematica/dashboard/media/js/ingest/normalization_report.js similarity index 100% rename from src/dashboard/media/js/ingest/normalization_report.js rename to src/archivematica/dashboard/media/js/ingest/normalization_report.js diff --git a/src/dashboard/media/js/jobs.js b/src/archivematica/dashboard/media/js/jobs.js similarity index 100% rename from src/dashboard/media/js/jobs.js rename to src/archivematica/dashboard/media/js/jobs.js diff --git a/src/dashboard/media/js/misc.js b/src/archivematica/dashboard/media/js/misc.js similarity index 100% rename from src/dashboard/media/js/misc.js rename to src/archivematica/dashboard/media/js/misc.js diff --git a/src/dashboard/media/js/online.js b/src/archivematica/dashboard/media/js/online.js similarity index 100% rename from src/dashboard/media/js/online.js rename to src/archivematica/dashboard/media/js/online.js diff --git a/src/dashboard/media/js/repeating-ajax-data.js b/src/archivematica/dashboard/media/js/repeating-ajax-data.js similarity index 100% rename from src/dashboard/media/js/repeating-ajax-data.js rename to src/archivematica/dashboard/media/js/repeating-ajax-data.js diff --git a/src/dashboard/media/js/rights_edit.js b/src/archivematica/dashboard/media/js/rights_edit.js similarity index 100% rename from src/dashboard/media/js/rights_edit.js rename to src/archivematica/dashboard/media/js/rights_edit.js diff --git a/src/dashboard/media/js/status.js b/src/archivematica/dashboard/media/js/status.js similarity index 100% rename from src/dashboard/media/js/status.js rename to src/archivematica/dashboard/media/js/status.js diff --git a/src/dashboard/media/js/transfer.js b/src/archivematica/dashboard/media/js/transfer.js similarity index 100% rename from src/dashboard/media/js/transfer.js rename to src/archivematica/dashboard/media/js/transfer.js diff --git a/src/dashboard/media/js/transfer/component_directory_select.js b/src/archivematica/dashboard/media/js/transfer/component_directory_select.js similarity index 100% rename from src/dashboard/media/js/transfer/component_directory_select.js rename to src/archivematica/dashboard/media/js/transfer/component_directory_select.js diff --git a/src/dashboard/media/js/vendor/base64.js b/src/archivematica/dashboard/media/js/vendor/base64.js similarity index 100% rename from src/dashboard/media/js/vendor/base64.js rename to src/archivematica/dashboard/media/js/vendor/base64.js diff --git a/src/dashboard/media/vendor/backbone.js b/src/archivematica/dashboard/media/vendor/backbone.js similarity index 100% rename from src/dashboard/media/vendor/backbone.js rename to src/archivematica/dashboard/media/vendor/backbone.js diff --git a/src/dashboard/media/vendor/datatables/css/buttons.bootstrap.min.css b/src/archivematica/dashboard/media/vendor/datatables/css/buttons.bootstrap.min.css similarity index 100% rename from src/dashboard/media/vendor/datatables/css/buttons.bootstrap.min.css rename to src/archivematica/dashboard/media/vendor/datatables/css/buttons.bootstrap.min.css diff --git a/src/dashboard/media/vendor/datatables/css/jquery.dataTables.css b/src/archivematica/dashboard/media/vendor/datatables/css/jquery.dataTables.css similarity index 100% rename from src/dashboard/media/vendor/datatables/css/jquery.dataTables.css rename to src/archivematica/dashboard/media/vendor/datatables/css/jquery.dataTables.css diff --git a/src/dashboard/media/vendor/datatables/images/favicon.ico b/src/archivematica/dashboard/media/vendor/datatables/images/favicon.ico similarity index 100% rename from src/dashboard/media/vendor/datatables/images/favicon.ico rename to src/archivematica/dashboard/media/vendor/datatables/images/favicon.ico diff --git a/src/dashboard/media/vendor/datatables/images/sort_asc.png b/src/archivematica/dashboard/media/vendor/datatables/images/sort_asc.png similarity index 100% rename from src/dashboard/media/vendor/datatables/images/sort_asc.png rename to src/archivematica/dashboard/media/vendor/datatables/images/sort_asc.png diff --git a/src/dashboard/media/vendor/datatables/images/sort_asc_disabled.png b/src/archivematica/dashboard/media/vendor/datatables/images/sort_asc_disabled.png similarity index 100% rename from src/dashboard/media/vendor/datatables/images/sort_asc_disabled.png rename to src/archivematica/dashboard/media/vendor/datatables/images/sort_asc_disabled.png diff --git a/src/dashboard/media/vendor/datatables/images/sort_both.png b/src/archivematica/dashboard/media/vendor/datatables/images/sort_both.png similarity index 100% rename from src/dashboard/media/vendor/datatables/images/sort_both.png rename to src/archivematica/dashboard/media/vendor/datatables/images/sort_both.png diff --git a/src/dashboard/media/vendor/datatables/images/sort_desc.png b/src/archivematica/dashboard/media/vendor/datatables/images/sort_desc.png similarity index 100% rename from src/dashboard/media/vendor/datatables/images/sort_desc.png rename to src/archivematica/dashboard/media/vendor/datatables/images/sort_desc.png diff --git a/src/dashboard/media/vendor/datatables/images/sort_desc_disabled.png b/src/archivematica/dashboard/media/vendor/datatables/images/sort_desc_disabled.png similarity index 100% rename from src/dashboard/media/vendor/datatables/images/sort_desc_disabled.png rename to src/archivematica/dashboard/media/vendor/datatables/images/sort_desc_disabled.png diff --git a/src/dashboard/media/vendor/datatables/js/buttons.bootstrap.min.js b/src/archivematica/dashboard/media/vendor/datatables/js/buttons.bootstrap.min.js similarity index 100% rename from src/dashboard/media/vendor/datatables/js/buttons.bootstrap.min.js rename to src/archivematica/dashboard/media/vendor/datatables/js/buttons.bootstrap.min.js diff --git a/src/dashboard/media/vendor/datatables/js/buttons.colVis.min.js b/src/archivematica/dashboard/media/vendor/datatables/js/buttons.colVis.min.js similarity index 100% rename from src/dashboard/media/vendor/datatables/js/buttons.colVis.min.js rename to src/archivematica/dashboard/media/vendor/datatables/js/buttons.colVis.min.js diff --git a/src/dashboard/media/vendor/datatables/js/dataTables.buttons.min.js b/src/archivematica/dashboard/media/vendor/datatables/js/dataTables.buttons.min.js similarity index 100% rename from src/dashboard/media/vendor/datatables/js/dataTables.buttons.min.js rename to src/archivematica/dashboard/media/vendor/datatables/js/dataTables.buttons.min.js diff --git a/src/dashboard/media/vendor/datatables/js/jquery.dataTables.min.js b/src/archivematica/dashboard/media/vendor/datatables/js/jquery.dataTables.min.js similarity index 100% rename from src/dashboard/media/vendor/datatables/js/jquery.dataTables.min.js rename to src/archivematica/dashboard/media/vendor/datatables/js/jquery.dataTables.min.js diff --git a/src/dashboard/media/vendor/font-awesome/.npmignore b/src/archivematica/dashboard/media/vendor/font-awesome/.npmignore similarity index 100% rename from src/dashboard/media/vendor/font-awesome/.npmignore rename to src/archivematica/dashboard/media/vendor/font-awesome/.npmignore diff --git a/src/dashboard/media/vendor/font-awesome/HELP-US-OUT.txt b/src/archivematica/dashboard/media/vendor/font-awesome/HELP-US-OUT.txt similarity index 100% rename from src/dashboard/media/vendor/font-awesome/HELP-US-OUT.txt rename to src/archivematica/dashboard/media/vendor/font-awesome/HELP-US-OUT.txt diff --git a/src/dashboard/media/vendor/font-awesome/README.md b/src/archivematica/dashboard/media/vendor/font-awesome/README.md similarity index 100% rename from src/dashboard/media/vendor/font-awesome/README.md rename to src/archivematica/dashboard/media/vendor/font-awesome/README.md diff --git a/src/dashboard/media/vendor/font-awesome/css/font-awesome.css b/src/archivematica/dashboard/media/vendor/font-awesome/css/font-awesome.css similarity index 100% rename from src/dashboard/media/vendor/font-awesome/css/font-awesome.css rename to src/archivematica/dashboard/media/vendor/font-awesome/css/font-awesome.css diff --git a/src/dashboard/media/vendor/font-awesome/css/font-awesome.css.map b/src/archivematica/dashboard/media/vendor/font-awesome/css/font-awesome.css.map similarity index 100% rename from src/dashboard/media/vendor/font-awesome/css/font-awesome.css.map rename to src/archivematica/dashboard/media/vendor/font-awesome/css/font-awesome.css.map diff --git a/src/dashboard/media/vendor/font-awesome/css/font-awesome.min.css b/src/archivematica/dashboard/media/vendor/font-awesome/css/font-awesome.min.css similarity index 100% rename from src/dashboard/media/vendor/font-awesome/css/font-awesome.min.css rename to src/archivematica/dashboard/media/vendor/font-awesome/css/font-awesome.min.css diff --git a/src/dashboard/media/vendor/font-awesome/fonts/FontAwesome.otf b/src/archivematica/dashboard/media/vendor/font-awesome/fonts/FontAwesome.otf similarity index 100% rename from src/dashboard/media/vendor/font-awesome/fonts/FontAwesome.otf rename to src/archivematica/dashboard/media/vendor/font-awesome/fonts/FontAwesome.otf diff --git a/src/dashboard/media/vendor/font-awesome/fonts/fontawesome-webfont.eot b/src/archivematica/dashboard/media/vendor/font-awesome/fonts/fontawesome-webfont.eot similarity index 100% rename from src/dashboard/media/vendor/font-awesome/fonts/fontawesome-webfont.eot rename to src/archivematica/dashboard/media/vendor/font-awesome/fonts/fontawesome-webfont.eot diff --git a/src/dashboard/media/vendor/font-awesome/fonts/fontawesome-webfont.svg b/src/archivematica/dashboard/media/vendor/font-awesome/fonts/fontawesome-webfont.svg similarity index 100% rename from src/dashboard/media/vendor/font-awesome/fonts/fontawesome-webfont.svg rename to src/archivematica/dashboard/media/vendor/font-awesome/fonts/fontawesome-webfont.svg diff --git a/src/dashboard/media/vendor/font-awesome/fonts/fontawesome-webfont.ttf b/src/archivematica/dashboard/media/vendor/font-awesome/fonts/fontawesome-webfont.ttf similarity index 100% rename from src/dashboard/media/vendor/font-awesome/fonts/fontawesome-webfont.ttf rename to src/archivematica/dashboard/media/vendor/font-awesome/fonts/fontawesome-webfont.ttf diff --git a/src/dashboard/media/vendor/font-awesome/fonts/fontawesome-webfont.woff b/src/archivematica/dashboard/media/vendor/font-awesome/fonts/fontawesome-webfont.woff similarity index 100% rename from src/dashboard/media/vendor/font-awesome/fonts/fontawesome-webfont.woff rename to src/archivematica/dashboard/media/vendor/font-awesome/fonts/fontawesome-webfont.woff diff --git a/src/dashboard/media/vendor/font-awesome/fonts/fontawesome-webfont.woff2 b/src/archivematica/dashboard/media/vendor/font-awesome/fonts/fontawesome-webfont.woff2 similarity index 100% rename from src/dashboard/media/vendor/font-awesome/fonts/fontawesome-webfont.woff2 rename to src/archivematica/dashboard/media/vendor/font-awesome/fonts/fontawesome-webfont.woff2 diff --git a/src/dashboard/media/vendor/font-awesome/less/animated.less b/src/archivematica/dashboard/media/vendor/font-awesome/less/animated.less similarity index 100% rename from src/dashboard/media/vendor/font-awesome/less/animated.less rename to src/archivematica/dashboard/media/vendor/font-awesome/less/animated.less diff --git a/src/dashboard/media/vendor/font-awesome/less/bordered-pulled.less b/src/archivematica/dashboard/media/vendor/font-awesome/less/bordered-pulled.less similarity index 100% rename from src/dashboard/media/vendor/font-awesome/less/bordered-pulled.less rename to src/archivematica/dashboard/media/vendor/font-awesome/less/bordered-pulled.less diff --git a/src/dashboard/media/vendor/font-awesome/less/core.less b/src/archivematica/dashboard/media/vendor/font-awesome/less/core.less similarity index 100% rename from src/dashboard/media/vendor/font-awesome/less/core.less rename to src/archivematica/dashboard/media/vendor/font-awesome/less/core.less diff --git a/src/dashboard/media/vendor/font-awesome/less/fixed-width.less b/src/archivematica/dashboard/media/vendor/font-awesome/less/fixed-width.less similarity index 100% rename from src/dashboard/media/vendor/font-awesome/less/fixed-width.less rename to src/archivematica/dashboard/media/vendor/font-awesome/less/fixed-width.less diff --git a/src/dashboard/media/vendor/font-awesome/less/font-awesome.less b/src/archivematica/dashboard/media/vendor/font-awesome/less/font-awesome.less similarity index 100% rename from src/dashboard/media/vendor/font-awesome/less/font-awesome.less rename to src/archivematica/dashboard/media/vendor/font-awesome/less/font-awesome.less diff --git a/src/dashboard/media/vendor/font-awesome/less/icons.less b/src/archivematica/dashboard/media/vendor/font-awesome/less/icons.less similarity index 100% rename from src/dashboard/media/vendor/font-awesome/less/icons.less rename to src/archivematica/dashboard/media/vendor/font-awesome/less/icons.less diff --git a/src/dashboard/media/vendor/font-awesome/less/larger.less b/src/archivematica/dashboard/media/vendor/font-awesome/less/larger.less similarity index 100% rename from src/dashboard/media/vendor/font-awesome/less/larger.less rename to src/archivematica/dashboard/media/vendor/font-awesome/less/larger.less diff --git a/src/dashboard/media/vendor/font-awesome/less/list.less b/src/archivematica/dashboard/media/vendor/font-awesome/less/list.less similarity index 100% rename from src/dashboard/media/vendor/font-awesome/less/list.less rename to src/archivematica/dashboard/media/vendor/font-awesome/less/list.less diff --git a/src/dashboard/media/vendor/font-awesome/less/mixins.less b/src/archivematica/dashboard/media/vendor/font-awesome/less/mixins.less similarity index 100% rename from src/dashboard/media/vendor/font-awesome/less/mixins.less rename to src/archivematica/dashboard/media/vendor/font-awesome/less/mixins.less diff --git a/src/dashboard/media/vendor/font-awesome/less/path.less b/src/archivematica/dashboard/media/vendor/font-awesome/less/path.less similarity index 100% rename from src/dashboard/media/vendor/font-awesome/less/path.less rename to src/archivematica/dashboard/media/vendor/font-awesome/less/path.less diff --git a/src/dashboard/media/vendor/font-awesome/less/rotated-flipped.less b/src/archivematica/dashboard/media/vendor/font-awesome/less/rotated-flipped.less similarity index 100% rename from src/dashboard/media/vendor/font-awesome/less/rotated-flipped.less rename to src/archivematica/dashboard/media/vendor/font-awesome/less/rotated-flipped.less diff --git a/src/dashboard/media/vendor/font-awesome/less/screen-reader.less b/src/archivematica/dashboard/media/vendor/font-awesome/less/screen-reader.less similarity index 100% rename from src/dashboard/media/vendor/font-awesome/less/screen-reader.less rename to src/archivematica/dashboard/media/vendor/font-awesome/less/screen-reader.less diff --git a/src/dashboard/media/vendor/font-awesome/less/stacked.less b/src/archivematica/dashboard/media/vendor/font-awesome/less/stacked.less similarity index 100% rename from src/dashboard/media/vendor/font-awesome/less/stacked.less rename to src/archivematica/dashboard/media/vendor/font-awesome/less/stacked.less diff --git a/src/dashboard/media/vendor/font-awesome/less/variables.less b/src/archivematica/dashboard/media/vendor/font-awesome/less/variables.less similarity index 100% rename from src/dashboard/media/vendor/font-awesome/less/variables.less rename to src/archivematica/dashboard/media/vendor/font-awesome/less/variables.less diff --git a/src/dashboard/media/vendor/font-awesome/package.json b/src/archivematica/dashboard/media/vendor/font-awesome/package.json similarity index 100% rename from src/dashboard/media/vendor/font-awesome/package.json rename to src/archivematica/dashboard/media/vendor/font-awesome/package.json diff --git a/src/dashboard/media/vendor/font-awesome/scss/_animated.scss b/src/archivematica/dashboard/media/vendor/font-awesome/scss/_animated.scss similarity index 100% rename from src/dashboard/media/vendor/font-awesome/scss/_animated.scss rename to src/archivematica/dashboard/media/vendor/font-awesome/scss/_animated.scss diff --git a/src/dashboard/media/vendor/font-awesome/scss/_bordered-pulled.scss b/src/archivematica/dashboard/media/vendor/font-awesome/scss/_bordered-pulled.scss similarity index 100% rename from src/dashboard/media/vendor/font-awesome/scss/_bordered-pulled.scss rename to src/archivematica/dashboard/media/vendor/font-awesome/scss/_bordered-pulled.scss diff --git a/src/dashboard/media/vendor/font-awesome/scss/_core.scss b/src/archivematica/dashboard/media/vendor/font-awesome/scss/_core.scss similarity index 100% rename from src/dashboard/media/vendor/font-awesome/scss/_core.scss rename to src/archivematica/dashboard/media/vendor/font-awesome/scss/_core.scss diff --git a/src/dashboard/media/vendor/font-awesome/scss/_fixed-width.scss b/src/archivematica/dashboard/media/vendor/font-awesome/scss/_fixed-width.scss similarity index 100% rename from src/dashboard/media/vendor/font-awesome/scss/_fixed-width.scss rename to src/archivematica/dashboard/media/vendor/font-awesome/scss/_fixed-width.scss diff --git a/src/dashboard/media/vendor/font-awesome/scss/_icons.scss b/src/archivematica/dashboard/media/vendor/font-awesome/scss/_icons.scss similarity index 100% rename from src/dashboard/media/vendor/font-awesome/scss/_icons.scss rename to src/archivematica/dashboard/media/vendor/font-awesome/scss/_icons.scss diff --git a/src/dashboard/media/vendor/font-awesome/scss/_larger.scss b/src/archivematica/dashboard/media/vendor/font-awesome/scss/_larger.scss similarity index 100% rename from src/dashboard/media/vendor/font-awesome/scss/_larger.scss rename to src/archivematica/dashboard/media/vendor/font-awesome/scss/_larger.scss diff --git a/src/dashboard/media/vendor/font-awesome/scss/_list.scss b/src/archivematica/dashboard/media/vendor/font-awesome/scss/_list.scss similarity index 100% rename from src/dashboard/media/vendor/font-awesome/scss/_list.scss rename to src/archivematica/dashboard/media/vendor/font-awesome/scss/_list.scss diff --git a/src/dashboard/media/vendor/font-awesome/scss/_mixins.scss b/src/archivematica/dashboard/media/vendor/font-awesome/scss/_mixins.scss similarity index 100% rename from src/dashboard/media/vendor/font-awesome/scss/_mixins.scss rename to src/archivematica/dashboard/media/vendor/font-awesome/scss/_mixins.scss diff --git a/src/dashboard/media/vendor/font-awesome/scss/_path.scss b/src/archivematica/dashboard/media/vendor/font-awesome/scss/_path.scss similarity index 100% rename from src/dashboard/media/vendor/font-awesome/scss/_path.scss rename to src/archivematica/dashboard/media/vendor/font-awesome/scss/_path.scss diff --git a/src/dashboard/media/vendor/font-awesome/scss/_rotated-flipped.scss b/src/archivematica/dashboard/media/vendor/font-awesome/scss/_rotated-flipped.scss similarity index 100% rename from src/dashboard/media/vendor/font-awesome/scss/_rotated-flipped.scss rename to src/archivematica/dashboard/media/vendor/font-awesome/scss/_rotated-flipped.scss diff --git a/src/dashboard/media/vendor/font-awesome/scss/_screen-reader.scss b/src/archivematica/dashboard/media/vendor/font-awesome/scss/_screen-reader.scss similarity index 100% rename from src/dashboard/media/vendor/font-awesome/scss/_screen-reader.scss rename to src/archivematica/dashboard/media/vendor/font-awesome/scss/_screen-reader.scss diff --git a/src/dashboard/media/vendor/font-awesome/scss/_stacked.scss b/src/archivematica/dashboard/media/vendor/font-awesome/scss/_stacked.scss similarity index 100% rename from src/dashboard/media/vendor/font-awesome/scss/_stacked.scss rename to src/archivematica/dashboard/media/vendor/font-awesome/scss/_stacked.scss diff --git a/src/dashboard/media/vendor/font-awesome/scss/_variables.scss b/src/archivematica/dashboard/media/vendor/font-awesome/scss/_variables.scss similarity index 100% rename from src/dashboard/media/vendor/font-awesome/scss/_variables.scss rename to src/archivematica/dashboard/media/vendor/font-awesome/scss/_variables.scss diff --git a/src/dashboard/media/vendor/font-awesome/scss/font-awesome.scss b/src/archivematica/dashboard/media/vendor/font-awesome/scss/font-awesome.scss similarity index 100% rename from src/dashboard/media/vendor/font-awesome/scss/font-awesome.scss rename to src/archivematica/dashboard/media/vendor/font-awesome/scss/font-awesome.scss diff --git a/src/dashboard/media/vendor/jquery-ui/images/ui-icons_444444_256x240.png b/src/archivematica/dashboard/media/vendor/jquery-ui/images/ui-icons_444444_256x240.png similarity index 100% rename from src/dashboard/media/vendor/jquery-ui/images/ui-icons_444444_256x240.png rename to src/archivematica/dashboard/media/vendor/jquery-ui/images/ui-icons_444444_256x240.png diff --git a/src/dashboard/media/vendor/jquery-ui/images/ui-icons_555555_256x240.png b/src/archivematica/dashboard/media/vendor/jquery-ui/images/ui-icons_555555_256x240.png similarity index 100% rename from src/dashboard/media/vendor/jquery-ui/images/ui-icons_555555_256x240.png rename to src/archivematica/dashboard/media/vendor/jquery-ui/images/ui-icons_555555_256x240.png diff --git a/src/dashboard/media/vendor/jquery-ui/images/ui-icons_777620_256x240.png b/src/archivematica/dashboard/media/vendor/jquery-ui/images/ui-icons_777620_256x240.png similarity index 100% rename from src/dashboard/media/vendor/jquery-ui/images/ui-icons_777620_256x240.png rename to src/archivematica/dashboard/media/vendor/jquery-ui/images/ui-icons_777620_256x240.png diff --git a/src/dashboard/media/vendor/jquery-ui/images/ui-icons_777777_256x240.png b/src/archivematica/dashboard/media/vendor/jquery-ui/images/ui-icons_777777_256x240.png similarity index 100% rename from src/dashboard/media/vendor/jquery-ui/images/ui-icons_777777_256x240.png rename to src/archivematica/dashboard/media/vendor/jquery-ui/images/ui-icons_777777_256x240.png diff --git a/src/dashboard/media/vendor/jquery-ui/images/ui-icons_cc0000_256x240.png b/src/archivematica/dashboard/media/vendor/jquery-ui/images/ui-icons_cc0000_256x240.png similarity index 100% rename from src/dashboard/media/vendor/jquery-ui/images/ui-icons_cc0000_256x240.png rename to src/archivematica/dashboard/media/vendor/jquery-ui/images/ui-icons_cc0000_256x240.png diff --git a/src/dashboard/media/vendor/jquery-ui/images/ui-icons_ffffff_256x240.png b/src/archivematica/dashboard/media/vendor/jquery-ui/images/ui-icons_ffffff_256x240.png similarity index 100% rename from src/dashboard/media/vendor/jquery-ui/images/ui-icons_ffffff_256x240.png rename to src/archivematica/dashboard/media/vendor/jquery-ui/images/ui-icons_ffffff_256x240.png diff --git a/src/dashboard/media/vendor/jquery-ui/jquery-ui.css b/src/archivematica/dashboard/media/vendor/jquery-ui/jquery-ui.css similarity index 100% rename from src/dashboard/media/vendor/jquery-ui/jquery-ui.css rename to src/archivematica/dashboard/media/vendor/jquery-ui/jquery-ui.css diff --git a/src/dashboard/media/vendor/jquery-ui/jquery-ui.js b/src/archivematica/dashboard/media/vendor/jquery-ui/jquery-ui.js similarity index 100% rename from src/dashboard/media/vendor/jquery-ui/jquery-ui.js rename to src/archivematica/dashboard/media/vendor/jquery-ui/jquery-ui.js diff --git a/src/dashboard/media/vendor/jquery.idle-timer.js b/src/archivematica/dashboard/media/vendor/jquery.idle-timer.js similarity index 100% rename from src/dashboard/media/vendor/jquery.idle-timer.js rename to src/archivematica/dashboard/media/vendor/jquery.idle-timer.js diff --git a/src/dashboard/media/vendor/jquery.inputmask.js b/src/archivematica/dashboard/media/vendor/jquery.inputmask.js similarity index 100% rename from src/dashboard/media/vendor/jquery.inputmask.js rename to src/archivematica/dashboard/media/vendor/jquery.inputmask.js diff --git a/src/dashboard/media/vendor/jquery.js b/src/archivematica/dashboard/media/vendor/jquery.js similarity index 100% rename from src/dashboard/media/vendor/jquery.js rename to src/archivematica/dashboard/media/vendor/jquery.js diff --git a/src/dashboard/media/vendor/select2/README.md b/src/archivematica/dashboard/media/vendor/select2/README.md similarity index 100% rename from src/dashboard/media/vendor/select2/README.md rename to src/archivematica/dashboard/media/vendor/select2/README.md diff --git a/src/dashboard/media/vendor/select2/select2.css b/src/archivematica/dashboard/media/vendor/select2/select2.css similarity index 100% rename from src/dashboard/media/vendor/select2/select2.css rename to src/archivematica/dashboard/media/vendor/select2/select2.css diff --git a/src/dashboard/media/vendor/select2/select2.js b/src/archivematica/dashboard/media/vendor/select2/select2.js similarity index 100% rename from src/dashboard/media/vendor/select2/select2.js rename to src/archivematica/dashboard/media/vendor/select2/select2.js diff --git a/src/dashboard/media/vendor/select2/select2.min.js b/src/archivematica/dashboard/media/vendor/select2/select2.min.js similarity index 100% rename from src/dashboard/media/vendor/select2/select2.min.js rename to src/archivematica/dashboard/media/vendor/select2/select2.min.js diff --git a/src/dashboard/media/vendor/select2/select2.png b/src/archivematica/dashboard/media/vendor/select2/select2.png similarity index 100% rename from src/dashboard/media/vendor/select2/select2.png rename to src/archivematica/dashboard/media/vendor/select2/select2.png diff --git a/src/dashboard/media/vendor/select2/spinner.gif b/src/archivematica/dashboard/media/vendor/select2/spinner.gif similarity index 100% rename from src/dashboard/media/vendor/select2/spinner.gif rename to src/archivematica/dashboard/media/vendor/select2/spinner.gif diff --git a/src/dashboard/media/vendor/twitter-bootstrap/.gitignore b/src/archivematica/dashboard/media/vendor/twitter-bootstrap/.gitignore similarity index 100% rename from src/dashboard/media/vendor/twitter-bootstrap/.gitignore rename to src/archivematica/dashboard/media/vendor/twitter-bootstrap/.gitignore diff --git a/src/dashboard/media/vendor/twitter-bootstrap/css/bootstrap-theme.css b/src/archivematica/dashboard/media/vendor/twitter-bootstrap/css/bootstrap-theme.css similarity index 100% rename from src/dashboard/media/vendor/twitter-bootstrap/css/bootstrap-theme.css rename to src/archivematica/dashboard/media/vendor/twitter-bootstrap/css/bootstrap-theme.css diff --git a/src/dashboard/media/vendor/twitter-bootstrap/css/bootstrap-theme.css.map b/src/archivematica/dashboard/media/vendor/twitter-bootstrap/css/bootstrap-theme.css.map similarity index 100% rename from src/dashboard/media/vendor/twitter-bootstrap/css/bootstrap-theme.css.map rename to src/archivematica/dashboard/media/vendor/twitter-bootstrap/css/bootstrap-theme.css.map diff --git a/src/dashboard/media/vendor/twitter-bootstrap/css/bootstrap.css b/src/archivematica/dashboard/media/vendor/twitter-bootstrap/css/bootstrap.css similarity index 100% rename from src/dashboard/media/vendor/twitter-bootstrap/css/bootstrap.css rename to src/archivematica/dashboard/media/vendor/twitter-bootstrap/css/bootstrap.css diff --git a/src/dashboard/media/vendor/twitter-bootstrap/css/bootstrap.css.map b/src/archivematica/dashboard/media/vendor/twitter-bootstrap/css/bootstrap.css.map similarity index 100% rename from src/dashboard/media/vendor/twitter-bootstrap/css/bootstrap.css.map rename to src/archivematica/dashboard/media/vendor/twitter-bootstrap/css/bootstrap.css.map diff --git a/src/dashboard/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.eot b/src/archivematica/dashboard/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.eot similarity index 100% rename from src/dashboard/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.eot rename to src/archivematica/dashboard/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.eot diff --git a/src/dashboard/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.svg b/src/archivematica/dashboard/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.svg similarity index 100% rename from src/dashboard/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.svg rename to src/archivematica/dashboard/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.svg diff --git a/src/dashboard/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.ttf b/src/archivematica/dashboard/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.ttf similarity index 100% rename from src/dashboard/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.ttf rename to src/archivematica/dashboard/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.ttf diff --git a/src/dashboard/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.woff b/src/archivematica/dashboard/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.woff similarity index 100% rename from src/dashboard/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.woff rename to src/archivematica/dashboard/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.woff diff --git a/src/dashboard/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.woff2 b/src/archivematica/dashboard/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.woff2 similarity index 100% rename from src/dashboard/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.woff2 rename to src/archivematica/dashboard/media/vendor/twitter-bootstrap/fonts/glyphicons-halflings-regular.woff2 diff --git a/src/dashboard/media/vendor/twitter-bootstrap/js/bootstrap.js b/src/archivematica/dashboard/media/vendor/twitter-bootstrap/js/bootstrap.js similarity index 100% rename from src/dashboard/media/vendor/twitter-bootstrap/js/bootstrap.js rename to src/archivematica/dashboard/media/vendor/twitter-bootstrap/js/bootstrap.js diff --git a/src/dashboard/media/vendor/underscore.js b/src/archivematica/dashboard/media/vendor/underscore.js similarity index 100% rename from src/dashboard/media/vendor/underscore.js rename to src/archivematica/dashboard/media/vendor/underscore.js diff --git a/src/dashboard/settings/components/__init__.py b/src/archivematica/dashboard/middleware/__init__.py similarity index 100% rename from src/dashboard/settings/components/__init__.py rename to src/archivematica/dashboard/middleware/__init__.py diff --git a/src/dashboard/middleware/common.py b/src/archivematica/dashboard/middleware/common.py similarity index 100% rename from src/dashboard/middleware/common.py rename to src/archivematica/dashboard/middleware/common.py diff --git a/src/dashboard/middleware/locale.py b/src/archivematica/dashboard/middleware/locale.py similarity index 100% rename from src/dashboard/middleware/locale.py rename to src/archivematica/dashboard/middleware/locale.py diff --git a/src/archivematica/dashboard/settings/__init__.py b/src/archivematica/dashboard/settings/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/dashboard/settings/base.py b/src/archivematica/dashboard/settings/base.py similarity index 90% rename from src/dashboard/settings/base.py rename to src/archivematica/dashboard/settings/base.py index 3e6d49f167..9fe9571a30 100644 --- a/src/dashboard/settings/base.py +++ b/src/archivematica/dashboard/settings/base.py @@ -20,12 +20,13 @@ from io import StringIO from typing import Any -import email_settings -from appconfig import Config -from appconfig import process_search_enabled from django.core.exceptions import ImproperlyConfigured from django.utils.translation import gettext_lazy as _ +from archivematica.archivematicaCommon import email_settings +from archivematica.archivematicaCommon.appconfig import Config +from archivematica.archivematicaCommon.appconfig import process_search_enabled + def _get_settings_from_file(path): try: @@ -390,8 +391,8 @@ def _get_settings_from_file(path): "django.template.context_processors.static", "django.template.context_processors.request", "django.contrib.messages.context_processors.messages", - "main.context_processors.search_enabled", - "main.context_processors.auth_methods", + "archivematica.dashboard.main.context_processors.search_enabled", + "archivematica.dashboard.main.context_processors.auth_methods", ], "debug": DEBUG, }, @@ -405,28 +406,28 @@ def _get_settings_from_file(path): "django.contrib.sessions.middleware.SessionMiddleware", # Automatic language selection is disabled. # See #723 for more details. - "middleware.locale.ForceDefaultLanguageMiddleware", + "archivematica.dashboard.middleware.locale.ForceDefaultLanguageMiddleware", "django.middleware.locale.LocaleMiddleware", "django.middleware.common.CommonMiddleware", "django.middleware.csrf.CsrfViewMiddleware", "django.contrib.auth.middleware.AuthenticationMiddleware", "django.contrib.messages.middleware.MessageMiddleware", - "middleware.common.AJAXSimpleExceptionResponseMiddleware", - "installer.middleware.ConfigurationCheckMiddleware", - "middleware.common.SpecificExceptionErrorPageResponseMiddleware", - "middleware.common.ElasticsearchMiddleware", + "archivematica.dashboard.middleware.common.AJAXSimpleExceptionResponseMiddleware", + "archivematica.dashboard.installer.middleware.ConfigurationCheckMiddleware", + "archivematica.dashboard.middleware.common.SpecificExceptionErrorPageResponseMiddleware", + "archivematica.dashboard.middleware.common.ElasticsearchMiddleware", ] AUDIT_LOG_MIDDLEWARE = config.get("audit_log_middleware") if AUDIT_LOG_MIDDLEWARE: - MIDDLEWARE.append("middleware.common.AuditLogMiddleware") + MIDDLEWARE.append("archivematica.dashboard.middleware.common.AuditLogMiddleware") AUTHENTICATION_BACKENDS = ["django.contrib.auth.backends.ModelBackend"] # Import basic authentication settings from component module. -from .components.auth import * +from archivematica.dashboard.settings.components.auth import * -ROOT_URLCONF = "urls" +ROOT_URLCONF = "archivematica.dashboard.urls" INSTALLED_APPS = [ # Django basics @@ -439,12 +440,12 @@ def _get_settings_from_file(path): # Uncomment the next line to enable the admin: # 'django.contrib.admin', # Internal apps - "installer", - "components.accounts", - "main", - "components.mcp", - "components.administration", - "fpr", + "archivematica.dashboard.installer", + "archivematica.dashboard.components.accounts", + "archivematica.dashboard.main", + "archivematica.dashboard.components.mcp", + "archivematica.dashboard.components.administration", + "archivematica.dashboard.fpr", # For REST API "tastypie", "django_forms_bootstrap", @@ -584,27 +585,29 @@ def _get_settings_from_file(path): INSTALLED_APPS += ["shibboleth"] AUTHENTICATION_BACKENDS += [ - "components.accounts.backends.CustomShibbolethRemoteUserBackend" + "archivematica.dashboard.components.accounts.backends.CustomShibbolethRemoteUserBackend" ] # Insert Shibboleth after the authentication middleware MIDDLEWARE.insert( MIDDLEWARE.index("django.contrib.auth.middleware.AuthenticationMiddleware") + 1, - "middleware.common.CustomShibbolethRemoteUserMiddleware", + "archivematica.dashboard.middleware.common.CustomShibbolethRemoteUserMiddleware", ) TEMPLATES[0]["OPTIONS"]["context_processors"] += [ "shibboleth.context_processors.logout_link" ] - from .components.shibboleth_auth import * + from archivematica.dashboard.settings.components.shibboleth_auth import * LDAP_AUTHENTICATION = config.get("ldap_authentication") if LDAP_AUTHENTICATION: ALLOW_USER_EDITS = False - AUTHENTICATION_BACKENDS.insert(0, "components.accounts.backends.CustomLDAPBackend") + AUTHENTICATION_BACKENDS.insert( + 0, "archivematica.dashboard.components.accounts.backends.CustomLDAPBackend" + ) - from .components.ldap_auth import * + from archivematica.dashboard.settings.components.ldap_auth import * CAS_AUTHENTICATION = config.get("cas_authentication") if CAS_AUTHENTICATION: @@ -621,7 +624,9 @@ def _get_settings_from_file(path): ALLOW_USER_EDITS = False INSTALLED_APPS += ["django_cas_ng"] - AUTHENTICATION_BACKENDS += ["components.accounts.backends.CustomCASBackend"] + AUTHENTICATION_BACKENDS += [ + "archivematica.dashboard.components.accounts.backends.CustomCASBackend" + ] # Insert CAS after the authentication middleware MIDDLEWARE.insert( @@ -629,7 +634,7 @@ def _get_settings_from_file(path): "django_cas_ng.middleware.CASMiddleware", ) - from .components.cas_auth import * + from archivematica.dashboard.settings.components.cas_auth import * OIDC_AUTHENTICATION = config.get("oidc_authentication") if OIDC_AUTHENTICATION: @@ -639,11 +644,11 @@ def _get_settings_from_file(path): ALLOW_USER_EDITS = False OIDC_STORE_ID_TOKEN = True - OIDC_AUTHENTICATE_CLASS = ( - "components.accounts.views.CustomOIDCAuthenticationRequestView" - ) + OIDC_AUTHENTICATE_CLASS = "archivematica.dashboard.components.accounts.views.CustomOIDCAuthenticationRequestView" - AUTHENTICATION_BACKENDS += ["components.accounts.backends.CustomOIDCBackend"] + AUTHENTICATION_BACKENDS += [ + "archivematica.dashboard.components.accounts.backends.CustomOIDCBackend" + ] LOGIN_EXEMPT_URLS.append(r"^oidc") if not OIDC_ALLOW_LOCAL_AUTHENTICATION: @@ -657,16 +662,16 @@ def _get_settings_from_file(path): # Insert OIDC before the redirect to LOGIN_URL MIDDLEWARE.insert( MIDDLEWARE.index("django.contrib.auth.middleware.AuthenticationMiddleware") + 1, - "middleware.common.OidcCaptureQueryParamMiddleware", + "archivematica.dashboard.middleware.common.OidcCaptureQueryParamMiddleware", ) - from .components.oidc_auth import * + from archivematica.dashboard.settings.components.oidc_auth import * CSP_ENABLED = config.get("csp_enabled") if CSP_ENABLED: MIDDLEWARE.insert(0, "csp.middleware.CSPMiddleware") - from .components.csp import * + from archivematica.dashboard.settings.components.csp import * CSP_SETTINGS_FILE = os.environ.get("CSP_SETTINGS_FILE", "") if CSP_SETTINGS_FILE: diff --git a/src/archivematica/dashboard/settings/components/__init__.py b/src/archivematica/dashboard/settings/components/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/dashboard/settings/components/auth.py b/src/archivematica/dashboard/settings/components/auth.py similarity index 85% rename from src/dashboard/settings/components/auth.py rename to src/archivematica/dashboard/settings/components/auth.py index a77d0f7625..a3d3b5d915 100644 --- a/src/dashboard/settings/components/auth.py +++ b/src/archivematica/dashboard/settings/components/auth.py @@ -1,6 +1,6 @@ """Settings for basic user authentication.""" -from settings.base import config +from archivematica.dashboard.settings.base import config AUTH_PASSWORD_VALIDATORS = [ { @@ -30,5 +30,7 @@ ) if not DISABLE_PASSWORD_COMPLEXITY_VALIDATION: AUTH_PASSWORD_VALIDATORS.append( - {"NAME": "components.accounts.validators.PasswordComplexityValidator"} + { + "NAME": "archivematica.dashboard.components.accounts.validators.PasswordComplexityValidator" + } ) diff --git a/src/dashboard/settings/components/cas_auth.py b/src/archivematica/dashboard/settings/components/cas_auth.py similarity index 100% rename from src/dashboard/settings/components/cas_auth.py rename to src/archivematica/dashboard/settings/components/cas_auth.py diff --git a/src/dashboard/settings/components/csp.py b/src/archivematica/dashboard/settings/components/csp.py similarity index 100% rename from src/dashboard/settings/components/csp.py rename to src/archivematica/dashboard/settings/components/csp.py diff --git a/src/dashboard/settings/components/ldap_auth.py b/src/archivematica/dashboard/settings/components/ldap_auth.py similarity index 100% rename from src/dashboard/settings/components/ldap_auth.py rename to src/archivematica/dashboard/settings/components/ldap_auth.py diff --git a/src/dashboard/settings/components/oidc_auth.py b/src/archivematica/dashboard/settings/components/oidc_auth.py similarity index 90% rename from src/dashboard/settings/components/oidc_auth.py rename to src/archivematica/dashboard/settings/components/oidc_auth.py index f092711a29..5acb8b6b4e 100644 --- a/src/dashboard/settings/components/oidc_auth.py +++ b/src/archivematica/dashboard/settings/components/oidc_auth.py @@ -1,6 +1,8 @@ import os -from archivematicaFunctions import get_oidc_secondary_providers +from archivematica.archivematicaCommon.archivematicaFunctions import ( + get_oidc_secondary_providers, +) OIDC_RP_CLIENT_ID = os.environ.get("OIDC_RP_CLIENT_ID", "") OIDC_RP_CLIENT_SECRET = os.environ.get("OIDC_RP_CLIENT_SECRET", "") @@ -43,7 +45,9 @@ OIDC_PROVIDERS = get_oidc_secondary_providers(OIDC_SECONDARY_PROVIDER_NAMES) if OIDC_OP_LOGOUT_ENDPOINT: - OIDC_OP_LOGOUT_URL_METHOD = "components.accounts.views.get_oidc_logout_url" + OIDC_OP_LOGOUT_URL_METHOD = ( + "archivematica.dashboard.components.accounts.views.get_oidc_logout_url" + ) OIDC_RP_SIGN_ALGO = os.environ.get("OIDC_RP_SIGN_ALGO", "HS256") diff --git a/src/dashboard/settings/components/shibboleth_auth.py b/src/archivematica/dashboard/settings/components/shibboleth_auth.py similarity index 100% rename from src/dashboard/settings/components/shibboleth_auth.py rename to src/archivematica/dashboard/settings/components/shibboleth_auth.py diff --git a/src/dashboard/settings/local.py b/src/archivematica/dashboard/settings/local.py similarity index 84% rename from src/dashboard/settings/local.py rename to src/archivematica/dashboard/settings/local.py index 32a371321e..9f992e26e1 100644 --- a/src/dashboard/settings/local.py +++ b/src/archivematica/dashboard/settings/local.py @@ -17,14 +17,17 @@ """Development settings and globals.""" import os +from typing import Any -from .base import * +from archivematica.dashboard.settings.base import * +from archivematica.dashboard.settings.base import BASE_PATH +from archivematica.dashboard.settings.base import TEMPLATES DEBUG = True TEMPLATES[0]["OPTIONS"]["debug"] = True # Disable password validation in local development environment. -AUTH_PASSWORD_VALIDATORS = [] +AUTH_PASSWORD_VALIDATORS: list[dict[str, Any]] = [] # Fixture directories are only configured in local and test environments. # In Django 1.8, if you create a fixture named initial_data.[xml/yaml/json], diff --git a/src/dashboard/settings/production.py b/src/archivematica/dashboard/settings/production.py similarity index 89% rename from src/dashboard/settings/production.py rename to src/archivematica/dashboard/settings/production.py index a551d023b2..5dedb7450c 100644 --- a/src/dashboard/settings/production.py +++ b/src/archivematica/dashboard/settings/production.py @@ -16,7 +16,8 @@ # along with Archivematica. If not, see . """Production settings and globals.""" -from .base import * +from archivematica.dashboard.settings.base import * +from archivematica.dashboard.settings.base import config ALLOWED_HOSTS = config.get("allowed_hosts").split(",") diff --git a/src/dashboard/settings/test.py b/src/archivematica/dashboard/settings/test.py similarity index 89% rename from src/dashboard/settings/test.py rename to src/archivematica/dashboard/settings/test.py index 82fc6f7848..983e7b2a4d 100644 --- a/src/dashboard/settings/test.py +++ b/src/archivematica/dashboard/settings/test.py @@ -16,10 +16,14 @@ # along with Archivematica. If not, see . """Test settings and globals.""" +from typing import Any + import ldap from django_auth_ldap.config import LDAPSearch -from .local import * +from archivematica.dashboard.settings.local import * +from archivematica.dashboard.settings.local import MIDDLEWARE +from archivematica.dashboard.settings.local import STORAGES # Import local settings (base settings + debug + fixture dirs) @@ -66,5 +70,5 @@ AUTH_LDAP_USER_SEARCH = LDAPSearch( "ou=example,o=test", ldap.SCOPE_SUBTREE, "(cn=%(user)s)" ) -AUTH_LDAP_USER_FLAGS_BY_GROUP = {} +AUTH_LDAP_USER_FLAGS_BY_GROUP: dict[str, Any] = {} AUTH_LDAP_USERNAME_SUFFIX = "_ldap" diff --git a/src/dashboard/settings/testmysql.py b/src/archivematica/dashboard/settings/testmysql.py similarity index 85% rename from src/dashboard/settings/testmysql.py rename to src/archivematica/dashboard/settings/testmysql.py index 9aaaa72340..fe38b20f44 100644 --- a/src/dashboard/settings/testmysql.py +++ b/src/archivematica/dashboard/settings/testmysql.py @@ -1,4 +1,4 @@ -from .test import * +from archivematica.dashboard.settings.test import * DATABASES = { "default": { diff --git a/src/dashboard/templates/404.html b/src/archivematica/dashboard/templates/404.html similarity index 100% rename from src/dashboard/templates/404.html rename to src/archivematica/dashboard/templates/404.html diff --git a/src/dashboard/templates/500.html b/src/archivematica/dashboard/templates/500.html similarity index 100% rename from src/dashboard/templates/500.html rename to src/archivematica/dashboard/templates/500.html diff --git a/src/dashboard/templates/_form.html b/src/archivematica/dashboard/templates/_form.html similarity index 100% rename from src/dashboard/templates/_form.html rename to src/archivematica/dashboard/templates/_form.html diff --git a/src/dashboard/templates/_formset.html b/src/archivematica/dashboard/templates/_formset.html similarity index 100% rename from src/dashboard/templates/_formset.html rename to src/archivematica/dashboard/templates/_formset.html diff --git a/src/dashboard/templates/_formset_table.html b/src/archivematica/dashboard/templates/_formset_table.html similarity index 100% rename from src/dashboard/templates/_formset_table.html rename to src/archivematica/dashboard/templates/_formset_table.html diff --git a/src/dashboard/templates/_fpr_update_button.html b/src/archivematica/dashboard/templates/_fpr_update_button.html similarity index 100% rename from src/dashboard/templates/_fpr_update_button.html rename to src/archivematica/dashboard/templates/_fpr_update_button.html diff --git a/src/dashboard/templates/_messages.html b/src/archivematica/dashboard/templates/_messages.html similarity index 100% rename from src/dashboard/templates/_messages.html rename to src/archivematica/dashboard/templates/_messages.html diff --git a/src/dashboard/templates/_pager.html b/src/archivematica/dashboard/templates/_pager.html similarity index 100% rename from src/dashboard/templates/_pager.html rename to src/archivematica/dashboard/templates/_pager.html diff --git a/src/dashboard/templates/accounts/add.html b/src/archivematica/dashboard/templates/accounts/add.html similarity index 100% rename from src/dashboard/templates/accounts/add.html rename to src/archivematica/dashboard/templates/accounts/add.html diff --git a/src/dashboard/templates/accounts/edit.html b/src/archivematica/dashboard/templates/accounts/edit.html similarity index 100% rename from src/dashboard/templates/accounts/edit.html rename to src/archivematica/dashboard/templates/accounts/edit.html diff --git a/src/dashboard/templates/accounts/list.html b/src/archivematica/dashboard/templates/accounts/list.html similarity index 100% rename from src/dashboard/templates/accounts/list.html rename to src/archivematica/dashboard/templates/accounts/list.html diff --git a/src/dashboard/templates/accounts/logged_out.html b/src/archivematica/dashboard/templates/accounts/logged_out.html similarity index 100% rename from src/dashboard/templates/accounts/logged_out.html rename to src/archivematica/dashboard/templates/accounts/logged_out.html diff --git a/src/dashboard/templates/accounts/login.html b/src/archivematica/dashboard/templates/accounts/login.html similarity index 100% rename from src/dashboard/templates/accounts/login.html rename to src/archivematica/dashboard/templates/accounts/login.html diff --git a/src/dashboard/templates/accounts/profile.html b/src/archivematica/dashboard/templates/accounts/profile.html similarity index 100% rename from src/dashboard/templates/accounts/profile.html rename to src/archivematica/dashboard/templates/accounts/profile.html diff --git a/src/dashboard/templates/administration/api.html b/src/archivematica/dashboard/templates/administration/api.html similarity index 100% rename from src/dashboard/templates/administration/api.html rename to src/archivematica/dashboard/templates/administration/api.html diff --git a/src/dashboard/templates/administration/atom_levels_of_description.html b/src/archivematica/dashboard/templates/administration/atom_levels_of_description.html similarity index 100% rename from src/dashboard/templates/administration/atom_levels_of_description.html rename to src/archivematica/dashboard/templates/administration/atom_levels_of_description.html diff --git a/src/dashboard/templates/administration/dips_as_edit.html b/src/archivematica/dashboard/templates/administration/dips_as_edit.html similarity index 100% rename from src/dashboard/templates/administration/dips_as_edit.html rename to src/archivematica/dashboard/templates/administration/dips_as_edit.html diff --git a/src/dashboard/templates/administration/dips_atom_edit.html b/src/archivematica/dashboard/templates/administration/dips_atom_edit.html similarity index 100% rename from src/dashboard/templates/administration/dips_atom_edit.html rename to src/archivematica/dashboard/templates/administration/dips_atom_edit.html diff --git a/src/dashboard/templates/administration/general.html b/src/archivematica/dashboard/templates/administration/general.html similarity index 100% rename from src/dashboard/templates/administration/general.html rename to src/archivematica/dashboard/templates/administration/general.html diff --git a/src/dashboard/templates/administration/handle_config.html b/src/archivematica/dashboard/templates/administration/handle_config.html similarity index 100% rename from src/dashboard/templates/administration/handle_config.html rename to src/archivematica/dashboard/templates/administration/handle_config.html diff --git a/src/dashboard/templates/administration/language.html b/src/archivematica/dashboard/templates/administration/language.html similarity index 100% rename from src/dashboard/templates/administration/language.html rename to src/archivematica/dashboard/templates/administration/language.html diff --git a/src/dashboard/templates/administration/locations.html b/src/archivematica/dashboard/templates/administration/locations.html similarity index 100% rename from src/dashboard/templates/administration/locations.html rename to src/archivematica/dashboard/templates/administration/locations.html diff --git a/src/dashboard/templates/administration/premis_agent.html b/src/archivematica/dashboard/templates/administration/premis_agent.html similarity index 100% rename from src/dashboard/templates/administration/premis_agent.html rename to src/archivematica/dashboard/templates/administration/premis_agent.html diff --git a/src/dashboard/templates/administration/processing.html b/src/archivematica/dashboard/templates/administration/processing.html similarity index 100% rename from src/dashboard/templates/administration/processing.html rename to src/archivematica/dashboard/templates/administration/processing.html diff --git a/src/dashboard/templates/administration/processing_edit.html b/src/archivematica/dashboard/templates/administration/processing_edit.html similarity index 100% rename from src/dashboard/templates/administration/processing_edit.html rename to src/archivematica/dashboard/templates/administration/processing_edit.html diff --git a/src/dashboard/templates/administration/reports/failure_detail.html b/src/archivematica/dashboard/templates/administration/reports/failure_detail.html similarity index 100% rename from src/dashboard/templates/administration/reports/failure_detail.html rename to src/archivematica/dashboard/templates/administration/reports/failure_detail.html diff --git a/src/dashboard/templates/administration/reports/failures.html b/src/archivematica/dashboard/templates/administration/reports/failures.html similarity index 100% rename from src/dashboard/templates/administration/reports/failures.html rename to src/archivematica/dashboard/templates/administration/reports/failures.html diff --git a/src/dashboard/templates/administration/sidebar.html b/src/archivematica/dashboard/templates/administration/sidebar.html similarity index 100% rename from src/dashboard/templates/administration/sidebar.html rename to src/archivematica/dashboard/templates/administration/sidebar.html diff --git a/src/dashboard/templates/administration/taxonomy.html b/src/archivematica/dashboard/templates/administration/taxonomy.html similarity index 100% rename from src/dashboard/templates/administration/taxonomy.html rename to src/archivematica/dashboard/templates/administration/taxonomy.html diff --git a/src/dashboard/templates/administration/term_detail.html b/src/archivematica/dashboard/templates/administration/term_detail.html similarity index 100% rename from src/dashboard/templates/administration/term_detail.html rename to src/archivematica/dashboard/templates/administration/term_detail.html diff --git a/src/dashboard/templates/administration/terms.html b/src/archivematica/dashboard/templates/administration/terms.html similarity index 100% rename from src/dashboard/templates/administration/terms.html rename to src/archivematica/dashboard/templates/administration/terms.html diff --git a/src/dashboard/templates/administration/usage.html b/src/archivematica/dashboard/templates/administration/usage.html similarity index 100% rename from src/dashboard/templates/administration/usage.html rename to src/archivematica/dashboard/templates/administration/usage.html diff --git a/src/dashboard/templates/administration/version.html b/src/archivematica/dashboard/templates/administration/version.html similarity index 100% rename from src/dashboard/templates/administration/version.html rename to src/archivematica/dashboard/templates/administration/version.html diff --git a/src/dashboard/templates/appraisal/appraisal.html b/src/archivematica/dashboard/templates/appraisal/appraisal.html similarity index 100% rename from src/dashboard/templates/appraisal/appraisal.html rename to src/archivematica/dashboard/templates/appraisal/appraisal.html diff --git a/src/dashboard/templates/archival_storage/_archival_storage_search_form.html b/src/archivematica/dashboard/templates/archival_storage/_archival_storage_search_form.html similarity index 100% rename from src/dashboard/templates/archival_storage/_archival_storage_search_form.html rename to src/archivematica/dashboard/templates/archival_storage/_archival_storage_search_form.html diff --git a/src/dashboard/templates/archival_storage/archival_storage.html b/src/archivematica/dashboard/templates/archival_storage/archival_storage.html similarity index 100% rename from src/dashboard/templates/archival_storage/archival_storage.html rename to src/archivematica/dashboard/templates/archival_storage/archival_storage.html diff --git a/src/dashboard/templates/archival_storage/view.html b/src/archivematica/dashboard/templates/archival_storage/view.html similarity index 100% rename from src/dashboard/templates/archival_storage/view.html rename to src/archivematica/dashboard/templates/archival_storage/view.html diff --git a/src/dashboard/templates/backlog/backlog.html b/src/archivematica/dashboard/templates/backlog/backlog.html similarity index 100% rename from src/dashboard/templates/backlog/backlog.html rename to src/archivematica/dashboard/templates/backlog/backlog.html diff --git a/src/dashboard/templates/delete_request.html b/src/archivematica/dashboard/templates/delete_request.html similarity index 100% rename from src/dashboard/templates/delete_request.html rename to src/archivematica/dashboard/templates/delete_request.html diff --git a/src/dashboard/templates/elasticsearch_error.html b/src/archivematica/dashboard/templates/elasticsearch_error.html similarity index 100% rename from src/dashboard/templates/elasticsearch_error.html rename to src/archivematica/dashboard/templates/elasticsearch_error.html diff --git a/src/dashboard/templates/elasticsearch_not_found.html b/src/archivematica/dashboard/templates/elasticsearch_not_found.html similarity index 100% rename from src/dashboard/templates/elasticsearch_not_found.html rename to src/archivematica/dashboard/templates/elasticsearch_not_found.html diff --git a/src/dashboard/templates/forbidden.html b/src/archivematica/dashboard/templates/forbidden.html similarity index 100% rename from src/dashboard/templates/forbidden.html rename to src/archivematica/dashboard/templates/forbidden.html diff --git a/src/dashboard/templates/ingest/aip_browse.html b/src/archivematica/dashboard/templates/ingest/aip_browse.html similarity index 100% rename from src/dashboard/templates/ingest/aip_browse.html rename to src/archivematica/dashboard/templates/ingest/aip_browse.html diff --git a/src/dashboard/templates/ingest/as/_search_form.html b/src/archivematica/dashboard/templates/ingest/as/_search_form.html similarity index 100% rename from src/dashboard/templates/ingest/as/_search_form.html rename to src/archivematica/dashboard/templates/ingest/as/_search_form.html diff --git a/src/dashboard/templates/ingest/as/match.html b/src/archivematica/dashboard/templates/ingest/as/match.html similarity index 100% rename from src/dashboard/templates/ingest/as/match.html rename to src/archivematica/dashboard/templates/ingest/as/match.html diff --git a/src/dashboard/templates/ingest/as/resource_component.html b/src/archivematica/dashboard/templates/ingest/as/resource_component.html similarity index 100% rename from src/dashboard/templates/ingest/as/resource_component.html rename to src/archivematica/dashboard/templates/ingest/as/resource_component.html diff --git a/src/dashboard/templates/ingest/as/resource_detail.html b/src/archivematica/dashboard/templates/ingest/as/resource_detail.html similarity index 100% rename from src/dashboard/templates/ingest/as/resource_detail.html rename to src/archivematica/dashboard/templates/ingest/as/resource_detail.html diff --git a/src/dashboard/templates/ingest/as/resource_list.html b/src/archivematica/dashboard/templates/ingest/as/resource_list.html similarity index 100% rename from src/dashboard/templates/ingest/as/resource_list.html rename to src/archivematica/dashboard/templates/ingest/as/resource_list.html diff --git a/src/dashboard/templates/ingest/as/review_matches.html b/src/archivematica/dashboard/templates/ingest/as/review_matches.html similarity index 100% rename from src/dashboard/templates/ingest/as/review_matches.html rename to src/archivematica/dashboard/templates/ingest/as/review_matches.html diff --git a/src/dashboard/templates/ingest/backlog/_search_form.html b/src/archivematica/dashboard/templates/ingest/backlog/_search_form.html similarity index 100% rename from src/dashboard/templates/ingest/backlog/_search_form.html rename to src/archivematica/dashboard/templates/ingest/backlog/_search_form.html diff --git a/src/dashboard/templates/ingest/detail.html b/src/archivematica/dashboard/templates/ingest/detail.html similarity index 100% rename from src/dashboard/templates/ingest/detail.html rename to src/archivematica/dashboard/templates/ingest/detail.html diff --git a/src/dashboard/templates/ingest/grid.html b/src/archivematica/dashboard/templates/ingest/grid.html similarity index 100% rename from src/dashboard/templates/ingest/grid.html rename to src/archivematica/dashboard/templates/ingest/grid.html diff --git a/src/dashboard/templates/ingest/metadata_add_files.html b/src/archivematica/dashboard/templates/ingest/metadata_add_files.html similarity index 100% rename from src/dashboard/templates/ingest/metadata_add_files.html rename to src/archivematica/dashboard/templates/ingest/metadata_add_files.html diff --git a/src/dashboard/templates/ingest/metadata_edit.html b/src/archivematica/dashboard/templates/ingest/metadata_edit.html similarity index 100% rename from src/dashboard/templates/ingest/metadata_edit.html rename to src/archivematica/dashboard/templates/ingest/metadata_edit.html diff --git a/src/dashboard/templates/ingest/metadata_event_detail.html b/src/archivematica/dashboard/templates/ingest/metadata_event_detail.html similarity index 100% rename from src/dashboard/templates/ingest/metadata_event_detail.html rename to src/archivematica/dashboard/templates/ingest/metadata_event_detail.html diff --git a/src/dashboard/templates/ingest/metadata_list.html b/src/archivematica/dashboard/templates/ingest/metadata_list.html similarity index 100% rename from src/dashboard/templates/ingest/metadata_list.html rename to src/archivematica/dashboard/templates/ingest/metadata_list.html diff --git a/src/dashboard/templates/ingest/microservices.html b/src/archivematica/dashboard/templates/ingest/microservices.html similarity index 100% rename from src/dashboard/templates/ingest/microservices.html rename to src/archivematica/dashboard/templates/ingest/microservices.html diff --git a/src/dashboard/templates/ingest/normalization_report.html b/src/archivematica/dashboard/templates/ingest/normalization_report.html similarity index 100% rename from src/dashboard/templates/ingest/normalization_report.html rename to src/archivematica/dashboard/templates/ingest/normalization_report.html diff --git a/src/dashboard/templates/installer/storagesetup.html b/src/archivematica/dashboard/templates/installer/storagesetup.html similarity index 100% rename from src/dashboard/templates/installer/storagesetup.html rename to src/archivematica/dashboard/templates/installer/storagesetup.html diff --git a/src/dashboard/templates/installer/welcome.html b/src/archivematica/dashboard/templates/installer/welcome.html similarity index 100% rename from src/dashboard/templates/installer/welcome.html rename to src/archivematica/dashboard/templates/installer/welcome.html diff --git a/src/dashboard/templates/layout.html b/src/archivematica/dashboard/templates/layout.html similarity index 100% rename from src/dashboard/templates/layout.html rename to src/archivematica/dashboard/templates/layout.html diff --git a/src/dashboard/templates/layout_ajax.html b/src/archivematica/dashboard/templates/layout_ajax.html similarity index 100% rename from src/dashboard/templates/layout_ajax.html rename to src/archivematica/dashboard/templates/layout_ajax.html diff --git a/src/dashboard/templates/layout_fluid.html b/src/archivematica/dashboard/templates/layout_fluid.html similarity index 100% rename from src/dashboard/templates/layout_fluid.html rename to src/archivematica/dashboard/templates/layout_fluid.html diff --git a/src/dashboard/templates/main/_tasks_pager.html b/src/archivematica/dashboard/templates/main/_tasks_pager.html similarity index 100% rename from src/dashboard/templates/main/_tasks_pager.html rename to src/archivematica/dashboard/templates/main/_tasks_pager.html diff --git a/src/dashboard/templates/main/access.html b/src/archivematica/dashboard/templates/main/access.html similarity index 100% rename from src/dashboard/templates/main/access.html rename to src/archivematica/dashboard/templates/main/access.html diff --git a/src/dashboard/templates/main/tasks.html b/src/archivematica/dashboard/templates/main/tasks.html similarity index 100% rename from src/dashboard/templates/main/tasks.html rename to src/archivematica/dashboard/templates/main/tasks.html diff --git a/src/dashboard/templates/rights/rights_edit.html b/src/archivematica/dashboard/templates/rights/rights_edit.html similarity index 100% rename from src/dashboard/templates/rights/rights_edit.html rename to src/archivematica/dashboard/templates/rights/rights_edit.html diff --git a/src/dashboard/templates/rights/rights_grants_edit.html b/src/archivematica/dashboard/templates/rights/rights_grants_edit.html similarity index 100% rename from src/dashboard/templates/rights/rights_grants_edit.html rename to src/archivematica/dashboard/templates/rights/rights_grants_edit.html diff --git a/src/dashboard/templates/rights/rights_list.html b/src/archivematica/dashboard/templates/rights/rights_list.html similarity index 100% rename from src/dashboard/templates/rights/rights_list.html rename to src/archivematica/dashboard/templates/rights/rights_list.html diff --git a/src/dashboard/templates/simple_confirm.html b/src/archivematica/dashboard/templates/simple_confirm.html similarity index 100% rename from src/dashboard/templates/simple_confirm.html rename to src/archivematica/dashboard/templates/simple_confirm.html diff --git a/src/dashboard/templates/transfer/component.html b/src/archivematica/dashboard/templates/transfer/component.html similarity index 100% rename from src/dashboard/templates/transfer/component.html rename to src/archivematica/dashboard/templates/transfer/component.html diff --git a/src/dashboard/templates/transfer/detail.html b/src/archivematica/dashboard/templates/transfer/detail.html similarity index 100% rename from src/dashboard/templates/transfer/detail.html rename to src/archivematica/dashboard/templates/transfer/detail.html diff --git a/src/dashboard/templates/transfer/grid.html b/src/archivematica/dashboard/templates/transfer/grid.html similarity index 100% rename from src/dashboard/templates/transfer/grid.html rename to src/archivematica/dashboard/templates/transfer/grid.html diff --git a/src/dashboard/templates/transfer/metadata_edit.html b/src/archivematica/dashboard/templates/transfer/metadata_edit.html similarity index 100% rename from src/dashboard/templates/transfer/metadata_edit.html rename to src/archivematica/dashboard/templates/transfer/metadata_edit.html diff --git a/src/dashboard/templates/transfer/metadata_list.html b/src/archivematica/dashboard/templates/transfer/metadata_list.html similarity index 100% rename from src/dashboard/templates/transfer/metadata_list.html rename to src/archivematica/dashboard/templates/transfer/metadata_list.html diff --git a/src/dashboard/templates/transfer/microservices.html b/src/archivematica/dashboard/templates/transfer/microservices.html similarity index 100% rename from src/dashboard/templates/transfer/microservices.html rename to src/archivematica/dashboard/templates/transfer/microservices.html diff --git a/src/archivematica/dashboard/urls.py b/src/archivematica/dashboard/urls.py new file mode 100644 index 0000000000..82a003afef --- /dev/null +++ b/src/archivematica/dashboard/urls.py @@ -0,0 +1,72 @@ +# This file is part of Archivematica. +# +# Copyright 2010-2013 Artefactual Systems Inc. +# +# Archivematica is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Archivematica is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Archivematica. If not, see . +from django.conf import settings +from django.urls import include +from django.urls import path +from django.urls import re_path + +urlpatterns = [ + path("mcp/", include("archivematica.dashboard.components.mcp.urls")), + path("installer/", include("archivematica.dashboard.installer.urls")), + path( + "administration/accounts/", + include("archivematica.dashboard.components.accounts.urls"), + ), + path( + "archival-storage/", + include("archivematica.dashboard.components.archival_storage.urls"), + ), + path("fpr/", include("archivematica.dashboard.fpr.urls")), + re_path( + r"^(?Ptransfer|ingest)/", + include("archivematica.dashboard.components.unit.urls"), + ), # URLs common to transfer & ingest + re_path( + r"^transfer/(?P" + settings.UUID_REGEX + ")/rights/", + include("archivematica.dashboard.components.rights.transfer_urls"), + ), + path("transfer/", include("archivematica.dashboard.components.transfer.urls")), + path("appraisal/", include("archivematica.dashboard.components.appraisal.urls")), + re_path( + r"^ingest/(?P" + settings.UUID_REGEX + ")/rights/", + include("archivematica.dashboard.components.rights.ingest_urls"), + ), + path("ingest/", include("archivematica.dashboard.components.ingest.urls")), + path( + "administration/", + include("archivematica.dashboard.components.administration.urls"), + ), + path( + "filesystem/", + include("archivematica.dashboard.components.filesystem_ajax.urls"), + ), + path("api/", include("archivematica.dashboard.components.api.urls")), + path("file/", include("archivematica.dashboard.components.file.urls")), + path("access/", include("archivematica.dashboard.components.access.urls")), + path("backlog/", include("archivematica.dashboard.components.backlog.urls")), + path("", include("archivematica.dashboard.main.urls")), +] + +if settings.PROMETHEUS_ENABLED: + # Include prometheus metrics at /metrics + urlpatterns += [path("", include("django_prometheus.urls"))] + +if settings.OIDC_AUTHENTICATION: + urlpatterns += [path("oidc/", include("mozilla_django_oidc.urls"))] + +if "shibboleth" in settings.INSTALLED_APPS: + urlpatterns += [path("shib/", include("shibboleth.urls"))] diff --git a/src/dashboard/wsgi.py b/src/archivematica/dashboard/wsgi.py similarity index 77% rename from src/dashboard/wsgi.py rename to src/archivematica/dashboard/wsgi.py index 1e6b3bba7c..58f32a9745 100644 --- a/src/dashboard/wsgi.py +++ b/src/archivematica/dashboard/wsgi.py @@ -3,7 +3,7 @@ from django.core.wsgi import get_wsgi_application django.setup() -import elasticSearchFunctions +from archivematica.archivematicaCommon import elasticSearchFunctions application = get_wsgi_application() diff --git a/src/dashboard/urls.py b/src/dashboard/urls.py deleted file mode 100644 index fc7dba8228..0000000000 --- a/src/dashboard/urls.py +++ /dev/null @@ -1,59 +0,0 @@ -# This file is part of Archivematica. -# -# Copyright 2010-2013 Artefactual Systems Inc. -# -# Archivematica is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Archivematica is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Archivematica. If not, see . -from django.conf import settings -from django.urls import include -from django.urls import path -from django.urls import re_path - -urlpatterns = [ - path("mcp/", include("components.mcp.urls")), - path("installer/", include("installer.urls")), - path("administration/accounts/", include("components.accounts.urls")), - path("archival-storage/", include("components.archival_storage.urls")), - path("fpr/", include("fpr.urls")), - re_path( - r"^(?Ptransfer|ingest)/", include("components.unit.urls") - ), # URLs common to transfer & ingest - re_path( - r"^transfer/(?P" + settings.UUID_REGEX + ")/rights/", - include("components.rights.transfer_urls"), - ), - path("transfer/", include("components.transfer.urls")), - path("appraisal/", include("components.appraisal.urls")), - re_path( - r"^ingest/(?P" + settings.UUID_REGEX + ")/rights/", - include("components.rights.ingest_urls"), - ), - path("ingest/", include("components.ingest.urls")), - path("administration/", include("components.administration.urls")), - path("filesystem/", include("components.filesystem_ajax.urls")), - path("api/", include("components.api.urls")), - path("file/", include("components.file.urls")), - path("access/", include("components.access.urls")), - path("backlog/", include("components.backlog.urls")), - path("", include("main.urls")), -] - -if settings.PROMETHEUS_ENABLED: - # Include prometheus metrics at /metrics - urlpatterns += [path("", include("django_prometheus.urls"))] - -if settings.OIDC_AUTHENTICATION: - urlpatterns += [path("oidc/", include("mozilla_django_oidc.urls"))] - -if "shibboleth" in settings.INSTALLED_APPS: - urlpatterns += [path("shib/", include("shibboleth.urls"))] diff --git a/tests/MCPClient/conftest.py b/tests/MCPClient/conftest.py index 8e18d6b6d2..8d0d21a158 100644 --- a/tests/MCPClient/conftest.py +++ b/tests/MCPClient/conftest.py @@ -2,10 +2,11 @@ import pytest import pytest_django -from client.job import Job from django.utils import timezone -from fpr import models as fprmodels -from main import models + +from archivematica.dashboard.fpr import models as fprmodels +from archivematica.dashboard.main import models +from archivematica.MCPClient.client.job import Job @pytest.fixture(autouse=True) diff --git a/tests/MCPClient/test_antivirus.py b/tests/MCPClient/test_antivirus.py index 23ea0647a7..6e72df8f5c 100644 --- a/tests/MCPClient/test_antivirus.py +++ b/tests/MCPClient/test_antivirus.py @@ -4,9 +4,10 @@ from collections import namedtuple from unittest import mock -import archivematica_clamscan import pytest +from archivematica.MCPClient.clientScripts import archivematica_clamscan + from . import test_antivirus_clamdscan @@ -101,9 +102,11 @@ def setup_test_scan_file_mocks( return deps -@mock.patch("archivematica_clamscan.file_already_scanned") -@mock.patch("main.models.File.objects.get") -@mock.patch("archivematica_clamscan.get_scanner") +@mock.patch( + "archivematica.MCPClient.clientScripts.archivematica_clamscan.file_already_scanned" +) +@mock.patch("archivematica.dashboard.main.models.File.objects.get") +@mock.patch("archivematica.MCPClient.clientScripts.archivematica_clamscan.get_scanner") def test_scan_file_already_scanned( get_scanner, file_objects_get, file_already_scanned_mock ): @@ -170,9 +173,11 @@ def test_scan_file_already_scanned( ), ], ) -@mock.patch("archivematica_clamscan.file_already_scanned") -@mock.patch("main.models.File.objects.get") -@mock.patch("archivematica_clamscan.get_scanner") +@mock.patch( + "archivematica.MCPClient.clientScripts.archivematica_clamscan.file_already_scanned" +) +@mock.patch("archivematica.dashboard.main.models.File.objects.get") +@mock.patch("archivematica.MCPClient.clientScripts.archivematica_clamscan.get_scanner") def test_scan_file( get_scanner, file_objects_get, diff --git a/tests/MCPClient/test_antivirus_clamdscan.py b/tests/MCPClient/test_antivirus_clamdscan.py index 443952cfc2..a29785956c 100644 --- a/tests/MCPClient/test_antivirus_clamdscan.py +++ b/tests/MCPClient/test_antivirus_clamdscan.py @@ -4,12 +4,13 @@ from collections import namedtuple from unittest import mock -import archivematica_clamscan from clamd import BufferTooLongError from clamd import ClamdNetworkSocket from clamd import ClamdUnixSocket from clamd import ConnectionError +from archivematica.MCPClient.clientScripts import archivematica_clamscan + def setup_clamdscanner( settings, addr="/var/run/clamav/clamd.ctl", timeout=10, stream=False diff --git a/tests/MCPClient/test_antivirus_clamscan.py b/tests/MCPClient/test_antivirus_clamscan.py index ac4d71ea42..51063be285 100644 --- a/tests/MCPClient/test_antivirus_clamscan.py +++ b/tests/MCPClient/test_antivirus_clamscan.py @@ -3,9 +3,10 @@ import subprocess from unittest import mock -import archivematica_clamscan import pytest +from archivematica.MCPClient.clientScripts import archivematica_clamscan + @pytest.mark.parametrize( "version, want", diff --git a/tests/MCPClient/test_archivematicaCreateMETSMetadataCSV.py b/tests/MCPClient/test_archivematicaCreateMETSMetadataCSV.py index 81d80a8347..23e10b1474 100755 --- a/tests/MCPClient/test_archivematicaCreateMETSMetadataCSV.py +++ b/tests/MCPClient/test_archivematicaCreateMETSMetadataCSV.py @@ -5,7 +5,9 @@ from unittest import mock -from archivematicaCreateMETSMetadataCSV import parseMetadataCSV +from archivematica.MCPClient.clientScripts.archivematicaCreateMETSMetadataCSV import ( + parseMetadataCSV, +) content_when_value_has_empty_strings = """ filename,dc.title,dc.type,dc.type,Other metadata diff --git a/tests/MCPClient/test_archivematicaCreateMETSMetadataXML.py b/tests/MCPClient/test_archivematicaCreateMETSMetadataXML.py index b0a4799865..04867c3128 100644 --- a/tests/MCPClient/test_archivematicaCreateMETSMetadataXML.py +++ b/tests/MCPClient/test_archivematicaCreateMETSMetadataXML.py @@ -12,10 +12,13 @@ import metsrw import pytest import requests -from archivematicaCreateMETSMetadataXML import process_xml_metadata from importlib_metadata import version from lxml.etree import parse -from main.models import File + +from archivematica.dashboard.main.models import File +from archivematica.MCPClient.clientScripts.archivematicaCreateMETSMetadataXML import ( + process_xml_metadata, +) METADATA_DIR = Path("objects") / "metadata" TRANSFER_METADATA_DIR = METADATA_DIR / "transfers" / "transfer_a" @@ -127,7 +130,7 @@ def _make_mock_mets(metadata_file_uuids=None): @pytest.fixture def insert_into_events_mock(): with mock.patch( - "archivematicaCreateMETSMetadataXML.insertIntoEvents", + "archivematica.MCPClient.clientScripts.archivematicaCreateMETSMetadataXML.insertIntoEvents", return_value="fake_event", ) as result: yield result @@ -136,7 +139,7 @@ def insert_into_events_mock(): @pytest.fixture def create_event_mock(): with mock.patch( - "archivematicaCreateMETSMetadataXML.createmets2.createEvent", + "archivematica.MCPClient.clientScripts.archivematicaCreateMETSMetadataXML.createmets2.createEvent", return_value="fake_element", ) as result: yield result @@ -180,7 +183,7 @@ def __call__(self, *args, **kwargs): return parse(*args, **kwargs) with mock.patch( - "archivematicaCreateMETSMetadataXML.etree.parse", + "archivematica.MCPClient.clientScripts.archivematicaCreateMETSMetadataXML.etree.parse", mock_parse(), ): yield diff --git a/tests/MCPClient/test_archivematicaCreateMETSRights.py b/tests/MCPClient/test_archivematicaCreateMETSRights.py index 06baa79813..9b7a868684 100644 --- a/tests/MCPClient/test_archivematicaCreateMETSRights.py +++ b/tests/MCPClient/test_archivematicaCreateMETSRights.py @@ -1,8 +1,9 @@ -import archivematicaCreateMETSRights import pytest -from create_mets_v2 import MetsState -from main import models -from namespaces import NSMAP + +from archivematica.archivematicaCommon.namespaces import NSMAP +from archivematica.dashboard.main import models +from archivematica.MCPClient.clientScripts import archivematicaCreateMETSRights +from archivematica.MCPClient.clientScripts.create_mets_v2 import MetsState @pytest.fixture() diff --git a/tests/MCPClient/test_archivematicaCreateMETSRightsDspaceMDRef.py b/tests/MCPClient/test_archivematicaCreateMETSRightsDspaceMDRef.py index 4f309f4456..ba35b8e8d2 100644 --- a/tests/MCPClient/test_archivematicaCreateMETSRightsDspaceMDRef.py +++ b/tests/MCPClient/test_archivematicaCreateMETSRightsDspaceMDRef.py @@ -1,14 +1,15 @@ import pathlib from unittest import mock -import namespaces as ns import pytest -from archivematicaCreateMETSRightsDspaceMDRef import ( + +from archivematica.archivematicaCommon import namespaces as ns +from archivematica.dashboard.main import models +from archivematica.MCPClient.client.job import Job +from archivematica.MCPClient.clientScripts.archivematicaCreateMETSRightsDspaceMDRef import ( archivematicaCreateMETSRightsDspaceMDRef, ) -from client.job import Job -from create_mets_v2 import MetsState -from main import models +from archivematica.MCPClient.clientScripts.create_mets_v2 import MetsState @pytest.fixture @@ -142,7 +143,7 @@ def test_archivematicaCreateMETSRightsDspaceMDRef(transfer_data): @pytest.mark.django_db @mock.patch( - "archivematicaCreateMETSRightsDspaceMDRef.createMDRefDMDSec", + "archivematica.MCPClient.clientScripts.archivematicaCreateMETSRightsDspaceMDRef.createMDRefDMDSec", side_effect=Exception("error"), ) def test_archivematicaCreateMETSRightsDspaceMDRef_handle_exceptions( diff --git a/tests/MCPClient/test_assign_file_uuids.py b/tests/MCPClient/test_assign_file_uuids.py index 6f8000ee8f..293395509a 100644 --- a/tests/MCPClient/test_assign_file_uuids.py +++ b/tests/MCPClient/test_assign_file_uuids.py @@ -2,9 +2,10 @@ from unittest import mock import pytest -from assign_file_uuids import call -from client.job import Job -from main import models + +from archivematica.dashboard.main import models +from archivematica.MCPClient.client.job import Job +from archivematica.MCPClient.clientScripts.assign_file_uuids import call @pytest.fixture @@ -28,7 +29,7 @@ def test_call_creates_transfer_files_and_events(sip_directory_path, transfer): job = mock.MagicMock( spec=Job, args=[ - "assign_file_uuids.py", + "archivematica.MCPClient.clientScripts.assign_file_uuids.py", "--transferUUID", str(transfer.uuid), "--sipDirectory", @@ -56,10 +57,10 @@ def test_call_creates_transfer_files_and_events(sip_directory_path, transfer): @pytest.mark.parametrize( "job_arguments", [ - (["assign_file_uuids.py"]), + (["archivematica.MCPClient.clientScripts.assign_file_uuids.py"]), ( [ - "assign_file_uuids.py", + "archivematica.MCPClient.clientScripts.assign_file_uuids.py", "--transferUUID", str(uuid.uuid4()), "--sipUUID", @@ -86,8 +87,10 @@ def test_call_validates_job_arguments(job_arguments): @pytest.mark.django_db @mock.patch("metsrw.METSDocument.fromfile") -@mock.patch("assign_file_uuids.find_mets_file") -@mock.patch("assign_file_uuids.get_file_info_from_mets") +@mock.patch("archivematica.MCPClient.clientScripts.assign_file_uuids.find_mets_file") +@mock.patch( + "archivematica.MCPClient.clientScripts.assign_file_uuids.get_file_info_from_mets" +) def test_call_updates_transfer_file_on_reingest( get_file_info_from_mets, find_mets_file, @@ -108,7 +111,7 @@ def test_call_updates_transfer_file_on_reingest( job = mock.MagicMock( spec=Job, args=[ - "assign_file_uuids.py", + "archivematica.MCPClient.clientScripts.assign_file_uuids.py", "--transferUUID", str(transfer.uuid), "--sipDirectory", diff --git a/tests/MCPClient/test_assign_uuids_to_directories.py b/tests/MCPClient/test_assign_uuids_to_directories.py index f28b3e3451..cc3d155b6a 100755 --- a/tests/MCPClient/test_assign_uuids_to_directories.py +++ b/tests/MCPClient/test_assign_uuids_to_directories.py @@ -1,9 +1,10 @@ from unittest import mock import pytest -from assign_uuids_to_directories import main -from client.job import Job -from main import models + +from archivematica.dashboard.main import models +from archivematica.MCPClient.client.job import Job +from archivematica.MCPClient.clientScripts.assign_uuids_to_directories import main @pytest.fixture diff --git a/tests/MCPClient/test_characterize_file.py b/tests/MCPClient/test_characterize_file.py index 5267971b0d..0e85679fc1 100644 --- a/tests/MCPClient/test_characterize_file.py +++ b/tests/MCPClient/test_characterize_file.py @@ -1,10 +1,11 @@ from unittest import mock -import characterize_file import pytest -from client.job import Job -from fpr import models as fprmodels -from main import models + +from archivematica.dashboard.fpr import models as fprmodels +from archivematica.dashboard.main import models +from archivematica.MCPClient.client.job import Job +from archivematica.MCPClient.clientScripts import characterize_file @pytest.fixture @@ -80,7 +81,7 @@ def test_job_succeeds_if_no_characterization_rules_exist( ["bashScript", "pythonScript"], ids=["bashScript", "pythonScript"], ) -@mock.patch("characterize_file.executeOrRun") +@mock.patch("archivematica.MCPClient.clientScripts.characterize_file.executeOrRun") def test_job_executes_command( execute_or_run: mock.Mock, script_type: str, @@ -118,7 +119,7 @@ def test_job_executes_command( @pytest.mark.django_db -@mock.patch("characterize_file.executeOrRun") +@mock.patch("archivematica.MCPClient.clientScripts.characterize_file.executeOrRun") def test_job_fails_if_command_fails( execute_or_run: mock.Mock, sip_file: models.File, @@ -153,9 +154,11 @@ def test_job_fails_if_command_fails( @pytest.mark.django_db -@mock.patch("characterize_file.insertIntoFPCommandOutput") -@mock.patch("characterize_file.etree") -@mock.patch("characterize_file.executeOrRun") +@mock.patch( + "archivematica.MCPClient.clientScripts.characterize_file.insertIntoFPCommandOutput" +) +@mock.patch("archivematica.MCPClient.clientScripts.characterize_file.etree") +@mock.patch("archivematica.MCPClient.clientScripts.characterize_file.executeOrRun") def test_job_saves_valid_xml_command_output( execute_or_run: mock.Mock, etree: mock.Mock, @@ -196,7 +199,7 @@ def test_job_saves_valid_xml_command_output( @pytest.mark.django_db -@mock.patch("characterize_file.executeOrRun") +@mock.patch("archivematica.MCPClient.clientScripts.characterize_file.executeOrRun") def test_job_fails_with_invalid_xml_command_output( execute_or_run: mock.Mock, sip_file: models.File, diff --git a/tests/MCPClient/test_check_for_access_directory.py b/tests/MCPClient/test_check_for_access_directory.py index abcb291ece..9f9df9ad5a 100644 --- a/tests/MCPClient/test_check_for_access_directory.py +++ b/tests/MCPClient/test_check_for_access_directory.py @@ -1,11 +1,12 @@ from unittest import mock -import check_for_access_directory import pytest -from client.job import Job from django.utils import timezone -from main.models import Event -from main.models import File + +from archivematica.dashboard.main.models import Event +from archivematica.dashboard.main.models import File +from archivematica.MCPClient.client.job import Job +from archivematica.MCPClient.clientScripts import check_for_access_directory @pytest.mark.django_db diff --git a/tests/MCPClient/test_create_aic_mets.py b/tests/MCPClient/test_create_aic_mets.py index b0c8ec0062..52987d0324 100644 --- a/tests/MCPClient/test_create_aic_mets.py +++ b/tests/MCPClient/test_create_aic_mets.py @@ -2,11 +2,12 @@ import uuid from unittest import mock -import create_aic_mets -import namespaces as ns import pytest from lxml import etree +from archivematica.archivematicaCommon import namespaces as ns +from archivematica.MCPClient.clientScripts import create_aic_mets + THIS_DIR = os.path.dirname(os.path.abspath(__file__)) @@ -16,16 +17,21 @@ def extract_file_mock(aip_uuid, mets_in_aip, mets_path): @pytest.mark.django_db -@mock.patch("fileOperations.addFileToSIP") -@mock.patch("databaseFunctions.insertIntoDerivations") -@mock.patch("storageService.extract_file", side_effect=extract_file_mock) +@mock.patch("archivematica.archivematicaCommon.fileOperations.addFileToSIP") +@mock.patch("archivematica.archivematicaCommon.databaseFunctions.insertIntoDerivations") +@mock.patch( + "archivematica.archivematicaCommon.storageService.extract_file", + side_effect=extract_file_mock, +) @mock.patch( - "create_mets_v2.getDublinCore", + "archivematica.MCPClient.clientScripts.create_mets_v2.getDublinCore", return_value=etree.Element( ns.dctermsBNS + "dublincore", nsmap={"dcterms": ns.dctermsNS, "dc": ns.dcNS} ), ) -@mock.patch("create_mets_v2.SIPMetadataAppliesToType") +@mock.patch( + "archivematica.MCPClient.clientScripts.create_mets_v2.SIPMetadataAppliesToType" +) def test_create_aic_mets( SIPMetadataAppliesToType, getDublinCore, diff --git a/tests/MCPClient/test_create_aip_mets.py b/tests/MCPClient/test_create_aip_mets.py index 53bcf4b240..bed3cb9038 100644 --- a/tests/MCPClient/test_create_aip_mets.py +++ b/tests/MCPClient/test_create_aip_mets.py @@ -8,16 +8,17 @@ import unittest from pathlib import Path -import archivematicaCreateMETSMetadataCSV -import archivematicaCreateMETSRights -import create_mets_v2 -import namespaces as ns import pytest -from client.job import Job from django.test import TestCase from lxml import etree -from main.models import RightsStatement -from version import get_preservation_system_identifier + +from archivematica.archivematicaCommon import namespaces as ns +from archivematica.archivematicaCommon.version import get_preservation_system_identifier +from archivematica.dashboard.main.models import RightsStatement +from archivematica.MCPClient.client.job import Job +from archivematica.MCPClient.clientScripts import archivematicaCreateMETSMetadataCSV +from archivematica.MCPClient.clientScripts import archivematicaCreateMETSRights +from archivematica.MCPClient.clientScripts import create_mets_v2 THIS_DIR = pathlib.Path(__file__).parent @@ -753,7 +754,7 @@ class TestCustomStructMap(TestCase): ] fixtures = [os.path.join(THIS_DIR, "fixtures", p) for p in fixture_files] mets_xsd_path = os.path.abspath( - os.path.join(THIS_DIR, "../../src/MCPClient/assets/mets/mets.xsd") + os.path.join(THIS_DIR, "../../src/archivematica/MCPClient/assets/mets/mets.xsd") ) @pytest.fixture(autouse=True) diff --git a/tests/MCPClient/test_create_dataverse_mets.py b/tests/MCPClient/test_create_dataverse_mets.py index 378187d31a..993cce609b 100644 --- a/tests/MCPClient/test_create_dataverse_mets.py +++ b/tests/MCPClient/test_create_dataverse_mets.py @@ -4,10 +4,11 @@ import os from collections import namedtuple -import convert_dataverse_structure import metsrw import pytest -from client.job import Job + +from archivematica.MCPClient.client.job import Job +from archivematica.MCPClient.clientScripts import convert_dataverse_structure # List of Dataverse metadata fixtures. We use a named-tuple to provide some # structure to this index so that we can keep track of information regarding diff --git a/tests/MCPClient/test_create_mets_v2.py b/tests/MCPClient/test_create_mets_v2.py index 49d1e3e5cd..ee45319318 100644 --- a/tests/MCPClient/test_create_mets_v2.py +++ b/tests/MCPClient/test_create_mets_v2.py @@ -5,19 +5,25 @@ import pytest import pytest_django -from client.job import Job -from create_mets_v2 import createDMDIDsFromCSVMetadata -from create_mets_v2 import main from lxml import etree -from main.models import SIP -from main.models import DublinCore -from main.models import File -from main.models import MetadataAppliesToType -from main.models import SIPArrange -from namespaces import NSMAP + +from archivematica.archivematicaCommon.namespaces import NSMAP +from archivematica.dashboard.main.models import SIP +from archivematica.dashboard.main.models import DublinCore +from archivematica.dashboard.main.models import File +from archivematica.dashboard.main.models import MetadataAppliesToType +from archivematica.dashboard.main.models import SIPArrange +from archivematica.MCPClient.client.job import Job +from archivematica.MCPClient.clientScripts.create_mets_v2 import ( + createDMDIDsFromCSVMetadata, +) +from archivematica.MCPClient.clientScripts.create_mets_v2 import main -@mock.patch("create_mets_v2.createDmdSecsFromCSVParsedMetadata", return_value=[]) +@mock.patch( + "archivematica.MCPClient.clientScripts.create_mets_v2.createDmdSecsFromCSVParsedMetadata", + return_value=[], +) def test_createDMDIDsFromCSVMetadata_finds_non_ascii_paths( dmd_secs_creator_mock: mock.Mock, ) -> None: @@ -287,7 +293,9 @@ def test_aip_mets_normative_directory_structure( (None, [], does_not_raise()), ], ) -@mock.patch("create_mets_v2.archivematicaCreateMETSMetadataXML.process_xml_metadata") +@mock.patch( + "archivematica.MCPClient.clientScripts.create_mets_v2.archivematicaCreateMETSMetadataXML.process_xml_metadata" +) def test_xml_validation_fail_on_error( process_xml_metadata: mock.Mock, settings: pytest_django.fixtures.SettingsWrapper, @@ -430,7 +438,7 @@ def bag_path(sip_directory_path: pathlib.Path, sip: SIP) -> pathlib.Path: @pytest.mark.django_db -@mock.patch("create_mets_v2.Bag") +@mock.patch("archivematica.MCPClient.clientScripts.create_mets_v2.Bag") @pytest.mark.parametrize( "info", [ diff --git a/tests/MCPClient/test_create_transfer_mets.py b/tests/MCPClient/test_create_transfer_mets.py index 3342a1a5c6..f590ba483c 100644 --- a/tests/MCPClient/test_create_transfer_mets.py +++ b/tests/MCPClient/test_create_transfer_mets.py @@ -4,40 +4,53 @@ import metsrw import pytest -from create_transfer_mets import FSEntriesTree -from create_transfer_mets import agent_to_premis -from create_transfer_mets import dir_obj_to_premis -from create_transfer_mets import event_to_premis -from create_transfer_mets import file_obj_to_premis -from create_transfer_mets import rights_to_premis -from create_transfer_mets import write_mets from django.db.models import prefetch_related_objects from lxml import etree -from main.models import Agent -from main.models import DashboardSetting -from main.models import Directory -from main.models import Event -from main.models import File -from main.models import FPCommandOutput -from main.models import MetadataAppliesToType -from main.models import RightsStatement -from main.models import RightsStatementCopyright -from main.models import RightsStatementCopyrightDocumentationIdentifier -from main.models import RightsStatementCopyrightNote -from main.models import RightsStatementLicense -from main.models import RightsStatementLicenseDocumentationIdentifier -from main.models import RightsStatementLicenseNote -from main.models import RightsStatementOtherRightsDocumentationIdentifier -from main.models import RightsStatementOtherRightsInformation -from main.models import RightsStatementOtherRightsInformationNote -from main.models import RightsStatementRightsGranted -from main.models import RightsStatementRightsGrantedNote -from main.models import RightsStatementRightsGrantedRestriction -from main.models import RightsStatementStatuteDocumentationIdentifier -from main.models import RightsStatementStatuteInformation -from main.models import RightsStatementStatuteInformationNote from metsrw.plugins.premisrw import PREMIS_3_0_NAMESPACES -from version import get_preservation_system_identifier + +from archivematica.archivematicaCommon.version import get_preservation_system_identifier +from archivematica.dashboard.main.models import Agent +from archivematica.dashboard.main.models import DashboardSetting +from archivematica.dashboard.main.models import Directory +from archivematica.dashboard.main.models import Event +from archivematica.dashboard.main.models import File +from archivematica.dashboard.main.models import FPCommandOutput +from archivematica.dashboard.main.models import MetadataAppliesToType +from archivematica.dashboard.main.models import RightsStatement +from archivematica.dashboard.main.models import RightsStatementCopyright +from archivematica.dashboard.main.models import ( + RightsStatementCopyrightDocumentationIdentifier, +) +from archivematica.dashboard.main.models import RightsStatementCopyrightNote +from archivematica.dashboard.main.models import RightsStatementLicense +from archivematica.dashboard.main.models import ( + RightsStatementLicenseDocumentationIdentifier, +) +from archivematica.dashboard.main.models import RightsStatementLicenseNote +from archivematica.dashboard.main.models import ( + RightsStatementOtherRightsDocumentationIdentifier, +) +from archivematica.dashboard.main.models import RightsStatementOtherRightsInformation +from archivematica.dashboard.main.models import ( + RightsStatementOtherRightsInformationNote, +) +from archivematica.dashboard.main.models import RightsStatementRightsGranted +from archivematica.dashboard.main.models import RightsStatementRightsGrantedNote +from archivematica.dashboard.main.models import RightsStatementRightsGrantedRestriction +from archivematica.dashboard.main.models import ( + RightsStatementStatuteDocumentationIdentifier, +) +from archivematica.dashboard.main.models import RightsStatementStatuteInformation +from archivematica.dashboard.main.models import RightsStatementStatuteInformationNote +from archivematica.MCPClient.clientScripts.create_transfer_mets import FSEntriesTree +from archivematica.MCPClient.clientScripts.create_transfer_mets import agent_to_premis +from archivematica.MCPClient.clientScripts.create_transfer_mets import dir_obj_to_premis +from archivematica.MCPClient.clientScripts.create_transfer_mets import event_to_premis +from archivematica.MCPClient.clientScripts.create_transfer_mets import ( + file_obj_to_premis, +) +from archivematica.MCPClient.clientScripts.create_transfer_mets import rights_to_premis +from archivematica.MCPClient.clientScripts.create_transfer_mets import write_mets PREMIS_NAMESPACES = PREMIS_3_0_NAMESPACES diff --git a/tests/MCPClient/test_dip_generation_helper.py b/tests/MCPClient/test_dip_generation_helper.py index 9895d3555c..c8b4707687 100644 --- a/tests/MCPClient/test_dip_generation_helper.py +++ b/tests/MCPClient/test_dip_generation_helper.py @@ -1,9 +1,10 @@ #!/usr/bin/env python from unittest import mock -import dip_generation_helper import pytest -from main.models import ArchivesSpaceDIPObjectResourcePairing + +from archivematica.dashboard.main.models import ArchivesSpaceDIPObjectResourcePairing +from archivematica.MCPClient.clientScripts import dip_generation_helper def strip_sip_directory(location): @@ -67,7 +68,7 @@ def test_no_files_in_db(tmp_path, sip_file): @pytest.mark.django_db @mock.patch( - "dip_generation_helper.create_archivesspace_client", + "archivematica.MCPClient.clientScripts.dip_generation_helper.create_archivesspace_client", return_value=mock.Mock( **{ "find_by_id.return_value": [ diff --git a/tests/MCPClient/test_email_fail_report.py b/tests/MCPClient/test_email_fail_report.py index 2377be3f96..8670b85975 100644 --- a/tests/MCPClient/test_email_fail_report.py +++ b/tests/MCPClient/test_email_fail_report.py @@ -1,10 +1,11 @@ from smtplib import SMTPException from unittest import mock -import email_fail_report import pytest from django.core import mail +from archivematica.MCPClient.clientScripts import email_fail_report + def fake_send_email_with_exception( subject, @@ -79,10 +80,15 @@ def test_send_email_err(monkeypatch): ) @pytest.mark.django_db @mock.patch("argparse.ArgumentParser") -@mock.patch("email_fail_report.get_emails_from_dashboard_users") -@mock.patch("email_fail_report.get_content_for", return_value="my report") -@mock.patch("email_fail_report.send_email") -@mock.patch("email_fail_report.store_report") +@mock.patch( + "archivematica.MCPClient.clientScripts.email_fail_report.get_emails_from_dashboard_users" +) +@mock.patch( + "archivematica.MCPClient.clientScripts.email_fail_report.get_content_for", + return_value="my report", +) +@mock.patch("archivematica.MCPClient.clientScripts.email_fail_report.send_email") +@mock.patch("archivematica.MCPClient.clientScripts.email_fail_report.store_report") def test_report_is_always_stored( store_report_mock, send_email_mock, diff --git a/tests/MCPClient/test_ensure_no_mutable_globals.py b/tests/MCPClient/test_ensure_no_mutable_globals.py index 046b7d5cb9..8e6d95ab6d 100755 --- a/tests/MCPClient/test_ensure_no_mutable_globals.py +++ b/tests/MCPClient/test_ensure_no_mutable_globals.py @@ -22,7 +22,8 @@ import django import prometheus_client -from client.loader import get_supported_modules + +from archivematica.MCPClient.client.loader import get_supported_modules django.setup() @@ -92,7 +93,9 @@ def analyze_module(module_name): methods. """ global2modules_funcs_2 = {} - module = importlib.import_module("clientScripts." + module_name) + module = importlib.import_module( + "archivematica.MCPClient.clientScripts." + module_name + ) for attr in dir(module): val = getattr(module, attr) if attr.startswith("__"): @@ -153,6 +156,7 @@ def test_ensure_no_mutable_globals(): config_path = ( pathlib.Path(__file__).parent.parent.parent / "src" + / "archivematica" / "MCPClient" / "archivematicaClientModules" ) diff --git a/tests/MCPClient/test_extract_contents.py b/tests/MCPClient/test_extract_contents.py index 397fba1b45..b441f318de 100644 --- a/tests/MCPClient/test_extract_contents.py +++ b/tests/MCPClient/test_extract_contents.py @@ -1,10 +1,11 @@ import pathlib from unittest import mock -import extract_contents import pytest -from client.job import Job -from main import models + +from archivematica.dashboard.main import models +from archivematica.MCPClient.client.job import Job +from archivematica.MCPClient.clientScripts import extract_contents @pytest.mark.django_db @@ -188,7 +189,10 @@ def transfer_file_path(transfer_directory_path, transfer_file): @pytest.mark.django_db -@mock.patch("extract_contents.executeOrRun", return_value=(-1, "", "error!")) +@mock.patch( + "archivematica.MCPClient.clientScripts.extract_contents.executeOrRun", + return_value=(-1, "", "error!"), +) def test_job_fails_if_extraction_command_fails( execute_or_run, transfer, @@ -237,7 +241,10 @@ def test_job_fails_if_extraction_command_fails( @pytest.mark.django_db -@mock.patch("extract_contents.executeOrRun", return_value=(0, "success!", "")) +@mock.patch( + "archivematica.MCPClient.clientScripts.extract_contents.executeOrRun", + return_value=(0, "success!", ""), +) def test_job_deletes_compressed_file( execute_or_run, transfer, @@ -301,7 +308,7 @@ def test_job_deletes_compressed_file( @pytest.mark.django_db -@mock.patch("extract_contents.executeOrRun") +@mock.patch("archivematica.MCPClient.clientScripts.extract_contents.executeOrRun") def test_job_assign_uuids_to_extracted_files_and_directories( execute_or_run, transfer, @@ -418,7 +425,10 @@ def execute_or_run_side_effect(*args, **kwargs): @pytest.mark.django_db -@mock.patch("extract_contents.executeOrRun", return_value=(0, "success", "")) +@mock.patch( + "archivematica.MCPClient.clientScripts.extract_contents.executeOrRun", + return_value=(0, "success", ""), +) def test_job_uses_replacement_keys_in_bash_command( execute_or_run, transfer, diff --git a/tests/MCPClient/test_filename_change.py b/tests/MCPClient/test_filename_change.py index 2db93194f2..2623f63b8c 100644 --- a/tests/MCPClient/test_filename_change.py +++ b/tests/MCPClient/test_filename_change.py @@ -2,19 +2,20 @@ import shutil import uuid -import change_names -import change_object_names import pytest -from client.job import Job from django.test import TestCase -from main.models import Agent -from main.models import Directory -from main.models import Event -from main.models import File -from main.models import Transfer -from main.models import UnitVariable from pytest_django.asserts import assertQuerysetEqual +from archivematica.dashboard.main.models import Agent +from archivematica.dashboard.main.models import Directory +from archivematica.dashboard.main.models import Event +from archivematica.dashboard.main.models import File +from archivematica.dashboard.main.models import Transfer +from archivematica.dashboard.main.models import UnitVariable +from archivematica.MCPClient.client.job import Job +from archivematica.MCPClient.clientScripts import change_names +from archivematica.MCPClient.clientScripts import change_object_names + THIS_DIR = os.path.dirname(os.path.abspath(__file__)) # This uses the same name as the pytest fixture in conftest and it can be diff --git a/tests/MCPClient/test_fpr_commands.py b/tests/MCPClient/test_fpr_commands.py index cec134c995..86b19e092e 100644 --- a/tests/MCPClient/test_fpr_commands.py +++ b/tests/MCPClient/test_fpr_commands.py @@ -2,8 +2,9 @@ from typing import TypedDict import pytest -from executeOrRunSubProcess import executeOrRun -from fpr.models import FPCommand + +from archivematica.archivematicaCommon.executeOrRunSubProcess import executeOrRun +from archivematica.dashboard.fpr.models import FPCommand class QueryFilters(TypedDict): diff --git a/tests/MCPClient/test_has_packages.py b/tests/MCPClient/test_has_packages.py index 4372f8bc71..479583123d 100644 --- a/tests/MCPClient/test_has_packages.py +++ b/tests/MCPClient/test_has_packages.py @@ -1,11 +1,12 @@ import pathlib from unittest import mock -import has_packages import pytest -from client.job import Job -from fpr import models as fprmodels -from main import models + +from archivematica.dashboard.fpr import models as fprmodels +from archivematica.dashboard.main import models +from archivematica.MCPClient.client.job import Job +from archivematica.MCPClient.clientScripts import has_packages @pytest.fixture diff --git a/tests/MCPClient/test_identify_file_format.py b/tests/MCPClient/test_identify_file_format.py index 0fe868148f..bc94c34f51 100644 --- a/tests/MCPClient/test_identify_file_format.py +++ b/tests/MCPClient/test_identify_file_format.py @@ -1,11 +1,12 @@ import pathlib from unittest import mock -import identify_file_format import pytest -from client.job import Job -from fpr import models as fprmodels -from main import models + +from archivematica.dashboard.fpr import models as fprmodels +from archivematica.dashboard.main import models +from archivematica.MCPClient.client.job import Job +from archivematica.MCPClient.clientScripts import identify_file_format @pytest.fixture @@ -25,7 +26,7 @@ def sip_file_path( def job(sip_file: models.File, sip_file_path: pathlib.Path) -> mock.Mock: return mock.Mock( args=[ - "identify_file_format.py", + "archivematica.MCPClient.clientScripts.identify_file_format.py", "True", str(sip_file_path), str(sip_file.uuid), @@ -81,7 +82,7 @@ def test_job_fails_if_identification_command_does_not_exist(job: mock.Mock) -> N @pytest.mark.django_db -@mock.patch("identify_file_format.executeOrRun") +@mock.patch("archivematica.MCPClient.clientScripts.identify_file_format.executeOrRun") def test_job_fails_if_format_identification_command_fails( execute_or_run: mock.Mock, job: mock.Mock, @@ -100,7 +101,7 @@ def test_job_fails_if_format_identification_command_fails( @pytest.mark.django_db -@mock.patch("identify_file_format.executeOrRun") +@mock.patch("archivematica.MCPClient.clientScripts.identify_file_format.executeOrRun") def test_job_fails_if_identification_rule_does_not_exist( execute_or_run: mock.Mock, job: mock.Mock, @@ -134,7 +135,7 @@ def test_job_fails_if_identification_rule_does_not_exist( @pytest.mark.django_db -@mock.patch("identify_file_format.executeOrRun") +@mock.patch("archivematica.MCPClient.clientScripts.identify_file_format.executeOrRun") def test_job_fails_if_multiple_identification_rules_exist( execute_or_run: mock.Mock, job: mock.Mock, @@ -175,7 +176,7 @@ def test_job_fails_if_multiple_identification_rules_exist( @pytest.mark.django_db -@mock.patch("identify_file_format.executeOrRun") +@mock.patch("archivematica.MCPClient.clientScripts.identify_file_format.executeOrRun") def test_job_fails_if_format_version_does_not_exist( execute_or_run: mock.Mock, job: mock.Mock, @@ -204,7 +205,10 @@ def test_job_fails_if_format_version_does_not_exist( @pytest.mark.django_db -@mock.patch("identify_file_format.executeOrRun", return_value=(0, "success!", "")) +@mock.patch( + "archivematica.MCPClient.clientScripts.identify_file_format.executeOrRun", + return_value=(0, "success!", ""), +) def test_job_saves_unit_variable_indicating_file_format_identification_use( execute_or_run: mock.Mock, job: mock.Mock, @@ -223,7 +227,7 @@ def test_job_saves_unit_variable_indicating_file_format_identification_use( @pytest.mark.django_db -@mock.patch("identify_file_format.executeOrRun") +@mock.patch("archivematica.MCPClient.clientScripts.identify_file_format.executeOrRun") def test_job_adds_file_format_version( execute_or_run: mock.Mock, job: mock.Mock, @@ -260,7 +264,7 @@ def test_job_adds_file_format_version( @pytest.mark.django_db -@mock.patch("identify_file_format.executeOrRun") +@mock.patch("archivematica.MCPClient.clientScripts.identify_file_format.executeOrRun") def test_job_updates_file_format_version( execute_or_run: mock.Mock, job: mock.Mock, @@ -288,7 +292,7 @@ def test_job_updates_file_format_version( @pytest.mark.django_db -@mock.patch("identify_file_format.executeOrRun") +@mock.patch("archivematica.MCPClient.clientScripts.identify_file_format.executeOrRun") def test_job_adds_successful_format_identification_data( execute_or_run: mock.Mock, job: mock.Mock, @@ -329,7 +333,7 @@ def test_job_adds_successful_format_identification_data( @pytest.mark.django_db -@mock.patch("identify_file_format.executeOrRun") +@mock.patch("archivematica.MCPClient.clientScripts.identify_file_format.executeOrRun") def test_job_falls_back_to_identification_rule_if_format_version_does_not_exist( execute_or_run: mock.Mock, job: mock.Mock, diff --git a/tests/MCPClient/test_job.py b/tests/MCPClient/test_job.py index 0efe69d581..0038203c8a 100644 --- a/tests/MCPClient/test_job.py +++ b/tests/MCPClient/test_job.py @@ -1,7 +1,7 @@ import os from uuid import uuid4 -from client.job import Job +from archivematica.MCPClient.client.job import Job THIS_DIR = os.path.dirname(os.path.realpath(__file__)) diff --git a/tests/MCPClient/test_json_conversion.py b/tests/MCPClient/test_json_conversion.py index 580ad55705..2d0db19144 100644 --- a/tests/MCPClient/test_json_conversion.py +++ b/tests/MCPClient/test_json_conversion.py @@ -1,8 +1,8 @@ import json import os -import json_metadata_to_csv -from client.job import Job +from archivematica.MCPClient.client.job import Job +from archivematica.MCPClient.clientScripts import json_metadata_to_csv JSON = '[{"dc.title": "This is a test item", "filename": "objects/test.txt"}]' CSV = "filename,dc.title\nobjects/test.txt,This is a test item\n" diff --git a/tests/MCPClient/test_load_labels_from_csv.py b/tests/MCPClient/test_load_labels_from_csv.py index 7cab4aa97a..ca43e8132d 100644 --- a/tests/MCPClient/test_load_labels_from_csv.py +++ b/tests/MCPClient/test_load_labels_from_csv.py @@ -1,10 +1,11 @@ import pathlib from unittest import mock -import load_labels_from_csv import pytest -from client.job import Job -from main import models + +from archivematica.dashboard.main import models +from archivematica.MCPClient.client.job import Job +from archivematica.MCPClient.clientScripts import load_labels_from_csv LABEL = "my file" OBJECTS_DIRECTORY = "%transferDirectory%objects" diff --git a/tests/MCPClient/test_load_premis_events_from_xml.py b/tests/MCPClient/test_load_premis_events_from_xml.py index 3d923e1528..9f4db46f6d 100644 --- a/tests/MCPClient/test_load_premis_events_from_xml.py +++ b/tests/MCPClient/test_load_premis_events_from_xml.py @@ -4,12 +4,13 @@ import uuid from unittest import mock -import load_premis_events_from_xml import pytest from lxml import etree -from main.models import Agent -from main.models import Event -from main.models import File + +from archivematica.dashboard.main.models import Agent +from archivematica.dashboard.main.models import Event +from archivematica.dashboard.main.models import File +from archivematica.MCPClient.clientScripts import load_premis_events_from_xml THIS_DIR = pathlib.Path(__file__).parent @@ -17,7 +18,9 @@ @pytest.fixture() def xsd_path(): return os.path.abspath( - os.path.join(THIS_DIR, "../../src/MCPClient/assets/premis/premis.xsd") + os.path.join( + THIS_DIR, "../../src/archivematica/MCPClient/assets/premis/premis.xsd" + ) ) @@ -229,9 +232,11 @@ def test_get_premis_element_children_identifiers(): ids=["original_name_as_string", "original_name_as_empty_string"], ) @mock.patch("metsrw.plugins.premisrw.premis_to_data") -@mock.patch("load_premis_events_from_xml.PREMISFile") @mock.patch( - "load_premis_events_from_xml.get_premis_element_children_identifiers", + "archivematica.MCPClient.clientScripts.load_premis_events_from_xml.PREMISFile" +) +@mock.patch( + "archivematica.MCPClient.clientScripts.load_premis_events_from_xml.get_premis_element_children_identifiers", return_value=set(), ) def test_file_element_factory( @@ -253,7 +258,7 @@ def test_file_element_factory( @mock.patch("metsrw.plugins.premisrw.premis_to_data") @mock.patch("metsrw.plugins.premisrw.PREMISAgent") @mock.patch( - "load_premis_events_from_xml.get_premis_element_children_identifiers", + "archivematica.MCPClient.clientScripts.load_premis_events_from_xml.get_premis_element_children_identifiers", return_value=set(), ) def test_agent_element_factory( @@ -288,7 +293,7 @@ def test_agent_element_factory( @mock.patch("metsrw.plugins.premisrw.premis_to_data") @mock.patch("metsrw.plugins.premisrw.PREMISEvent") @mock.patch( - "load_premis_events_from_xml.get_premis_element_children_identifiers", + "archivematica.MCPClient.clientScripts.load_premis_events_from_xml.get_premis_element_children_identifiers", return_value=set(), ) def test_event_element_factory( @@ -353,7 +358,7 @@ def test_event_element_factory( ), ) @mock.patch( - "load_premis_events_from_xml.get_premis_element_children_identifiers", + "archivematica.MCPClient.clientScripts.load_premis_events_from_xml.get_premis_element_children_identifiers", return_value=set(), ) def test_event_element_factory_prints_datetime_error( @@ -424,7 +429,10 @@ def test_event_element_factory_with_no_event_outcome_detail(): def test_get_or_create_agents(): mock_agent_model = mock.Mock(**{"objects.get_or_create.return_value": (None, None)}) - with mock.patch("load_premis_events_from_xml.Agent", mock_agent_model): + with mock.patch( + "archivematica.MCPClient.clientScripts.load_premis_events_from_xml.Agent", + mock_agent_model, + ): agents = [ {"identifier": ("type", "value"), "name": "agent1", "type": "agenttype"} ] diff --git a/tests/MCPClient/test_move_or_merge.py b/tests/MCPClient/test_move_or_merge.py index 1370af839f..07a8273663 100644 --- a/tests/MCPClient/test_move_or_merge.py +++ b/tests/MCPClient/test_move_or_merge.py @@ -1,5 +1,6 @@ import pytest -from move_or_merge import move_or_merge + +from archivematica.MCPClient.clientScripts.move_or_merge import move_or_merge @pytest.fixture diff --git a/tests/MCPClient/test_move_to_backlog.py b/tests/MCPClient/test_move_to_backlog.py index cfecc7004e..f73f9e6ed8 100644 --- a/tests/MCPClient/test_move_to_backlog.py +++ b/tests/MCPClient/test_move_to_backlog.py @@ -1,10 +1,11 @@ import uuid import metsrw -import move_to_backlog import pytest from lxml import etree -from main.models import Agent + +from archivematica.dashboard.main.models import Agent +from archivematica.MCPClient.clientScripts import move_to_backlog @pytest.mark.django_db diff --git a/tests/MCPClient/test_normalize.py b/tests/MCPClient/test_normalize.py index 40667bebe4..fd8d8e101d 100644 --- a/tests/MCPClient/test_normalize.py +++ b/tests/MCPClient/test_normalize.py @@ -6,12 +6,13 @@ from typing import Optional from unittest import mock -import normalize import pytest import pytest_django -from client.job import Job -from fpr import models as fprmodels -from main import models + +from archivematica.dashboard.fpr import models as fprmodels +from archivematica.dashboard.main import models +from archivematica.MCPClient.client.job import Job +from archivematica.MCPClient.clientScripts import normalize @pytest.mark.django_db @@ -383,7 +384,8 @@ def default_preservation_rule( @pytest.mark.django_db @mock.patch( - "transcoder.CommandLinker", return_value=mock.Mock(**{"execute.return_value": 0}) + "archivematica.MCPClient.clientScripts.transcoder.CommandLinker", + return_value=mock.Mock(**{"execute.return_value": 0}), ) def test_normalization_falls_back_to_default_rule( command_linker: mock.Mock, @@ -442,7 +444,8 @@ def test_normalization_falls_back_to_default_rule( @pytest.mark.django_db @mock.patch( - "transcoder.CommandLinker", return_value=mock.Mock(**{"execute.return_value": 0}) + "archivematica.MCPClient.clientScripts.transcoder.CommandLinker", + return_value=mock.Mock(**{"execute.return_value": 0}), ) def test_normalization_finds_rule_by_file_format_version( command_linker: mock.Mock, @@ -498,7 +501,8 @@ def test_normalization_finds_rule_by_file_format_version( @pytest.mark.django_db @mock.patch("os.makedirs", side_effect=OSError("error!")) @mock.patch( - "transcoder.CommandLinker", return_value=mock.Mock(**{"execute.return_value": 0}) + "archivematica.MCPClient.clientScripts.transcoder.CommandLinker", + return_value=mock.Mock(**{"execute.return_value": 0}), ) def test_normalization_fails_if_thumbnail_directory_cannot_be_created( command_linker: mock.Mock, @@ -554,7 +558,7 @@ def fprule_thumbnail(fprule_thumbnail: fprmodels.FPRule) -> fprmodels.FPRule: @pytest.mark.django_db -@mock.patch("transcoder.executeOrRun") +@mock.patch("archivematica.MCPClient.clientScripts.transcoder.executeOrRun") def test_normalization_copies_generated_thumbnail_to_shared_thumbnails_directory( execute_or_run: mock.Mock, sip: models.SIP, @@ -680,7 +684,7 @@ def fprule_default_thumbnail( @pytest.mark.django_db -@mock.patch("transcoder.executeOrRun") +@mock.patch("archivematica.MCPClient.clientScripts.transcoder.executeOrRun") def test_normalization_fallbacks_to_default_thumbnail_rule_if_initial_command_fails( execute_or_run: mock.Mock, sip: models.SIP, @@ -831,7 +835,10 @@ def fpcommand_access( @pytest.mark.django_db -@mock.patch("transcoder.executeOrRun", return_value=(-1, "", "error!")) +@mock.patch( + "archivematica.MCPClient.clientScripts.transcoder.executeOrRun", + return_value=(-1, "", "error!"), +) def test_normalization_fails_if_fallback_default_rule_does_not_exist( execute_or_run: mock.Mock, sip: models.SIP, diff --git a/tests/MCPClient/test_parse_dataverse.py b/tests/MCPClient/test_parse_dataverse.py index bdc0deebfd..5df213c9cb 100644 --- a/tests/MCPClient/test_parse_dataverse.py +++ b/tests/MCPClient/test_parse_dataverse.py @@ -4,10 +4,13 @@ import os import metsrw -import parse_dataverse_mets as parse_dataverse -from client.job import Job from django.test import TestCase -from main import models + +from archivematica.dashboard.main import models +from archivematica.MCPClient.client.job import Job +from archivematica.MCPClient.clientScripts import ( + parse_dataverse_mets as parse_dataverse, +) THIS_DIR = os.path.dirname(os.path.abspath(__file__)) diff --git a/tests/MCPClient/test_parse_external_mets.py b/tests/MCPClient/test_parse_external_mets.py index 74a91d4ae6..d0763e24d6 100644 --- a/tests/MCPClient/test_parse_external_mets.py +++ b/tests/MCPClient/test_parse_external_mets.py @@ -1,9 +1,10 @@ import os import shutil -import parse_external_mets import pytest -from main import models + +from archivematica.dashboard.main import models +from archivematica.MCPClient.clientScripts import parse_external_mets THIS_DIR = os.path.dirname(os.path.abspath(__file__)) diff --git a/tests/MCPClient/test_parse_mets_to_db.py b/tests/MCPClient/test_parse_mets_to_db.py index 2e6ed4e538..7da10c2d77 100644 --- a/tests/MCPClient/test_parse_mets_to_db.py +++ b/tests/MCPClient/test_parse_mets_to_db.py @@ -2,13 +2,14 @@ import uuid from unittest import mock -import fpr -import parse_mets_to_db import pytest -from client.job import Job from django.test import TestCase from lxml import etree -from main import models + +from archivematica.dashboard import fpr +from archivematica.dashboard.main import models +from archivematica.MCPClient.client.job import Job +from archivematica.MCPClient.clientScripts import parse_mets_to_db THIS_DIR = os.path.dirname(os.path.abspath(__file__)) @@ -666,8 +667,8 @@ def test_insert_file_info(self): @pytest.mark.django_db -@mock.patch("parse_mets_to_db.os") -@mock.patch("parse_mets_to_db.etree") +@mock.patch("archivematica.MCPClient.clientScripts.parse_mets_to_db.os") +@mock.patch("archivematica.MCPClient.clientScripts.parse_mets_to_db.etree") def test_main_sets_aip_reingest_type(etree, os, sip): job = None assert not models.SIP.objects.filter(uuid=sip.uuid, sip_type="AIP-REIN").exists() @@ -678,8 +679,8 @@ def test_main_sets_aip_reingest_type(etree, os, sip): @pytest.mark.django_db -@mock.patch("parse_mets_to_db.os") -@mock.patch("parse_mets_to_db.etree") +@mock.patch("archivematica.MCPClient.clientScripts.parse_mets_to_db.os") +@mock.patch("archivematica.MCPClient.clientScripts.parse_mets_to_db.etree") def test_main_unsets_partial_reingest_flag(etree, os, sip): job = None sip.set_partial_reingest() diff --git a/tests/MCPClient/test_pid_components.py b/tests/MCPClient/test_pid_components.py index 7bbb1e7744..10801948ef 100644 --- a/tests/MCPClient/test_pid_components.py +++ b/tests/MCPClient/test_pid_components.py @@ -10,17 +10,18 @@ from itertools import chain from unittest import mock -import bind_pid -import bind_pids -import create_mets_v2 -import namespaces as ns import pytest -from main.models import SIP -from main.models import DashboardSetting -from main.models import Directory -from main.models import File -from pid_declaration import DeclarePIDs -from pid_declaration import DeclarePIDsException + +from archivematica.archivematicaCommon import namespaces as ns +from archivematica.dashboard.main.models import SIP +from archivematica.dashboard.main.models import DashboardSetting +from archivematica.dashboard.main.models import Directory +from archivematica.dashboard.main.models import File +from archivematica.MCPClient.clientScripts import bind_pid +from archivematica.MCPClient.clientScripts import bind_pids +from archivematica.MCPClient.clientScripts import create_mets_v2 +from archivematica.MCPClient.clientScripts.pid_declaration import DeclarePIDs +from archivematica.MCPClient.clientScripts.pid_declaration import DeclarePIDsException THIS_DIR = os.path.dirname(os.path.abspath(__file__)) @@ -244,8 +245,10 @@ def test_bind_pids_no_config( @pytest.mark.django_db -@mock.patch("bind_pids._get_unique_acc_no") -@mock.patch("bind_pids._validate_handle_server_config") +@mock.patch("archivematica.MCPClient.clientScripts.bind_pids._get_unique_acc_no") +@mock.patch( + "archivematica.MCPClient.clientScripts.bind_pids._validate_handle_server_config" +) def test_bind_pids( _get_unique_acc_no, _validate_handle_server_config, @@ -413,8 +416,11 @@ def test_bind_pid_no_settings( THIS_DIR, "fixtures", "pid_declaration", "identifiers.json" ), ) -@mock.patch("bind_pids._get_unique_acc_no") -@mock.patch("bind_pids._validate_handle_server_config", return_value=None) +@mock.patch("archivematica.MCPClient.clientScripts.bind_pids._get_unique_acc_no") +@mock.patch( + "archivematica.MCPClient.clientScripts.bind_pids._validate_handle_server_config", + return_value=None, +) def test_pid_declaration( _validate_handle_server_config, _get_unique_acc_no, @@ -518,7 +524,7 @@ def test_pid_declaration_exceptions( "Expecting no identifiers.json file, but got something else" ) with mock.patch( - "pid_declaration.DeclarePIDs._retrieve_identifiers_path", + "archivematica.MCPClient.clientScripts.pid_declaration.DeclarePIDs._retrieve_identifiers_path", return_value=os.path.join( THIS_DIR, "fixtures", "pid_declaration", "bad_identifiers.json" ), diff --git a/tests/MCPClient/test_policy_check.py b/tests/MCPClient/test_policy_check.py index c414e8f9c6..49e799038c 100644 --- a/tests/MCPClient/test_policy_check.py +++ b/tests/MCPClient/test_policy_check.py @@ -3,11 +3,12 @@ import uuid from unittest import mock -import policy_check import pytest -from client.job import Job -from fpr import models as fprmodels -from main import models + +from archivematica.dashboard.fpr import models as fprmodels +from archivematica.dashboard.main import models +from archivematica.MCPClient.client.job import Job +from archivematica.MCPClient.clientScripts import policy_check @pytest.fixture() @@ -79,7 +80,7 @@ def access_file_format_version( @pytest.mark.django_db -@mock.patch("policy_check.executeOrRun") +@mock.patch("archivematica.MCPClient.clientScripts.policy_check.executeOrRun") def test_policy_checker_succeeds_if_rules_exist( execute_or_run: mock.Mock, sip_file: models.File, @@ -139,7 +140,7 @@ def test_policy_checker_succeeds_if_rules_exist( @pytest.mark.django_db @mock.patch( - "policy_check.executeOrRun", + "archivematica.MCPClient.clientScripts.policy_check.executeOrRun", return_value=( 1, json.dumps( @@ -181,7 +182,7 @@ def test_policy_checker_warns_if_rules_do_not_exist( @pytest.mark.django_db @mock.patch( - "policy_check.executeOrRun", + "archivematica.MCPClient.clientScripts.policy_check.executeOrRun", return_value=( 1, json.dumps( @@ -223,7 +224,7 @@ def test_policy_checker_warns_if_file_does_not_exist( @pytest.mark.django_db -@mock.patch("policy_check.executeOrRun") +@mock.patch("archivematica.MCPClient.clientScripts.policy_check.executeOrRun") def test_policy_checker_fails_if_rule_command_fails( execute_or_run: mock.Mock, sip_file: models.File, @@ -266,7 +267,7 @@ def test_policy_checker_fails_if_rule_command_fails( @pytest.mark.django_db -@mock.patch("policy_check.executeOrRun") +@mock.patch("archivematica.MCPClient.clientScripts.policy_check.executeOrRun") def test_policy_checker_fails_if_event_outcome_information_in_output_is_not_pass( execute_or_run: mock.Mock, sip_file: models.File, @@ -311,7 +312,7 @@ def test_policy_checker_fails_if_event_outcome_information_in_output_is_not_pass @pytest.mark.django_db -@mock.patch("policy_check.executeOrRun") +@mock.patch("archivematica.MCPClient.clientScripts.policy_check.executeOrRun") def test_policy_checker_verifies_file_type_is_preservation( execute_or_run: mock.Mock, derivation_for_preservation: models.Derivation, @@ -356,7 +357,7 @@ def test_policy_checker_verifies_file_type_is_preservation( @pytest.mark.django_db @mock.patch( - "policy_check.executeOrRun", + "archivematica.MCPClient.clientScripts.policy_check.executeOrRun", return_value=( 0, json.dumps( @@ -399,7 +400,7 @@ def test_policy_checker_fails_if_file_is_not_preservation_derivative( @pytest.mark.django_db -@mock.patch("policy_check.executeOrRun") +@mock.patch("archivematica.MCPClient.clientScripts.policy_check.executeOrRun") def test_policy_checker_verifies_file_type_is_access( execute_or_run: mock.Mock, derivation_for_access: models.Derivation, @@ -443,7 +444,7 @@ def test_policy_checker_verifies_file_type_is_access( @pytest.mark.django_db -@mock.patch("policy_check.executeOrRun") +@mock.patch("archivematica.MCPClient.clientScripts.policy_check.executeOrRun") def test_policy_checker_fails_if_file_is_not_access_derivative( execute_or_run: mock.Mock, access_file: models.File, @@ -487,7 +488,7 @@ def test_policy_checker_fails_if_file_is_not_access_derivative( @pytest.mark.django_db -@mock.patch("policy_check.executeOrRun") +@mock.patch("archivematica.MCPClient.clientScripts.policy_check.executeOrRun") def test_policy_checker_saves_policy_check_result_into_logs_directory( execute_or_run: mock.Mock, preservation_file: models.File, @@ -544,7 +545,7 @@ def test_policy_checker_saves_policy_check_result_into_logs_directory( @pytest.mark.django_db -@mock.patch("policy_check.executeOrRun") +@mock.patch("archivematica.MCPClient.clientScripts.policy_check.executeOrRun") def test_policy_checker_saves_policy_check_result_into_submission_documentation_directory( execute_or_run: mock.Mock, sip_file: models.File, @@ -598,7 +599,7 @@ def test_policy_checker_saves_policy_check_result_into_submission_documentation_ @pytest.mark.django_db -@mock.patch("policy_check.executeOrRun") +@mock.patch("archivematica.MCPClient.clientScripts.policy_check.executeOrRun") def test_policy_checker_checks_manually_normalized_access_derivative_file( execute_or_run: mock.Mock, transfer: models.Transfer, diff --git a/tests/MCPClient/test_post_store_aip_hook.py b/tests/MCPClient/test_post_store_aip_hook.py index b137a3718b..db7fb8a92c 100644 --- a/tests/MCPClient/test_post_store_aip_hook.py +++ b/tests/MCPClient/test_post_store_aip_hook.py @@ -1,10 +1,11 @@ import pathlib from unittest import mock -import post_store_aip_hook import pytest -from client.job import Job -from main import models + +from archivematica.dashboard.main import models +from archivematica.MCPClient.client.job import Job +from archivematica.MCPClient.clientScripts import post_store_aip_hook @pytest.fixture() @@ -29,7 +30,7 @@ def test_no_archivesspace(sip, archivesspace_components, mcp_job): @pytest.mark.django_db @mock.patch( - "storageService.get_file_info", + "archivematica.archivematicaCommon.storageService.get_file_info", return_value=[{"misc_attributes": {}}], ) def test_no_dspace(get_file_info, sip, mcp_job): @@ -40,7 +41,7 @@ def test_no_dspace(get_file_info, sip, mcp_job): @pytest.mark.django_db @mock.patch( - "storageService.get_file_info", + "archivematica.archivematicaCommon.storageService.get_file_info", return_value=[{"misc_attributes": {"handle": "123456789/41"}}], ) @mock.patch( diff --git a/tests/MCPClient/test_reingest_mets.py b/tests/MCPClient/test_reingest_mets.py index b3a4d99fa7..f56a667561 100644 --- a/tests/MCPClient/test_reingest_mets.py +++ b/tests/MCPClient/test_reingest_mets.py @@ -4,16 +4,17 @@ import unittest from pathlib import Path -import archivematicaCreateMETSReingest import metsrw -from client.job import Job from django.core.management import call_command from django.test import TestCase from lxml import etree -from main import models -from namespaces import NSMAP -from namespaces import nsmap_for_premis2 -from version import get_preservation_system_identifier + +from archivematica.archivematicaCommon.namespaces import NSMAP +from archivematica.archivematicaCommon.namespaces import nsmap_for_premis2 +from archivematica.archivematicaCommon.version import get_preservation_system_identifier +from archivematica.dashboard.main import models +from archivematica.MCPClient.client.job import Job +from archivematica.MCPClient.clientScripts import archivematicaCreateMETSReingest THIS_DIR = os.path.dirname(os.path.abspath(__file__)) FIXTURES_DIR = os.path.join(THIS_DIR, "fixtures") diff --git a/tests/MCPClient/test_restructure_dip_for_content_dm_upload.py b/tests/MCPClient/test_restructure_dip_for_content_dm_upload.py index 8ae5bfdcbc..0bbb39aa8b 100644 --- a/tests/MCPClient/test_restructure_dip_for_content_dm_upload.py +++ b/tests/MCPClient/test_restructure_dip_for_content_dm_upload.py @@ -2,7 +2,8 @@ import shutil import pytest -import restructure_dip_for_content_dm_upload + +from archivematica.MCPClient.clientScripts import restructure_dip_for_content_dm_upload THIS_DIR = os.path.dirname(os.path.abspath(__file__)) diff --git a/tests/MCPClient/test_rights_from_csv.py b/tests/MCPClient/test_rights_from_csv.py index 3c2ecf529f..056edd6422 100644 --- a/tests/MCPClient/test_rights_from_csv.py +++ b/tests/MCPClient/test_rights_from_csv.py @@ -1,9 +1,10 @@ import os -import rights_from_csv -from client.job import Job from django.test import TestCase -from main import models + +from archivematica.dashboard.main import models +from archivematica.MCPClient.client.job import Job +from archivematica.MCPClient.clientScripts import rights_from_csv THIS_DIR = os.path.dirname(os.path.abspath(__file__)) diff --git a/tests/MCPClient/test_store_file_modification.py b/tests/MCPClient/test_store_file_modification.py index f6639e7f14..e1a9e83b6d 100644 --- a/tests/MCPClient/test_store_file_modification.py +++ b/tests/MCPClient/test_store_file_modification.py @@ -2,11 +2,12 @@ import shutil import tempfile -import store_file_modification_dates from django.test import TestCase from django.test import override_settings from django.utils.timezone import get_current_timezone -from main import models + +from archivematica.dashboard.main import models +from archivematica.MCPClient.clientScripts import store_file_modification_dates THIS_DIR = os.path.dirname(os.path.abspath(__file__)) diff --git a/tests/MCPClient/test_transcribe_file.py b/tests/MCPClient/test_transcribe_file.py index 4f0c6bdb21..e48c796d4a 100644 --- a/tests/MCPClient/test_transcribe_file.py +++ b/tests/MCPClient/test_transcribe_file.py @@ -3,10 +3,11 @@ import pytest import pytest_django -import transcribe_file -from client.job import Job -from fpr import models as fprmodels -from main import models + +from archivematica.dashboard.fpr import models as fprmodels +from archivematica.dashboard.main import models +from archivematica.MCPClient.client.job import Job +from archivematica.MCPClient.clientScripts import transcribe_file EXECUTE_OR_RUN_STDOUT = "Hello" @@ -61,7 +62,10 @@ def preservation_file_format_version( @pytest.mark.django_db -@mock.patch("transcribe_file.executeOrRun", return_value=(0, EXECUTE_OR_RUN_STDOUT, "")) +@mock.patch( + "archivematica.MCPClient.clientScripts.transcribe_file.executeOrRun", + return_value=(0, EXECUTE_OR_RUN_STDOUT, ""), +) def test_main( execute_or_run: mock.Mock, sip_file: models.File, @@ -252,7 +256,7 @@ def test_main_if_fprule_is_disabled( @pytest.mark.django_db -@mock.patch("transcribe_file.executeOrRun") +@mock.patch("archivematica.MCPClient.clientScripts.transcribe_file.executeOrRun") def test_main_if_command_is_not_bash_script( execute_or_run: mock.Mock, fpcommand: fprmodels.FPCommand, diff --git a/tests/MCPClient/test_upload_archivesspace.py b/tests/MCPClient/test_upload_archivesspace.py index b8acf38ae5..242a85f5e6 100644 --- a/tests/MCPClient/test_upload_archivesspace.py +++ b/tests/MCPClient/test_upload_archivesspace.py @@ -4,7 +4,8 @@ from unittest import mock import pytest -import upload_archivesspace + +from archivematica.MCPClient.clientScripts import upload_archivesspace def test_recursive_file_gen(tmpdir): @@ -25,7 +26,7 @@ def test_get_files_from_dip_finds_files(tmpdir): assert sorted(result) == [str(object1), str(object2)] -@mock.patch("upload_archivesspace.logger") +@mock.patch("archivematica.MCPClient.clientScripts.upload_archivesspace.logger") def test_get_files_from_dip_with_empty_dip_location(logger, tmpdir): dip = tmpdir.mkdir("mydip") with pytest.raises(ValueError): @@ -35,7 +36,7 @@ def test_get_files_from_dip_with_empty_dip_location(logger, tmpdir): @mock.patch( - "upload_archivesspace.ArchivesSpaceDIPObjectResourcePairing.objects.filter", + "archivematica.MCPClient.clientScripts.upload_archivesspace.ArchivesSpaceDIPObjectResourcePairing.objects.filter", return_value=[ mock.Mock(fileuuid="1", resourceid="myresource"), mock.Mock(fileuuid="2", resourceid="myresource"), @@ -48,7 +49,9 @@ def test_get_pairs(filter_mock): filter_mock.assert_called_once_with(dipuuid=dip_uuid) -@mock.patch("upload_archivesspace.ArchivesSpaceDIPObjectResourcePairing.objects.filter") +@mock.patch( + "archivematica.MCPClient.clientScripts.upload_archivesspace.ArchivesSpaceDIPObjectResourcePairing.objects.filter" +) def test_delete_pairs(filter_mock): dip_uuid = "somedipuuid" queryset_mock = mock.Mock() @@ -63,8 +66,8 @@ def test_delete_pairs(filter_mock): ["http://some/uri/", "http://some/uri"], ids=["uri_with_trailing_slash", "uri_with_no_trailing_slash"], ) -@mock.patch("upload_archivesspace.mets_file") -@mock.patch("upload_archivesspace.get_pairs") +@mock.patch("archivematica.MCPClient.clientScripts.upload_archivesspace.mets_file") +@mock.patch("archivematica.MCPClient.clientScripts.upload_archivesspace.get_pairs") def test_upload_to_archivesspace_adds_trailing_slash_to_uri( get_pairs, mest_file, db, uri ): @@ -117,9 +120,9 @@ def test_upload_to_archivesspace_adds_trailing_slash_to_uri( ], ids=["with_restrictions", "with_access_conditions", "with_use_conditions"], ) -@mock.patch("upload_archivesspace.get_pairs") -@mock.patch("upload_archivesspace.logger") -@mock.patch("upload_archivesspace.mets_file") +@mock.patch("archivematica.MCPClient.clientScripts.upload_archivesspace.get_pairs") +@mock.patch("archivematica.MCPClient.clientScripts.upload_archivesspace.logger") +@mock.patch("archivematica.MCPClient.clientScripts.upload_archivesspace.mets_file") def test_upload_to_archivesspace_gets_mets_if_needed( mets_file_mock, logger, get_pairs, params ): @@ -147,9 +150,9 @@ def test_upload_to_archivesspace_gets_mets_if_needed( ) -@mock.patch("upload_archivesspace.get_pairs") -@mock.patch("upload_archivesspace.logger") -@mock.patch("upload_archivesspace.mets_file") +@mock.patch("archivematica.MCPClient.clientScripts.upload_archivesspace.get_pairs") +@mock.patch("archivematica.MCPClient.clientScripts.upload_archivesspace.logger") +@mock.patch("archivematica.MCPClient.clientScripts.upload_archivesspace.mets_file") def test_upload_to_archivesspace_logs_files_with_no_pairs( mets_file, logger, get_pairs, db ): @@ -176,9 +179,9 @@ def test_upload_to_archivesspace_logs_files_with_no_pairs( assert not success -@mock.patch("upload_archivesspace.get_pairs") -@mock.patch("upload_archivesspace.logger") -@mock.patch("upload_archivesspace.mets_file") +@mock.patch("archivematica.MCPClient.clientScripts.upload_archivesspace.get_pairs") +@mock.patch("archivematica.MCPClient.clientScripts.upload_archivesspace.logger") +@mock.patch("archivematica.MCPClient.clientScripts.upload_archivesspace.mets_file") def test_upload_to_archivesspace_when_upload_fails(mets_file, logger, get_pairs, db): file1_uuid = uuid.uuid4() file2_uuid = uuid.uuid4() @@ -212,7 +215,7 @@ def fail_video_upload(*args, **kwargs): @mock.patch( - "upload_archivesspace.get_parser", + "archivematica.MCPClient.clientScripts.upload_archivesspace.get_parser", return_value=mock.Mock( **{ "parse_args.return_value": mock.Mock( @@ -237,9 +240,16 @@ def fail_video_upload(*args, **kwargs): } ), ) -@mock.patch("upload_archivesspace.ArchivesSpaceClient") -@mock.patch("upload_archivesspace.get_files_from_dip", return_value=[]) -@mock.patch("upload_archivesspace.upload_to_archivesspace") +@mock.patch( + "archivematica.MCPClient.clientScripts.upload_archivesspace.ArchivesSpaceClient" +) +@mock.patch( + "archivematica.MCPClient.clientScripts.upload_archivesspace.get_files_from_dip", + return_value=[], +) +@mock.patch( + "archivematica.MCPClient.clientScripts.upload_archivesspace.upload_to_archivesspace" +) def test_call( upload_to_archivesspace, get_files_from_dip_mock, @@ -282,10 +292,16 @@ def test_call( ], ids=["no_files_found", "unknown_error_raised"], ) -@mock.patch("upload_archivesspace.get_parser") -@mock.patch("upload_archivesspace.ArchivesSpaceClient") -@mock.patch("upload_archivesspace.get_files_from_dip") -@mock.patch("upload_archivesspace.upload_to_archivesspace") +@mock.patch("archivematica.MCPClient.clientScripts.upload_archivesspace.get_parser") +@mock.patch( + "archivematica.MCPClient.clientScripts.upload_archivesspace.ArchivesSpaceClient" +) +@mock.patch( + "archivematica.MCPClient.clientScripts.upload_archivesspace.get_files_from_dip" +) +@mock.patch( + "archivematica.MCPClient.clientScripts.upload_archivesspace.upload_to_archivesspace" +) def test_call_when_files_from_dip_cant_be_retrieved( upload_to_archivesspace, get_files_from_dip, @@ -303,10 +319,17 @@ def test_call_when_files_from_dip_cant_be_retrieved( upload_to_archivesspace.assert_not_called() -@mock.patch("upload_archivesspace.get_parser") -@mock.patch("upload_archivesspace.ArchivesSpaceClient") -@mock.patch("upload_archivesspace.get_files_from_dip") -@mock.patch("upload_archivesspace.upload_to_archivesspace", return_value=False) +@mock.patch("archivematica.MCPClient.clientScripts.upload_archivesspace.get_parser") +@mock.patch( + "archivematica.MCPClient.clientScripts.upload_archivesspace.ArchivesSpaceClient" +) +@mock.patch( + "archivematica.MCPClient.clientScripts.upload_archivesspace.get_files_from_dip" +) +@mock.patch( + "archivematica.MCPClient.clientScripts.upload_archivesspace.upload_to_archivesspace", + return_value=False, +) def test_call_when_not_all_files_can_be_paired( upload_to_archivesspace, get_files_from_dip, client_factory, get_parser, db ): diff --git a/tests/MCPClient/test_upload_qubit.py b/tests/MCPClient/test_upload_qubit.py index 696f046a14..85d4f5901c 100644 --- a/tests/MCPClient/test_upload_qubit.py +++ b/tests/MCPClient/test_upload_qubit.py @@ -2,8 +2,9 @@ from unittest import mock import pytest -import upload_qubit -from main import models + +from archivematica.dashboard.main import models +from archivematica.MCPClient.clientScripts import upload_qubit THIS_DIR = os.path.dirname(os.path.abspath(__file__)) diff --git a/tests/MCPClient/test_validate_file.py b/tests/MCPClient/test_validate_file.py index 86d36c0d1b..ceda2d499d 100644 --- a/tests/MCPClient/test_validate_file.py +++ b/tests/MCPClient/test_validate_file.py @@ -6,10 +6,11 @@ import pytest import pytest_django -import validate_file -from client.job import Job -from fpr import models as fprmodels -from main import models + +from archivematica.dashboard.fpr import models as fprmodels +from archivematica.dashboard.main import models +from archivematica.MCPClient.client.job import Job +from archivematica.MCPClient.clientScripts import validate_file @pytest.fixture @@ -59,7 +60,7 @@ def preservation_derivation( @pytest.mark.django_db @mock.patch( - "validate_file.executeOrRun", + "archivematica.MCPClient.clientScripts.validate_file.executeOrRun", return_value=( 0, json.dumps( @@ -83,7 +84,7 @@ def test_job_warns_if_preservation_derivative_sip_does_not_exist( sip_uuid = uuid.uuid4() job = mock.Mock( args=[ - "validate_file.py", + "archivematica.MCPClient.clientScripts.validate_file.py", preservation_file.currentlocation.decode(), str(preservation_file.uuid), str(sip_uuid), @@ -105,7 +106,7 @@ def test_job_warns_if_preservation_derivative_sip_does_not_exist( @pytest.mark.django_db @mock.patch( - "validate_file.executeOrRun", + "archivematica.MCPClient.clientScripts.validate_file.executeOrRun", return_value=( 0, json.dumps( @@ -129,7 +130,7 @@ def test_job_warns_if_preservation_derivative_sip_logs_directory_does_not_exist( ) -> None: job = mock.Mock( args=[ - "validate_file.py", + "archivematica.MCPClient.clientScripts.validate_file.py", preservation_file.currentlocation.decode(), str(preservation_file.uuid), str(sip.uuid), @@ -155,7 +156,7 @@ def test_job_warns_if_preservation_derivative_sip_logs_directory_does_not_exist( [("pass", "successful"), ("partial pass", "partially successful")], ids=["pass", "partial-pass"], ) -@mock.patch("validate_file.executeOrRun") +@mock.patch("archivematica.MCPClient.clientScripts.validate_file.executeOrRun") def test_job_succeeds_with_passing_validation_outcome( execute_or_run: mock.Mock, outcome_information: str, @@ -179,7 +180,7 @@ def test_job_succeeds_with_passing_validation_outcome( ) job = mock.Mock( args=[ - "validate_file.py", + "archivematica.MCPClient.clientScripts.validate_file.py", preservation_file.currentlocation.decode(), str(preservation_file.uuid), str(sip.uuid), @@ -223,7 +224,7 @@ def test_job_succeeds_with_passing_validation_outcome( @pytest.mark.django_db -@mock.patch("validate_file.executeOrRun") +@mock.patch("archivematica.MCPClient.clientScripts.validate_file.executeOrRun") def test_job_saves_command_output_as_preservation_logs( execute_or_run: mock.Mock, sip: models.SIP, @@ -248,7 +249,7 @@ def test_job_saves_command_output_as_preservation_logs( ) job = mock.Mock( args=[ - "validate_file.py", + "archivematica.MCPClient.clientScripts.validate_file.py", preservation_file.currentlocation.decode(), str(preservation_file.uuid), str(sip.uuid), @@ -273,7 +274,7 @@ def test_job_saves_command_output_as_preservation_logs( @pytest.mark.django_db @mock.patch( - "validate_file.executeOrRun", + "archivematica.MCPClient.clientScripts.validate_file.executeOrRun", return_value=( 0, json.dumps( @@ -306,7 +307,7 @@ def test_job_falls_back_to_default_validation_rule( ) job = mock.Mock( args=[ - "validate_file.py", + "archivematica.MCPClient.clientScripts.validate_file.py", preservation_file.currentlocation.decode(), str(preservation_file.uuid), str(sip.uuid), @@ -347,7 +348,7 @@ def test_job_skips_validation_if_rules_do_not_exist( job = mock.Mock( args=[ - "validate_file.py", + "archivematica.MCPClient.clientScripts.validate_file.py", sip_file.currentlocation.decode(), str(sip_file.uuid), str(sip.uuid), @@ -384,7 +385,7 @@ def test_job_skips_validation_if_file_is_not_a_derivative( job = mock.Mock( args=[ - "validate_file.py", + "archivematica.MCPClient.clientScripts.validate_file.py", preservation_file.currentlocation.decode(), str(preservation_file.uuid), str(sip.uuid), @@ -405,7 +406,7 @@ def test_job_skips_validation_if_file_is_not_a_derivative( @pytest.mark.django_db -@mock.patch("validate_file.executeOrRun") +@mock.patch("archivematica.MCPClient.clientScripts.validate_file.executeOrRun") def test_job_fails_if_rule_command_fails( execute_or_run: mock.Mock, sip: models.SIP, @@ -420,7 +421,7 @@ def test_job_fails_if_rule_command_fails( execute_or_run.return_value = (exit_status, "", stderr) job = mock.Mock( args=[ - "validate_file.py", + "archivematica.MCPClient.clientScripts.validate_file.py", preservation_file.currentlocation.decode(), str(preservation_file.uuid), str(sip.uuid), @@ -442,7 +443,7 @@ def test_job_fails_if_rule_command_fails( @pytest.mark.django_db -@mock.patch("validate_file.executeOrRun") +@mock.patch("archivematica.MCPClient.clientScripts.validate_file.executeOrRun") def test_job_fails_with_non_passing_validation_outcome( execute_or_run: mock.Mock, sip: models.SIP, @@ -461,7 +462,7 @@ def test_job_fails_with_non_passing_validation_outcome( execute_or_run.return_value = (0, stdout, "") job = mock.Mock( args=[ - "validate_file.py", + "archivematica.MCPClient.clientScripts.validate_file.py", preservation_file.currentlocation.decode(), str(preservation_file.uuid), str(sip.uuid), diff --git a/tests/MCPClient/test_verify_checksum.py b/tests/MCPClient/test_verify_checksum.py index 73b2c75856..f27b54329d 100644 --- a/tests/MCPClient/test_verify_checksum.py +++ b/tests/MCPClient/test_verify_checksum.py @@ -26,14 +26,17 @@ from unittest import mock import pytest -from client.job import Job -from main.models import Event -from main.models import File -from verify_checksum import Hashsum -from verify_checksum import NoHashCommandAvailable -from verify_checksum import PREMISFailure -from verify_checksum import get_file_queryset -from verify_checksum import write_premis_event_per_file + +from archivematica.dashboard.main.models import Event +from archivematica.dashboard.main.models import File +from archivematica.MCPClient.client.job import Job +from archivematica.MCPClient.clientScripts.verify_checksum import Hashsum +from archivematica.MCPClient.clientScripts.verify_checksum import NoHashCommandAvailable +from archivematica.MCPClient.clientScripts.verify_checksum import PREMISFailure +from archivematica.MCPClient.clientScripts.verify_checksum import get_file_queryset +from archivematica.MCPClient.clientScripts.verify_checksum import ( + write_premis_event_per_file, +) class TestHashsum: diff --git a/tests/MCPClient/upload-qubit-test b/tests/MCPClient/upload-qubit-test index 5c8db56aee..719cbb842f 100755 --- a/tests/MCPClient/upload-qubit-test +++ b/tests/MCPClient/upload-qubit-test @@ -1,7 +1,7 @@ #!/bin/bash # upload-qubit script location -UPLOAD_QUBIT_PATH="${HOME}/archivematica/src/MCPClient/clientScripts/upload-qubit.py" +UPLOAD_QUBIT_PATH="${HOME}/archivematica/src/archivematica/MCPClient/clientScripts/upload-qubit.py" # Qubit URL and login URL="http://localhost/ica-atom/index.php/sword/deposit/archivematica" diff --git a/tests/MCPServer/test_gearman.py b/tests/MCPServer/test_gearman.py index 92abcbf11f..a02f6f7d1a 100644 --- a/tests/MCPServer/test_gearman.py +++ b/tests/MCPServer/test_gearman.py @@ -4,9 +4,10 @@ import gearman import pytest -from server.jobs import Job -from server.tasks import GearmanTaskBackend -from server.tasks import Task + +from archivematica.MCPServer.server.jobs import Job +from archivematica.MCPServer.server.tasks import GearmanTaskBackend +from archivematica.MCPServer.server.tasks import Task class MockJob(Job): @@ -58,9 +59,15 @@ def format_gearman_response(task_results): return response -@mock.patch("server.tasks.backends.gearman_backend.MCPGearmanClient") -@mock.patch("server.tasks.GearmanTaskBackend.TASK_BATCH_SIZE", 1) -@mock.patch("server.tasks.backends.gearman_backend.Task.bulk_log") +@mock.patch( + "archivematica.MCPServer.server.tasks.backends.gearman_backend.MCPGearmanClient" +) +@mock.patch( + "archivematica.MCPServer.server.tasks.GearmanTaskBackend.TASK_BATCH_SIZE", 1 +) +@mock.patch( + "archivematica.MCPServer.server.tasks.backends.gearman_backend.Task.bulk_log" +) def test_gearman_task_submission(bulk_log, mock_client, simple_job, simple_task): backend = GearmanTaskBackend() backend.submit_task(simple_job, simple_task) @@ -80,8 +87,12 @@ def test_gearman_task_submission(bulk_log, mock_client, simple_job, simple_task) assert submit_job_kwargs["max_retries"] == GearmanTaskBackend.MAX_RETRIES -@mock.patch("server.tasks.backends.gearman_backend.MCPGearmanClient") -@mock.patch("server.tasks.backends.gearman_backend.Task.bulk_log") +@mock.patch( + "archivematica.MCPServer.server.tasks.backends.gearman_backend.MCPGearmanClient" +) +@mock.patch( + "archivematica.MCPServer.server.tasks.backends.gearman_backend.Task.bulk_log" +) def test_gearman_task_result_success(bulk_log, mock_client, simple_job, simple_task): backend = GearmanTaskBackend() @@ -127,8 +138,12 @@ def mock_jobs_completed(*args): assert task_result.done is True -@mock.patch("server.tasks.backends.gearman_backend.MCPGearmanClient") -@mock.patch("server.tasks.backends.gearman_backend.Task.bulk_log") +@mock.patch( + "archivematica.MCPServer.server.tasks.backends.gearman_backend.MCPGearmanClient" +) +@mock.patch( + "archivematica.MCPServer.server.tasks.backends.gearman_backend.Task.bulk_log" +) def test_gearman_task_result_error(bulk_log, mock_client, simple_job, simple_task): backend = GearmanTaskBackend() @@ -164,9 +179,13 @@ def mock_jobs_completed(*args): @pytest.mark.parametrize( "reverse_result_order", (False, True), ids=["regular", "reversed"] ) -@mock.patch("server.tasks.backends.gearman_backend.MCPGearmanClient") +@mock.patch( + "archivematica.MCPServer.server.tasks.backends.gearman_backend.MCPGearmanClient" +) @mock.patch.object(GearmanTaskBackend, "TASK_BATCH_SIZE", 2) -@mock.patch("server.tasks.backends.gearman_backend.Task.bulk_log") +@mock.patch( + "archivematica.MCPServer.server.tasks.backends.gearman_backend.Task.bulk_log" +) def test_gearman_multiple_batches( bulk_log, mock_client, simple_job, simple_task, reverse_result_order ): diff --git a/tests/MCPServer/test_integration.py b/tests/MCPServer/test_integration.py index 274213a7ff..13555a69bb 100644 --- a/tests/MCPServer/test_integration.py +++ b/tests/MCPServer/test_integration.py @@ -8,20 +8,21 @@ import pytest from django.utils import timezone from lxml import etree -from main import models -from server.jobs import DirectoryClientScriptJob -from server.jobs import FilesClientScriptJob -from server.jobs import GetUnitVarLinkJob -from server.jobs import JobChain -from server.jobs import NextChainDecisionJob -from server.jobs import OutputClientScriptJob -from server.jobs import OutputDecisionJob -from server.jobs import SetUnitVarLinkJob -from server.jobs import UpdateContextDecisionJob -from server.packages import Transfer -from server.queues import PackageQueue -from server.tasks import TaskBackend -from server.workflow import load as load_workflow + +from archivematica.dashboard.main import models +from archivematica.MCPServer.server.jobs import DirectoryClientScriptJob +from archivematica.MCPServer.server.jobs import FilesClientScriptJob +from archivematica.MCPServer.server.jobs import GetUnitVarLinkJob +from archivematica.MCPServer.server.jobs import JobChain +from archivematica.MCPServer.server.jobs import NextChainDecisionJob +from archivematica.MCPServer.server.jobs import OutputClientScriptJob +from archivematica.MCPServer.server.jobs import OutputDecisionJob +from archivematica.MCPServer.server.jobs import SetUnitVarLinkJob +from archivematica.MCPServer.server.jobs import UpdateContextDecisionJob +from archivematica.MCPServer.server.packages import Transfer +from archivematica.MCPServer.server.queues import PackageQueue +from archivematica.MCPServer.server.tasks import TaskBackend +from archivematica.MCPServer.server.workflow import load as load_workflow FIXTURES_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), "fixtures") INTEGRATION_TEST_PATH = os.path.join(FIXTURES_DIR, "workflow-integration-test.json") @@ -94,9 +95,9 @@ def dummy_file_replacements(request): @pytest.mark.django_db(transaction=True) -@mock.patch("server.jobs.decisions.load_processing_xml") -@mock.patch("server.jobs.decisions.load_preconfigured_choice") -@mock.patch("server.jobs.client.get_task_backend") +@mock.patch("archivematica.MCPServer.server.jobs.decisions.load_processing_xml") +@mock.patch("archivematica.MCPServer.server.jobs.decisions.load_preconfigured_choice") +@mock.patch("archivematica.MCPServer.server.jobs.client.get_task_backend") def test_workflow_integration( mock_get_task_backend, mock_load_preconfigured_choice, @@ -116,7 +117,7 @@ def test_workflow_integration( with ( mock.patch.dict( - "server.packages.BASE_REPLACEMENTS", + "archivematica.MCPServer.server.packages.BASE_REPLACEMENTS", {r"%processingDirectory%": settings.PROCESSING_DIRECTORY}, ), mock.patch.object(transfer, "files", return_value=dummy_file_replacements), diff --git a/tests/MCPServer/test_mcp.py b/tests/MCPServer/test_mcp.py index 5c07d8affc..297c6d669c 100644 --- a/tests/MCPServer/test_mcp.py +++ b/tests/MCPServer/test_mcp.py @@ -3,15 +3,17 @@ from unittest import mock import pytest -from server.mcp import main -from server.mcp import watched_dir_handler + +from archivematica.MCPServer.server.mcp import main +from archivematica.MCPServer.server.mcp import watched_dir_handler @pytest.mark.django_db(transaction=True) -@mock.patch("server.packages.models.Transfer.objects.create") -@mock.patch("server.packages.uuid4") +@mock.patch("archivematica.MCPServer.server.packages.models.Transfer.objects.create") +@mock.patch("archivematica.MCPServer.server.packages.uuid4") @mock.patch( - "server.mcp.JobChain", mock.MagicMock(return_value=iter(["some_chain_link"])) + "archivematica.MCPServer.server.mcp.JobChain", + mock.MagicMock(return_value=iter(["some_chain_link"])), ) def test_watched_dir_handler_creates_transfer_if_it_does_not_exist( uuid4, create_mock, tmpdir @@ -51,10 +53,11 @@ def test_watched_dir_handler_creates_transfer_if_it_does_not_exist( @pytest.mark.django_db(transaction=True) -@mock.patch("server.packages.models.Transfer.objects.create") -@mock.patch("server.packages.uuid4") +@mock.patch("archivematica.MCPServer.server.packages.models.Transfer.objects.create") +@mock.patch("archivematica.MCPServer.server.packages.uuid4") @mock.patch( - "server.mcp.JobChain", mock.MagicMock(return_value=iter(["some_chain_link"])) + "archivematica.MCPServer.server.mcp.JobChain", + mock.MagicMock(return_value=iter(["some_chain_link"])), ) def test_watched_dir_handler_creates_transfer_for_file(uuid4, create_mock, tmpdir): """Test that a models.Transfer object exists for a file path.""" @@ -83,12 +86,12 @@ def test_watched_dir_handler_creates_transfer_for_file(uuid4, create_mock, tmpdi create_mock.assert_called_once_with(uuid=transfer_uuid, currentlocation=str(path)) -@mock.patch("server.mcp.metrics") -@mock.patch("server.mcp.Task") -@mock.patch("server.mcp.Job") -@mock.patch("server.mcp.Package") -@mock.patch("server.mcp.shared_dirs") -@mock.patch("server.mcp.load_workflow") +@mock.patch("archivematica.MCPServer.server.mcp.metrics") +@mock.patch("archivematica.MCPServer.server.mcp.Task") +@mock.patch("archivematica.MCPServer.server.mcp.Job") +@mock.patch("archivematica.MCPServer.server.mcp.Package") +@mock.patch("archivematica.MCPServer.server.mcp.shared_dirs") +@mock.patch("archivematica.MCPServer.server.mcp.load_workflow") def test_mcp_main( mock_load_workflow, mock_shared_dirs, diff --git a/tests/MCPServer/test_package.py b/tests/MCPServer/test_package.py index 9641ebcdd0..d84a3dde36 100644 --- a/tests/MCPServer/test_package.py +++ b/tests/MCPServer/test_package.py @@ -5,17 +5,20 @@ import pytest from django.core.exceptions import ValidationError -from main import models -from server.packages import DIP -from server.packages import SIP -from server.packages import Package -from server.packages import Transfer -from server.packages import _determine_transfer_paths -from server.packages import _move_to_internal_shared_dir -from server.packages import _pad_destination_filepath_if_it_already_exists -from server.packages import create_package -from server.queues import PackageQueue -from server.workflow import Workflow + +from archivematica.dashboard.main import models +from archivematica.MCPServer.server.packages import DIP +from archivematica.MCPServer.server.packages import SIP +from archivematica.MCPServer.server.packages import Package +from archivematica.MCPServer.server.packages import Transfer +from archivematica.MCPServer.server.packages import _determine_transfer_paths +from archivematica.MCPServer.server.packages import _move_to_internal_shared_dir +from archivematica.MCPServer.server.packages import ( + _pad_destination_filepath_if_it_already_exists, +) +from archivematica.MCPServer.server.packages import create_package +from archivematica.MCPServer.server.queues import PackageQueue +from archivematica.MCPServer.server.workflow import Workflow @pytest.mark.parametrize( diff --git a/tests/MCPServer/test_processing_config.py b/tests/MCPServer/test_processing_config.py index d3cadf40fe..8468c696b8 100644 --- a/tests/MCPServer/test_processing_config.py +++ b/tests/MCPServer/test_processing_config.py @@ -3,17 +3,24 @@ from unittest import mock import pytest -from server.processing_config import ChainChoicesField -from server.processing_config import ReplaceDictField -from server.processing_config import SharedChainChoicesField -from server.processing_config import StorageLocationField -from server.processing_config import get_processing_fields -from server.processing_config import processing_configuration_file_exists -from server.processing_config import processing_fields -from server.workflow import load + +from archivematica.MCPServer.server.processing_config import ChainChoicesField +from archivematica.MCPServer.server.processing_config import ReplaceDictField +from archivematica.MCPServer.server.processing_config import SharedChainChoicesField +from archivematica.MCPServer.server.processing_config import StorageLocationField +from archivematica.MCPServer.server.processing_config import get_processing_fields +from archivematica.MCPServer.server.processing_config import ( + processing_configuration_file_exists, +) +from archivematica.MCPServer.server.processing_config import processing_fields +from archivematica.MCPServer.server.workflow import load ASSETS_DIR = ( - pathlib.Path(__file__).parent.parent.parent / "src" / "MCPServer" / "assets" + pathlib.Path(__file__).parent.parent.parent + / "src" + / "archivematica" + / "MCPServer" + / "assets" ) @@ -24,7 +31,9 @@ def _workflow(): return load(fp) -@mock.patch("storageService.get_location", return_value=[]) +@mock.patch( + "archivematica.archivematicaCommon.storageService.get_location", return_value=[] +) def test_get_processing_fields(_workflow): fields = get_processing_fields(_workflow) @@ -32,7 +41,7 @@ def test_get_processing_fields(_workflow): @mock.patch( - "server.processing_config.processing_fields", + "archivematica.MCPServer.server.processing_config.processing_fields", new=[ StorageLocationField( link_id="b320ce81-9982-408a-9502-097d0daa48fa", @@ -46,7 +55,7 @@ def test_get_processing_fields(_workflow): ), ], ) -@mock.patch("storageService.get_location") +@mock.patch("archivematica.archivematicaCommon.storageService.get_location") def test_storage_location_field(get_location, _workflow): def mocked_get_location(purpose): return [ @@ -122,7 +131,7 @@ def mocked_get_location(purpose): @mock.patch( - "server.processing_config.processing_fields", + "archivematica.MCPServer.server.processing_config.processing_fields", new=[ ReplaceDictField( link_id="f09847c2-ee51-429a-9478-a860477f6b8d", @@ -197,7 +206,7 @@ def test_replace_dict_field(_workflow): @mock.patch( - "server.processing_config.processing_fields", + "archivematica.MCPServer.server.processing_config.processing_fields", new=[ ChainChoicesField( link_id="eeb23509-57e2-4529-8857-9d62525db048", name="reminder" @@ -317,7 +326,7 @@ def test_chain_choices_field(_workflow): @mock.patch( - "server.processing_config.processing_fields", + "archivematica.MCPServer.server.processing_config.processing_fields", new=[ SharedChainChoicesField( link_id="856d2d65-cd25-49fa-8da9-cabb78292894", @@ -414,7 +423,7 @@ def test_processing_configuration_file_exists_with_existent_file(isfile): assert processing_configuration_file_exists("defaultProcessingMCP.xml") -@mock.patch("server.processing_config.logger") +@mock.patch("archivematica.MCPServer.server.processing_config.logger") @mock.patch("os.path.isfile", return_value=False) def test_processing_configuration_file_exists_with_nonexistent_file(isfile, logger): assert not processing_configuration_file_exists("bogus.xml") diff --git a/tests/MCPServer/test_queues.py b/tests/MCPServer/test_queues.py index 6f67e84779..1ebe581488 100644 --- a/tests/MCPServer/test_queues.py +++ b/tests/MCPServer/test_queues.py @@ -6,13 +6,14 @@ from unittest import mock import pytest -from server.jobs import DecisionJob -from server.jobs import Job -from server.packages import DIP -from server.packages import SIP -from server.packages import Transfer -from server.queues import PackageQueue -from server.workflow import Link + +from archivematica.MCPServer.server.jobs import DecisionJob +from archivematica.MCPServer.server.jobs import Job +from archivematica.MCPServer.server.packages import DIP +from archivematica.MCPServer.server.packages import SIP +from archivematica.MCPServer.server.packages import Transfer +from archivematica.MCPServer.server.queues import PackageQueue +from archivematica.MCPServer.server.workflow import Link def _process_one_job(queue): diff --git a/tests/MCPServer/test_rpc_server.py b/tests/MCPServer/test_rpc_server.py index de31437635..20b7068900 100644 --- a/tests/MCPServer/test_rpc_server.py +++ b/tests/MCPServer/test_rpc_server.py @@ -5,12 +5,17 @@ import pytest from django.utils import timezone -from main import models -from server import rpc_server -from server import workflow + +from archivematica.dashboard.main import models +from archivematica.MCPServer.server import rpc_server +from archivematica.MCPServer.server import workflow ASSETS_DIR = ( - pathlib.Path(__file__).parent.parent.parent / "src" / "MCPServer" / "assets" + pathlib.Path(__file__).parent.parent.parent + / "src" + / "archivematica" + / "MCPServer" + / "assets" ) diff --git a/tests/MCPServer/test_translation.py b/tests/MCPServer/test_translation.py index 565cd4d9ff..0c9b8c422d 100644 --- a/tests/MCPServer/test_translation.py +++ b/tests/MCPServer/test_translation.py @@ -1,10 +1,10 @@ from unittest import mock -from server.translation import UNKNOWN_TRANSLATION_LABEL -from server.translation import TranslationLabel +from archivematica.MCPServer.server.translation import UNKNOWN_TRANSLATION_LABEL +from archivematica.MCPServer.server.translation import TranslationLabel -@mock.patch("server.translation.FALLBACK_LANG", "en") +@mock.patch("archivematica.MCPServer.server.translation.FALLBACK_LANG", "en") def test_translation_label(): tr = TranslationLabel({"en": "cat", "es": "gato"}) assert str(tr) == "cat" @@ -13,11 +13,11 @@ def test_translation_label(): assert tr.get_label(lang="es") == "gato" assert tr.get_label(lang="is", fallback_label="köttur") == "köttur" assert tr.get_label(lang="??") == "cat" - with mock.patch("server.translation.FALLBACK_LANG", "xx"): + with mock.patch("archivematica.MCPServer.server.translation.FALLBACK_LANG", "xx"): assert tr.get_label(lang="yy") == UNKNOWN_TRANSLATION_LABEL -@mock.patch("server.translation.FALLBACK_LANG", "en") +@mock.patch("archivematica.MCPServer.server.translation.FALLBACK_LANG", "en") def test_translation_label_with_prepared_codes(): tr = TranslationLabel({"en": "dog", "pt_BR": "cão"}) assert tr.get_label(lang="en") == "dog" diff --git a/tests/MCPServer/test_workflow.py b/tests/MCPServer/test_workflow.py index fe921d6ceb..1962deb262 100644 --- a/tests/MCPServer/test_workflow.py +++ b/tests/MCPServer/test_workflow.py @@ -5,17 +5,22 @@ import pytest from django.utils.translation import gettext_lazy -from server import translation -from server import workflow + +from archivematica.MCPServer.server import translation +from archivematica.MCPServer.server import workflow ASSETS_DIR = ( - pathlib.Path(__file__).parent.parent.parent / "src" / "MCPServer" / "assets" + pathlib.Path(__file__).parent.parent.parent + / "src" + / "archivematica" + / "MCPServer" + / "assets" ) FIXTURES_DIR = pathlib.Path(__file__).parent / "fixtures" @mock.patch( - "server.jobs.Job.STATUSES", + "archivematica.MCPServer.server.jobs.Job.STATUSES", ( (1, gettext_lazy("Uno")), (2, gettext_lazy("Dos")), @@ -114,7 +119,9 @@ def test_get_schema(): assert schema["$id"] == "https://www.archivematica.org/labs/workflow/schema/v1.json" -@mock.patch("server.workflow._LATEST_SCHEMA", "non-existen-schema") +@mock.patch( + "archivematica.MCPServer.server.workflow._LATEST_SCHEMA", "non-existen-schema" +) def test_get_schema_not_found(): with pytest.raises(IOError): workflow._get_schema() diff --git a/tests/MCPServer/test_workflow_abilities.py b/tests/MCPServer/test_workflow_abilities.py index 09939d13af..a9027ecdb0 100644 --- a/tests/MCPServer/test_workflow_abilities.py +++ b/tests/MCPServer/test_workflow_abilities.py @@ -2,11 +2,16 @@ import pathlib import pytest -from server import workflow -from server.workflow_abilities import choice_is_available + +from archivematica.MCPServer.server import workflow +from archivematica.MCPServer.server.workflow_abilities import choice_is_available ASSETS_DIR = ( - pathlib.Path(__file__).parent.parent.parent / "src" / "MCPServer" / "assets" + pathlib.Path(__file__).parent.parent.parent + / "src" + / "archivematica" + / "MCPServer" + / "assets" ) diff --git a/tests/archivematicaCommon/test_appconfig.py b/tests/archivematicaCommon/test_appconfig.py index da3d24d6e0..9d5b1bd8a9 100644 --- a/tests/archivematicaCommon/test_appconfig.py +++ b/tests/archivematicaCommon/test_appconfig.py @@ -2,10 +2,11 @@ from io import StringIO import pytest -from appconfig import Config -from appconfig import process_search_enabled from django.core.exceptions import ImproperlyConfigured +from archivematica.archivematicaCommon.appconfig import Config +from archivematica.archivematicaCommon.appconfig import process_search_enabled + CONFIG_MAPPING = { "search_enabled": { "section": "Dashboard", diff --git a/tests/archivematicaCommon/test_archivematica_functions.py b/tests/archivematicaCommon/test_archivematica_functions.py index 069c78e2f5..92ade89e50 100644 --- a/tests/archivematicaCommon/test_archivematica_functions.py +++ b/tests/archivematicaCommon/test_archivematica_functions.py @@ -1,9 +1,10 @@ from unittest.mock import patch -import archivematicaFunctions as am import bagit import pytest +from archivematica.archivematicaCommon import archivematicaFunctions as am + def test_find_mets_file_match(tmp_path): metadata_dir = tmp_path / "metadata" @@ -43,7 +44,9 @@ def test_get_bag_size(tmpdir): bag.info["Payload-Oxum"] = size_oxum bag.save() # Assertions - with patch("archivematicaFunctions.os") as mock_os: + with patch( + "archivematica.archivematicaCommon.archivematicaFunctions.os" + ) as mock_os: # Test returned value against expected size = am.get_bag_size(bag, bag_dir.strpath) assert size == int(size_oxum.split(".")[0]) diff --git a/tests/archivematicaCommon/test_bindpid.py b/tests/archivematicaCommon/test_bindpid.py index 9bc10e43cd..c6e92dca3e 100644 --- a/tests/archivematicaCommon/test_bindpid.py +++ b/tests/archivematicaCommon/test_bindpid.py @@ -1,7 +1,8 @@ -import bindpid import pytest from django.test import TestCase +from archivematica.archivematicaCommon import bindpid + VALID_ARG_DICT = { "entity_type": "file", "resolve_url_template_file": "https://access.my.org/access/{{ naming_authority }}/{{ pid }}", diff --git a/tests/archivematicaCommon/test_database_functions.py b/tests/archivematicaCommon/test_database_functions.py index 2d36ba6d2e..c8107ff826 100644 --- a/tests/archivematicaCommon/test_database_functions.py +++ b/tests/archivematicaCommon/test_database_functions.py @@ -1,11 +1,12 @@ import pathlib import uuid -import databaseFunctions import pytest from django.test import TestCase -from main.models import Event -from main.models import File + +from archivematica.archivematicaCommon import databaseFunctions +from archivematica.dashboard.main.models import Event +from archivematica.dashboard.main.models import File AGENTS_FIXTURE = pathlib.Path(__file__).parent / "fixtures" / "agents.json" TEST_DATABASE_FUNCTIONS_FIXTURE = ( diff --git a/tests/archivematicaCommon/test_dicts.py b/tests/archivematicaCommon/test_dicts.py index 2799d4bcf6..4221fdb877 100644 --- a/tests/archivematicaCommon/test_dicts.py +++ b/tests/archivematicaCommon/test_dicts.py @@ -1,9 +1,10 @@ import os import pytest -from dicts import ReplacementDict -from dicts import setup as setup_dicts -from main import models + +from archivematica.archivematicaCommon.dicts import ReplacementDict +from archivematica.archivematicaCommon.dicts import setup as setup_dicts +from archivematica.dashboard.main import models @pytest.fixture diff --git a/tests/archivematicaCommon/test_elasticsearch_functions.py b/tests/archivematicaCommon/test_elasticsearch_functions.py index 9c6e49df39..7e9bbd250f 100644 --- a/tests/archivematicaCommon/test_elasticsearch_functions.py +++ b/tests/archivematicaCommon/test_elasticsearch_functions.py @@ -4,16 +4,17 @@ import uuid from unittest import mock -import elasticSearchFunctions import pytest -from components import helpers from django.utils.timezone import make_aware from lxml import etree -from main.models import SIP -from main.models import Directory -from main.models import File -from main.models import Identifier -from main.models import Transfer + +from archivematica.archivematicaCommon import elasticSearchFunctions +from archivematica.dashboard.components import helpers +from archivematica.dashboard.main.models import SIP +from archivematica.dashboard.main.models import Directory +from archivematica.dashboard.main.models import File +from archivematica.dashboard.main.models import Identifier +from archivematica.dashboard.main.models import Transfer THIS_DIR = os.path.dirname(os.path.abspath(__file__)) @@ -331,8 +332,10 @@ def test_set_tags_fails_when_file_cant_be_found(perform_request, es_client): @pytest.mark.django_db -@mock.patch("elasticSearchFunctions.get_dashboard_uuid") -@mock.patch("elasticSearchFunctions.bulk") +@mock.patch( + "archivematica.archivematicaCommon.elasticSearchFunctions.get_dashboard_uuid" +) +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.bulk") def test_index_mets_file_metadata(bulk, get_dashboard_uuid, es_client): # Set up mocked functions get_dashboard_uuid.return_value = "test-uuid" @@ -435,7 +438,7 @@ def _bulk(client, actions, stats_only=False, *args, **kwargs): @pytest.mark.django_db -@mock.patch("elasticSearchFunctions.bulk") +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.bulk") def test_index_mets_file_metadata_with_utf8(bulk, es_client): def _bulk(client, actions, stats_only=False, *args, **kwargs): pass @@ -453,7 +456,9 @@ def _bulk(client, actions, stats_only=False, *args, **kwargs): ) -@mock.patch("elasticSearchFunctions.create_indexes_if_needed") +@mock.patch( + "archivematica.archivematicaCommon.elasticSearchFunctions.create_indexes_if_needed" +) def test_default_setup(create_indexes_if_needed): elasticSearchFunctions.setup("elasticsearch:9200") create_indexes_if_needed.assert_called_with( @@ -461,13 +466,17 @@ def test_default_setup(create_indexes_if_needed): ) -@mock.patch("elasticSearchFunctions.create_indexes_if_needed") +@mock.patch( + "archivematica.archivematicaCommon.elasticSearchFunctions.create_indexes_if_needed" +) def test_only_aips_setup(create_indexes_if_needed): elasticSearchFunctions.setup("elasticsearch:9200", enabled=["aips"]) create_indexes_if_needed.assert_called_with(mock.ANY, ["aips", "aipfiles"]) -@mock.patch("elasticSearchFunctions.create_indexes_if_needed") +@mock.patch( + "archivematica.archivematicaCommon.elasticSearchFunctions.create_indexes_if_needed" +) def test_only_transfers_setup(create_indexes_if_needed): elasticSearchFunctions.setup("elasticsearch:9200", enabled=["transfers"]) create_indexes_if_needed.assert_called_with( @@ -475,7 +484,9 @@ def test_only_transfers_setup(create_indexes_if_needed): ) -@mock.patch("elasticSearchFunctions.create_indexes_if_needed") +@mock.patch( + "archivematica.archivematicaCommon.elasticSearchFunctions.create_indexes_if_needed" +) def test_no_indexes_setup(create_indexes_if_needed): elasticSearchFunctions.setup("elasticsearch:9200", enabled=[]) elasticSearchFunctions.setup("elasticsearch:9200", enabled=["unknown"]) @@ -569,8 +580,10 @@ def test_create_indexes_wrong_index(exists, create, es_client): ), ], ) -@mock.patch("elasticSearchFunctions.get_dashboard_uuid") -@mock.patch("elasticSearchFunctions.bulk") +@mock.patch( + "archivematica.archivematicaCommon.elasticSearchFunctions.get_dashboard_uuid" +) +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.bulk") def test_index_aipfile_fileuuid( bulk, get_dashboard_uuid, metsfile, fileuuid_dict, aipuuid, aipname ): @@ -625,8 +638,10 @@ def _bulk(client, actions, stats_only=False, *args, **kwargs): ), ], ) -@mock.patch("elasticSearchFunctions.get_dashboard_uuid") -@mock.patch("elasticSearchFunctions.bulk") +@mock.patch( + "archivematica.archivematicaCommon.elasticSearchFunctions.get_dashboard_uuid" +) +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.bulk") def test_index_aipfile_dmdsec(bulk, get_dashboard_uuid, metsfile, dmdsec_dict): """Check AIP file dmdSec is correctly parsed from METS files. @@ -927,7 +942,7 @@ def test_index_aip_and_files_logs_error_if_mets_does_not_exist( "elasticsearch.client.cluster.ClusterClient.health", return_value={"status": "green"}, ) -@mock.patch("elasticSearchFunctions._index_aip_files") +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions._index_aip_files") def test_index_aip_and_files(_index_aip_files, health, index, es_client, tmp_path): dashboard_uuid = uuid.uuid4() helpers.set_setting("dashboard_uuid", str(dashboard_uuid)) @@ -1129,7 +1144,7 @@ def test_index_transfer_and_files(health, index, es_client, transfer, transfer_f @mock.patch( - "elasticSearchFunctions.search_all_results", + "archivematica.archivematicaCommon.elasticSearchFunctions.search_all_results", return_value={ "hits": { "hits": [ @@ -1164,7 +1179,7 @@ def test_get_transfer_file_info_when_search_returns_a_single_document( @mock.patch( - "elasticSearchFunctions.search_all_results", + "archivematica.archivematicaCommon.elasticSearchFunctions.search_all_results", return_value={ "hits": { "hits": [ @@ -1200,8 +1215,10 @@ def test_get_transfer_file_info_logs_multiple_results(search_all_results, es_cli @pytest.mark.django_db -@mock.patch("elasticSearchFunctions.get_client") -@mock.patch("elasticSearchFunctions.search_all_results") +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.get_client") +@mock.patch( + "archivematica.archivematicaCommon.elasticSearchFunctions.search_all_results" +) def test_remove_backlog_transfer_files(search_all_results, client, transfer): file_doc_id = "123" search_all_results.return_value = { @@ -1230,8 +1247,10 @@ def test_remove_backlog_transfer_files(search_all_results, client, transfer): @pytest.mark.django_db -@mock.patch("elasticSearchFunctions.get_client") -@mock.patch("elasticSearchFunctions.search_all_results") +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.get_client") +@mock.patch( + "archivematica.archivematicaCommon.elasticSearchFunctions.search_all_results" +) def test_remove_sip_transfer_files(search_all_results, client, transfer, transfer_file): file_doc_id = "123" search_all_results.return_value = { @@ -1259,8 +1278,11 @@ def test_remove_sip_transfer_files(search_all_results, client, transfer, transfe ) -@mock.patch("elasticSearchFunctions.get_client") -@mock.patch("elasticSearchFunctions._document_ids_from_field_query", return_value=[]) +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.get_client") +@mock.patch( + "archivematica.archivematicaCommon.elasticSearchFunctions._document_ids_from_field_query", + return_value=[], +) def test_mark_aip_stored_logs_error(_document_ids_from_field_query, client, caplog): aip_uuid = str(uuid.uuid4()) @@ -1277,8 +1299,10 @@ def test_mark_aip_stored_logs_error(_document_ids_from_field_query, client, capl ] -@mock.patch("elasticSearchFunctions.get_client") -@mock.patch("elasticSearchFunctions._document_ids_from_field_query") +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.get_client") +@mock.patch( + "archivematica.archivematicaCommon.elasticSearchFunctions._document_ids_from_field_query" +) def test_mark_aip_stored(_document_ids_from_field_query, client): aip_uuid = str(uuid.uuid4()) aip_doc_id = str(uuid.uuid4()) @@ -1347,8 +1371,10 @@ def test_mark_aip_stored(_document_ids_from_field_query, client): "revert_backlog_deletion_request", ], ) -@mock.patch("elasticSearchFunctions.get_client") -@mock.patch("elasticSearchFunctions._document_ids_from_field_query") +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.get_client") +@mock.patch( + "archivematica.archivematicaCommon.elasticSearchFunctions._document_ids_from_field_query" +) def test_update_helpers( _document_ids_from_field_query, client, @@ -1406,7 +1432,7 @@ def test_augment_raw_search_results(): ] -@mock.patch("elasticSearchFunctions.get_client") +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.get_client") def test_try_to_index_fails_with_invalid_maximum_retries(client): with pytest.raises(ValueError, match="max_tries must be 1 or greater"): elasticSearchFunctions._try_to_index( @@ -1414,7 +1440,7 @@ def test_try_to_index_fails_with_invalid_maximum_retries(client): ) -@mock.patch("elasticSearchFunctions.get_client") +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.get_client") def test_try_to_index_retries_after_error(client): error = Exception("error") client.index.side_effect = [error, None] @@ -1436,7 +1462,7 @@ def test_try_to_index_retries_after_error(client): ] -@mock.patch("elasticSearchFunctions.get_client") +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.get_client") def test_try_to_index_raises_exception_after_retries(client): error = Exception("error") client.index.side_effect = [error, None] diff --git a/tests/archivematicaCommon/test_env_configparser.py b/tests/archivematicaCommon/test_env_configparser.py index 287026f167..5bd71f84aa 100644 --- a/tests/archivematicaCommon/test_env_configparser.py +++ b/tests/archivematicaCommon/test_env_configparser.py @@ -4,7 +4,8 @@ import pytest from django.test import TestCase -from env_configparser import EnvConfigParser + +from archivematica.archivematicaCommon.env_configparser import EnvConfigParser class TestConfigReader(TestCase): diff --git a/tests/archivematicaCommon/test_execute_functions.py b/tests/archivematicaCommon/test_execute_functions.py index 3425d8ffc4..fe408e9706 100644 --- a/tests/archivematicaCommon/test_execute_functions.py +++ b/tests/archivematicaCommon/test_execute_functions.py @@ -6,9 +6,10 @@ from unittest.mock import Mock from unittest.mock import patch -import executeOrRunSubProcess as execsub import pytest +import archivematica.archivematicaCommon.executeOrRunSubProcess as execsub + def test_capture_output() -> None: """Tests behaviour of capture_output when executing sub processes.""" @@ -75,7 +76,7 @@ def temp_path(tmp_path: pathlib.Path) -> Generator[str, None, None]: tempfile.tempdir = original_tempdir -@patch("executeOrRunSubProcess.launchSubProcess") +@patch("archivematica.archivematicaCommon.executeOrRunSubProcess.launchSubProcess") def test_createAndRunScript_creates_tmpfile_in_custom_dir( launchSubProcess: Mock, temp_path: str ) -> None: diff --git a/tests/archivematicaCommon/test_file_operations.py b/tests/archivematicaCommon/test_file_operations.py index b3b0d3770c..820cd22385 100644 --- a/tests/archivematicaCommon/test_file_operations.py +++ b/tests/archivematicaCommon/test_file_operations.py @@ -3,14 +3,17 @@ import pytest from django.db.models import Q -from fileOperations import FindFileInNormalizatonCSVError -from fileOperations import addAccessionEvent -from fileOperations import findFileInNormalizationCSV -from fileOperations import get_extract_dir_name -from main.models import SIP -from main.models import Event -from main.models import File -from main.models import Transfer + +from archivematica.archivematicaCommon.fileOperations import ( + FindFileInNormalizatonCSVError, +) +from archivematica.archivematicaCommon.fileOperations import addAccessionEvent +from archivematica.archivematicaCommon.fileOperations import findFileInNormalizationCSV +from archivematica.archivematicaCommon.fileOperations import get_extract_dir_name +from archivematica.dashboard.main.models import SIP +from archivematica.dashboard.main.models import Event +from archivematica.dashboard.main.models import File +from archivematica.dashboard.main.models import Transfer @pytest.mark.parametrize( diff --git a/tests/archivematicaCommon/test_gearman_encoder.py b/tests/archivematicaCommon/test_gearman_encoder.py index 6a758ff226..694628c9e2 100644 --- a/tests/archivematicaCommon/test_gearman_encoder.py +++ b/tests/archivematicaCommon/test_gearman_encoder.py @@ -1,7 +1,8 @@ from datetime import datetime from django.utils.timezone import make_aware -from gearman_encoder import JSONDataEncoder + +from archivematica.archivematicaCommon.gearman_encoder import JSONDataEncoder def test_encoder(): diff --git a/tests/archivematicaCommon/test_identifier_functions.py b/tests/archivematicaCommon/test_identifier_functions.py index ac0183772b..af8140b0a8 100644 --- a/tests/archivematicaCommon/test_identifier_functions.py +++ b/tests/archivematicaCommon/test_identifier_functions.py @@ -1,7 +1,7 @@ import os import unittest -import identifier_functions +from archivematica.archivematicaCommon import identifier_functions THIS_DIR = os.path.dirname(os.path.abspath(__file__)) FIXTURES_DIR = os.path.join(THIS_DIR, "fixtures") diff --git a/tests/archivematicaCommon/test_storage_service.py b/tests/archivematicaCommon/test_storage_service.py index 44eba5e4c5..468038b84c 100644 --- a/tests/archivematicaCommon/test_storage_service.py +++ b/tests/archivematicaCommon/test_storage_service.py @@ -8,8 +8,13 @@ import pytest from requests import Response -from storageService import location_description_from_slug -from storageService import retrieve_storage_location_description + +from archivematica.archivematicaCommon.storageService import ( + location_description_from_slug, +) +from archivematica.archivematicaCommon.storageService import ( + retrieve_storage_location_description, +) def mock_response(status_code, content_type, content): @@ -33,7 +38,7 @@ def mock_response(status_code, content_type, content): (0, "", {}), ], ) -@mock.patch("storageService._storage_service_url") +@mock.patch("archivematica.archivematicaCommon.storageService._storage_service_url") @mock.patch("requests.Session.get") def test_location_desc_from_slug( get, _storage_service_url, status_code, content_type, expected_result @@ -76,7 +81,9 @@ def test_location_desc_from_slug( ("/api/v2/location/fd46760b-567f-4c17-a2f4-a05e79074932/", {}, ""), ], ) -@mock.patch("storageService.location_description_from_slug") +@mock.patch( + "archivematica.archivematicaCommon.storageService.location_description_from_slug" +) def test_retrieve_storage_location( location_description_from_slug, slug, return_value, expected_result ): diff --git a/tests/dashboard/components/accounts/test_views.py b/tests/dashboard/components/accounts/test_views.py index 102cb28873..628201470a 100644 --- a/tests/dashboard/components/accounts/test_views.py +++ b/tests/dashboard/components/accounts/test_views.py @@ -7,14 +7,15 @@ import pytest import pytest_django -from components import helpers -from components.accounts.views import get_oidc_logout_url from django.contrib.auth.models import User from django.test import Client from django.test import RequestFactory from django.urls import reverse from tastypie.models import ApiKey +from archivematica.dashboard.components import helpers +from archivematica.dashboard.components.accounts.views import get_oidc_logout_url + def test_get_oidc_logout_url_fails_if_token_is_not_set(rf: RequestFactory) -> None: request = rf.get("/") diff --git a/tests/dashboard/components/administration/test_administration.py b/tests/dashboard/components/administration/test_administration.py index 7778b1913c..87972db622 100644 --- a/tests/dashboard/components/administration/test_administration.py +++ b/tests/dashboard/components/administration/test_administration.py @@ -4,14 +4,15 @@ import pytest import pytest_django import requests -from components import helpers from django.contrib.auth.models import User from django.http import HttpResponseNotFound from django.test import Client from django.urls import reverse -from main.models import Report from tastypie.models import ApiKey +from archivematica.dashboard.components import helpers +from archivematica.dashboard.main.models import Report + @pytest.fixture @pytest.mark.django_db @@ -201,7 +202,10 @@ def admin_user_apikey(admin_user: User) -> ApiKey: @pytest.mark.django_db -@mock.patch("storageService.get_pipeline", side_effect=NotFound) +@mock.patch( + "archivematica.archivematicaCommon.storageService.get_pipeline", + side_effect=NotFound, +) @mock.patch("requests.Session.post") @mock.patch("platform.node") def test_general_view_registers_pipeline_in_storage_service( diff --git a/tests/dashboard/components/administration/test_dip_upload_configs.py b/tests/dashboard/components/administration/test_dip_upload_configs.py index 168c3fd156..9cdcfd6a7d 100644 --- a/tests/dashboard/components/administration/test_dip_upload_configs.py +++ b/tests/dashboard/components/administration/test_dip_upload_configs.py @@ -1,11 +1,16 @@ import pathlib -from components import helpers -from components.administration.views_dip_upload import _AS_DICTNAME -from components.administration.views_dip_upload import _ATOM_DICTNAME from django.test import TestCase from django.urls import reverse -from main.models import DashboardSetting + +from archivematica.dashboard.components import helpers +from archivematica.dashboard.components.administration.views_dip_upload import ( + _AS_DICTNAME, +) +from archivematica.dashboard.components.administration.views_dip_upload import ( + _ATOM_DICTNAME, +) +from archivematica.dashboard.main.models import DashboardSetting TEST_USER_FIXTURE = ( pathlib.Path(__file__).parent.parent.parent / "fixtures" / "test_user.json" diff --git a/tests/dashboard/components/administration/test_forms.py b/tests/dashboard/components/administration/test_forms.py index 86595d3077..65e328bfc4 100644 --- a/tests/dashboard/components/administration/test_forms.py +++ b/tests/dashboard/components/administration/test_forms.py @@ -1,4 +1,4 @@ -from components.administration.forms import PreconfiguredChoices +from archivematica.dashboard.components.administration.forms import PreconfiguredChoices EXPECTED_PROCESSING_CONFIGURATION = """ diff --git a/tests/dashboard/components/administration/test_processing_config.py b/tests/dashboard/components/administration/test_processing_config.py index 8a41f7d5e8..793e3a9d05 100644 --- a/tests/dashboard/components/administration/test_processing_config.py +++ b/tests/dashboard/components/administration/test_processing_config.py @@ -5,11 +5,12 @@ from unittest import mock import pytest -from components import helpers from django.http import HttpResponse from django.test import TestCase -from processing import AUTOMATED_PROCESSING_CONFIG -from processing import DEFAULT_PROCESSING_CONFIG + +from archivematica.archivematicaCommon.processing import AUTOMATED_PROCESSING_CONFIG +from archivematica.archivematicaCommon.processing import DEFAULT_PROCESSING_CONFIG +from archivematica.dashboard.components import helpers TEST_USER_FIXTURE = ( pathlib.Path(__file__).parent.parent.parent / "fixtures" / "test_user.json" @@ -35,14 +36,18 @@ def setUp(self): self.client.login(username="test", password="test") helpers.set_setting("dashboard_uuid", "test-uuid") - @mock.patch("components.administration.views_processing.os.path.isfile") + @mock.patch( + "archivematica.dashboard.components.administration.views_processing.os.path.isfile" + ) def test_download_404(self, mock_is_file): mock_is_file.return_value = False response = self.client.get("/administration/processing/download/default/") self.assertEqual(response.status_code, 404) - @mock.patch("components.helpers.send_file") - @mock.patch("components.administration.views_processing.os.path.isfile") + @mock.patch("archivematica.dashboard.components.helpers.send_file") + @mock.patch( + "archivematica.dashboard.components.administration.views_processing.os.path.isfile" + ) def test_download_ok(self, mock_is_file, mock_send_file): mock_is_file.return_value = True mock_send_file.return_value = HttpResponse( @@ -54,7 +59,7 @@ def test_download_ok(self, mock_is_file, mock_send_file): ) @mock.patch( - "components.administration.forms.MCPClient.get_processing_config_fields", + "archivematica.dashboard.components.administration.forms.MCPClient.get_processing_config_fields", return_value={}, ) def test_edit_new_config(self, mock_conf_fields): @@ -63,11 +68,11 @@ def test_edit_new_config(self, mock_conf_fields): self.assertNotIn("name", response.context["form"].initial) @mock.patch( - "components.administration.forms.MCPClient.get_processing_config_fields", + "archivematica.dashboard.components.administration.forms.MCPClient.get_processing_config_fields", return_value={}, ) @mock.patch( - "components.administration.forms.ProcessingConfigurationForm.load_config", + "archivematica.dashboard.components.administration.forms.ProcessingConfigurationForm.load_config", side_effect=OSError(), ) def test_edit_not_found_config(self, mock_load_config, mock_conf_fields): @@ -76,11 +81,11 @@ def test_edit_not_found_config(self, mock_load_config, mock_conf_fields): mock_load_config.assert_called_once_with("not_found_config") @mock.patch( - "components.administration.forms.MCPClient.get_processing_config_fields", + "archivematica.dashboard.components.administration.forms.MCPClient.get_processing_config_fields", return_value={}, ) @mock.patch( - "components.administration.forms.ProcessingConfigurationForm.load_config" + "archivematica.dashboard.components.administration.forms.ProcessingConfigurationForm.load_config" ) def test_edit_found_config(self, mock_load_config, mock_conf_fields): response = self.client.get("/administration/processing/edit/found_config/") @@ -88,11 +93,11 @@ def test_edit_found_config(self, mock_load_config, mock_conf_fields): mock_load_config.assert_called_once_with("found_config") @mock.patch( - "components.administration.forms.MCPClient.get_processing_config_fields", + "archivematica.dashboard.components.administration.forms.MCPClient.get_processing_config_fields", return_value={}, ) @mock.patch( - "components.administration.forms.ProcessingConfigurationForm.load_config" + "archivematica.dashboard.components.administration.forms.ProcessingConfigurationForm.load_config" ) def test_name_field_is_required(self, mock_load_config, mock_conf_fields): response = self.client.post("/administration/processing/add/", data={1: 2}) @@ -100,7 +105,7 @@ def test_name_field_is_required(self, mock_load_config, mock_conf_fields): self.assertContains(response, "This field is required.") @mock.patch( - "components.administration.forms.MCPClient.get_processing_config_fields", + "archivematica.dashboard.components.administration.forms.MCPClient.get_processing_config_fields", return_value={}, ) def test_name_field_is_validated(self, mock_conf_fields): diff --git a/tests/dashboard/components/administration/test_storage.py b/tests/dashboard/components/administration/test_storage.py index 42b02693a7..c6ff900b1a 100644 --- a/tests/dashboard/components/administration/test_storage.py +++ b/tests/dashboard/components/administration/test_storage.py @@ -1,9 +1,10 @@ import pathlib from unittest import mock -from components import helpers from django.test import TestCase +from archivematica.dashboard.components import helpers + TEST_USER_FIXTURE = ( pathlib.Path(__file__).parent.parent.parent / "fixtures" / "test_user.json" ) @@ -18,14 +19,16 @@ def setUp(self): helpers.set_setting("dashboard_uuid", "test-uuid") @mock.patch( - "components.administration.views.storage_service.get_location", + "archivematica.dashboard.components.administration.views.storage_service.get_location", side_effect=Exception(), ) def test_ss_connection_fail(self, mock_get_location): response = self.client.get(self.url) self.assertIn("Error retrieving locations", response.content.decode("utf8")) - @mock.patch("components.administration.views.storage_service.get_location") + @mock.patch( + "archivematica.dashboard.components.administration.views.storage_service.get_location" + ) def test_success(self, mock_get_location): mock_get_location.return_value = [ { diff --git a/tests/dashboard/components/administration/test_usage.py b/tests/dashboard/components/administration/test_usage.py index 86ad98922e..7a6c6f4cf3 100644 --- a/tests/dashboard/components/administration/test_usage.py +++ b/tests/dashboard/components/administration/test_usage.py @@ -2,10 +2,11 @@ import subprocess from unittest import mock -from components import helpers from django.conf import settings from django.test import TestCase +from archivematica.dashboard.components import helpers + TEST_USER_FIXTURE = ( pathlib.Path(__file__).parent.parent.parent / "fixtures" / "test_user.json" ) @@ -32,15 +33,16 @@ def test_no_calculation(self): self.assertIn("Calculate disk usage", content) @mock.patch( - "components.administration.views._usage_get_directory_used_bytes", + "archivematica.dashboard.components.administration.views._usage_get_directory_used_bytes", return_value=5368709120, ) @mock.patch( - "components.administration.views._usage_check_directory_volume_size", + "archivematica.dashboard.components.administration.views._usage_check_directory_volume_size", return_value=10737418240, ) @mock.patch( - "components.administration.views._get_mount_point_path", return_value="/" + "archivematica.dashboard.components.administration.views._get_mount_point_path", + return_value="/", ) def test_calculation(self, mock_mount_path, mock_dir_size, mock_dir_used): for calculate in ["true", "True", "ON", "yes", "1"]: @@ -65,11 +67,11 @@ def test_calculation(self, mock_mount_path, mock_dir_size, mock_dir_used): ], ) @mock.patch( - "components.administration.views._usage_check_directory_volume_size", + "archivematica.dashboard.components.administration.views._usage_check_directory_volume_size", return_value=10737418240, ) @mock.patch( - "components.administration.views._get_shared_dirs", + "archivematica.dashboard.components.administration.views._get_shared_dirs", return_value={}, ) def test_calculation_with_disk_usage_errors( diff --git a/tests/dashboard/components/archival_storage/test_archival_storage.py b/tests/dashboard/components/archival_storage/test_archival_storage.py index 1d22ef5551..aab64fc004 100644 --- a/tests/dashboard/components/archival_storage/test_archival_storage.py +++ b/tests/dashboard/components/archival_storage/test_archival_storage.py @@ -25,8 +25,6 @@ import metsrw import pytest from agentarchives.atom.client import CommunicationError -from components import helpers -from components.archival_storage import atom from django.http import HttpResponse from django.http import HttpResponseNotFound from django.http import StreamingHttpResponse @@ -34,7 +32,10 @@ from django.test.client import Client from django.urls import reverse from elasticsearch import Elasticsearch -from main.models import DashboardSetting + +from archivematica.dashboard.components import helpers +from archivematica.dashboard.components.archival_storage import atom +from archivematica.dashboard.main.models import DashboardSetting THIS_DIR = os.path.dirname(os.path.abspath(__file__)) CONTENT_DISPOSITION = "Content-Disposition" @@ -111,8 +112,11 @@ def get_streaming_response(streaming_content): return response_text -@mock.patch("elasticSearchFunctions.get_client") -@mock.patch("elasticSearchFunctions.get_aip_data", side_effect=IndexError()) +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.get_client") +@mock.patch( + "archivematica.archivematicaCommon.elasticSearchFunctions.get_aip_data", + side_effect=IndexError(), +) def test_get_mets_unknown_mets(get_aip_data, get_client, amsetup, admin_client): response = admin_client.get( "/archival-storage/download/aip/11111111-1111-1111-1111-111111111111/mets_download/" @@ -120,9 +124,11 @@ def test_get_mets_unknown_mets(get_aip_data, get_client, amsetup, admin_client): assert isinstance(response, HttpResponseNotFound) -@mock.patch("elasticSearchFunctions.get_client") -@mock.patch("elasticSearchFunctions.get_aip_data") -@mock.patch("components.helpers.stream_mets_from_storage_service") +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.get_client") +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.get_aip_data") +@mock.patch( + "archivematica.dashboard.components.helpers.stream_mets_from_storage_service" +) def test_get_mets_known_mets( stream_mets_from_storage_service, get_aip_data, @@ -148,9 +154,11 @@ def test_get_mets_known_mets( assert response.get(CONTENT_DISPOSITION) == mock_content_disposition -@mock.patch("elasticSearchFunctions.get_client") -@mock.patch("storageService.pointer_file_url") -@mock.patch("components.helpers.stream_file_from_storage_service") +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.get_client") +@mock.patch("archivematica.archivematicaCommon.storageService.pointer_file_url") +@mock.patch( + "archivematica.dashboard.components.helpers.stream_file_from_storage_service" +) def test_get_pointer_unknown_pointer( stream_file_from_storage_service, pointer_file_url, @@ -175,8 +183,10 @@ def test_get_pointer_unknown_pointer( assert json.loads(response.content) == mock_error_message -@mock.patch("storageService.pointer_file_url") -@mock.patch("components.helpers.stream_file_from_storage_service") +@mock.patch("archivematica.archivematicaCommon.storageService.pointer_file_url") +@mock.patch( + "archivematica.dashboard.components.helpers.stream_file_from_storage_service" +) def test_get_pointer_known_pointer( stream_file_from_storage_service, pointer_file_url, amsetup, admin_client, mets_hdr ): @@ -214,10 +224,10 @@ def test_search_rejects_unsupported_file_mime(amsetup, admin_client): assert response.content == b"Please use ?mimeType=text/csv" -@mock.patch("elasticSearchFunctions.get_client") +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.get_client") @mock.patch("elasticsearch.Elasticsearch.search") @mock.patch( - "components.archival_storage.views.search_augment_aip_results", + "archivematica.dashboard.components.archival_storage.views.search_augment_aip_results", return_value=[ { "status": "Stored", @@ -292,9 +302,16 @@ def test_search_as_csv( ) -@mock.patch("elasticSearchFunctions.get_client", return_value=Elasticsearch()) -@mock.patch("elasticSearchFunctions.Elasticsearch.search") -@mock.patch("components.archival_storage.views.search_augment_aip_results") +@mock.patch( + "archivematica.archivematicaCommon.elasticSearchFunctions.get_client", + return_value=Elasticsearch(), +) +@mock.patch( + "archivematica.archivematicaCommon.elasticSearchFunctions.Elasticsearch.search" +) +@mock.patch( + "archivematica.dashboard.components.archival_storage.views.search_augment_aip_results" +) def test_search_as_csv_invalid_route( search_augment_aip_results, search, @@ -379,10 +396,10 @@ def test_load_datatable_state_404(self): assert payload["message"] == "Setting not found" -@mock.patch("components.helpers.processing_config_path") -@mock.patch("elasticSearchFunctions.get_client") -@mock.patch("elasticSearchFunctions.get_aip_data") -@mock.patch("components.archival_storage.forms.get_atom_client") +@mock.patch("archivematica.dashboard.components.helpers.processing_config_path") +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.get_client") +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.get_aip_data") +@mock.patch("archivematica.dashboard.components.archival_storage.forms.get_atom_client") def test_view_aip_metadata_only_dip_upload_with_missing_description_slug( get_atom_client, get_aip_data, @@ -433,8 +450,8 @@ def test_create_aic_fails_if_query_is_not_passed(amsetup, admin_client): assert "Unable to create AIC: No AIPs selected" in response.content.decode() -@mock.patch("elasticSearchFunctions.get_client") -@mock.patch("databaseFunctions.createSIP") +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.get_client") +@mock.patch("archivematica.archivematicaCommon.databaseFunctions.createSIP") @mock.patch( "uuid.uuid4", return_value=uuid.UUID("1e23e6e2-02d7-4b2d-a648-caffa3b489f3") ) @@ -541,12 +558,12 @@ def processing_configurations_dir(tmp_path): return result -@mock.patch("components.helpers.processing_config_path") +@mock.patch("archivematica.dashboard.components.helpers.processing_config_path") @mock.patch( - "elasticSearchFunctions.get_aip_data", + "archivematica.archivematicaCommon.elasticSearchFunctions.get_aip_data", return_value={"_source": {"name": "My AIP", "filePath": "path"}}, ) -@mock.patch("elasticSearchFunctions.get_client") +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.get_client") def test_view_aip_reingest_form_displays_processing_configurations_choices( get_client, get_aip_data, @@ -578,10 +595,10 @@ def test_view_aip_reingest_form_displays_processing_configurations_choices( @pytest.mark.parametrize( "error,message", [(False, "success!"), (True, "error!")], ids=["success", "error"] ) -@mock.patch("components.helpers.processing_config_path") -@mock.patch("storageService.request_reingest") -@mock.patch("elasticSearchFunctions.get_aip_data") -@mock.patch("elasticSearchFunctions.get_client") +@mock.patch("archivematica.dashboard.components.helpers.processing_config_path") +@mock.patch("archivematica.archivematicaCommon.storageService.request_reingest") +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.get_aip_data") +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.get_client") def test_view_aip_reingest_form_submits_reingest( get_client, get_aip_data, diff --git a/tests/dashboard/components/file/test_views.py b/tests/dashboard/components/file/test_views.py index 4cff1ef98d..b5ea534991 100644 --- a/tests/dashboard/components/file/test_views.py +++ b/tests/dashboard/components/file/test_views.py @@ -3,11 +3,12 @@ import uuid from unittest import mock -import elasticSearchFunctions import pytest -from components import helpers from django.urls import reverse -from main import models + +from archivematica.archivematicaCommon import elasticSearchFunctions +from archivematica.dashboard.components import helpers +from archivematica.dashboard.main import models @pytest.fixture @@ -30,8 +31,10 @@ def file(db): return models.File.objects.create() -@mock.patch("elasticSearchFunctions.get_client") -@mock.patch("elasticSearchFunctions.get_transfer_file_info") +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.get_client") +@mock.patch( + "archivematica.archivematicaCommon.elasticSearchFunctions.get_transfer_file_info" +) def test_file_details( get_transfer_file_info, get_client, admin_client, dashboard_uuid, file, sip ): @@ -73,8 +76,10 @@ def test_file_details( ], ids=["no exact results", "unknown error"], ) -@mock.patch("elasticSearchFunctions.get_client") -@mock.patch("elasticSearchFunctions.get_transfer_file_info") +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.get_client") +@mock.patch( + "archivematica.archivematicaCommon.elasticSearchFunctions.get_transfer_file_info" +) def test_file_details_handles_exceptions( get_transfer_file_info, get_client, @@ -97,9 +102,9 @@ def test_file_details_handles_exceptions( } -@mock.patch("elasticSearchFunctions.get_client") +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.get_client") @mock.patch( - "elasticSearchFunctions.get_transfer_file_info", + "archivematica.archivematicaCommon.elasticSearchFunctions.get_transfer_file_info", return_value={ "filename": "piiTestDataCreditCardNumbers.txt", "relative_path": "test-bulk-extract-a239e3e1-0391-46da-94d7-25a3e8509b45/data/objects/piiTestDataCreditCardNumbers.txt", @@ -123,7 +128,7 @@ def test_bulk_extractor_fails_if_requested_file_is_missing( } -@mock.patch("components.file.views.len", side_effect=[0]) +@mock.patch("archivematica.dashboard.components.file.views.len", side_effect=[0]) def test_bulk_extractor_fails_if_no_reports_requested( _len, admin_client, dashboard_uuid, file ): @@ -146,8 +151,10 @@ def test_bulk_extractor_fails_if_no_reports_requested( ], ids=["no exact results", "unknown error"], ) -@mock.patch("elasticSearchFunctions.get_client") -@mock.patch("elasticSearchFunctions.get_transfer_file_info") +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.get_client") +@mock.patch( + "archivematica.archivematicaCommon.elasticSearchFunctions.get_transfer_file_info" +) def test_bulk_extractor_handles_exceptions( get_transfer_file_info, get_client, @@ -173,8 +180,10 @@ def test_bulk_extractor_handles_exceptions( @pytest.mark.django_db -@mock.patch("elasticSearchFunctions.get_client") -@mock.patch("elasticSearchFunctions.get_transfer_file_info") +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.get_client") +@mock.patch( + "archivematica.archivematicaCommon.elasticSearchFunctions.get_transfer_file_info" +) @mock.patch( "requests.get", return_value=mock.Mock( @@ -243,8 +252,10 @@ def test_bulk_extractor( @pytest.mark.django_db -@mock.patch("elasticSearchFunctions.get_client") -@mock.patch("elasticSearchFunctions.get_transfer_file_info") +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.get_client") +@mock.patch( + "archivematica.archivematicaCommon.elasticSearchFunctions.get_transfer_file_info" +) @mock.patch( "requests.get", return_value=mock.Mock(status_code=500, text="""Internal Server Error"""), @@ -293,9 +304,9 @@ def test_bulk_extractor_handles_exception_if_reports_are_not_missing( assert "response: ('Internal Server Error',)" in caplog.text -@mock.patch("elasticSearchFunctions.get_client") +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.get_client") @mock.patch( - "elasticSearchFunctions.get_file_tags", + "archivematica.archivematicaCommon.elasticSearchFunctions.get_file_tags", return_value=["test"], ) def test_transfer_file_tags( @@ -315,8 +326,8 @@ def test_transfer_file_tags( ], ids=["Elasticsearch error", "Empty search result error"], ) -@mock.patch("elasticSearchFunctions.get_client") -@mock.patch("elasticSearchFunctions.get_file_tags") +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.get_client") +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.get_file_tags") def test_transfer_file_tags_handles_exceptions( get_file_tags, get_client, @@ -337,9 +348,9 @@ def test_transfer_file_tags_handles_exceptions( } -@mock.patch("elasticSearchFunctions.get_client") +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.get_client") @mock.patch( - "elasticSearchFunctions.set_file_tags", + "archivematica.archivematicaCommon.elasticSearchFunctions.set_file_tags", return_value=["test"], ) def test_transfer_file_tags_updates_tags( @@ -393,8 +404,8 @@ def test_transfer_file_tags_fails_if_provided_tags_are_not_in_a_list( ], ids=["Elasticsearch error", "Empty search result error"], ) -@mock.patch("elasticSearchFunctions.get_client") -@mock.patch("elasticSearchFunctions.set_file_tags") +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.get_client") +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.set_file_tags") def test_transfer_file_tags_handles_exceptions_when_updating_tags( set_file_tags, get_client, @@ -419,9 +430,9 @@ def test_transfer_file_tags_handles_exceptions_when_updating_tags( } -@mock.patch("elasticSearchFunctions.get_client") +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.get_client") @mock.patch( - "elasticSearchFunctions.set_file_tags", + "archivematica.archivematicaCommon.elasticSearchFunctions.set_file_tags", return_value=["test"], ) def test_transfer_file_tags_deletes_tags( @@ -446,8 +457,8 @@ def test_transfer_file_tags_deletes_tags( ], ids=["Elasticsearch error", "Empty search result error"], ) -@mock.patch("elasticSearchFunctions.get_client") -@mock.patch("elasticSearchFunctions.set_file_tags") +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.get_client") +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.set_file_tags") def test_transfer_file_tags_handles_exceptions_when_removing_tags( set_file_tags, get_client, diff --git a/tests/dashboard/components/mcp/test_views.py b/tests/dashboard/components/mcp/test_views.py index f17af51905..df35af4208 100644 --- a/tests/dashboard/components/mcp/test_views.py +++ b/tests/dashboard/components/mcp/test_views.py @@ -1,10 +1,11 @@ from unittest import mock -from components.mcp import views from django.urls import reverse -from externals import xmltodict from lxml import etree +from archivematica.archivematicaCommon.externals import xmltodict +from archivematica.dashboard.components.mcp import views + FILE_FORMAT_IDENTIFICATION_CHOICES = """ b8d5dcca-b60e-40fd-b160-32447abbf7f8 @@ -38,9 +39,9 @@ """ -@mock.patch("contrib.mcp.client.GearmanClient") +@mock.patch("archivematica.dashboard.contrib.mcp.client.GearmanClient") @mock.patch( - "contrib.mcp.client.gearman.JOB_COMPLETE", + "archivematica.dashboard.contrib.mcp.client.gearman.JOB_COMPLETE", ) def test_list(job_complete, gearman_client, rf, admin_user): # Make the Gearman interactions return known values. diff --git a/tests/dashboard/components/test_advanced_search.py b/tests/dashboard/components/test_advanced_search.py index eea14078c3..c6306e4d79 100644 --- a/tests/dashboard/components/test_advanced_search.py +++ b/tests/dashboard/components/test_advanced_search.py @@ -1,5 +1,6 @@ import pytest -from components.advanced_search import _normalize_date + +from archivematica.dashboard.components.advanced_search import _normalize_date @pytest.mark.parametrize( diff --git a/tests/dashboard/components/unit/test_views.py b/tests/dashboard/components/unit/test_views.py index f9c879aa07..49e08e44e2 100644 --- a/tests/dashboard/components/unit/test_views.py +++ b/tests/dashboard/components/unit/test_views.py @@ -2,10 +2,11 @@ from unittest import mock import pytest -from components import helpers from django.urls import reverse from django.utils import timezone -from main import models + +from archivematica.dashboard.components import helpers +from archivematica.dashboard.main import models @pytest.fixture() @@ -60,7 +61,10 @@ def test_it_conflicts_on_active_packages(self, install, admin_client, transfer): assert resp.status_code == 409 assert resp.json() == {"removed": False} - @mock.patch("main.models.Transfer.objects.done", side_effect=Exception()) + @mock.patch( + "archivematica.dashboard.main.models.Transfer.objects.done", + side_effect=Exception(), + ) def test_it_handles_unknown_errors(self, done, install, admin_client, transfer): url = reverse( "unit:mark_hidden", @@ -96,7 +100,10 @@ def test_it_rejects_non_delete_verbs(self, install, admin_client, transfer): assert resp.status_code == 405 - @mock.patch("components.helpers.completed_units_efficient", side_effect=Exception()) + @mock.patch( + "archivematica.dashboard.components.helpers.completed_units_efficient", + side_effect=Exception(), + ) def test_it_handles_unknown_errors( self, completed_units_efficient, install, admin_client, transfer ): diff --git a/tests/dashboard/fpr/test_forms.py b/tests/dashboard/fpr/test_forms.py index de0784e817..9f506c69ef 100644 --- a/tests/dashboard/fpr/test_forms.py +++ b/tests/dashboard/fpr/test_forms.py @@ -1,11 +1,12 @@ from django.test import TestCase -from fpr.forms import FPRuleForm -from fpr.forms import IDToolForm -from fpr.models import Format -from fpr.models import FormatGroup -from fpr.models import FormatVersion -from fpr.models import FPCommand -from fpr.models import FPRule + +from archivematica.dashboard.fpr.forms import FPRuleForm +from archivematica.dashboard.fpr.forms import IDToolForm +from archivematica.dashboard.fpr.models import Format +from archivematica.dashboard.fpr.models import FormatGroup +from archivematica.dashboard.fpr.models import FormatVersion +from archivematica.dashboard.fpr.models import FPCommand +from archivematica.dashboard.fpr.models import FPRule class TestForms(TestCase): diff --git a/tests/dashboard/fpr/test_utils.py b/tests/dashboard/fpr/test_utils.py index 34d2353708..426bece417 100644 --- a/tests/dashboard/fpr/test_utils.py +++ b/tests/dashboard/fpr/test_utils.py @@ -1,8 +1,9 @@ import uuid from django.test import TestCase -from fpr.models import IDCommand -from fpr.utils import get_revision_descendants + +from archivematica.dashboard.fpr.models import IDCommand +from archivematica.dashboard.fpr.utils import get_revision_descendants class TestUtils(TestCase): diff --git a/tests/dashboard/fpr/test_views.py b/tests/dashboard/fpr/test_views.py index df2316cfc9..85f70bd812 100644 --- a/tests/dashboard/fpr/test_views.py +++ b/tests/dashboard/fpr/test_views.py @@ -1,10 +1,11 @@ import uuid import pytest -from components import helpers from django.test import Client from django.urls import reverse -from fpr import models + +from archivematica.dashboard.components import helpers +from archivematica.dashboard.fpr import models @pytest.fixture diff --git a/tests/dashboard/main/conftest.py b/tests/dashboard/main/conftest.py index acafa58a2c..877bef2f9b 100644 --- a/tests/dashboard/main/conftest.py +++ b/tests/dashboard/main/conftest.py @@ -2,7 +2,8 @@ import pytest from django.utils import timezone -from main import models + +from archivematica.dashboard.main import models @pytest.fixture diff --git a/tests/dashboard/main/test_command_purge_transient_processing_data.py b/tests/dashboard/main/test_command_purge_transient_processing_data.py index 4c713f1e73..328bb36702 100644 --- a/tests/dashboard/main/test_command_purge_transient_processing_data.py +++ b/tests/dashboard/main/test_command_purge_transient_processing_data.py @@ -1,12 +1,13 @@ import uuid from unittest import mock -import elasticSearchFunctions as es import pytest from django.core.management import call_command from django.utils import timezone from django.utils.dateparse import parse_duration -from main import models + +from archivematica.archivematicaCommon import elasticSearchFunctions as es +from archivematica.dashboard.main import models @pytest.fixture @@ -87,13 +88,13 @@ def test_purge_command_removes_all_packages( @pytest.mark.django_db @mock.patch( - "main.management.commands.purge_transient_processing_data.es.create_indexes_if_needed" + "archivematica.dashboard.main.management.commands.purge_transient_processing_data.es.create_indexes_if_needed" ) @mock.patch( - "main.management.commands.purge_transient_processing_data.es.remove_backlog_transfer" + "archivematica.dashboard.main.management.commands.purge_transient_processing_data.es.remove_backlog_transfer" ) @mock.patch( - "main.management.commands.purge_transient_processing_data.es.remove_backlog_transfer_files" + "archivematica.dashboard.main.management.commands.purge_transient_processing_data.es.remove_backlog_transfer_files" ) def test_purge_command_removes_search_documents( mock_remove_backlog_transfer_files, @@ -110,13 +111,13 @@ def test_purge_command_removes_search_documents( @mock.patch( - "main.management.commands.purge_transient_processing_data.es.create_indexes_if_needed" + "archivematica.dashboard.main.management.commands.purge_transient_processing_data.es.create_indexes_if_needed" ) @mock.patch( - "main.management.commands.purge_transient_processing_data.es.remove_backlog_transfer" + "archivematica.dashboard.main.management.commands.purge_transient_processing_data.es.remove_backlog_transfer" ) @mock.patch( - "main.management.commands.purge_transient_processing_data.es.remove_backlog_transfer_files" + "archivematica.dashboard.main.management.commands.purge_transient_processing_data.es.remove_backlog_transfer_files" ) @pytest.mark.django_db def test_purge_command_keeps_search_documents( diff --git a/tests/dashboard/main/test_transfer.py b/tests/dashboard/main/test_transfer.py index efd2a51a4c..2d651ac7fd 100644 --- a/tests/dashboard/main/test_transfer.py +++ b/tests/dashboard/main/test_transfer.py @@ -1,7 +1,8 @@ import uuid import pytest -from main import models + +from archivematica.dashboard.main import models @pytest.mark.parametrize( diff --git a/tests/dashboard/test_access.py b/tests/dashboard/test_access.py index 718b6fb37a..06f4ba98f3 100644 --- a/tests/dashboard/test_access.py +++ b/tests/dashboard/test_access.py @@ -2,13 +2,14 @@ import pathlib from unittest import mock -import archivematicaFunctions import pytest -from components import helpers from django.test import TestCase from django.test.client import Client from django.urls import reverse -from main import models + +from archivematica.archivematicaCommon import archivematicaFunctions +from archivematica.dashboard.components import helpers +from archivematica.dashboard.main import models TEST_USER_FIXTURE = pathlib.Path(__file__).parent / "fixtures" / "test_user.json" ACCESS_FIXTURE = pathlib.Path(__file__).parent / "fixtures" / "access.json" @@ -92,7 +93,7 @@ def test_access_arrange_start_sip_fails_if_arrange_mapping_does_not_exist( @pytest.mark.django_db -@mock.patch("components.access.views.get_as_system_client") +@mock.patch("archivematica.dashboard.components.access.views.get_as_system_client") def test_access_arrange_start_sip_fails_if_arrange_does_not_exist( get_as_system_client, dashboard_uuid, admin_client ): @@ -120,7 +121,7 @@ def test_access_arrange_start_sip_fails_if_arrange_does_not_exist( @pytest.mark.django_db @mock.patch( - "components.access.views.get_as_system_client", + "archivematica.dashboard.components.access.views.get_as_system_client", return_value=mock.Mock( **{ "get_record.side_effect": [ @@ -161,8 +162,10 @@ def test_access_arrange_start_sip_fails_if_resource_creators_cannot_be_fetched( @pytest.mark.django_db -@mock.patch("components.filesystem_ajax.views.copy_from_arrange_to_completed_common") -@mock.patch("components.access.views.get_as_system_client") +@mock.patch( + "archivematica.dashboard.components.filesystem_ajax.views.copy_from_arrange_to_completed_common" +) +@mock.patch("archivematica.dashboard.components.access.views.get_as_system_client") def test_access_arrange_start_sip( get_as_system_client, copy_from_arrange_to_completed_common, diff --git a/tests/dashboard/test_api.py b/tests/dashboard/test_api.py index 7b52c47a66..9bbc923ea0 100644 --- a/tests/dashboard/test_api.py +++ b/tests/dashboard/test_api.py @@ -3,28 +3,29 @@ import uuid from unittest import mock -import archivematicaFunctions import pytest import requests -from components import helpers -from components.api import views from django.core.management import call_command from django.urls import reverse from django.utils.timezone import make_aware from lxml import etree -from main.models import PACKAGE_STATUS_COMPLETED_SUCCESSFULLY -from main.models import SIP -from main.models import DashboardSetting -from main.models import DublinCore -from main.models import File -from main.models import Job -from main.models import LevelOfDescription -from main.models import MetadataAppliesToType -from main.models import RightsStatement -from main.models import SIPArrange -from main.models import Task -from main.models import Transfer -from processing import install_builtin_config + +from archivematica.archivematicaCommon import archivematicaFunctions +from archivematica.archivematicaCommon.processing import install_builtin_config +from archivematica.dashboard.components import helpers +from archivematica.dashboard.components.api import views +from archivematica.dashboard.main.models import PACKAGE_STATUS_COMPLETED_SUCCESSFULLY +from archivematica.dashboard.main.models import SIP +from archivematica.dashboard.main.models import DashboardSetting +from archivematica.dashboard.main.models import DublinCore +from archivematica.dashboard.main.models import File +from archivematica.dashboard.main.models import Job +from archivematica.dashboard.main.models import LevelOfDescription +from archivematica.dashboard.main.models import MetadataAppliesToType +from archivematica.dashboard.main.models import RightsStatement +from archivematica.dashboard.main.models import SIPArrange +from archivematica.dashboard.main.models import Task +from archivematica.dashboard.main.models import Transfer def load_fixture(fixtures): @@ -850,9 +851,12 @@ def test_get_unit_status_multiple( @pytest.mark.django_db -@mock.patch("components.api.views.authenticate_request", return_value=None) @mock.patch( - "components.filesystem_ajax.views._copy_from_transfer_sources", + "archivematica.dashboard.components.api.views.authenticate_request", + return_value=None, +) +@mock.patch( + "archivematica.dashboard.components.filesystem_ajax.views._copy_from_transfer_sources", return_value=(None, ""), ) def test_copy_metadata_files_api(_copy_from_transfer_sources, authenticate_request): @@ -885,7 +889,7 @@ def test_copy_metadata_files_api(_copy_from_transfer_sources, authenticate_reque @mock.patch( - "components.filesystem_ajax.views.start_transfer", + "archivematica.dashboard.components.filesystem_ajax.views.start_transfer", return_value={}, ) def test_start_transfer_api_decodes_paths(start_transfer_view, admin_client): @@ -907,9 +911,9 @@ def test_start_transfer_api_decodes_paths(start_transfer_view, admin_client): @mock.patch( - "contrib.mcp.client.gearman.JOB_COMPLETE", + "archivematica.dashboard.contrib.mcp.client.gearman.JOB_COMPLETE", ) -@mock.patch("contrib.mcp.client.GearmanClient") +@mock.patch("archivematica.dashboard.contrib.mcp.client.GearmanClient") def test_reingest_approve(gearman_client, job_complete, admin_client): gearman_client.return_value = mock.Mock( **{ @@ -1070,7 +1074,9 @@ def test_unapproved_transfers(admin_client): "mcpclient_error", ], ) -@mock.patch("contrib.mcp.client.GearmanClient", side_effect=Exception()) +@mock.patch( + "archivematica.dashboard.contrib.mcp.client.GearmanClient", side_effect=Exception() +) def test_approve_transfer_failures( gearman_client, post_data, expected_error, admin_client ): @@ -1083,8 +1089,8 @@ def test_approve_transfer_failures( assert payload == {"error": True, "message": expected_error} -@mock.patch("contrib.mcp.client.gearman.JOB_COMPLETE") -@mock.patch("contrib.mcp.client.GearmanClient") +@mock.patch("archivematica.dashboard.contrib.mcp.client.gearman.JOB_COMPLETE") +@mock.patch("archivematica.dashboard.contrib.mcp.client.GearmanClient") def test_approve_transfer(gearman_client, job_complete, admin_client): helpers.set_setting("dashboard_uuid", "test-uuid") diff --git a/tests/dashboard/test_api_v2beta.py b/tests/dashboard/test_api_v2beta.py index a73a0b59fb..78ee010944 100644 --- a/tests/dashboard/test_api_v2beta.py +++ b/tests/dashboard/test_api_v2beta.py @@ -2,13 +2,14 @@ import pathlib from unittest import mock -from archivematicaFunctions import b64encode_string -from components import helpers -from components.api import validators from django.test import Client from django.test import TestCase from django.urls import reverse -from version import get_full_version + +from archivematica.archivematicaCommon.archivematicaFunctions import b64encode_string +from archivematica.archivematicaCommon.version import get_full_version +from archivematica.dashboard.components import helpers +from archivematica.dashboard.components.api import validators TEST_USER_FIXTURE = pathlib.Path(__file__).parent / "fixtures" / "test_user.json" @@ -79,7 +80,10 @@ def test_package_create_with_errors(self): ) assert resp.status_code == 400 - @mock.patch("components.api.views.MCPClient", return_value=MCPClientMock()) + @mock.patch( + "archivematica.dashboard.components.api.views.MCPClient", + return_value=MCPClientMock(), + ) def test_package_create_mcpclient_ok(self, patcher): resp = self.client.post( "/api/v2beta/package/", @@ -92,7 +96,8 @@ def test_package_create_mcpclient_ok(self, patcher): ) @mock.patch( - "components.api.views.MCPClient", return_value=MCPClientMock(fails=True) + "archivematica.dashboard.components.api.views.MCPClient", + return_value=MCPClientMock(fails=True), ) def test_package_create_mcpclient_fails(self, patcher): resp = self.client.post( diff --git a/tests/dashboard/test_auth.py b/tests/dashboard/test_auth.py index d32932367a..bab1526820 100644 --- a/tests/dashboard/test_auth.py +++ b/tests/dashboard/test_auth.py @@ -1,8 +1,6 @@ import json import pathlib -from components import helpers -from components.helpers import generate_api_key from django.conf import settings from django.contrib.auth import get_user_model from django.test import TestCase @@ -10,6 +8,9 @@ from django.urls import reverse from tastypie.models import ApiKey +from archivematica.dashboard.components import helpers +from archivematica.dashboard.components.helpers import generate_api_key + TEST_USER_FIXTURE = pathlib.Path(__file__).parent / "fixtures" / "test_user.json" diff --git a/tests/dashboard/test_backlog.py b/tests/dashboard/test_backlog.py index c80d93bf8e..f531d5f0ee 100644 --- a/tests/dashboard/test_backlog.py +++ b/tests/dashboard/test_backlog.py @@ -1,11 +1,12 @@ import json import pathlib -from components import helpers from django.test import TestCase from django.test.client import Client from django.urls import reverse +from archivematica.dashboard.components import helpers + TEST_USER_FIXTURE = pathlib.Path(__file__).parent / "fixtures" / "test_user.json" diff --git a/tests/dashboard/test_cas.py b/tests/dashboard/test_cas.py index 21979503ac..7fe8e7709e 100644 --- a/tests/dashboard/test_cas.py +++ b/tests/dashboard/test_cas.py @@ -1,9 +1,6 @@ from unittest import mock import pytest -from components import helpers -from components.accounts.backends import CustomCASBackend -from components.accounts.signals import _cas_user_is_administrator from django.conf import settings from django.contrib.auth.models import User from django.test import RequestFactory @@ -11,6 +8,12 @@ from django.test.client import Client from django.urls import reverse +from archivematica.dashboard.components import helpers +from archivematica.dashboard.components.accounts.backends import CustomCASBackend +from archivematica.dashboard.components.accounts.signals import ( + _cas_user_is_administrator, +) + TEST_CAS_USER = "casuser" TEST_CAS_ADMIN_ATTRIBUTE = "usertype" TEST_CAS_ADMIN_ATTRIBUTE_VALUE_POSITIVE = "admin" diff --git a/tests/dashboard/test_dashboardsetting_manager.py b/tests/dashboard/test_dashboardsetting_manager.py index 3a6f8d82ca..17c4624b8f 100644 --- a/tests/dashboard/test_dashboardsetting_manager.py +++ b/tests/dashboard/test_dashboardsetting_manager.py @@ -1,5 +1,6 @@ import pytest -from main.models import DashboardSetting + +from archivematica.dashboard.main.models import DashboardSetting @pytest.mark.django_db diff --git a/tests/dashboard/test_filesystem_ajax.py b/tests/dashboard/test_filesystem_ajax.py index e0eac07193..9f7fd62990 100644 --- a/tests/dashboard/test_filesystem_ajax.py +++ b/tests/dashboard/test_filesystem_ajax.py @@ -6,14 +6,15 @@ from unittest import mock import pytest -from archivematicaFunctions import b64encode_string -from components import helpers -from components.filesystem_ajax import views from django.test import TestCase from django.test.client import Client from django.test.client import RequestFactory from django.urls import reverse -from main import models + +from archivematica.archivematicaCommon.archivematicaFunctions import b64encode_string +from archivematica.dashboard.components import helpers +from archivematica.dashboard.components.filesystem_ajax import views +from archivematica.dashboard.main import models TEST_USER_FIXTURE = Path(__file__).parent / "fixtures" / "test_user.json" SIP_ARRANGE_FIXTURE = Path(__file__).parent / "fixtures" / "sip_arrange.json" @@ -233,11 +234,11 @@ def test_copy_from_arrange_to_completed(self): sip_uuid = "a29e7e86-eca9-43b6-b059-6f23a9802dc8" models.SIP.objects.create(uuid=sip_uuid) with mock.patch( - "components.filesystem_ajax.views.storage_service.get_files_from_backlog", + "archivematica.dashboard.components.filesystem_ajax.views.storage_service.get_files_from_backlog", return_value=("12345", None), ): with mock.patch( - "components.filesystem_ajax.views._create_arranged_sip", + "archivematica.dashboard.components.filesystem_ajax.views._create_arranged_sip", return_value=None, ) as create_arranged_sip_mock: response = self.client.post( @@ -312,11 +313,11 @@ def test_copy_from_arrange_to_completed_from_bagit_transfer(self): ) with mock.patch( - "components.filesystem_ajax.views.storage_service.get_files_from_backlog", + "archivematica.dashboard.components.filesystem_ajax.views.storage_service.get_files_from_backlog", return_value=("369cdbfc-69b1-4003-8f8c-31a537d03e85", None), ): with mock.patch( - "components.filesystem_ajax.views._create_arranged_sip", + "archivematica.dashboard.components.filesystem_ajax.views._create_arranged_sip", return_value=None, ) as create_arranged_sip_mock: response = self.client.post( @@ -462,7 +463,7 @@ def test_copy_from_arrange_to_completed_handles_name_clashes(self): with self.settings(SHARED_DIRECTORY=str(shared_dir)): with mock.patch( - "components.filesystem_ajax.views.storage_service.get_files_from_backlog", + "archivematica.dashboard.components.filesystem_ajax.views.storage_service.get_files_from_backlog", return_value=("12345", None), ): with mock.patch("shutil.move") as move_mock: @@ -499,7 +500,7 @@ def test_copy_from_arrange_to_completed_handles_name_clashes(self): ids=["regular_sip", "partial_reingest"], ) @mock.patch( - "components.filesystem_ajax.views._copy_from_transfer_sources", + "archivematica.dashboard.components.filesystem_ajax.views._copy_from_transfer_sources", return_value=(None, ""), ) def test_copy_metadata_files( @@ -556,13 +557,17 @@ def test_copy_metadata_files( (False, False), # Download ], ) -@mock.patch("components.helpers.stream_file_from_storage_service") -@mock.patch("components.helpers.send_file") -@mock.patch("storageService.extract_file_url") +@mock.patch( + "archivematica.dashboard.components.helpers.stream_file_from_storage_service" +) +@mock.patch("archivematica.dashboard.components.helpers.send_file") +@mock.patch("archivematica.archivematicaCommon.storageService.extract_file_url") @mock.patch("os.path.exists") -@mock.patch("storageService.get_first_location") -@mock.patch("elasticSearchFunctions.get_client") -@mock.patch("elasticSearchFunctions.get_transfer_file_info") +@mock.patch("archivematica.archivematicaCommon.storageService.get_first_location") +@mock.patch("archivematica.archivematicaCommon.elasticSearchFunctions.get_client") +@mock.patch( + "archivematica.archivematicaCommon.elasticSearchFunctions.get_transfer_file_info" +) def test_download_by_uuid( mock_get_file_info, get_client, @@ -630,11 +635,11 @@ def test_contents_sorting(db, tmp_path, admin_client): @pytest.mark.django_db @mock.patch( - "storageService.get_first_location", + "archivematica.archivematicaCommon.storageService.get_first_location", return_value={"uuid": "355d110f-b641-4b6b-b1c0-8426e63951e5"}, ) @mock.patch( - "storageService.get_file_metadata", + "archivematica.archivematicaCommon.storageService.get_file_metadata", side_effect=[ [ { @@ -651,7 +656,7 @@ def test_contents_sorting(db, tmp_path, admin_client): ], ) @mock.patch( - "storageService.browse_location", + "archivematica.archivematicaCommon.storageService.browse_location", return_value={ "directories": [], "entries": ["file1.txt", "file2.txt"], diff --git a/tests/dashboard/test_helpers.py b/tests/dashboard/test_helpers.py index 48fb690087..677ee64cee 100644 --- a/tests/dashboard/test_helpers.py +++ b/tests/dashboard/test_helpers.py @@ -3,7 +3,8 @@ import pytest import requests -from components import helpers + +from archivematica.dashboard.components import helpers CONTENT_TYPE = "content-type" CONTENT_DISPOSITION = "content-disposition" @@ -54,7 +55,8 @@ def mets_stream(tmpdir, mets_hdr): @mock.patch( - "components.helpers.get_setting", return_value="http://storage-service-url/" + "archivematica.dashboard.components.helpers.get_setting", + return_value="http://storage-service-url/", ) @mock.patch("amclient.AMClient.extract_file") def test_stream_mets_from_disconnected_storage(extract_file, get_setting): @@ -71,7 +73,8 @@ def test_stream_mets_from_disconnected_storage(extract_file, get_setting): @mock.patch( - "components.helpers.get_setting", return_value="http://storage-service-url/" + "archivematica.dashboard.components.helpers.get_setting", + return_value="http://storage-service-url/", ) @mock.patch("amclient.AMClient.extract_file") def test_stream_mets_from_storage_no_file(extract_file, get_setting, tmp_path): @@ -91,7 +94,8 @@ def test_stream_mets_from_storage_no_file(extract_file, get_setting, tmp_path): @mock.patch( - "components.helpers.get_setting", return_value="http://storage-service-url/" + "archivematica.dashboard.components.helpers.get_setting", + return_value="http://storage-service-url/", ) @mock.patch("amclient.AMClient.extract_file") def test_stream_mets_from_storage_success(extract_file, get_setting, mets_hdr, tmpdir): diff --git a/tests/dashboard/test_ingest.py b/tests/dashboard/test_ingest.py index 11085e1eaf..2a0ba6e065 100644 --- a/tests/dashboard/test_ingest.py +++ b/tests/dashboard/test_ingest.py @@ -6,17 +6,22 @@ import pytest from agentarchives.archivesspace import ArchivesSpaceError -from archivematicaFunctions import b64decode_string -from components import helpers -from components.ingest.views import _adjust_directories_draggability -from components.ingest.views import _es_results_to_appraisal_tab_format -from components.ingest.views_as import get_as_system_client from django.test import TestCase from django.test.client import Client from django.urls import reverse -from main.models import Access -from main.models import ArchivesSpaceDIPObjectResourcePairing -from main.models import DashboardSetting + +from archivematica.archivematicaCommon.archivematicaFunctions import b64decode_string +from archivematica.dashboard.components import helpers +from archivematica.dashboard.components.ingest.views import ( + _adjust_directories_draggability, +) +from archivematica.dashboard.components.ingest.views import ( + _es_results_to_appraisal_tab_format, +) +from archivematica.dashboard.components.ingest.views_as import get_as_system_client +from archivematica.dashboard.main.models import Access +from archivematica.dashboard.main.models import ArchivesSpaceDIPObjectResourcePairing +from archivematica.dashboard.main.models import DashboardSetting TEST_USER_FIXTURE = pathlib.Path(__file__).parent / "fixtures" / "test_user.json" SIP_FIXTURE = pathlib.Path(__file__).parent / "fixtures" / "sip.json" diff --git a/tests/dashboard/test_middleware.py b/tests/dashboard/test_middleware.py index d9ca1f939f..a5dc99b8dc 100644 --- a/tests/dashboard/test_middleware.py +++ b/tests/dashboard/test_middleware.py @@ -1,13 +1,14 @@ import pathlib -from components import helpers from django.conf import settings from django.contrib.auth import get_user_model from django.test import TestCase from django.test import override_settings from django.test.client import Client from django.urls import reverse -from installer.middleware import _load_exempt_urls + +from archivematica.dashboard.components import helpers +from archivematica.dashboard.installer.middleware import _load_exempt_urls TEST_USER_FIXTURE = pathlib.Path(__file__).parent / "fixtures" / "test_user.json" @@ -68,7 +69,9 @@ def setUp(self): def test_audit_log_middleware_adds_username(self): """Test that X-Username is added for authenticated users.""" with self.modify_settings( - MIDDLEWARE={"append": "middleware.common.AuditLogMiddleware"} + MIDDLEWARE={ + "append": "archivematica.dashboard.middleware.common.AuditLogMiddleware" + } ): response = self.client.get("/transfer/", follow=True) self.assertTrue(response.has_header("X-Username")) @@ -82,7 +85,9 @@ def test_audit_log_middleware_unauthenticated(self): an unauthenticated user. """ with self.modify_settings( - MIDDLEWARE={"append": "middleware.common.AuditLogMiddleware"} + MIDDLEWARE={ + "append": "archivematica.dashboard.middleware.common.AuditLogMiddleware" + } ): self.client.logout() @@ -101,7 +106,9 @@ def setUp(self): ) def test_middleware_stores_provider_name_in_session(self): with self.modify_settings( - MIDDLEWARE={"append": "middleware.common.OidcCaptureQueryParamMiddleware"}, + MIDDLEWARE={ + "append": "archivematica.dashboard.middleware.common.OidcCaptureQueryParamMiddleware" + }, ): # The middleware class converts the provider name to uppercase. response = self.client.get( diff --git a/tests/dashboard/test_migrations.py b/tests/dashboard/test_migrations.py index 48abffb8f5..1f8c613c8e 100644 --- a/tests/dashboard/test_migrations.py +++ b/tests/dashboard/test_migrations.py @@ -3,7 +3,9 @@ import pytest # Import package that starts with a number. -mod = importlib.import_module("main.migrations.0066_archivesspace_base_url") +mod = importlib.import_module( + "archivematica.dashboard.main.migrations.0066_archivesspace_base_url" +) @pytest.mark.parametrize( diff --git a/tests/dashboard/test_models.py b/tests/dashboard/test_models.py index 97501071a0..69f3c55be7 100644 --- a/tests/dashboard/test_models.py +++ b/tests/dashboard/test_models.py @@ -5,7 +5,8 @@ import pytest from django.db import IntegrityError from django.test import TestCase -from main import models + +from archivematica.dashboard.main import models TEST_USER_FIXTURE = pathlib.Path(__file__).parent / "fixtures" / "test_user.json" @@ -66,7 +67,7 @@ def test_unitvariable_update_variable(self): ) -@mock.patch("main.models.Agent") +@mock.patch("archivematica.dashboard.main.models.Agent") def test_create_user_agent(agent_mock): agent_mock.objects.update_or_create.return_value = (None, False) user_mock = mock.Mock( @@ -94,7 +95,10 @@ def test_sip_arrange_create_many(db): assert models.SIPArrange.objects.count() == 2 -@mock.patch("main.models.SIPArrange.objects.bulk_create", side_effect=IntegrityError()) +@mock.patch( + "archivematica.dashboard.main.models.SIPArrange.objects.bulk_create", + side_effect=IntegrityError(), +) def test_sip_arrange_create_many_with_integrity_error(bulk_create): arrange1_mock = mock.Mock() arrange2_mock = mock.Mock() diff --git a/tests/dashboard/test_oidc.py b/tests/dashboard/test_oidc.py index fff984c1be..a368f4215d 100644 --- a/tests/dashboard/test_oidc.py +++ b/tests/dashboard/test_oidc.py @@ -1,6 +1,7 @@ import pytest import pytest_django -from components.accounts.backends import CustomOIDCBackend + +from archivematica.dashboard.components.accounts.backends import CustomOIDCBackend @pytest.fixture diff --git a/tests/dashboard/test_password_validation.py b/tests/dashboard/test_password_validation.py index 60f4ae68ac..3a73828574 100644 --- a/tests/dashboard/test_password_validation.py +++ b/tests/dashboard/test_password_validation.py @@ -29,7 +29,9 @@ ) def test_password_complexity_validator(password, raises_exception): VALIDATOR_CONFIG = [ - {"NAME": "components.accounts.validators.PasswordComplexityValidator"} + { + "NAME": "archivematica.dashboard.components.accounts.validators.PasswordComplexityValidator" + } ] validators = get_password_validators(VALIDATOR_CONFIG) diff --git a/tests/dashboard/test_rights.py b/tests/dashboard/test_rights.py index 452f2a9e3b..3ac180b0e7 100644 --- a/tests/dashboard/test_rights.py +++ b/tests/dashboard/test_rights.py @@ -1,13 +1,14 @@ import uuid import pytest -from components.rights import load -from main.models import SIP -from main.models import File -from main.models import MetadataAppliesToType -from main.models import Transfer from metsrw.plugins import premisrw +from archivematica.dashboard.components.rights import load +from archivematica.dashboard.main.models import SIP +from archivematica.dashboard.main.models import File +from archivematica.dashboard.main.models import MetadataAppliesToType +from archivematica.dashboard.main.models import Transfer + RIGHTS_STATEMENT_IDENTIFIER = ( "rights_statement_identifier", ("rights_statement_identifier_type", "UUID"), diff --git a/tests/dashboard/test_shibboleth_login.py b/tests/dashboard/test_shibboleth_login.py index 14ad5655d6..7e123f42d0 100644 --- a/tests/dashboard/test_shibboleth_login.py +++ b/tests/dashboard/test_shibboleth_login.py @@ -1,9 +1,10 @@ import pytest -from components import helpers from django.conf import settings from django.contrib.auth.models import User from django.test import TestCase +from archivematica.dashboard.components import helpers + @pytest.mark.skipif( not settings.SHIBBOLETH_AUTHENTICATION, diff --git a/tests/dashboard/test_signals.py b/tests/dashboard/test_signals.py index cc5848b23e..5613207574 100644 --- a/tests/dashboard/test_signals.py +++ b/tests/dashboard/test_signals.py @@ -1,7 +1,8 @@ import pathlib from django.test import TestCase -from main import models + +from archivematica.dashboard.main import models METADATA_TYPE_FIXTURE = ( pathlib.Path(__file__).parent / "fixtures" / "metadata_type.json" diff --git a/tests/dashboard/test_templatetags.py b/tests/dashboard/test_templatetags.py index 6ba3c8720c..c7985b0606 100644 --- a/tests/dashboard/test_templatetags.py +++ b/tests/dashboard/test_templatetags.py @@ -2,10 +2,11 @@ from django.contrib.auth.models import User from django.test import TestCase -from main.templatetags.user import api_key -from main.templatetags.user import logout_link from tastypie.models import ApiKey +from archivematica.dashboard.main.templatetags.user import api_key +from archivematica.dashboard.main.templatetags.user import logout_link + TEST_USER_FIXTURE = pathlib.Path(__file__).parent / "fixtures" / "test_user.json" diff --git a/tests/dashboard/test_transfer.py b/tests/dashboard/test_transfer.py index 45432cf69c..d91b87fa01 100644 --- a/tests/dashboard/test_transfer.py +++ b/tests/dashboard/test_transfer.py @@ -1,12 +1,13 @@ import pathlib import pytest -from components import helpers from django.test import TestCase from django.test.client import Client from django.urls import reverse -from main.models import DublinCore -from main.models import TransferMetadataFieldValue + +from archivematica.dashboard.components import helpers +from archivematica.dashboard.main.models import DublinCore +from archivematica.dashboard.main.models import TransferMetadataFieldValue TEST_USER_FIXTURE = pathlib.Path(__file__).parent / "fixtures" / "test_user.json" TRANSFER_FIXTURE = pathlib.Path(__file__).parent / "fixtures" / "transfer.json" diff --git a/tests/integration/docker-compose.yml b/tests/integration/docker-compose.yml index daf630d866..c09b8116c0 100644 --- a/tests/integration/docker-compose.yml +++ b/tests/integration/docker-compose.yml @@ -44,7 +44,7 @@ services: AM_GUNICORN_ACCESSLOG: "/dev/null" AM_GUNICORN_RELOAD: "true" AM_GUNICORN_RELOAD_ENGINE: "auto" - DJANGO_SETTINGS_MODULE: "settings.testmysql" + DJANGO_SETTINGS_MODULE: "archivematica.dashboard.settings.testmysql" ARCHIVEMATICA_DASHBOARD_DASHBOARD_GEARMAN_SERVER: "gearmand:4730" ARCHIVEMATICA_DASHBOARD_DASHBOARD_ELASTICSEARCH_SERVER: "elasticsearch:9200" ARCHIVEMATICA_DASHBOARD_DASHBOARD_PROMETHEUS_ENABLED: "1" diff --git a/tests/integration/test_oidc_auth.py b/tests/integration/test_oidc_auth.py index bcda6ae2fe..7033f4ad18 100644 --- a/tests/integration/test_oidc_auth.py +++ b/tests/integration/test_oidc_auth.py @@ -2,13 +2,14 @@ import uuid import pytest -from components import helpers from django.contrib.auth.models import User from django.urls import reverse from playwright.sync_api import Page from pytest_django.fixtures import SettingsWrapper from pytest_django.live_server_helper import LiveServer +from archivematica.dashboard.components import helpers + if "RUN_INTEGRATION_TESTS" not in os.environ: pytest.skip("Skipping integration tests", allow_module_level=True) From 0ef8a760d77f815a68b2ea8b65cfc46778cd1492 Mon Sep 17 00:00:00 2001 From: Douglas Cerna Date: Wed, 26 Mar 2025 06:20:12 -0600 Subject: [PATCH 30/99] Update Storage Service development rules This adjusts the Storage Service related rules of the development environment to support the new src layout of the submodule. --- hack/Makefile | 12 ++++++------ hack/docker-compose.yml | 2 +- hack/submodules/archivematica-storage-service | 2 +- pyproject.toml | 11 ++++++----- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/hack/Makefile b/hack/Makefile index cec128c487..121aa51fcb 100644 --- a/hack/Makefile +++ b/hack/Makefile @@ -102,13 +102,13 @@ bootstrap-storage-service: ## Bootstrap Storage Service (new database). docker compose run \ --rm \ --no-deps \ - --entrypoint /src/storage_service/manage.py \ + --entrypoint /src/src/archivematica/storage_service/manage.py \ archivematica-storage-service \ migrate --noinput docker compose run \ --rm \ --no-deps \ - --entrypoint /src/storage_service/manage.py \ + --entrypoint /src/src/archivematica/storage_service/manage.py \ archivematica-storage-service \ create_user \ --username="test" \ @@ -125,7 +125,7 @@ makemigrations-ss: --user $(CALLER_UID):$(CALLER_GID) \ --rm \ --no-deps \ - --entrypoint /src/storage_service/manage.py \ + --entrypoint /src/src/archivematica/storage_service/manage.py \ archivematica-storage-service \ makemigrations @@ -143,7 +143,7 @@ manage-ss: ## Run Django /manage.py on Storage Service, suppling [opt --user $(CALLER_UID):$(CALLER_GID) \ --rm \ --no-deps \ - --entrypoint /src/storage_service/manage.py \ + --entrypoint /src/src/archivematica/storage_service/manage.py \ archivematica-storage-service \ $(ARG) @@ -307,7 +307,7 @@ test-dashboard: start-mysql ## Run Dashboard tests. __TOXENVS_STORAGE_SERVICE = storage-service test-storage-service: start-mysql ## Run Storage Service tests. $(call grant_all_on_dbs,$(__TEST_DBS_STORAGE_SERVICE)) - $(call run_toxenv,$(__TOXENVS_STORAGE_SERVICE),settings.testmysql) + $(call run_toxenv,$(__TOXENVS_STORAGE_SERVICE),archivematica.storage_service.storage_service.settings.testmysql) test-storage-service-integration: ## Run Storage Service unit and integration tests using MySQL and MinIO. $(CURDIR)/submodules/archivematica-storage-service/tests/integration/run.sh @@ -320,7 +320,7 @@ test-archivematica-common: start-mysql ## Run Archivematica Common tests. test-migrations: start-mysql ## Check there are no pending migrations. $(call create_dbs,$(__TEST_DBS_MIGRATIONS)) $(call run_toxenv,migrations-dashboard,archivematica.dashboard.settings.testmysql) - $(call run_toxenv,migrations-storage-service,settings.testmysql) + $(call run_toxenv,migrations-storage-service,archivematica.storage_service.storage_service.settings.testmysql) __TOXENVS_LINTING = linting test-linting: ## Check linting. diff --git a/hack/docker-compose.yml b/hack/docker-compose.yml index 3d61e8b0db..48c6cac53b 100644 --- a/hack/docker-compose.yml +++ b/hack/docker-compose.yml @@ -216,7 +216,7 @@ services: SS_GUNICORN_ACCESSLOG: "/dev/null" SS_GUNICORN_RELOAD: "true" SS_GUNICORN_RELOAD_ENGINE: "auto" - DJANGO_SETTINGS_MODULE: "storage_service.settings.local" + DJANGO_SETTINGS_MODULE: "archivematica.storage_service.storage_service.settings.local" SS_DB_URL: "mysql://archivematica:demo@mysql/SS" SS_GNUPG_HOME_PATH: "/var/archivematica/storage_service/.gnupg" SS_PROMETHEUS_ENABLED: "true" diff --git a/hack/submodules/archivematica-storage-service b/hack/submodules/archivematica-storage-service index 5650a38ee3..db5b964f29 160000 --- a/hack/submodules/archivematica-storage-service +++ b/hack/submodules/archivematica-storage-service @@ -1 +1 @@ -Subproject commit 5650a38ee3bdfeb4bd32785381ba4863ad5b92e7 +Subproject commit db5b964f29a9a08da9869ce2bd5e3549c1610e20 diff --git a/pyproject.toml b/pyproject.toml index f8b3299687..37f41dd50b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -158,11 +158,7 @@ legacy_tox_ini = """ HACK_DIR = {toxinidir}/hack # Storage Service STORAGE_SERVICE_ROOT = {env:HACK_DIR}/submodules/archivematica-storage-service - STORAGE_SERVICE_DIR = {env:STORAGE_SERVICE_ROOT}/storage_service - STORAGE_SERVICE_PYTHONPATH = {env:STORAGE_SERVICE_DIR}:{env:STORAGE_SERVICE_DIR}/storage_service # TOXENV-specific - storage-service: PYTHONPATH = {env:STORAGE_SERVICE_PYTHONPATH} - migrations-storage-service: PYTHONPATH = {env:STORAGE_SERVICE_PYTHONPATH} # Setting HOME prevents Python's pwd module to ask for a real uid inside # the container, and using {temp_dir} allows caching the pre-commit # dependencies in the tox host @@ -177,13 +173,18 @@ legacy_tox_ini = """ [testenv:storage-service] deps = -r{env:STORAGE_SERVICE_ROOT}/requirements-dev.txt + commands = + pip install -e {env:STORAGE_SERVICE_ROOT} + {[testenv]commands} [testenv:migrations-dashboard] commands = django-admin makemigrations --check --dry-run [testenv:migrations-storage-service] deps = {[testenv:storage-service]deps} - commands = {[testenv:migrations-dashboard]commands} + commands = + pip install -e {env:STORAGE_SERVICE_ROOT} + {[testenv:migrations-dashboard]commands} [testenv:linting] basepython = python3 From 7273ab7d2fa27cee5519a8286e6f0866fc419365 Mon Sep 17 00:00:00 2001 From: Douglas Cerna Date: Mon, 31 Mar 2025 06:18:43 -0600 Subject: [PATCH 31/99] Do not show user API keys This updates the Administration > General view of the Dashboard to not show the API key of the user that connects with the Storage Service. The current plain text field has been replaced with a password field to do so. Also the Dashboard user views and their redirects have been updated to show the API key only once on re-generation. This uses Django's messages framework to render an alert with a button to copy the API key to the browser's clipboard. --- .../dashboard/components/accounts/forms.py | 4 +- .../dashboard/components/accounts/views.py | 26 ++++++++--- .../components/administration/forms.py | 9 ++++ .../dashboard/components/helpers.py | 5 ++- src/archivematica/dashboard/media/js/misc.js | 24 ++++++++++ .../dashboard/templates/accounts/edit.html | 8 ++-- .../dashboard/templates/accounts/profile.html | 4 -- .../accounts/user_api_key_alert.html | 16 +++++++ .../components/accounts/test_views.py | 44 +++++++++++++------ .../administration/test_administration.py | 44 +++++++++++++++++-- 10 files changed, 151 insertions(+), 33 deletions(-) create mode 100644 src/archivematica/dashboard/templates/accounts/user_api_key_alert.html diff --git a/src/archivematica/dashboard/components/accounts/forms.py b/src/archivematica/dashboard/components/accounts/forms.py index acf48bf15c..5aa138ab90 100644 --- a/src/archivematica/dashboard/components/accounts/forms.py +++ b/src/archivematica/dashboard/components/accounts/forms.py @@ -85,7 +85,7 @@ class UserChangeForm(DjangoUserChangeForm): is_superuser = forms.BooleanField(label="Administrator", required=False) regenerate_api_key = forms.CharField( widget=forms.CheckboxInput, - label="Regenerate API key (shown below)?", + label="Regenerate API key?", required=False, ) @@ -152,7 +152,7 @@ def save(self, commit=True): class ApiKeyForm(forms.Form): regenerate_api_key = forms.BooleanField( widget=forms.CheckboxInput, - label="Regenerate API key (shown below)?", + label="Regenerate API key?", required=False, ) diff --git a/src/archivematica/dashboard/components/accounts/views.py b/src/archivematica/dashboard/components/accounts/views.py index 16193d2f78..351d951c8f 100644 --- a/src/archivematica/dashboard/components/accounts/views.py +++ b/src/archivematica/dashboard/components/accounts/views.py @@ -26,6 +26,7 @@ from django.shortcuts import get_object_or_404 from django.shortcuts import redirect from django.shortcuts import render +from django.template.loader import render_to_string from django.urls import reverse from django.utils.translation import gettext as _ from mozilla_django_oidc.views import OIDCAuthenticationRequestView @@ -76,10 +77,17 @@ def add(request): ) +def _show_api_key_alert(request, key): + messages.success( + request, + render_to_string("accounts/user_api_key_alert.html", {"key": key}, request), + ) + + def profile(request): # If users are editable in this setup, go to the editable profile view if settings.ALLOW_USER_EDITS: - return edit(request) + return edit(request, return_view="accounts:profile") user = request.user user_profile = UserProfile.objects.get(user=user) @@ -90,7 +98,9 @@ def profile(request): userprofileform = UserProfileForm(request.POST, instance=user_profile) if form.is_valid() and userprofileform.is_valid(): if form.cleaned_data["regenerate_api_key"]: - generate_api_key(user) + key = generate_api_key(user) + _show_api_key_alert(request, key) + userprofileform.save() return redirect("accounts:profile") @@ -105,7 +115,7 @@ def profile(request): ) -def edit(request, id=None): +def edit(request, id=None, return_view=None): # Forbidden if user isn't an admin and is trying to edit another user if str(request.user.id) != str(id) and id is not None: if request.user.is_superuser is False: @@ -143,11 +153,16 @@ def edit(request, id=None): # regenerate API key if requested regenerate_api_key = request.POST.get("regenerate_api_key", "") if regenerate_api_key != "": - generate_api_key(user) + key = generate_api_key(user) + _show_api_key_alert(request, key) # determine where to redirect to if request.user.is_superuser: - return_view = "accounts:accounts_index" + return_view = request.POST.get("return_view") + if return_view: + return_view = return_view + else: + return_view = reverse("accounts:edit", kwargs={"id": user.pk}) else: return_view = "accounts:profile" @@ -170,6 +185,7 @@ def edit(request, id=None): "userprofileform": userprofileform, "user": user, "title": title, + "return_view": return_view, }, ) diff --git a/src/archivematica/dashboard/components/administration/forms.py b/src/archivematica/dashboard/components/administration/forms.py index cc135b6242..51adb675ee 100644 --- a/src/archivematica/dashboard/components/administration/forms.py +++ b/src/archivematica/dashboard/components/administration/forms.py @@ -231,6 +231,8 @@ def to_python(self, value): help_text=_( "API key of the storage service user. E.g. 45f7684483044809b2de045ba59dc876b11b9810" ), + required=False, + widget=forms.PasswordInput, ) storage_service_use_default_config = forms.BooleanField( required=False, @@ -241,6 +243,13 @@ def to_python(self, value): ), ) + def save(self, *args, **kwargs): + if not self.cleaned_data["storage_service_apikey"]: + # If the API key was not provided, remove it from the cleaned data + # to avoid overwriting its existing stored value. + del self.cleaned_data["storage_service_apikey"] + return super().save(*args, **kwargs) + class ChecksumSettingsForm(SettingsForm): CHOICES = ( diff --git a/src/archivematica/dashboard/components/helpers.py b/src/archivematica/dashboard/components/helpers.py index a0e505097a..279db1d38c 100644 --- a/src/archivematica/dashboard/components/helpers.py +++ b/src/archivematica/dashboard/components/helpers.py @@ -452,9 +452,12 @@ def generate_api_key(user): Generate API key for a user """ api_key, _ = ApiKey.objects.get_or_create(user=user) - api_key.key = api_key.generate_key() + result = api_key.generate_key() + api_key.key = result api_key.save() + return result + def get_api_allowlist(): """Get API allowlist setting.""" diff --git a/src/archivematica/dashboard/media/js/misc.js b/src/archivematica/dashboard/media/js/misc.js index be55b64073..8300db7e75 100644 --- a/src/archivematica/dashboard/media/js/misc.js +++ b/src/archivematica/dashboard/media/js/misc.js @@ -138,4 +138,28 @@ $(document).ready( $(this).closest('.content').hide(); $(this).closest('.preview-help-text').children('.preview').show(); }); + + // Set up the button which allows users to copy the API key to the clipboard. + $('#copy-api-key-button').tooltip().click(function () { + var button = $(this); + navigator.clipboard.writeText($('#api-key').val()).then(function () { + var button_icon = $('#copy-button-icon'); + var icon_original_class = button_icon.data('icon-original-class'); + var icon_clicked_class = button_icon.data('icon-clicked-class'); + + // Update the button icon. + button_icon.removeClass(icon_original_class).addClass(icon_clicked_class).css('color', 'green'); + + // Update the button tooltip. + button.tooltip('option', 'content', button.data('clicked-label')).tooltip('open'); + + // Reset the button after 2 seconds. + setTimeout(function () { + button_icon.removeClass(icon_clicked_class).addClass(icon_original_class).css('color', ''); + button.tooltip('option', 'content', button.data('original-label')).tooltip('close'); + }, 2000); + }).catch(function (err) { + console.error('Failed to copy API key to clipboard: ', err); + }); + }); }); diff --git a/src/archivematica/dashboard/templates/accounts/edit.html b/src/archivematica/dashboard/templates/accounts/edit.html index 32af8b413b..b6ada6145a 100644 --- a/src/archivematica/dashboard/templates/accounts/edit.html +++ b/src/archivematica/dashboard/templates/accounts/edit.html @@ -29,12 +29,12 @@ {% include "_form.html" %} -
-
{{ user|api_key }}
-
- {% include "_form.html" with form=userprofileform %} + {% if return_view %} + + {% endif %} +
{% trans "Cancel" %} diff --git a/src/archivematica/dashboard/templates/accounts/profile.html b/src/archivematica/dashboard/templates/accounts/profile.html index ffd87eb158..01db7c2fb8 100644 --- a/src/archivematica/dashboard/templates/accounts/profile.html +++ b/src/archivematica/dashboard/templates/accounts/profile.html @@ -38,10 +38,6 @@ {% include "_form.html" %} -
-
{{ user|api_key }}
-
- {% include "_form.html" with form=userprofileform %}
diff --git a/src/archivematica/dashboard/templates/accounts/user_api_key_alert.html b/src/archivematica/dashboard/templates/accounts/user_api_key_alert.html new file mode 100644 index 0000000000..0f8e67a052 --- /dev/null +++ b/src/archivematica/dashboard/templates/accounts/user_api_key_alert.html @@ -0,0 +1,16 @@ +{% load i18n %} +

{% trans "Make sure to copy the API key now as you will not be able to see it again." %}

+
+{% trans 'Copy' as label_copy %} +{% trans 'Copied!' as label_copied %} +
+ + + + +
diff --git a/tests/dashboard/components/accounts/test_views.py b/tests/dashboard/components/accounts/test_views.py index 628201470a..aed7762e9e 100644 --- a/tests/dashboard/components/accounts/test_views.py +++ b/tests/dashboard/components/accounts/test_views.py @@ -101,6 +101,8 @@ def test_edit_user_view_renders_user_profile_fields( non_administrative_user_apikey: ApiKey, admin_client: Client, ) -> None: + expected_apikey = non_administrative_user_apikey.key + response = admin_client.get( reverse("accounts:edit", kwargs={"id": non_administrative_user.id}), follow=True ) @@ -112,7 +114,9 @@ def test_edit_user_view_renders_user_profile_fields( assert f'name="first_name" value="{non_administrative_user.first_name}"' in content assert f'name="last_name" value="{non_administrative_user.last_name}"' in content assert f'name="email" value="{non_administrative_user.email}"' in content - assert f"{non_administrative_user_apikey.key}" in content + + non_administrative_user_apikey.refresh_from_db() + assert non_administrative_user_apikey.key == expected_apikey @pytest.mark.django_db @@ -143,15 +147,15 @@ def test_edit_user_view_updates_user_profile_fields( assert response.status_code == 200 content = response.content.decode() + non_administrative_user.refresh_from_db() + assert "Saved" in content - assert ( - f'{new_username}' - in content - ) - assert f"{new_first_name} {new_last_name}" in content - assert f"{new_email}" in content + assert f"Edit user {non_administrative_user.username}" in content + assert f'name="username" value="{non_administrative_user.username}"' in content + assert f'name="first_name" value="{non_administrative_user.first_name}"' in content + assert f'name="last_name" value="{non_administrative_user.last_name}"' in content + assert f'name="email" value="{non_administrative_user.email}"' in content - non_administrative_user.refresh_from_db() assert non_administrative_user.check_password(new_password) @@ -180,7 +184,10 @@ def test_edit_user_view_regenerates_api_key( ) assert response.status_code == 200 - assert "Saved" in response.content.decode() + content = response.content.decode() + assert "Saved" in content + assert "Make sure to copy the API key now as you will not be able to see it again." + assert f'value="{expected_key}"' in content non_administrative_user_apikey.refresh_from_db() assert non_administrative_user_apikey.key == expected_key @@ -196,6 +203,7 @@ def test_user_profile_view_allows_users_to_edit_their_profile_fields( ) -> None: settings.ALLOW_USER_EDITS = True client.force_login(non_administrative_user) + expected_apikey = non_administrative_user_apikey.key response = client.get( reverse("accounts:profile"), @@ -209,7 +217,9 @@ def test_user_profile_view_allows_users_to_edit_their_profile_fields( assert f'name="first_name" value="{non_administrative_user.first_name}"' in content assert f'name="last_name" value="{non_administrative_user.last_name}"' in content assert f'name="email" value="{non_administrative_user.email}"' in content - assert f"{non_administrative_user_apikey.key}" in content + + non_administrative_user_apikey.refresh_from_db() + assert non_administrative_user_apikey.key == expected_apikey @pytest.mark.django_db @@ -222,6 +232,7 @@ def test_user_profile_view_denies_editing_profile_fields_if_setting_disables_it( ) -> None: settings.ALLOW_USER_EDITS = False client.force_login(non_administrative_user) + expected_apikey = non_administrative_user_apikey.key response = client.get( reverse("accounts:profile"), @@ -240,7 +251,9 @@ def test_user_profile_view_denies_editing_profile_fields_if_setting_disables_it( assert ( f"
{'yes' if non_administrative_user.is_superuser else 'no'}
" in content ) - assert f"{non_administrative_user_apikey.key}" in content + + non_administrative_user_apikey.refresh_from_db() + assert non_administrative_user_apikey.key == expected_apikey @pytest.mark.django_db @@ -276,7 +289,9 @@ def test_user_profile_view_regenerates_api_key_if_setting_disables_editing( assert ( f"
{'yes' if non_administrative_user.is_superuser else 'no'}
" in content ) - assert f"{expected_key}" in content + + non_administrative_user_apikey.refresh_from_db() + assert non_administrative_user_apikey.key == expected_key @pytest.mark.django_db @@ -289,6 +304,7 @@ def test_user_profile_view_does_not_regenerate_api_key_if_not_requested( ) -> None: settings.ALLOW_USER_EDITS = False client.force_login(non_administrative_user) + expected_apikey = non_administrative_user_apikey.key response = client.post(reverse("accounts:profile"), {}, follow=True) assert response.status_code == 200 @@ -304,4 +320,6 @@ def test_user_profile_view_does_not_regenerate_api_key_if_not_requested( assert ( f"
{'yes' if non_administrative_user.is_superuser else 'no'}
" in content ) - assert f"{non_administrative_user_apikey.key}" in content + + non_administrative_user_apikey.refresh_from_db() + assert non_administrative_user_apikey.key == expected_apikey diff --git a/tests/dashboard/components/administration/test_administration.py b/tests/dashboard/components/administration/test_administration.py index 87972db622..3b4010f579 100644 --- a/tests/dashboard/components/administration/test_administration.py +++ b/tests/dashboard/components/administration/test_administration.py @@ -127,10 +127,6 @@ def test_general_view_renders_initial_dashboard_settings( assert ( f'name="storage-storage_service_user" value="{storage_service_user}"' in content ) - assert ( - f'name="storage-storage_service_apikey" value="{storage_service_apikey}"' - in content - ) assert f'