From 0ed51394d85405fa195fd9f224e913363dd6f26d Mon Sep 17 00:00:00 2001 From: David Paul Graham Date: Thu, 22 Aug 2024 10:51:35 -0500 Subject: [PATCH 1/9] move manifest model module to models package --- server/manifest/models/__init__.py | 8 ++++++++ server/manifest/{models.py => models/manifest.py} | 1 - server/manifest/serializers.py | 12 ++++++------ server/manifest/tests/test_serializers.py | 2 +- 4 files changed, 15 insertions(+), 8 deletions(-) create mode 100644 server/manifest/models/__init__.py rename server/manifest/{models.py => models/manifest.py} (99%) diff --git a/server/manifest/models/__init__.py b/server/manifest/models/__init__.py new file mode 100644 index 00000000..76ffe63e --- /dev/null +++ b/server/manifest/models/__init__.py @@ -0,0 +1,8 @@ +from .manifest import ( + AdditionalInfo, + Manifest, + PortOfEntry, + draft_mtn, + manifest_factory, + validate_mtn, +) diff --git a/server/manifest/models.py b/server/manifest/models/manifest.py similarity index 99% rename from server/manifest/models.py rename to server/manifest/models/manifest.py index 6aa66b3d..6b4ef432 100644 --- a/server/manifest/models.py +++ b/server/manifest/models/manifest.py @@ -8,7 +8,6 @@ from django.db import models from django.db.models import Q, QuerySet from django.utils.translation import gettext_lazy as _ - from handler.models import Handler, Transporter from rcrasite.models import RcraSiteType, RcraStates from wasteline.models import WasteLine diff --git a/server/manifest/serializers.py b/server/manifest/serializers.py index d11bb90d..41d9a334 100644 --- a/server/manifest/serializers.py +++ b/server/manifest/serializers.py @@ -1,22 +1,22 @@ import logging from typing import Dict, override -from rest_framework import serializers - from handler.serializers import ( HandlerSerializer, TransporterSerializer, ) +from rcrasite.models import RcraStates +from rest_framework import serializers +from wasteline.serializers import ( + WasteLineSerializer, +) + from manifest.models import ( AdditionalInfo, Manifest, PortOfEntry, draft_mtn, ) -from rcrasite.models import RcraStates -from wasteline.serializers import ( - WasteLineSerializer, -) logger = logging.getLogger(__name__) diff --git a/server/manifest/tests/test_serializers.py b/server/manifest/tests/test_serializers.py index 267c93d8..a6149f22 100644 --- a/server/manifest/tests/test_serializers.py +++ b/server/manifest/tests/test_serializers.py @@ -1,8 +1,8 @@ import pytest +from wasteline.models import WasteLine from manifest.models import AdditionalInfo, Manifest from manifest.serializers import ManifestSerializer -from wasteline.models import WasteLine @pytest.fixture From 24904a6edd699eab8a1739a5dfe14538e0bfb4c5 Mon Sep 17 00:00:00 2001 From: David Paul Graham Date: Thu, 22 Aug 2024 10:57:02 -0500 Subject: [PATCH 2/9] move manifest serializer to package --- server/manifest/serializers/__init__.py | 1 + server/manifest/{serializers.py => serializers/manifest.py} | 0 2 files changed, 1 insertion(+) create mode 100644 server/manifest/serializers/__init__.py rename server/manifest/{serializers.py => serializers/manifest.py} (100%) diff --git a/server/manifest/serializers/__init__.py b/server/manifest/serializers/__init__.py new file mode 100644 index 00000000..71b29278 --- /dev/null +++ b/server/manifest/serializers/__init__.py @@ -0,0 +1 @@ +from .manifest import ManifestSerializer, MtnSerializer diff --git a/server/manifest/serializers.py b/server/manifest/serializers/manifest.py similarity index 100% rename from server/manifest/serializers.py rename to server/manifest/serializers/manifest.py From 195445db637198f3b825e719e21576564c726075 Mon Sep 17 00:00:00 2001 From: David Paul Graham Date: Thu, 22 Aug 2024 11:05:10 -0500 Subject: [PATCH 3/9] move handler serializers to manfiest app --- server/core/tests/test_rcrainfo_service.py | 4 +-- server/handler/serializers/__init__.py | 2 -- server/handler/serializers/base_serializer.py | 27 ------------------- .../handler/tests/test_handler_serializer.py | 2 +- .../tests/test_signature_serializer.py | 2 +- server/manifest/serializers/__init__.py | 2 ++ .../serializers/handler_serializer.py | 5 ++-- server/manifest/serializers/manifest.py | 8 +++--- .../serializers/signatures.py | 26 +++++++++++++++--- server/manifest/services/emanifest.py | 7 +++-- server/manifest/tests/test_models.py | 4 +-- server/manifest/views.py | 5 ++-- 12 files changed, 42 insertions(+), 52 deletions(-) delete mode 100644 server/handler/serializers/base_serializer.py rename server/{handler => manifest}/serializers/handler_serializer.py (99%) rename server/{handler => manifest}/serializers/signatures.py (89%) diff --git a/server/core/tests/test_rcrainfo_service.py b/server/core/tests/test_rcrainfo_service.py index c06cbfdd..b2ea8d12 100644 --- a/server/core/tests/test_rcrainfo_service.py +++ b/server/core/tests/test_rcrainfo_service.py @@ -1,12 +1,12 @@ from datetime import UTC, datetime import emanifest +from handler.models import QuickerSign +from manifest.serializers import QuickerSignSerializer from responses import matchers from rest_framework import status from core.services import RcraClient, get_rcra_client -from handler.models import QuickerSign -from handler.serializers import QuickerSignSerializer class TestRcrainfoService: diff --git a/server/handler/serializers/__init__.py b/server/handler/serializers/__init__.py index 85b78d62..e69de29b 100644 --- a/server/handler/serializers/__init__.py +++ b/server/handler/serializers/__init__.py @@ -1,2 +0,0 @@ -from .handler_serializer import HandlerSerializer, TransporterSerializer -from .signatures import ESignatureSerializer, PaperSignatureSerializer, QuickerSignSerializer diff --git a/server/handler/serializers/base_serializer.py b/server/handler/serializers/base_serializer.py deleted file mode 100644 index f43b6940..00000000 --- a/server/handler/serializers/base_serializer.py +++ /dev/null @@ -1,27 +0,0 @@ -from rest_framework import serializers - - -class HandlerBaseSerializer(serializers.ModelSerializer): - """ - The Django Trak app base serializers class used to share functionality - across trak app serializers universally. - """ - - def __str__(self): - return f"{self.__class__.__name__}" - - def __repr__(self): - return f"<{self.__class__.__name__}({self.data})>" - - def to_representation(self, instance): - """ - Remove empty fields when serializing - """ - data = super().to_representation(instance) - for field in self.fields: - try: - if data[field] is None: - data.pop(field) - except KeyError: - pass - return data diff --git a/server/handler/tests/test_handler_serializer.py b/server/handler/tests/test_handler_serializer.py index ac388c4e..0fb4bbdf 100644 --- a/server/handler/tests/test_handler_serializer.py +++ b/server/handler/tests/test_handler_serializer.py @@ -1,7 +1,7 @@ import pytest +from manifest.serializers import HandlerSerializer from handler.models import Handler, PaperSignature -from handler.serializers import HandlerSerializer @pytest.mark.django_db diff --git a/server/handler/tests/test_signature_serializer.py b/server/handler/tests/test_signature_serializer.py index 3813c0c3..29058373 100644 --- a/server/handler/tests/test_signature_serializer.py +++ b/server/handler/tests/test_signature_serializer.py @@ -1,7 +1,7 @@ import pytest +from manifest.serializers import ESignatureSerializer from handler.models import Signer -from handler.serializers import ESignatureSerializer @pytest.fixture diff --git a/server/manifest/serializers/__init__.py b/server/manifest/serializers/__init__.py index 71b29278..ec0da33b 100644 --- a/server/manifest/serializers/__init__.py +++ b/server/manifest/serializers/__init__.py @@ -1 +1,3 @@ +from .handler_serializer import HandlerSerializer, TransporterSerializer from .manifest import ManifestSerializer, MtnSerializer +from .signatures import ESignatureSerializer, PaperSignatureSerializer, QuickerSignSerializer diff --git a/server/handler/serializers/handler_serializer.py b/server/manifest/serializers/handler_serializer.py similarity index 99% rename from server/handler/serializers/handler_serializer.py rename to server/manifest/serializers/handler_serializer.py index 3ccd3991..870e575a 100644 --- a/server/handler/serializers/handler_serializer.py +++ b/server/manifest/serializers/handler_serializer.py @@ -1,10 +1,9 @@ from typing import Dict -from rest_framework import serializers -from rest_framework.exceptions import ValidationError - from handler.models import Handler, ManifestPhone, Transporter from rcrasite.serializers import RcraSiteSerializer +from rest_framework import serializers +from rest_framework.exceptions import ValidationError from .signatures import ESignatureSerializer, PaperSignatureSerializer diff --git a/server/manifest/serializers/manifest.py b/server/manifest/serializers/manifest.py index 41d9a334..f73ad771 100644 --- a/server/manifest/serializers/manifest.py +++ b/server/manifest/serializers/manifest.py @@ -1,10 +1,6 @@ import logging from typing import Dict, override -from handler.serializers import ( - HandlerSerializer, - TransporterSerializer, -) from rcrasite.models import RcraStates from rest_framework import serializers from wasteline.serializers import ( @@ -17,6 +13,10 @@ PortOfEntry, draft_mtn, ) +from manifest.serializers import ( + HandlerSerializer, + TransporterSerializer, +) logger = logging.getLogger(__name__) diff --git a/server/handler/serializers/signatures.py b/server/manifest/serializers/signatures.py similarity index 89% rename from server/handler/serializers/signatures.py rename to server/manifest/serializers/signatures.py index e9d8fba1..679dcd7c 100644 --- a/server/handler/serializers/signatures.py +++ b/server/manifest/serializers/signatures.py @@ -2,12 +2,32 @@ from datetime import timezone from typing import Dict -from rest_framework import serializers - from handler.models import ESignature, PaperSignature, QuickerSign, Signer from rcrasite.serializers import RcraPhoneSerializer +from rest_framework import serializers + + +class HandlerBaseSerializer(serializers.ModelSerializer): + # ToDo: remove -from .base_serializer import HandlerBaseSerializer + def __str__(self): + return f"{self.__class__.__name__}" + + def __repr__(self): + return f"<{self.__class__.__name__}({self.data})>" + + def to_representation(self, instance): + """ + Remove empty fields when serializing + """ + data = super().to_representation(instance) + for field in self.fields: + try: + if data[field] is None: + data.pop(field) + except KeyError: + pass + return data class QuickerSignSerializer(serializers.Serializer): diff --git a/server/manifest/services/emanifest.py b/server/manifest/services/emanifest.py index e10c0ef0..5ff70a85 100644 --- a/server/manifest/services/emanifest.py +++ b/server/manifest/services/emanifest.py @@ -2,16 +2,15 @@ from datetime import datetime from typing import List, Literal, NotRequired, Optional, TypedDict +from core.services import RcraClient, get_rcra_client from django.db import transaction from django.db.models import QuerySet from emanifest import RcrainfoResponse +from handler.models import QuickerSign from requests import RequestException -from core.services import RcraClient, get_rcra_client -from handler.models import QuickerSign -from handler.serializers import QuickerSignSerializer from manifest.models import Manifest -from manifest.serializers import ManifestSerializer +from manifest.serializers import ManifestSerializer, QuickerSignSerializer from manifest.services.emanifest_search import EmanifestSearch from manifest.tasks import pull_manifest, sign_manifest diff --git a/server/manifest/tests/test_models.py b/server/manifest/tests/test_models.py index 8f5f847c..44dd5d7d 100644 --- a/server/manifest/tests/test_models.py +++ b/server/manifest/tests/test_models.py @@ -3,10 +3,10 @@ import pytest from django.core.exceptions import ValidationError +from rcrasite.models import RcraSiteType -from handler.serializers import HandlerSerializer from manifest.models import Manifest, draft_mtn, manifest_factory, validate_mtn -from rcrasite.models import RcraSiteType +from manifest.serializers import HandlerSerializer @pytest.mark.django_db diff --git a/server/manifest/views.py b/server/manifest/views.py index 423c6fde..c3df8351 100644 --- a/server/manifest/views.py +++ b/server/manifest/views.py @@ -1,15 +1,15 @@ import logging from drf_spectacular.utils import OpenApiResponse, extend_schema, inline_serializer +from org.services import sync_site_manifest_with_rcrainfo from rest_framework import mixins, serializers, status, viewsets from rest_framework.generics import GenericAPIView, ListAPIView from rest_framework.request import Request from rest_framework.response import Response from rest_framework.views import APIView -from handler.serializers import QuickerSignSerializer from manifest.models import Manifest -from manifest.serializers import ManifestSerializer, MtnSerializer +from manifest.serializers import ManifestSerializer, MtnSerializer, QuickerSignSerializer from manifest.services import ( EManifest, TaskResponse, @@ -18,7 +18,6 @@ save_emanifest, update_manifest, ) -from org.services import sync_site_manifest_with_rcrainfo logger = logging.getLogger(__name__) From 0de97d6e0940de9ec17d2e4ef9546a07b2f0ff5c Mon Sep 17 00:00:00 2001 From: David Paul Graham Date: Thu, 22 Aug 2024 11:19:07 -0500 Subject: [PATCH 4/9] move handler models to manifest app --- server/core/tests/test_rcrainfo_service.py | 2 +- server/handler/admin.py | 8 +- server/handler/migrations/0001_initial.py | 5 +- ...remove_handler_emergency_phone_and_more.py | 42 ++++ ...te_manifestphone_delete_signer_and_more.py | 25 ++ server/handler/models/__init__.py | 4 - server/handler/serializers/__init__.py | 0 server/handler/tests/conftest.py | 5 +- server/handler/tests/test_handler_models.py | 3 +- .../handler/tests/test_handler_serializer.py | 3 +- server/handler/tests/test_signature_models.py | 3 +- .../tests/test_signature_serializer.py | 3 +- server/haztrak/settings/base.py | 1 - server/manage.py | 3 +- server/manifest/admin.py | 5 +- ...r_manifestphone_papersignature_and_more.py | 222 ++++++++++++++++++ server/manifest/models/__init__.py | 3 + .../{handler => manifest}/models/contact.py | 0 .../{handler => manifest}/models/handler.py | 1 - server/manifest/models/manifest.py | 8 +- .../{handler => manifest}/models/signature.py | 3 +- .../serializers/handler_serializer.py | 3 +- server/manifest/serializers/signatures.py | 3 +- server/manifest/services/emanifest.py | 3 +- server/manifest/tests/conftest.py | 5 +- 25 files changed, 322 insertions(+), 41 deletions(-) create mode 100644 server/handler/migrations/0004_remove_handler_emergency_phone_and_more.py create mode 100644 server/handler/migrations/0005_delete_handler_delete_manifestphone_delete_signer_and_more.py delete mode 100644 server/handler/serializers/__init__.py create mode 100644 server/manifest/migrations/0002_handler_manifestphone_papersignature_and_more.py rename server/{handler => manifest}/models/contact.py (100%) rename server/{handler => manifest}/models/handler.py (99%) rename server/{handler => manifest}/models/signature.py (98%) diff --git a/server/core/tests/test_rcrainfo_service.py b/server/core/tests/test_rcrainfo_service.py index b2ea8d12..2c9064d9 100644 --- a/server/core/tests/test_rcrainfo_service.py +++ b/server/core/tests/test_rcrainfo_service.py @@ -1,7 +1,7 @@ from datetime import UTC, datetime import emanifest -from handler.models import QuickerSign +from manifest.models import QuickerSign from manifest.serializers import QuickerSignSerializer from responses import matchers from rest_framework import status diff --git a/server/handler/admin.py b/server/handler/admin.py index bba589bc..cad62e93 100644 --- a/server/handler/admin.py +++ b/server/handler/admin.py @@ -1,17 +1,15 @@ +from core.admin import HiddenListView from django.contrib import admin from django.db.models import Q, QuerySet from django.urls import reverse from django.utils.html import format_html, urlencode - -from core.admin import HiddenListView - -from .models import ( +from manifest.models import ( ESignature, Handler, + ManifestPhone, Signer, Transporter, ) -from .models.contact import ManifestPhone class IsApiUser(admin.SimpleListFilter): diff --git a/server/handler/migrations/0001_initial.py b/server/handler/migrations/0001_initial.py index fc03a627..35307fa0 100644 --- a/server/handler/migrations/0001_initial.py +++ b/server/handler/migrations/0001_initial.py @@ -1,9 +1,10 @@ # Generated by Django 4.2.10 on 2024-02-21 22:17 import django.db.models.deletion -import handler.models.contact from django.db import migrations, models +import manifest.models.contact + class Migration(migrations.Migration): initial = True @@ -36,7 +37,7 @@ class Migration(migrations.Migration): auto_created=True, primary_key=True, serialize=False, verbose_name="ID" ), ), - ("number", handler.models.contact.ManifestPhoneNumber(max_length=12)), + ("number", manifest.models.contact.ManifestPhoneNumber(max_length=12)), ("extension", models.CharField(blank=True, max_length=6, null=True)), ], options={ diff --git a/server/handler/migrations/0004_remove_handler_emergency_phone_and_more.py b/server/handler/migrations/0004_remove_handler_emergency_phone_and_more.py new file mode 100644 index 00000000..d8877e74 --- /dev/null +++ b/server/handler/migrations/0004_remove_handler_emergency_phone_and_more.py @@ -0,0 +1,42 @@ +# Generated by Django 5.0.8 on 2024-08-22 16:18 + +from django.db import migrations + + +class Migration(migrations.Migration): + dependencies = [ + ("handler", "0003_alter_papersignature_options"), + ] + + operations = [ + migrations.RemoveField( + model_name="handler", + name="emergency_phone", + ), + migrations.RemoveField( + model_name="handler", + name="paper_signature", + ), + migrations.RemoveField( + model_name="handler", + name="rcra_site", + ), + migrations.RemoveField( + model_name="transporter", + name="handler_ptr", + ), + migrations.RemoveField( + model_name="signer", + name="phone", + ), + migrations.RemoveField( + model_name="transporter", + name="manifest", + ), + migrations.DeleteModel( + name="ESignature", + ), + migrations.DeleteModel( + name="PaperSignature", + ), + ] diff --git a/server/handler/migrations/0005_delete_handler_delete_manifestphone_delete_signer_and_more.py b/server/handler/migrations/0005_delete_handler_delete_manifestphone_delete_signer_and_more.py new file mode 100644 index 00000000..f90b42eb --- /dev/null +++ b/server/handler/migrations/0005_delete_handler_delete_manifestphone_delete_signer_and_more.py @@ -0,0 +1,25 @@ +# Generated by Django 5.0.8 on 2024-08-22 16:18 + +from django.db import migrations + + +class Migration(migrations.Migration): + dependencies = [ + ("handler", "0004_remove_handler_emergency_phone_and_more"), + ("manifest", "0002_handler_manifestphone_papersignature_and_more"), + ] + + operations = [ + migrations.DeleteModel( + name="Handler", + ), + migrations.DeleteModel( + name="ManifestPhone", + ), + migrations.DeleteModel( + name="Signer", + ), + migrations.DeleteModel( + name="Transporter", + ), + ] diff --git a/server/handler/models/__init__.py b/server/handler/models/__init__.py index bbe8277e..57004b2e 100644 --- a/server/handler/models/__init__.py +++ b/server/handler/models/__init__.py @@ -1,7 +1,3 @@ """ Model definitions for the trak domain """ - -from .contact import ManifestPhone -from .handler import Handler, Transporter -from .signature import ESignature, PaperSignature, QuickerSign, Signer diff --git a/server/handler/serializers/__init__.py b/server/handler/serializers/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/server/handler/tests/conftest.py b/server/handler/tests/conftest.py index 94865b1e..e0462d73 100644 --- a/server/handler/tests/conftest.py +++ b/server/handler/tests/conftest.py @@ -3,15 +3,14 @@ import pytest from faker import Faker - -from handler.models import ( +from manifest.models import ( ESignature, Handler, + Manifest, PaperSignature, Signer, Transporter, ) -from manifest.models import Manifest from rcrasite.models import RcraSite diff --git a/server/handler/tests/test_handler_models.py b/server/handler/tests/test_handler_models.py index bd5091b4..70f3bdc8 100644 --- a/server/handler/tests/test_handler_models.py +++ b/server/handler/tests/test_handler_models.py @@ -1,6 +1,5 @@ import pytest - -from handler.models import Handler +from manifest.models import Handler @pytest.mark.django_db diff --git a/server/handler/tests/test_handler_serializer.py b/server/handler/tests/test_handler_serializer.py index 0fb4bbdf..50a6aedb 100644 --- a/server/handler/tests/test_handler_serializer.py +++ b/server/handler/tests/test_handler_serializer.py @@ -1,8 +1,7 @@ import pytest +from manifest.models import Handler, PaperSignature from manifest.serializers import HandlerSerializer -from handler.models import Handler, PaperSignature - @pytest.mark.django_db class TestHandlerSerializer: diff --git a/server/handler/tests/test_signature_models.py b/server/handler/tests/test_signature_models.py index b8a6859f..86152253 100644 --- a/server/handler/tests/test_signature_models.py +++ b/server/handler/tests/test_signature_models.py @@ -2,8 +2,7 @@ import pytest from django.db import IntegrityError - -from handler.models import PaperSignature +from manifest.models import PaperSignature @pytest.mark.django_db diff --git a/server/handler/tests/test_signature_serializer.py b/server/handler/tests/test_signature_serializer.py index 29058373..eda5e52f 100644 --- a/server/handler/tests/test_signature_serializer.py +++ b/server/handler/tests/test_signature_serializer.py @@ -1,8 +1,7 @@ import pytest +from manifest.models import Signer from manifest.serializers import ESignatureSerializer -from handler.models import Signer - @pytest.fixture def e_signature_serializer(db, haztrak_json) -> ESignatureSerializer: diff --git a/server/haztrak/settings/base.py b/server/haztrak/settings/base.py index 9ee69655..4f35306e 100644 --- a/server/haztrak/settings/base.py +++ b/server/haztrak/settings/base.py @@ -263,4 +263,3 @@ TRAK_MANIFEST_MODEL = "manifest.Manifest" TRAK_SITE_MODEL = "org.Site" TRAK_WASTELINE_MODEL = "wasteline.Wasteline" -TRAK_HANDLER_MODEL = "handler.Handler" diff --git a/server/manage.py b/server/manage.py index 014ac6f3..510907ac 100755 --- a/server/manage.py +++ b/server/manage.py @@ -1,12 +1,13 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" + import os import sys def main(): """Run administrative tasks.""" - os.environ.setdefault("DJANGO_SETTINGS_MODULE", "haztrak.settings") + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "haztrak.settings.dev") try: from django.core.management import execute_from_command_line except ImportError as exc: diff --git a/server/manifest/admin.py b/server/manifest/admin.py index d084487e..d3a68b62 100644 --- a/server/manifest/admin.py +++ b/server/manifest/admin.py @@ -1,9 +1,10 @@ from django.contrib import admin from django.db.models import Q, QuerySet +from wasteline.admin import WasteLineInline -from handler.models import Transporter from manifest.models import Manifest -from wasteline.admin import WasteLineInline + +from .models import Transporter class IsDraftMtn(admin.SimpleListFilter): diff --git a/server/manifest/migrations/0002_handler_manifestphone_papersignature_and_more.py b/server/manifest/migrations/0002_handler_manifestphone_papersignature_and_more.py new file mode 100644 index 00000000..cb22c972 --- /dev/null +++ b/server/manifest/migrations/0002_handler_manifestphone_papersignature_and_more.py @@ -0,0 +1,222 @@ +# Generated by Django 5.0.8 on 2024-08-22 16:18 + +import django.db.models.deletion +import manifest.models.contact +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("manifest", "0001_initial"), + ("rcrasite", "0001_initial"), + ] + + operations = [ + migrations.CreateModel( + name="Handler", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, primary_key=True, serialize=False, verbose_name="ID" + ), + ), + ( + "rcra_site", + models.ForeignKey( + help_text="Hazardous waste rcra_site associated with the manifest", + on_delete=django.db.models.deletion.CASCADE, + to="rcrasite.rcrasite", + ), + ), + ], + options={ + "ordering": ["rcra_site"], + }, + ), + migrations.CreateModel( + name="ManifestPhone", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, primary_key=True, serialize=False, verbose_name="ID" + ), + ), + ("number", manifest.models.contact.ManifestPhoneNumber(max_length=12)), + ("extension", models.CharField(blank=True, max_length=6, null=True)), + ], + options={ + "ordering": ["number"], + }, + ), + migrations.CreateModel( + name="PaperSignature", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, primary_key=True, serialize=False, verbose_name="ID" + ), + ), + ("printed_name", models.CharField(max_length=255)), + ("sign_date", models.DateTimeField()), + ], + ), + migrations.AlterField( + model_name="manifest", + name="generator", + field=models.ForeignKey( + on_delete=django.db.models.deletion.PROTECT, + related_name="generator", + to="manifest.handler", + ), + ), + migrations.AlterField( + model_name="manifest", + name="tsdf", + field=models.ForeignKey( + on_delete=django.db.models.deletion.PROTECT, + related_name="designated_facility", + to="manifest.handler", + verbose_name="designated facility", + ), + ), + migrations.AddField( + model_name="handler", + name="emergency_phone", + field=models.ForeignKey( + blank=True, + help_text="Emergency phone number for the hazardous waste rcra_site", + null=True, + on_delete=django.db.models.deletion.PROTECT, + to="manifest.manifestphone", + ), + ), + migrations.AddField( + model_name="handler", + name="paper_signature", + field=models.OneToOneField( + blank=True, + help_text="The signature associated with hazardous waste custody exchange", + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="manifest.papersignature", + ), + ), + migrations.CreateModel( + name="Signer", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, primary_key=True, serialize=False, verbose_name="ID" + ), + ), + ("rcra_user_id", models.CharField(blank=True, max_length=100, null=True)), + ("first_name", models.CharField(blank=True, max_length=38, null=True)), + ("middle_initial", models.CharField(blank=True, max_length=1, null=True)), + ("last_name", models.CharField(blank=True, max_length=38, null=True)), + ("email", models.CharField(blank=True, max_length=38, null=True)), + ("company_name", models.CharField(blank=True, max_length=80, null=True)), + ( + "contact_type", + models.CharField( + blank=True, + choices=[("email", "Email"), ("voice", "Voice"), ("text", "Text")], + max_length=5, + null=True, + ), + ), + ( + "signer_role", + models.CharField( + choices=[ + ("Industry", "Industry"), + ("PPC", "Ppc"), + ("EPA", "Epa"), + ("State", "State"), + ], + max_length=10, + null=True, + ), + ), + ( + "phone", + models.ForeignKey( + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="manifest.manifestphone", + ), + ), + ], + options={ + "ordering": ["first_name"], + }, + ), + migrations.CreateModel( + name="ESignature", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, primary_key=True, serialize=False, verbose_name="ID" + ), + ), + ("sign_date", models.DateTimeField(blank=True, null=True)), + ("cromerr_activity_id", models.CharField(blank=True, max_length=100, null=True)), + ("cromerr_document_id", models.CharField(blank=True, max_length=100, null=True)), + ("on_behalf", models.BooleanField(blank=True, default=False, null=True)), + ( + "manifest_handler", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="e_signatures", + to="manifest.handler", + ), + ), + ( + "signer", + models.OneToOneField( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="manifest.signer", + ), + ), + ], + options={ + "verbose_name": "e-Signature", + "ordering": ["sign_date"], + }, + ), + migrations.CreateModel( + name="Transporter", + fields=[ + ( + "handler_ptr", + models.OneToOneField( + auto_created=True, + on_delete=django.db.models.deletion.CASCADE, + parent_link=True, + primary_key=True, + serialize=False, + to="manifest.handler", + ), + ), + ("order", models.PositiveIntegerField()), + ( + "manifest", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="transporters", + to="manifest.manifest", + ), + ), + ], + options={ + "ordering": ["manifest__mtn"], + }, + bases=("manifest.handler",), + ), + ] diff --git a/server/manifest/models/__init__.py b/server/manifest/models/__init__.py index 76ffe63e..0c45b843 100644 --- a/server/manifest/models/__init__.py +++ b/server/manifest/models/__init__.py @@ -1,3 +1,5 @@ +from .contact import ManifestPhone +from .handler import Handler, Transporter from .manifest import ( AdditionalInfo, Manifest, @@ -6,3 +8,4 @@ manifest_factory, validate_mtn, ) +from .signature import ESignature, PaperSignature, QuickerSign, Signer diff --git a/server/handler/models/contact.py b/server/manifest/models/contact.py similarity index 100% rename from server/handler/models/contact.py rename to server/manifest/models/contact.py diff --git a/server/handler/models/handler.py b/server/manifest/models/handler.py similarity index 99% rename from server/handler/models/handler.py rename to server/manifest/models/handler.py index c935af8d..6df9ab1e 100644 --- a/server/handler/models/handler.py +++ b/server/manifest/models/handler.py @@ -4,7 +4,6 @@ from django.conf import settings from django.core.exceptions import ValidationError from django.db import models - from rcrasite.models import RcraSite from .contact import ManifestPhone diff --git a/server/manifest/models/manifest.py b/server/manifest/models/manifest.py index 6b4ef432..d980ec2d 100644 --- a/server/manifest/models/manifest.py +++ b/server/manifest/models/manifest.py @@ -3,15 +3,15 @@ from abc import ABC, abstractmethod from typing import List, Literal, Optional -from django.conf import settings from django.core.exceptions import ValidationError from django.db import models from django.db.models import Q, QuerySet from django.utils.translation import gettext_lazy as _ -from handler.models import Handler, Transporter from rcrasite.models import RcraSiteType, RcraStates from wasteline.models import WasteLine +from .handler import Handler, Transporter + logger = logging.getLogger(__name__) @@ -246,13 +246,13 @@ class Status(models.TextChoices): blank=True, ) generator = models.ForeignKey( - settings.TRAK_HANDLER_MODEL, + "Handler", on_delete=models.PROTECT, related_name="generator", ) # transporters - one-to-many relationship, a manifest can have many transporters tsdf = models.ForeignKey( - settings.TRAK_HANDLER_MODEL, + "Handler", verbose_name="designated facility", on_delete=models.PROTECT, related_name="designated_facility", diff --git a/server/handler/models/signature.py b/server/manifest/models/signature.py similarity index 98% rename from server/handler/models/signature.py rename to server/manifest/models/signature.py index f8372655..15bc94ff 100644 --- a/server/handler/models/signature.py +++ b/server/manifest/models/signature.py @@ -2,7 +2,6 @@ from datetime import datetime, timezone from typing import List, Literal, Optional -from django.conf import settings from django.db import models logger = logging.getLogger(__name__) @@ -103,7 +102,7 @@ class Meta: objects = ESignatureManager() manifest_handler = models.ForeignKey( - settings.TRAK_HANDLER_MODEL, + "Handler", related_name="e_signatures", on_delete=models.CASCADE, ) diff --git a/server/manifest/serializers/handler_serializer.py b/server/manifest/serializers/handler_serializer.py index 870e575a..03efbf48 100644 --- a/server/manifest/serializers/handler_serializer.py +++ b/server/manifest/serializers/handler_serializer.py @@ -1,10 +1,11 @@ from typing import Dict -from handler.models import Handler, ManifestPhone, Transporter from rcrasite.serializers import RcraSiteSerializer from rest_framework import serializers from rest_framework.exceptions import ValidationError +from manifest.models import Handler, ManifestPhone, Transporter + from .signatures import ESignatureSerializer, PaperSignatureSerializer diff --git a/server/manifest/serializers/signatures.py b/server/manifest/serializers/signatures.py index 679dcd7c..2cb3cc24 100644 --- a/server/manifest/serializers/signatures.py +++ b/server/manifest/serializers/signatures.py @@ -2,10 +2,11 @@ from datetime import timezone from typing import Dict -from handler.models import ESignature, PaperSignature, QuickerSign, Signer from rcrasite.serializers import RcraPhoneSerializer from rest_framework import serializers +from manifest.models import ESignature, PaperSignature, QuickerSign, Signer + class HandlerBaseSerializer(serializers.ModelSerializer): # ToDo: remove diff --git a/server/manifest/services/emanifest.py b/server/manifest/services/emanifest.py index 5ff70a85..0533cab4 100644 --- a/server/manifest/services/emanifest.py +++ b/server/manifest/services/emanifest.py @@ -6,10 +6,9 @@ from django.db import transaction from django.db.models import QuerySet from emanifest import RcrainfoResponse -from handler.models import QuickerSign from requests import RequestException -from manifest.models import Manifest +from manifest.models import Manifest, QuickerSign from manifest.serializers import ManifestSerializer, QuickerSignSerializer from manifest.services.emanifest_search import EmanifestSearch from manifest.tasks import pull_manifest, sign_manifest diff --git a/server/manifest/tests/conftest.py b/server/manifest/tests/conftest.py index b580f8c2..e1fecdae 100644 --- a/server/manifest/tests/conftest.py +++ b/server/manifest/tests/conftest.py @@ -7,11 +7,10 @@ from django.db import IntegrityError from faker import Faker from faker.providers import BaseProvider - -from handler.models import Handler, PaperSignature, Transporter -from manifest.models import Manifest from rcrasite.models import RcraSite, RcraSiteType +from manifest.models import Handler, Manifest, PaperSignature, Transporter + class MtnProvider(BaseProvider): SUFFIXES = ["ELC", "JJK", "FLE"] From b336c49ed2e39bca9b115ced47523d3504616bf0 Mon Sep 17 00:00:00 2001 From: David Paul Graham Date: Thu, 22 Aug 2024 11:27:52 -0500 Subject: [PATCH 5/9] move handler app tests to manifest app --- server/handler/admin.py | 64 ------- server/handler/models/__init__.py | 3 - server/handler/tests/conftest.py | 110 ------------ server/manifest/admin.py | 63 ++++++- server/manifest/tests/conftest.py | 157 ++++++++++++------ .../tests/test_handler_models.py | 1 + .../tests/test_handler_serializer.py | 1 + .../tests/test_handler_services.py | 1 - .../tests/test_signature_models.py | 1 + .../tests/test_signature_serializer.py | 1 + 10 files changed, 170 insertions(+), 232 deletions(-) delete mode 100644 server/handler/models/__init__.py rename server/{handler => manifest}/tests/test_handler_models.py (99%) rename server/{handler => manifest}/tests/test_handler_serializer.py (99%) rename server/{handler => manifest}/tests/test_handler_services.py (99%) rename server/{handler => manifest}/tests/test_signature_models.py (99%) rename server/{handler => manifest}/tests/test_signature_serializer.py (99%) diff --git a/server/handler/admin.py b/server/handler/admin.py index cad62e93..e69de29b 100644 --- a/server/handler/admin.py +++ b/server/handler/admin.py @@ -1,64 +0,0 @@ -from core.admin import HiddenListView -from django.contrib import admin -from django.db.models import Q, QuerySet -from django.urls import reverse -from django.utils.html import format_html, urlencode -from manifest.models import ( - ESignature, - Handler, - ManifestPhone, - Signer, - Transporter, -) - - -class IsApiUser(admin.SimpleListFilter): - title = "API User" - parameter_name = "has_rcrainfo_api_id_key" - - def lookups(self, request, model_admin): - return ("True", True), ("False", False) - - def queryset(self, request, queryset: QuerySet): - if self.value() == "True": - return queryset.filter(mtn__iendswith="DFT") - elif self.value() == "False": - return queryset.filter(~Q(mtn__iendswith="DFT")) - else: - return queryset - - -@admin.register(Transporter) -class TransporterAdmin(admin.ModelAdmin): - list_display = ["__str__", "related_manifest", "order"] - search_fields = ["handler__epa_id", "manifest__mtn"] - - def related_manifest(self, obj): - url = ( - reverse("admin:trak_manifest_changelist") - + "?" - + urlencode({"mtn": str(obj.manifest.mtn)}) - ) - return format_html("{}", url, obj.manifest.mtn) - - related_manifest.short_description = "Manifest" - - -@admin.register(Handler) -class HandlerAdmin(admin.ModelAdmin): - list_display = ["__str__", "related_manifest"] - search_fields = ["handler__epa_id"] - - def related_manifest(self, obj: Handler): - if obj.generator: - return obj.generator.get() - if obj.designated_facility: - return obj.designated_facility.get() - - related_manifest.short_description = "Manifest" - - -# Register models That should only be edited within the context of another form here. -admin.site.register(ManifestPhone, HiddenListView) -admin.site.register(ESignature, HiddenListView) -admin.site.register(Signer, HiddenListView) diff --git a/server/handler/models/__init__.py b/server/handler/models/__init__.py deleted file mode 100644 index 57004b2e..00000000 --- a/server/handler/models/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -""" -Model definitions for the trak domain -""" diff --git a/server/handler/tests/conftest.py b/server/handler/tests/conftest.py index e0462d73..e69de29b 100644 --- a/server/handler/tests/conftest.py +++ b/server/handler/tests/conftest.py @@ -1,110 +0,0 @@ -from datetime import UTC, datetime -from typing import Optional - -import pytest -from faker import Faker -from manifest.models import ( - ESignature, - Handler, - Manifest, - PaperSignature, - Signer, - Transporter, -) -from rcrasite.models import RcraSite - - -@pytest.fixture -def manifest_handler_factory(db, rcra_site_factory, paper_signature_factory): - """Abstract factory for Haztrak Handler model""" - - def create_manifest_handler( - rcra_site: Optional[RcraSite] = None, - paper_signature: Optional[PaperSignature] = None, - ) -> Handler: - return Handler.objects.create( - rcra_site=rcra_site or rcra_site_factory(), - paper_signature=paper_signature or paper_signature_factory(), - ) - - return create_manifest_handler - - -@pytest.fixture -def manifest_transporter_factory(db, rcra_site_factory, paper_signature_factory): - """Abstract factory for Haztrak Handler model""" - - def create_manifest_handler( - rcra_site: Optional[RcraSite] = None, - paper_signature: Optional[PaperSignature] = None, - manifest: Manifest = None, - order: Optional[int] = 1, - ) -> Transporter: - return Transporter.objects.create( - manifest=manifest, - order=order, - rcra_site=rcra_site or rcra_site_factory(), - paper_signature=paper_signature or paper_signature_factory(), - ) - - return create_manifest_handler - - -@pytest.fixture -def paper_signature_factory(db, faker: Faker): - """Abstract factory for Paper Signature""" - - def create_signature( - printed_name: Optional[str] = None, - sign_date: Optional[datetime] = None, - ) -> PaperSignature: - return PaperSignature.objects.create( - printed_name=printed_name or faker.name(), - sign_date=sign_date or datetime.now(UTC), - ) - - return create_signature - - -@pytest.fixture -def e_signature_factory(db, signer_factory, manifest_handler_factory, faker: Faker): - """Abstract factory for Haztrak Handler model""" - - def create_e_signature( - signer: Optional[Signer] = None, - manifest_handler: Optional[Handler] = None, - ) -> ESignature: - return ESignature.objects.create( - signer=signer or signer_factory(), - manifest_handler=manifest_handler or manifest_handler_factory(), - sign_date=datetime.now(UTC), - cromerr_activity_id=faker.pystr(max_chars=10), - cromerr_document_id=faker.pystr(max_chars=10), - on_behalf=False, - ) - - return create_e_signature - - -@pytest.fixture -def signer_factory(db, faker: Faker): - """Abstract factory for Haztrak Signer model""" - - def creat_signer( - first_name: Optional[str] = None, - middle_initial: Optional[str] = None, - last_name: Optional[str] = None, - signer_role: Optional[str] = "EP", - company_name: Optional[str] = None, - rcra_user_id: Optional[str] = None, - ) -> Signer: - return Signer.objects.create( - first_name=first_name or faker.first_name(), - middle_initial=middle_initial or faker.pystr(max_chars=1), - last_name=last_name or faker.last_name(), - signer_role=signer_role, - company_name=company_name or faker.company(), - rcra_user_id=rcra_user_id or faker.user_name(), - ) - - return creat_signer diff --git a/server/manifest/admin.py b/server/manifest/admin.py index d3a68b62..a2efbf72 100644 --- a/server/manifest/admin.py +++ b/server/manifest/admin.py @@ -1,10 +1,19 @@ +from core.admin import HiddenListView from django.contrib import admin from django.db.models import Q, QuerySet +from django.urls import reverse +from django.utils.html import format_html, urlencode from wasteline.admin import WasteLineInline from manifest.models import Manifest -from .models import Transporter +from .models import ( + ESignature, + Handler, + ManifestPhone, + Signer, + Transporter, +) class IsDraftMtn(admin.SimpleListFilter): @@ -34,3 +43,55 @@ class ManifestAdmin(admin.ModelAdmin): def transporter_count(self, manifest): # ToDo: this will result in additional DB hit for every Manifest in the list rendered. return Transporter.objects.filter(manifest=manifest).count() + + +class IsApiUser(admin.SimpleListFilter): + title = "API User" + parameter_name = "has_rcrainfo_api_id_key" + + def lookups(self, request, model_admin): + return ("True", True), ("False", False) + + def queryset(self, request, queryset: QuerySet): + if self.value() == "True": + return queryset.filter(mtn__iendswith="DFT") + elif self.value() == "False": + return queryset.filter(~Q(mtn__iendswith="DFT")) + else: + return queryset + + +@admin.register(Transporter) +class TransporterAdmin(admin.ModelAdmin): + list_display = ["__str__", "related_manifest", "order"] + search_fields = ["handler__epa_id", "manifest__mtn"] + + def related_manifest(self, obj): + url = ( + reverse("admin:trak_manifest_changelist") + + "?" + + urlencode({"mtn": str(obj.manifest.mtn)}) + ) + return format_html("{}", url, obj.manifest.mtn) + + related_manifest.short_description = "Manifest" + + +@admin.register(Handler) +class HandlerAdmin(admin.ModelAdmin): + list_display = ["__str__", "related_manifest"] + search_fields = ["handler__epa_id"] + + def related_manifest(self, obj: Handler): + if obj.generator: + return obj.generator.get() + if obj.designated_facility: + return obj.designated_facility.get() + + related_manifest.short_description = "Manifest" + + +# Register models That should only be edited within the context of another form here. +admin.site.register(ManifestPhone, HiddenListView) +admin.site.register(ESignature, HiddenListView) +admin.site.register(Signer, HiddenListView) diff --git a/server/manifest/tests/conftest.py b/server/manifest/tests/conftest.py index e1fecdae..d5426f71 100644 --- a/server/manifest/tests/conftest.py +++ b/server/manifest/tests/conftest.py @@ -9,7 +9,110 @@ from faker.providers import BaseProvider from rcrasite.models import RcraSite, RcraSiteType -from manifest.models import Handler, Manifest, PaperSignature, Transporter +from manifest.models import ( + ESignature, + Handler, + Manifest, + PaperSignature, + Signer, + Transporter, +) + + +@pytest.fixture +def manifest_handler_factory(db, rcra_site_factory, paper_signature_factory): + """Abstract factory for Haztrak Handler model""" + + def create_manifest_handler( + rcra_site: Optional[RcraSite] = None, + paper_signature: Optional[PaperSignature] = None, + ) -> Handler: + return Handler.objects.create( + rcra_site=rcra_site or rcra_site_factory(), + paper_signature=paper_signature or paper_signature_factory(), + ) + + return create_manifest_handler + + +@pytest.fixture +def manifest_transporter_factory(db, rcra_site_factory, paper_signature_factory): + """Abstract factory for Haztrak Handler model""" + + def create_manifest_handler( + rcra_site: Optional[RcraSite] = None, + paper_signature: Optional[PaperSignature] = None, + manifest: Manifest = None, + order: Optional[int] = 1, + ) -> Transporter: + return Transporter.objects.create( + manifest=manifest, + order=order, + rcra_site=rcra_site or rcra_site_factory(), + paper_signature=paper_signature or paper_signature_factory(), + ) + + return create_manifest_handler + + +@pytest.fixture +def paper_signature_factory(db, faker: Faker): + """Abstract factory for Paper Signature""" + + def create_signature( + printed_name: Optional[str] = None, + sign_date: Optional[datetime] = None, + ) -> PaperSignature: + return PaperSignature.objects.create( + printed_name=printed_name or faker.name(), + sign_date=sign_date or datetime.now(UTC), + ) + + return create_signature + + +@pytest.fixture +def e_signature_factory(db, signer_factory, manifest_handler_factory, faker: Faker): + """Abstract factory for Haztrak Handler model""" + + def create_e_signature( + signer: Optional[Signer] = None, + manifest_handler: Optional[Handler] = None, + ) -> ESignature: + return ESignature.objects.create( + signer=signer or signer_factory(), + manifest_handler=manifest_handler or manifest_handler_factory(), + sign_date=datetime.now(UTC), + cromerr_activity_id=faker.pystr(max_chars=10), + cromerr_document_id=faker.pystr(max_chars=10), + on_behalf=False, + ) + + return create_e_signature + + +@pytest.fixture +def signer_factory(db, faker: Faker): + """Abstract factory for Haztrak Signer model""" + + def creat_signer( + first_name: Optional[str] = None, + middle_initial: Optional[str] = None, + last_name: Optional[str] = None, + signer_role: Optional[str] = "EP", + company_name: Optional[str] = None, + rcra_user_id: Optional[str] = None, + ) -> Signer: + return Signer.objects.create( + first_name=first_name or faker.first_name(), + middle_initial=middle_initial or faker.pystr(max_chars=1), + last_name=last_name or faker.last_name(), + signer_role=signer_role, + company_name=company_name or faker.company(), + rcra_user_id=rcra_user_id or faker.user_name(), + ) + + return creat_signer class MtnProvider(BaseProvider): @@ -69,55 +172,3 @@ def create_manifest( ) return create_manifest - - -@pytest.fixture -def manifest_handler_factory(db, rcra_site_factory, paper_signature_factory): - """Abstract factory for manifest Handler model""" - - def create_manifest_handler( - rcra_site: Optional[RcraSite] = None, - paper_signature: Optional[PaperSignature] = None, - ) -> Handler: - return Handler.objects.create( - rcra_site=rcra_site or rcra_site_factory(), - paper_signature=paper_signature or paper_signature_factory(), - ) - - return create_manifest_handler - - -@pytest.fixture -def manifest_transporter_factory(db, rcra_site_factory, paper_signature_factory): - """Abstract factory for the manifest transporter model""" - - def create_manifest_handler( - rcra_site: Optional[RcraSite] = None, - paper_signature: Optional[PaperSignature] = None, - manifest: Manifest = None, - order: Optional[int] = 1, - ) -> Transporter: - return Transporter.objects.create( - manifest=manifest, - order=order, - rcra_site=rcra_site or rcra_site_factory(), - paper_signature=paper_signature or paper_signature_factory(), - ) - - return create_manifest_handler - - -@pytest.fixture -def paper_signature_factory(db, faker: Faker): - """Abstract factory for Paper Signature""" - - def create_signature( - printed_name: Optional[str] = None, - sign_date: Optional[datetime] = None, - ) -> PaperSignature: - return PaperSignature.objects.create( - printed_name=printed_name or faker.name(), - sign_date=sign_date or datetime.now(UTC), - ) - - return create_signature diff --git a/server/handler/tests/test_handler_models.py b/server/manifest/tests/test_handler_models.py similarity index 99% rename from server/handler/tests/test_handler_models.py rename to server/manifest/tests/test_handler_models.py index 70f3bdc8..8da2d890 100644 --- a/server/handler/tests/test_handler_models.py +++ b/server/manifest/tests/test_handler_models.py @@ -1,4 +1,5 @@ import pytest + from manifest.models import Handler diff --git a/server/handler/tests/test_handler_serializer.py b/server/manifest/tests/test_handler_serializer.py similarity index 99% rename from server/handler/tests/test_handler_serializer.py rename to server/manifest/tests/test_handler_serializer.py index 50a6aedb..ff50af2d 100644 --- a/server/handler/tests/test_handler_serializer.py +++ b/server/manifest/tests/test_handler_serializer.py @@ -1,4 +1,5 @@ import pytest + from manifest.models import Handler, PaperSignature from manifest.serializers import HandlerSerializer diff --git a/server/handler/tests/test_handler_services.py b/server/manifest/tests/test_handler_services.py similarity index 99% rename from server/handler/tests/test_handler_services.py rename to server/manifest/tests/test_handler_services.py index 7efa3a56..e136008b 100644 --- a/server/handler/tests/test_handler_services.py +++ b/server/manifest/tests/test_handler_services.py @@ -1,5 +1,4 @@ import pytest - from core.services import RcraClient from rcrasite.models import RcraSite from rcrasite.services import RcraSiteService diff --git a/server/handler/tests/test_signature_models.py b/server/manifest/tests/test_signature_models.py similarity index 99% rename from server/handler/tests/test_signature_models.py rename to server/manifest/tests/test_signature_models.py index 86152253..9a293df4 100644 --- a/server/handler/tests/test_signature_models.py +++ b/server/manifest/tests/test_signature_models.py @@ -2,6 +2,7 @@ import pytest from django.db import IntegrityError + from manifest.models import PaperSignature diff --git a/server/handler/tests/test_signature_serializer.py b/server/manifest/tests/test_signature_serializer.py similarity index 99% rename from server/handler/tests/test_signature_serializer.py rename to server/manifest/tests/test_signature_serializer.py index eda5e52f..2e6c83b8 100644 --- a/server/handler/tests/test_signature_serializer.py +++ b/server/manifest/tests/test_signature_serializer.py @@ -1,4 +1,5 @@ import pytest + from manifest.models import Signer from manifest.serializers import ESignatureSerializer From daf92ecc9ec19586f158ebee22e3e7557705c0d2 Mon Sep 17 00:00:00 2001 From: David Paul Graham Date: Thu, 22 Aug 2024 11:41:02 -0500 Subject: [PATCH 6/9] remove handler appa and recreate waste, handler, and manfiest migrations --- server/handler/__init__.py | 0 server/handler/admin.py | 0 server/handler/apps.py | 6 - server/handler/migrations/0001_initial.py | 202 ---------------- server/handler/migrations/0002_initial.py | 22 -- .../0003_alter_papersignature_options.py | 17 -- ...remove_handler_emergency_phone_and_more.py | 42 ---- ...te_manifestphone_delete_signer_and_more.py | 25 -- server/handler/migrations/__init__.py | 0 server/handler/tests/__init__.py | 0 server/handler/tests/conftest.py | 0 server/haztrak/settings/base.py | 1 - server/manifest/migrations/0001_initial.py | 205 +++++++++++++++- ...r_manifestphone_papersignature_and_more.py | 222 ------------------ server/wasteline/migrations/0001_initial.py | 188 ++++++++++++--- 15 files changed, 349 insertions(+), 581 deletions(-) delete mode 100644 server/handler/__init__.py delete mode 100644 server/handler/admin.py delete mode 100644 server/handler/apps.py delete mode 100644 server/handler/migrations/0001_initial.py delete mode 100644 server/handler/migrations/0002_initial.py delete mode 100644 server/handler/migrations/0003_alter_papersignature_options.py delete mode 100644 server/handler/migrations/0004_remove_handler_emergency_phone_and_more.py delete mode 100644 server/handler/migrations/0005_delete_handler_delete_manifestphone_delete_signer_and_more.py delete mode 100644 server/handler/migrations/__init__.py delete mode 100644 server/handler/tests/__init__.py delete mode 100644 server/handler/tests/conftest.py delete mode 100644 server/manifest/migrations/0002_handler_manifestphone_papersignature_and_more.py diff --git a/server/handler/__init__.py b/server/handler/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/server/handler/admin.py b/server/handler/admin.py deleted file mode 100644 index e69de29b..00000000 diff --git a/server/handler/apps.py b/server/handler/apps.py deleted file mode 100644 index f4db87f6..00000000 --- a/server/handler/apps.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.apps import AppConfig - - -class TrakConfig(AppConfig): - default_auto_field = "django.db.models.BigAutoField" - name = "handler" diff --git a/server/handler/migrations/0001_initial.py b/server/handler/migrations/0001_initial.py deleted file mode 100644 index 35307fa0..00000000 --- a/server/handler/migrations/0001_initial.py +++ /dev/null @@ -1,202 +0,0 @@ -# Generated by Django 4.2.10 on 2024-02-21 22:17 - -import django.db.models.deletion -from django.db import migrations, models - -import manifest.models.contact - - -class Migration(migrations.Migration): - initial = True - - dependencies = [ - ("rcrasite", "0001_initial"), - ] - - operations = [ - migrations.CreateModel( - name="Handler", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, primary_key=True, serialize=False, verbose_name="ID" - ), - ), - ], - options={ - "ordering": ["rcra_site"], - }, - ), - migrations.CreateModel( - name="ManifestPhone", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, primary_key=True, serialize=False, verbose_name="ID" - ), - ), - ("number", manifest.models.contact.ManifestPhoneNumber(max_length=12)), - ("extension", models.CharField(blank=True, max_length=6, null=True)), - ], - options={ - "ordering": ["number"], - }, - ), - migrations.CreateModel( - name="PaperSignature", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, primary_key=True, serialize=False, verbose_name="ID" - ), - ), - ("printed_name", models.CharField(max_length=255)), - ("sign_date", models.DateTimeField()), - ], - options={ - "ordering": ["pk"], - "abstract": False, - }, - ), - migrations.CreateModel( - name="Transporter", - fields=[ - ( - "handler_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="handler.handler", - ), - ), - ("order", models.PositiveIntegerField()), - ], - options={ - "ordering": ["manifest__mtn"], - }, - bases=("handler.handler",), - ), - migrations.CreateModel( - name="Signer", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, primary_key=True, serialize=False, verbose_name="ID" - ), - ), - ("rcra_user_id", models.CharField(blank=True, max_length=100, null=True)), - ("first_name", models.CharField(blank=True, max_length=38, null=True)), - ("middle_initial", models.CharField(blank=True, max_length=1, null=True)), - ("last_name", models.CharField(blank=True, max_length=38, null=True)), - ("email", models.CharField(blank=True, max_length=38, null=True)), - ("company_name", models.CharField(blank=True, max_length=80, null=True)), - ( - "contact_type", - models.CharField( - blank=True, - choices=[("email", "Email"), ("voice", "Voice"), ("text", "Text")], - max_length=5, - null=True, - ), - ), - ( - "signer_role", - models.CharField( - choices=[ - ("Industry", "Industry"), - ("PPC", "Ppc"), - ("EPA", "Epa"), - ("State", "State"), - ], - max_length=10, - null=True, - ), - ), - ( - "phone", - models.ForeignKey( - null=True, - on_delete=django.db.models.deletion.CASCADE, - to="handler.manifestphone", - ), - ), - ], - options={ - "ordering": ["first_name"], - }, - ), - migrations.AddField( - model_name="handler", - name="emergency_phone", - field=models.ForeignKey( - blank=True, - help_text="Emergency phone number for the hazardous waste rcra_site", - null=True, - on_delete=django.db.models.deletion.PROTECT, - to="handler.manifestphone", - ), - ), - migrations.AddField( - model_name="handler", - name="paper_signature", - field=models.OneToOneField( - blank=True, - help_text="The signature associated with hazardous waste custody exchange", - null=True, - on_delete=django.db.models.deletion.CASCADE, - to="handler.papersignature", - ), - ), - migrations.AddField( - model_name="handler", - name="rcra_site", - field=models.ForeignKey( - help_text="Hazardous waste rcra_site associated with the manifest", - on_delete=django.db.models.deletion.CASCADE, - to="rcrasite.rcrasite", - ), - ), - migrations.CreateModel( - name="ESignature", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, primary_key=True, serialize=False, verbose_name="ID" - ), - ), - ("sign_date", models.DateTimeField(blank=True, null=True)), - ("cromerr_activity_id", models.CharField(blank=True, max_length=100, null=True)), - ("cromerr_document_id", models.CharField(blank=True, max_length=100, null=True)), - ("on_behalf", models.BooleanField(blank=True, default=False, null=True)), - ( - "manifest_handler", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="e_signatures", - to="handler.handler", - ), - ), - ( - "signer", - models.OneToOneField( - blank=True, - null=True, - on_delete=django.db.models.deletion.CASCADE, - to="handler.signer", - ), - ), - ], - options={ - "verbose_name": "e-Signature", - "ordering": ["sign_date"], - }, - ), - ] diff --git a/server/handler/migrations/0002_initial.py b/server/handler/migrations/0002_initial.py deleted file mode 100644 index 28a65cfb..00000000 --- a/server/handler/migrations/0002_initial.py +++ /dev/null @@ -1,22 +0,0 @@ -# Generated by Django 4.2.10 on 2024-02-21 22:17 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ('manifest', '0001_initial'), - ('handler', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='transporter', - name='manifest', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='transporters', to='manifest.manifest'), - ), - ] diff --git a/server/handler/migrations/0003_alter_papersignature_options.py b/server/handler/migrations/0003_alter_papersignature_options.py deleted file mode 100644 index a630ebc0..00000000 --- a/server/handler/migrations/0003_alter_papersignature_options.py +++ /dev/null @@ -1,17 +0,0 @@ -# Generated by Django 5.0.4 on 2024-06-03 02:04 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('handler', '0002_initial'), - ] - - operations = [ - migrations.AlterModelOptions( - name='papersignature', - options={}, - ), - ] diff --git a/server/handler/migrations/0004_remove_handler_emergency_phone_and_more.py b/server/handler/migrations/0004_remove_handler_emergency_phone_and_more.py deleted file mode 100644 index d8877e74..00000000 --- a/server/handler/migrations/0004_remove_handler_emergency_phone_and_more.py +++ /dev/null @@ -1,42 +0,0 @@ -# Generated by Django 5.0.8 on 2024-08-22 16:18 - -from django.db import migrations - - -class Migration(migrations.Migration): - dependencies = [ - ("handler", "0003_alter_papersignature_options"), - ] - - operations = [ - migrations.RemoveField( - model_name="handler", - name="emergency_phone", - ), - migrations.RemoveField( - model_name="handler", - name="paper_signature", - ), - migrations.RemoveField( - model_name="handler", - name="rcra_site", - ), - migrations.RemoveField( - model_name="transporter", - name="handler_ptr", - ), - migrations.RemoveField( - model_name="signer", - name="phone", - ), - migrations.RemoveField( - model_name="transporter", - name="manifest", - ), - migrations.DeleteModel( - name="ESignature", - ), - migrations.DeleteModel( - name="PaperSignature", - ), - ] diff --git a/server/handler/migrations/0005_delete_handler_delete_manifestphone_delete_signer_and_more.py b/server/handler/migrations/0005_delete_handler_delete_manifestphone_delete_signer_and_more.py deleted file mode 100644 index f90b42eb..00000000 --- a/server/handler/migrations/0005_delete_handler_delete_manifestphone_delete_signer_and_more.py +++ /dev/null @@ -1,25 +0,0 @@ -# Generated by Django 5.0.8 on 2024-08-22 16:18 - -from django.db import migrations - - -class Migration(migrations.Migration): - dependencies = [ - ("handler", "0004_remove_handler_emergency_phone_and_more"), - ("manifest", "0002_handler_manifestphone_papersignature_and_more"), - ] - - operations = [ - migrations.DeleteModel( - name="Handler", - ), - migrations.DeleteModel( - name="ManifestPhone", - ), - migrations.DeleteModel( - name="Signer", - ), - migrations.DeleteModel( - name="Transporter", - ), - ] diff --git a/server/handler/migrations/__init__.py b/server/handler/migrations/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/server/handler/tests/__init__.py b/server/handler/tests/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/server/handler/tests/conftest.py b/server/handler/tests/conftest.py deleted file mode 100644 index e69de29b..00000000 diff --git a/server/haztrak/settings/base.py b/server/haztrak/settings/base.py index 4f35306e..7a3ce5c7 100644 --- a/server/haztrak/settings/base.py +++ b/server/haztrak/settings/base.py @@ -56,7 +56,6 @@ "django_celery_results", "django_celery_beat", "drf_spectacular", - "handler", "rcrasite", "core", "manifest", diff --git a/server/manifest/migrations/0001_initial.py b/server/manifest/migrations/0001_initial.py index 33da0832..bd7ae449 100644 --- a/server/manifest/migrations/0001_initial.py +++ b/server/manifest/migrations/0001_initial.py @@ -1,7 +1,8 @@ -# Generated by Django 4.2.10 on 2024-02-21 22:17 +# Generated by Django 5.0.8 on 2024-08-22 16:38 import django.db.models.deletion -import manifest.models +import manifest.models.contact +import manifest.models.manifest from django.db import migrations, models @@ -9,7 +10,7 @@ class Migration(migrations.Migration): initial = True dependencies = [ - ("handler", "0001_initial"), + ("rcrasite", "0001_initial"), ] operations = [ @@ -28,7 +29,7 @@ class Migration(migrations.Migration): blank=True, help_text="Original manifest tracking number of rejected manifestRegex expression validation: [0-9]{9}[A-Z]{3}", null=True, - validators=[manifest.models.validate_mtn], + validators=[manifest.models.manifest.validate_mtn], ), ), ( @@ -58,6 +59,57 @@ class Migration(migrations.Migration): "verbose_name_plural": "Additional Info", }, ), + migrations.CreateModel( + name="Handler", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, primary_key=True, serialize=False, verbose_name="ID" + ), + ), + ( + "rcra_site", + models.ForeignKey( + help_text="Hazardous waste rcra_site associated with the manifest", + on_delete=django.db.models.deletion.CASCADE, + to="rcrasite.rcrasite", + ), + ), + ], + options={ + "ordering": ["rcra_site"], + }, + ), + migrations.CreateModel( + name="ManifestPhone", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, primary_key=True, serialize=False, verbose_name="ID" + ), + ), + ("number", manifest.models.contact.ManifestPhoneNumber(max_length=12)), + ("extension", models.CharField(blank=True, max_length=6, null=True)), + ], + options={ + "ordering": ["number"], + }, + ), + migrations.CreateModel( + name="PaperSignature", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, primary_key=True, serialize=False, verbose_name="ID" + ), + ), + ("printed_name", models.CharField(max_length=255)), + ("sign_date", models.DateTimeField()), + ], + ), migrations.CreateModel( name="PortOfEntry", fields=[ @@ -163,10 +215,10 @@ class Migration(migrations.Migration): ( "mtn", models.CharField( - default=manifest.models.draft_mtn, + default=manifest.models.manifest.draft_mtn, max_length=30, unique=True, - validators=[manifest.models.validate_mtn], + validators=[manifest.models.manifest.validate_mtn], verbose_name="manifest Tracking Number", ), ), @@ -302,7 +354,7 @@ class Migration(migrations.Migration): models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, related_name="generator", - to="handler.handler", + to="manifest.handler", ), ), ( @@ -310,7 +362,7 @@ class Migration(migrations.Migration): models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, related_name="designated_facility", - to="handler.handler", + to="manifest.handler", verbose_name="designated facility", ), ), @@ -319,4 +371,141 @@ class Migration(migrations.Migration): "ordering": ["update_date", "mtn"], }, ), + migrations.AddField( + model_name="handler", + name="emergency_phone", + field=models.ForeignKey( + blank=True, + help_text="Emergency phone number for the hazardous waste rcra_site", + null=True, + on_delete=django.db.models.deletion.PROTECT, + to="manifest.manifestphone", + ), + ), + migrations.AddField( + model_name="handler", + name="paper_signature", + field=models.OneToOneField( + blank=True, + help_text="The signature associated with hazardous waste custody exchange", + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="manifest.papersignature", + ), + ), + migrations.CreateModel( + name="Signer", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, primary_key=True, serialize=False, verbose_name="ID" + ), + ), + ("rcra_user_id", models.CharField(blank=True, max_length=100, null=True)), + ("first_name", models.CharField(blank=True, max_length=38, null=True)), + ("middle_initial", models.CharField(blank=True, max_length=1, null=True)), + ("last_name", models.CharField(blank=True, max_length=38, null=True)), + ("email", models.CharField(blank=True, max_length=38, null=True)), + ("company_name", models.CharField(blank=True, max_length=80, null=True)), + ( + "contact_type", + models.CharField( + blank=True, + choices=[("email", "Email"), ("voice", "Voice"), ("text", "Text")], + max_length=5, + null=True, + ), + ), + ( + "signer_role", + models.CharField( + choices=[ + ("Industry", "Industry"), + ("PPC", "Ppc"), + ("EPA", "Epa"), + ("State", "State"), + ], + max_length=10, + null=True, + ), + ), + ( + "phone", + models.ForeignKey( + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="manifest.manifestphone", + ), + ), + ], + options={ + "ordering": ["first_name"], + }, + ), + migrations.CreateModel( + name="ESignature", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, primary_key=True, serialize=False, verbose_name="ID" + ), + ), + ("sign_date", models.DateTimeField(blank=True, null=True)), + ("cromerr_activity_id", models.CharField(blank=True, max_length=100, null=True)), + ("cromerr_document_id", models.CharField(blank=True, max_length=100, null=True)), + ("on_behalf", models.BooleanField(blank=True, default=False, null=True)), + ( + "manifest_handler", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="e_signatures", + to="manifest.handler", + ), + ), + ( + "signer", + models.OneToOneField( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to="manifest.signer", + ), + ), + ], + options={ + "verbose_name": "e-Signature", + "ordering": ["sign_date"], + }, + ), + migrations.CreateModel( + name="Transporter", + fields=[ + ( + "handler_ptr", + models.OneToOneField( + auto_created=True, + on_delete=django.db.models.deletion.CASCADE, + parent_link=True, + primary_key=True, + serialize=False, + to="manifest.handler", + ), + ), + ("order", models.PositiveIntegerField()), + ( + "manifest", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="transporters", + to="manifest.manifest", + ), + ), + ], + options={ + "ordering": ["manifest__mtn"], + }, + bases=("manifest.handler",), + ), ] diff --git a/server/manifest/migrations/0002_handler_manifestphone_papersignature_and_more.py b/server/manifest/migrations/0002_handler_manifestphone_papersignature_and_more.py deleted file mode 100644 index cb22c972..00000000 --- a/server/manifest/migrations/0002_handler_manifestphone_papersignature_and_more.py +++ /dev/null @@ -1,222 +0,0 @@ -# Generated by Django 5.0.8 on 2024-08-22 16:18 - -import django.db.models.deletion -import manifest.models.contact -from django.db import migrations, models - - -class Migration(migrations.Migration): - dependencies = [ - ("manifest", "0001_initial"), - ("rcrasite", "0001_initial"), - ] - - operations = [ - migrations.CreateModel( - name="Handler", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, primary_key=True, serialize=False, verbose_name="ID" - ), - ), - ( - "rcra_site", - models.ForeignKey( - help_text="Hazardous waste rcra_site associated with the manifest", - on_delete=django.db.models.deletion.CASCADE, - to="rcrasite.rcrasite", - ), - ), - ], - options={ - "ordering": ["rcra_site"], - }, - ), - migrations.CreateModel( - name="ManifestPhone", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, primary_key=True, serialize=False, verbose_name="ID" - ), - ), - ("number", manifest.models.contact.ManifestPhoneNumber(max_length=12)), - ("extension", models.CharField(blank=True, max_length=6, null=True)), - ], - options={ - "ordering": ["number"], - }, - ), - migrations.CreateModel( - name="PaperSignature", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, primary_key=True, serialize=False, verbose_name="ID" - ), - ), - ("printed_name", models.CharField(max_length=255)), - ("sign_date", models.DateTimeField()), - ], - ), - migrations.AlterField( - model_name="manifest", - name="generator", - field=models.ForeignKey( - on_delete=django.db.models.deletion.PROTECT, - related_name="generator", - to="manifest.handler", - ), - ), - migrations.AlterField( - model_name="manifest", - name="tsdf", - field=models.ForeignKey( - on_delete=django.db.models.deletion.PROTECT, - related_name="designated_facility", - to="manifest.handler", - verbose_name="designated facility", - ), - ), - migrations.AddField( - model_name="handler", - name="emergency_phone", - field=models.ForeignKey( - blank=True, - help_text="Emergency phone number for the hazardous waste rcra_site", - null=True, - on_delete=django.db.models.deletion.PROTECT, - to="manifest.manifestphone", - ), - ), - migrations.AddField( - model_name="handler", - name="paper_signature", - field=models.OneToOneField( - blank=True, - help_text="The signature associated with hazardous waste custody exchange", - null=True, - on_delete=django.db.models.deletion.CASCADE, - to="manifest.papersignature", - ), - ), - migrations.CreateModel( - name="Signer", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, primary_key=True, serialize=False, verbose_name="ID" - ), - ), - ("rcra_user_id", models.CharField(blank=True, max_length=100, null=True)), - ("first_name", models.CharField(blank=True, max_length=38, null=True)), - ("middle_initial", models.CharField(blank=True, max_length=1, null=True)), - ("last_name", models.CharField(blank=True, max_length=38, null=True)), - ("email", models.CharField(blank=True, max_length=38, null=True)), - ("company_name", models.CharField(blank=True, max_length=80, null=True)), - ( - "contact_type", - models.CharField( - blank=True, - choices=[("email", "Email"), ("voice", "Voice"), ("text", "Text")], - max_length=5, - null=True, - ), - ), - ( - "signer_role", - models.CharField( - choices=[ - ("Industry", "Industry"), - ("PPC", "Ppc"), - ("EPA", "Epa"), - ("State", "State"), - ], - max_length=10, - null=True, - ), - ), - ( - "phone", - models.ForeignKey( - null=True, - on_delete=django.db.models.deletion.CASCADE, - to="manifest.manifestphone", - ), - ), - ], - options={ - "ordering": ["first_name"], - }, - ), - migrations.CreateModel( - name="ESignature", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, primary_key=True, serialize=False, verbose_name="ID" - ), - ), - ("sign_date", models.DateTimeField(blank=True, null=True)), - ("cromerr_activity_id", models.CharField(blank=True, max_length=100, null=True)), - ("cromerr_document_id", models.CharField(blank=True, max_length=100, null=True)), - ("on_behalf", models.BooleanField(blank=True, default=False, null=True)), - ( - "manifest_handler", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="e_signatures", - to="manifest.handler", - ), - ), - ( - "signer", - models.OneToOneField( - blank=True, - null=True, - on_delete=django.db.models.deletion.CASCADE, - to="manifest.signer", - ), - ), - ], - options={ - "verbose_name": "e-Signature", - "ordering": ["sign_date"], - }, - ), - migrations.CreateModel( - name="Transporter", - fields=[ - ( - "handler_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="manifest.handler", - ), - ), - ("order", models.PositiveIntegerField()), - ( - "manifest", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="transporters", - to="manifest.manifest", - ), - ), - ], - options={ - "ordering": ["manifest__mtn"], - }, - bases=("manifest.handler",), - ), - ] diff --git a/server/wasteline/migrations/0001_initial.py b/server/wasteline/migrations/0001_initial.py index 18202062..1f77d1c3 100644 --- a/server/wasteline/migrations/0001_initial.py +++ b/server/wasteline/migrations/0001_initial.py @@ -1,66 +1,182 @@ -# Generated by Django 4.2.10 on 2024-02-21 22:17 +# Generated by Django 5.0.8 on 2024-08-22 16:38 -from django.db import migrations, models import django.db.models.deletion +from django.db import migrations, models class Migration(migrations.Migration): - initial = True dependencies = [ - ('manifest', '0001_initial'), + ("manifest", "0001_initial"), ] operations = [ migrations.CreateModel( - name='DotLookup', + name="DotLookup", fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('value', models.CharField(max_length=255)), - ('value_type', models.CharField(choices=[('ID', 'Id'), ('GROUP', 'Group'), ('NAME', 'Name'), ('CLASS', 'Class')], max_length=5)), + ( + "id", + models.BigAutoField( + auto_created=True, primary_key=True, serialize=False, verbose_name="ID" + ), + ), + ("value", models.CharField(max_length=255)), + ( + "value_type", + models.CharField( + choices=[ + ("ID", "Id"), + ("GROUP", "Group"), + ("NAME", "Name"), + ("CLASS", "Class"), + ], + max_length=5, + ), + ), ], options={ - 'verbose_name': 'DOT lookup', - 'verbose_name_plural': 'DOT lookups', - 'ordering': ['value_type', 'value'], + "verbose_name": "DOT lookup", + "verbose_name_plural": "DOT lookups", + "ordering": ["value_type", "value"], }, ), migrations.CreateModel( - name='WasteCode', + name="WasteCode", fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('code', models.CharField(max_length=6, unique=True)), - ('description', models.TextField(blank=True, null=True)), - ('code_type', models.CharField(choices=[('ST', 'State'), ('FD', 'Federal')], max_length=2)), - ('state_id', models.CharField(blank=True, choices=[('AK', 'Alaska'), ('AL', 'Alabama'), ('AP', 'Armed Forces Pacific'), ('AR', 'Arkansas'), ('AZ', 'Arizona'), ('CA', 'California'), ('CO', 'Colorado'), ('CT', 'Connecticut'), ('DC', 'District of Columbia'), ('DE', 'Delaware'), ('FL', 'Florida'), ('GA', 'Georgia'), ('GU', 'Guam'), ('HI', 'Hawaii'), ('IA', 'Iowa'), ('ID', 'Idaho'), ('IL', 'Illinois'), ('IN', 'Indiana'), ('KS', 'Kansas'), ('KY', 'Kentucky'), ('LA', 'Louisiana'), ('MA', 'Massachusetts'), ('MD', 'Maryland'), ('ME', 'Maine'), ('MI', 'Michigan'), ('MN', 'Minnesota'), ('MO', 'Missouri'), ('MS', 'Mississippi'), ('MT', 'Montana'), ('NC', 'North Carolina'), ('ND', 'North Dakota'), ('NE', 'Nebraska'), ('NH', 'New Hampshire'), ('NJ', 'New Jersey'), ('NM', 'New Mexico'), ('NV', 'Nevada'), ('NY', 'New York'), ('OH', 'Ohio'), ('OK', 'Oklahoma'), ('OR', 'Oregon'), ('PA', 'Pennsylvania'), ('PR', 'Puerto Rico'), ('RI', 'Rhode Island'), ('SC', 'South Carolina'), ('SD', 'South Dakota'), ('TN', 'Tennessee'), ('TX', 'Texas'), ('UT', 'Utah'), ('VA', 'Virginia'), ('VI', 'Virgin Islands'), ('VT', 'Vermont'), ('WA', 'Washington'), ('WI', 'Wisconsin'), ('WV', 'West Virginia'), ('WY', 'Wyoming')], max_length=3, null=True)), + ( + "id", + models.BigAutoField( + auto_created=True, primary_key=True, serialize=False, verbose_name="ID" + ), + ), + ("code", models.CharField(max_length=6, unique=True)), + ("description", models.TextField(blank=True, null=True)), + ( + "code_type", + models.CharField(choices=[("ST", "State"), ("FD", "Federal")], max_length=2), + ), + ( + "state_id", + models.CharField( + blank=True, + choices=[ + ("AK", "Alaska"), + ("AL", "Alabama"), + ("AP", "Armed Forces Pacific"), + ("AR", "Arkansas"), + ("AZ", "Arizona"), + ("CA", "California"), + ("CO", "Colorado"), + ("CT", "Connecticut"), + ("DC", "District of Columbia"), + ("DE", "Delaware"), + ("FL", "Florida"), + ("GA", "Georgia"), + ("GU", "Guam"), + ("HI", "Hawaii"), + ("IA", "Iowa"), + ("ID", "Idaho"), + ("IL", "Illinois"), + ("IN", "Indiana"), + ("KS", "Kansas"), + ("KY", "Kentucky"), + ("LA", "Louisiana"), + ("MA", "Massachusetts"), + ("MD", "Maryland"), + ("ME", "Maine"), + ("MI", "Michigan"), + ("MN", "Minnesota"), + ("MO", "Missouri"), + ("MS", "Mississippi"), + ("MT", "Montana"), + ("NC", "North Carolina"), + ("ND", "North Dakota"), + ("NE", "Nebraska"), + ("NH", "New Hampshire"), + ("NJ", "New Jersey"), + ("NM", "New Mexico"), + ("NV", "Nevada"), + ("NY", "New York"), + ("OH", "Ohio"), + ("OK", "Oklahoma"), + ("OR", "Oregon"), + ("PA", "Pennsylvania"), + ("PR", "Puerto Rico"), + ("RI", "Rhode Island"), + ("SC", "South Carolina"), + ("SD", "South Dakota"), + ("TN", "Tennessee"), + ("TX", "Texas"), + ("UT", "Utah"), + ("VA", "Virginia"), + ("VI", "Virgin Islands"), + ("VT", "Vermont"), + ("WA", "Washington"), + ("WI", "Wisconsin"), + ("WV", "West Virginia"), + ("WY", "Wyoming"), + ], + max_length=3, + null=True, + ), + ), ], options={ - 'ordering': ['code'], + "ordering": ["code"], }, ), migrations.CreateModel( - name='WasteLine', + name="WasteLine", fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('line_number', models.PositiveIntegerField(verbose_name='waste line number')), - ('dot_hazardous', models.BooleanField(verbose_name='DOT hazardous')), - ('dot_info', models.JSONField(blank=True, null=True, verbose_name='DOT information')), - ('quantity', models.JSONField(blank=True, null=True)), - ('hazardous_waste', models.JSONField(blank=True, null=True)), - ('br', models.BooleanField(verbose_name='BR info provided')), - ('br_info', models.JSONField(blank=True, null=True, verbose_name='BR information')), - ('management_method', models.JSONField(blank=True, null=True, verbose_name='management method code')), - ('pcb', models.BooleanField(verbose_name='contains PCBs')), - ('pcb_infos', models.JSONField(blank=True, null=True, verbose_name='PCB information')), - ('discrepancy_info', models.JSONField(blank=True, null=True, verbose_name='discrepancy-residue information')), - ('epa_waste', models.BooleanField(verbose_name='EPA waste')), - ('additional_info', models.JSONField(blank=True, null=True)), - ('manifest', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='wastes', to='manifest.manifest')), + ( + "id", + models.BigAutoField( + auto_created=True, primary_key=True, serialize=False, verbose_name="ID" + ), + ), + ("line_number", models.PositiveIntegerField(verbose_name="waste line number")), + ("dot_hazardous", models.BooleanField(verbose_name="DOT hazardous")), + ( + "dot_info", + models.JSONField(blank=True, null=True, verbose_name="DOT information"), + ), + ("quantity", models.JSONField(blank=True, null=True)), + ("hazardous_waste", models.JSONField(blank=True, null=True)), + ("br", models.BooleanField(verbose_name="BR info provided")), + ( + "br_info", + models.JSONField(blank=True, null=True, verbose_name="BR information"), + ), + ( + "management_method", + models.JSONField(blank=True, null=True, verbose_name="management method code"), + ), + ("pcb", models.BooleanField(verbose_name="contains PCBs")), + ( + "pcb_infos", + models.JSONField(blank=True, null=True, verbose_name="PCB information"), + ), + ( + "discrepancy_info", + models.JSONField( + blank=True, null=True, verbose_name="discrepancy-residue information" + ), + ), + ("epa_waste", models.BooleanField(verbose_name="EPA waste")), + ("additional_info", models.JSONField(blank=True, null=True)), + ( + "manifest", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="wastes", + to="manifest.manifest", + ), + ), ], options={ - 'ordering': ['manifest__mtn', 'line_number'], - 'unique_together': {('manifest', 'line_number')}, + "ordering": ["manifest__mtn", "line_number"], + "unique_together": {("manifest", "line_number")}, }, ), ] From 07fdd513c57b1eeebf65e1a464b21c199c659c7c Mon Sep 17 00:00:00 2001 From: David Paul Graham Date: Thu, 22 Aug 2024 11:47:08 -0500 Subject: [PATCH 7/9] reorg manifest app tests --- server/manifest/tests/models/__init__.py | 0 server/manifest/tests/{ => models}/test_handler_models.py | 0 .../tests/{test_models.py => models/test_manifest_models.py} | 0 server/manifest/tests/{ => models}/test_signature_models.py | 0 server/manifest/tests/serializers/__init__.py | 0 .../{test_handler_serializer.py => serializers/test_handler.py} | 0 .../tests/{test_serializers.py => serializers/test_manifest.py} | 0 .../test_signature.py} | 0 server/manifest/tests/services/__init__.py | 0 .../{test_emanifest_service.py => services/test_emanifest.py} | 2 +- .../{test_handler_services.py => services/test_handler.py} | 0 .../{test_manifest_services.py => services/test_manifest.py} | 0 server/manifest/tests/{ => services}/test_search_emanifest.py | 2 +- 13 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 server/manifest/tests/models/__init__.py rename server/manifest/tests/{ => models}/test_handler_models.py (100%) rename server/manifest/tests/{test_models.py => models/test_manifest_models.py} (100%) rename server/manifest/tests/{ => models}/test_signature_models.py (100%) create mode 100644 server/manifest/tests/serializers/__init__.py rename server/manifest/tests/{test_handler_serializer.py => serializers/test_handler.py} (100%) rename server/manifest/tests/{test_serializers.py => serializers/test_manifest.py} (100%) rename server/manifest/tests/{test_signature_serializer.py => serializers/test_signature.py} (100%) create mode 100644 server/manifest/tests/services/__init__.py rename server/manifest/tests/{test_emanifest_service.py => services/test_emanifest.py} (100%) rename server/manifest/tests/{test_handler_services.py => services/test_handler.py} (100%) rename server/manifest/tests/{test_manifest_services.py => services/test_manifest.py} (100%) rename server/manifest/tests/{ => services}/test_search_emanifest.py (100%) diff --git a/server/manifest/tests/models/__init__.py b/server/manifest/tests/models/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/server/manifest/tests/test_handler_models.py b/server/manifest/tests/models/test_handler_models.py similarity index 100% rename from server/manifest/tests/test_handler_models.py rename to server/manifest/tests/models/test_handler_models.py diff --git a/server/manifest/tests/test_models.py b/server/manifest/tests/models/test_manifest_models.py similarity index 100% rename from server/manifest/tests/test_models.py rename to server/manifest/tests/models/test_manifest_models.py diff --git a/server/manifest/tests/test_signature_models.py b/server/manifest/tests/models/test_signature_models.py similarity index 100% rename from server/manifest/tests/test_signature_models.py rename to server/manifest/tests/models/test_signature_models.py diff --git a/server/manifest/tests/serializers/__init__.py b/server/manifest/tests/serializers/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/server/manifest/tests/test_handler_serializer.py b/server/manifest/tests/serializers/test_handler.py similarity index 100% rename from server/manifest/tests/test_handler_serializer.py rename to server/manifest/tests/serializers/test_handler.py diff --git a/server/manifest/tests/test_serializers.py b/server/manifest/tests/serializers/test_manifest.py similarity index 100% rename from server/manifest/tests/test_serializers.py rename to server/manifest/tests/serializers/test_manifest.py diff --git a/server/manifest/tests/test_signature_serializer.py b/server/manifest/tests/serializers/test_signature.py similarity index 100% rename from server/manifest/tests/test_signature_serializer.py rename to server/manifest/tests/serializers/test_signature.py diff --git a/server/manifest/tests/services/__init__.py b/server/manifest/tests/services/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/server/manifest/tests/test_emanifest_service.py b/server/manifest/tests/services/test_emanifest.py similarity index 100% rename from server/manifest/tests/test_emanifest_service.py rename to server/manifest/tests/services/test_emanifest.py index e22bc99a..b9670d94 100644 --- a/server/manifest/tests/test_emanifest_service.py +++ b/server/manifest/tests/services/test_emanifest.py @@ -1,8 +1,8 @@ import pytest import pytest_mock +from core.services import RcraClient, get_rcra_client from rest_framework import status -from core.services import RcraClient, get_rcra_client from manifest.services import EManifest diff --git a/server/manifest/tests/test_handler_services.py b/server/manifest/tests/services/test_handler.py similarity index 100% rename from server/manifest/tests/test_handler_services.py rename to server/manifest/tests/services/test_handler.py diff --git a/server/manifest/tests/test_manifest_services.py b/server/manifest/tests/services/test_manifest.py similarity index 100% rename from server/manifest/tests/test_manifest_services.py rename to server/manifest/tests/services/test_manifest.py diff --git a/server/manifest/tests/test_search_emanifest.py b/server/manifest/tests/services/test_search_emanifest.py similarity index 100% rename from server/manifest/tests/test_search_emanifest.py rename to server/manifest/tests/services/test_search_emanifest.py index b13f97bb..59fb9c91 100644 --- a/server/manifest/tests/test_search_emanifest.py +++ b/server/manifest/tests/services/test_search_emanifest.py @@ -2,8 +2,8 @@ from datetime import UTC, datetime import pytest - from core.services import RcraClient + from manifest.services.emanifest_search import EmanifestSearch From 0c4b27b4ba65fdce79eded5485caa1437a31bc9d Mon Sep 17 00:00:00 2001 From: David Paul Graham Date: Thu, 22 Aug 2024 11:58:38 -0500 Subject: [PATCH 8/9] fix development fixtures --- server/fixtures/dev_data.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/fixtures/dev_data.yaml b/server/fixtures/dev_data.yaml index 9cdb6594..ebe34f69 100644 --- a/server/fixtures/dev_data.yaml +++ b/server/fixtures/dev_data.yaml @@ -58,7 +58,7 @@ state: VA country: US zip: "22202" -- model: handler.manifestphone +- model: manifest.manifestphone pk: 1 fields: number: 321-321-3214 From 9f34311d4c0672e6969658186be1834135a506a8 Mon Sep 17 00:00:00 2001 From: David Paul Graham Date: Thu, 22 Aug 2024 12:08:37 -0500 Subject: [PATCH 9/9] move development fixtures to individual apps --- compose.yaml | 2 +- server/.dockerignore | 2 +- server/core/fixtures/core_dev.yaml | 45 ++++ server/fixtures/dev_data.yaml | 210 ------------------ .../manifest/tests/services/test_manifest.py | 1 + .../{org_permissions.yaml => org_dev.yaml} | 23 ++ server/profile/fixtures/profile_dev.yaml | 44 ++++ server/rcrasite/fixtures/rcrasite_dev.yaml | 93 ++++++++ 8 files changed, 208 insertions(+), 212 deletions(-) create mode 100644 server/core/fixtures/core_dev.yaml delete mode 100644 server/fixtures/dev_data.yaml rename server/org/fixtures/{org_permissions.yaml => org_dev.yaml} (67%) create mode 100644 server/profile/fixtures/profile_dev.yaml create mode 100644 server/rcrasite/fixtures/rcrasite_dev.yaml diff --git a/compose.yaml b/compose.yaml index f1b75256..99f06514 100644 --- a/compose.yaml +++ b/compose.yaml @@ -31,7 +31,7 @@ services: sh -c " python manage.py makemigrations && python manage.py migrate && - python manage.py loaddata dev_data.yaml org_permissions.yaml && + python manage.py loaddata core_dev.yaml rcrasite_dev.yaml org_dev.yaml profile_dev.yaml && python manage.py runserver 0.0.0.0:8000" healthcheck: test: diff --git a/server/.dockerignore b/server/.dockerignore index 111a454c..d70243a4 100644 --- a/server/.dockerignore +++ b/server/.dockerignore @@ -2,7 +2,7 @@ **/tests Dockerfile .dockerignore -db.sqlite3 +**/*.sqlite3 **/.git **/.gitignore **/.vscode diff --git a/server/core/fixtures/core_dev.yaml b/server/core/fixtures/core_dev.yaml new file mode 100644 index 00000000..499c340a --- /dev/null +++ b/server/core/fixtures/core_dev.yaml @@ -0,0 +1,45 @@ +- model: core.trakuser + pk: 8062d496-15f1-485d-961c-a8e5fa118dde + fields: + password: pbkdf2_sha256$390000$iVFyQyb6N3g06Wan8YLnTv$MgFhKBvwPSwctgxWSviA/OXClEKtDXg87iPU+g9+Zjs= + last_login: 2023-03-19 00:29:46.249589+00:00 + is_superuser: false + username: orgadmin + first_name: "org" + last_name: "admin" + email: foo@generator.com + is_staff: true + is_active: true + date_joined: 2022-12-17 19:14:17.239000+00:00 + groups: [1, 2] + user_permissions: [] +- model: core.trakuser + pk: a0ba4966-aa53-44c8-be1a-0a0d2d6b6acd + fields: + password: pbkdf2_sha256$390000$iVFyQyb6N3g06Wan8YLnTv$MgFhKBvwPSwctgxWSviA/OXClEKtDXg87iPU+g9+Zjs= + last_login: 2023-03-19 00:29:46.249589+00:00 + is_superuser: true + username: admin + first_name: "" + last_name: "" + email: balh@blah.com + is_staff: true + is_active: true + date_joined: 2022-12-17 19:14:17.239000+00:00 + groups: [] + user_permissions: [] +- model: core.trakuser + pk: 4ac96f68-42cf-47ea-bffb-f24d423dbc35 + fields: + password: pbkdf2_sha256$390000$SB7EHpYC88CjsX5tcbxa8E$yh1TWONkGI2z/bjblkPSTyjpd1UdhnivPW5nzA9NGOk= + last_login: null + is_superuser: false + username: testuser1 + first_name: "David" + last_name: "Graham" + email: "myemail@proton.me" + is_staff: false + is_active: true + date_joined: 2022-12-17 19:17:58.260000+00:00 + groups: [2] + user_permissions: [] diff --git a/server/fixtures/dev_data.yaml b/server/fixtures/dev_data.yaml deleted file mode 100644 index ebe34f69..00000000 --- a/server/fixtures/dev_data.yaml +++ /dev/null @@ -1,210 +0,0 @@ -- model: core.trakuser - pk: 8062d496-15f1-485d-961c-a8e5fa118dde - fields: - password: pbkdf2_sha256$390000$iVFyQyb6N3g06Wan8YLnTv$MgFhKBvwPSwctgxWSviA/OXClEKtDXg87iPU+g9+Zjs= - last_login: 2023-03-19 00:29:46.249589+00:00 - is_superuser: false - username: orgadmin - first_name: "org" - last_name: "admin" - email: foo@generator.com - is_staff: true - is_active: true - date_joined: 2022-12-17 19:14:17.239000+00:00 - groups: [1, 2] - user_permissions: [] -- model: core.trakuser - pk: a0ba4966-aa53-44c8-be1a-0a0d2d6b6acd - fields: - password: pbkdf2_sha256$390000$iVFyQyb6N3g06Wan8YLnTv$MgFhKBvwPSwctgxWSviA/OXClEKtDXg87iPU+g9+Zjs= - last_login: 2023-03-19 00:29:46.249589+00:00 - is_superuser: true - username: admin - first_name: "" - last_name: "" - email: balh@blah.com - is_staff: true - is_active: true - date_joined: 2022-12-17 19:14:17.239000+00:00 - groups: [] - user_permissions: [] -- model: core.trakuser - pk: 4ac96f68-42cf-47ea-bffb-f24d423dbc35 - fields: - password: pbkdf2_sha256$390000$SB7EHpYC88CjsX5tcbxa8E$yh1TWONkGI2z/bjblkPSTyjpd1UdhnivPW5nzA9NGOk= - last_login: null - is_superuser: false - username: testuser1 - first_name: "David" - last_name: "Graham" - email: "myemail@proton.me" - is_staff: false - is_active: true - date_joined: 2022-12-17 19:17:58.260000+00:00 - groups: [2] - user_permissions: [] -- model: authtoken.token - pk: d9609d7764af771ee0def1db08dc7f90dd5e2d6d - fields: - user: 4ac96f68-42cf-47ea-bffb-f24d423dbc35 - created: 2022-12-18 13:10:40.552000+00:00 -- model: rcrasite.address - pk: 1 - fields: - street_number: null - address1: 123 VA TEST GEN 2021 WAY - address2: null - city: ARLINGTON - state: VA - country: US - zip: "22202" -- model: manifest.manifestphone - pk: 1 - fields: - number: 321-321-3214 - extension: null -- model: rcrasite.rcraphone - pk: 1 - fields: - number: 321-321-3214 - extension: null -- model: rcrasite.contact - pk: 1 - fields: - first_name: David - middle_initial: P - last_name: Graham - phone: 1 - email: testuser1@haztrak.net - company_name: haztrak -- model: rcrasite.rcrasite - pk: 1 - fields: - site_type: Generator - epa_id: VATESTGEN001 - name: VA TEST GEN 2021 - site_address: 1 - mail_address: 1 - modified: false - registered: false - contact: 1 - emergency_phone: null - gis_primary: false - can_esign: true - limited_esign: true - registered_emanifest_user: true -- model: rcrasite.rcrasite - pk: 2 - fields: - site_type: Transporter - epa_id: MOCKTRANS001 - name: Mock Transporter 01 - site_address: 1 - mail_address: 1 - modified: false - registered: false - contact: 1 - emergency_phone: null - gis_primary: false - can_esign: true - limited_esign: true - registered_emanifest_user: true -- model: rcrasite.rcrasite - pk: 3 - fields: - site_type: Transporter - epa_id: MOCKTRANS002 - name: Mock Transporter 02 - site_address: 1 - mail_address: 1 - modified: false - registered: false - contact: 1 - emergency_phone: null - gis_primary: false - can_esign: true - limited_esign: true - registered_emanifest_user: true -- model: rcrasite.rcrasite - pk: 4 - fields: - site_type: Tsdf - epa_id: MOCKTSDFS001 - name: Mock haztrak TSDF 01 - site_address: 1 - mail_address: 1 - modified: false - registered: false - contact: 1 - emergency_phone: null - gis_primary: false - can_esign: true - limited_esign: true - registered_emanifest_user: true -- model: profile.rcrainfoprofile - pk: d74f904a-7843-4a60-862c-3b94b6051359 - fields: - rcra_username: dpgraham4401 - phone_number: null - email: orgadmin@generator.com -- model: profile.rcrainfoprofile - pk: 1fd27bec-8743-4eb3-a44c-fd063ea62021 - fields: - rcra_username: "" - phone_number: null - email: superadmin@gmail.com -- model: profile.rcrainfoprofile - pk: 192c73f4-24f1-4f21-8239-dee2da43c547 - fields: - rcra_username: emanifestpyuser1 - phone_number: null - email: testuser1@haztrak.net -- model: org.org - pk: efb9e104-7f61-4365-a9af-9d7b55c854c4 - fields: - name: Generators Org LLC - admin: 8062d496-15f1-485d-961c-a8e5fa118dde - slug: generators-org-llc -- model: profile.profile - pk: c65dbee9-b6bf-400e-93e0-90a749cc2939 - fields: - user: 8062d496-15f1-485d-961c-a8e5fa118dde - rcrainfo_profile: d74f904a-7843-4a60-862c-3b94b6051359 -- model: profile.profile - pk: 186642a9-7b5f-4bcb-b328-0fdf8b43f191 - fields: - user: a0ba4966-aa53-44c8-be1a-0a0d2d6b6acd - rcrainfo_profile: 1fd27bec-8743-4eb3-a44c-fd063ea62021 -- model: profile.profile - pk: 87e355dd-1898-4a0a-81c3-1e9ac8473143 - fields: - user: 4ac96f68-42cf-47ea-bffb-f24d423dbc35 - rcrainfo_profile: 192c73f4-24f1-4f21-8239-dee2da43c547 -- model: org.site - pk: 1 - fields: - name: VA TEST GEN 2021 - rcra_site: 1 - last_rcrainfo_manifest_sync: null - org: efb9e104-7f61-4365-a9af-9d7b55c854c4 -- model: profile.rcrainfositeaccess - pk: 1 - fields: - site: 1 - profile: 192c73f4-24f1-4f21-8239-dee2da43c547 - site_manager: true - annual_report: Certifier - biennial_report: Certifier - e_manifest: Certifier - my_rcra_id: Certifier - wiets: Certifier -- model: org.siteuserobjectpermission - pk: 1 - fields: - permission: - - view_site - - org - - site - user: - - testuser1 - content_object: 1 diff --git a/server/manifest/tests/services/test_manifest.py b/server/manifest/tests/services/test_manifest.py index 8438451b..68f9370d 100644 --- a/server/manifest/tests/services/test_manifest.py +++ b/server/manifest/tests/services/test_manifest.py @@ -4,6 +4,7 @@ class TestGetManifestService: + # ToDo: fix transaction related to this test def test_returns_manifests_from_all_user_sites_by_default( self, manifest_factory, diff --git a/server/org/fixtures/org_permissions.yaml b/server/org/fixtures/org_dev.yaml similarity index 67% rename from server/org/fixtures/org_permissions.yaml rename to server/org/fixtures/org_dev.yaml index 822e77a7..2ab89481 100644 --- a/server/org/fixtures/org_permissions.yaml +++ b/server/org/fixtures/org_dev.yaml @@ -1,3 +1,26 @@ +- model: org.org + pk: efb9e104-7f61-4365-a9af-9d7b55c854c4 + fields: + name: Generators Org LLC + admin: 8062d496-15f1-485d-961c-a8e5fa118dde + slug: generators-org-llc +- model: org.site + pk: 1 + fields: + name: VA TEST GEN 2021 + rcra_site: 1 + last_rcrainfo_manifest_sync: null + org: efb9e104-7f61-4365-a9af-9d7b55c854c4 +- model: org.siteuserobjectpermission + pk: 1 + fields: + permission: + - view_site + - org + - site + user: + - testuser1 + content_object: 1 - model: auth.group fields: name: Org admin diff --git a/server/profile/fixtures/profile_dev.yaml b/server/profile/fixtures/profile_dev.yaml new file mode 100644 index 00000000..8dd01c7d --- /dev/null +++ b/server/profile/fixtures/profile_dev.yaml @@ -0,0 +1,44 @@ +- model: profile.rcrainfoprofile + pk: d74f904a-7843-4a60-862c-3b94b6051359 + fields: + rcra_username: dpgraham4401 + phone_number: null + email: orgadmin@generator.com +- model: profile.rcrainfoprofile + pk: 1fd27bec-8743-4eb3-a44c-fd063ea62021 + fields: + rcra_username: "" + phone_number: null + email: superadmin@gmail.com +- model: profile.rcrainfoprofile + pk: 192c73f4-24f1-4f21-8239-dee2da43c547 + fields: + rcra_username: emanifestpyuser1 + phone_number: null + email: testuser1@haztrak.net +- model: profile.profile + pk: c65dbee9-b6bf-400e-93e0-90a749cc2939 + fields: + user: 8062d496-15f1-485d-961c-a8e5fa118dde + rcrainfo_profile: d74f904a-7843-4a60-862c-3b94b6051359 +- model: profile.profile + pk: 186642a9-7b5f-4bcb-b328-0fdf8b43f191 + fields: + user: a0ba4966-aa53-44c8-be1a-0a0d2d6b6acd + rcrainfo_profile: 1fd27bec-8743-4eb3-a44c-fd063ea62021 +- model: profile.profile + pk: 87e355dd-1898-4a0a-81c3-1e9ac8473143 + fields: + user: 4ac96f68-42cf-47ea-bffb-f24d423dbc35 + rcrainfo_profile: 192c73f4-24f1-4f21-8239-dee2da43c547 +- model: profile.rcrainfositeaccess + pk: 1 + fields: + site: 1 + profile: 192c73f4-24f1-4f21-8239-dee2da43c547 + site_manager: true + annual_report: Certifier + biennial_report: Certifier + e_manifest: Certifier + my_rcra_id: Certifier + wiets: Certifier diff --git a/server/rcrasite/fixtures/rcrasite_dev.yaml b/server/rcrasite/fixtures/rcrasite_dev.yaml new file mode 100644 index 00000000..88b0b323 --- /dev/null +++ b/server/rcrasite/fixtures/rcrasite_dev.yaml @@ -0,0 +1,93 @@ +- model: rcrasite.address + pk: 1 + fields: + street_number: null + address1: 123 VA TEST GEN 2021 WAY + address2: null + city: ARLINGTON + state: VA + country: US + zip: "22202" +- model: manifest.manifestphone + pk: 1 + fields: + number: 321-321-3214 + extension: null +- model: rcrasite.rcraphone + pk: 1 + fields: + number: 321-321-3214 + extension: null +- model: rcrasite.contact + pk: 1 + fields: + first_name: David + middle_initial: P + last_name: Graham + phone: 1 + email: testuser1@haztrak.net + company_name: haztrak +- model: rcrasite.rcrasite + pk: 1 + fields: + site_type: Generator + epa_id: VATESTGEN001 + name: VA TEST GEN 2021 + site_address: 1 + mail_address: 1 + modified: false + registered: false + contact: 1 + emergency_phone: null + gis_primary: false + can_esign: true + limited_esign: true + registered_emanifest_user: true +- model: rcrasite.rcrasite + pk: 2 + fields: + site_type: Transporter + epa_id: MOCKTRANS001 + name: Mock Transporter 01 + site_address: 1 + mail_address: 1 + modified: false + registered: false + contact: 1 + emergency_phone: null + gis_primary: false + can_esign: true + limited_esign: true + registered_emanifest_user: true +- model: rcrasite.rcrasite + pk: 3 + fields: + site_type: Transporter + epa_id: MOCKTRANS002 + name: Mock Transporter 02 + site_address: 1 + mail_address: 1 + modified: false + registered: false + contact: 1 + emergency_phone: null + gis_primary: false + can_esign: true + limited_esign: true + registered_emanifest_user: true +- model: rcrasite.rcrasite + pk: 4 + fields: + site_type: Tsdf + epa_id: MOCKTSDFS001 + name: Mock haztrak TSDF 01 + site_address: 1 + mail_address: 1 + modified: false + registered: false + contact: 1 + emergency_phone: null + gis_primary: false + can_esign: true + limited_esign: true + registered_emanifest_user: true