diff --git a/.env b/.env index 6ef7179ad..394060a09 100644 --- a/.env +++ b/.env @@ -49,8 +49,4 @@ DEFAULT_PASS=rabbit_zaken_password OPENZAAK_ENABLED=True OPENZAAK_CATALOGI_URL=http://172.17.0.1:8000/catalogi/api/v1/catalogussen/c135a500-beac-4774-bc0d-b582630e605d OPENZAAK_DEFAULT_INFORMATIEOBJECTTYPE=http://172.17.0.1:8000/catalogi/api/v1/informatieobjecttypen/b96d14b0-03ad-421a-bc7c-b501652a04b2 -OPENZAAK_CASETYPEURL_TOEZICHT=https://localhost:8000/catalogi/api/v1/statustypen/a5628108-456f-4459-9c9c-4be8c9f67f13 -OPENZAAK_CASETYPEURL_HANDHAVING=https://localhost:8000/catalogi/api/v1/statustypen/a5628108-456f-4459-9c9c-4be8c9f67f14 -OPENZAAK_CASETYPEURL_AFGESLOTEN=https://localhost:8000/catalogi/api/v1/statustypen/a5628108-456f-4459-9c9c-4be8c9f67f15 -OPENZAAK_CASETYPEURL_DEFAULT=https://localhost:8000/catalogi/api/v1/statustypen/a5628108-456f-4459-9c9c-4be8c9f67f13 HOST=http://172.17.0.1:8080 diff --git a/app/apps/cases/admin.py b/app/apps/cases/admin.py index ead7aad01..1393df7c9 100644 --- a/app/apps/cases/admin.py +++ b/app/apps/cases/admin.py @@ -86,7 +86,7 @@ class CaseAdmin(admin.ModelAdmin): "address", "legacy_bwv_case_id", "is_legacy_bwv", - "is_legacy_camunda", + "case_url", "author", ) list_filter = ( @@ -123,6 +123,7 @@ class CaseStateAdmin(admin.ModelAdmin): "case", "status", "created", + "set_in_open_zaak", ) list_filter = ("status",) search_fields = ("case__id",) diff --git a/app/apps/cases/serializers/case.py b/app/apps/cases/serializers/case.py index e3fd386e9..017f1de71 100644 --- a/app/apps/cases/serializers/case.py +++ b/app/apps/cases/serializers/case.py @@ -3,6 +3,7 @@ from apps.cases.models import ( Advertisement, Case, + CaseDocument, CaseProject, CaseReason, CaseTheme, @@ -181,3 +182,16 @@ class Meta: "last_updated", "created", ) + + +class CaseDocumentSerializer(serializers.ModelSerializer): + class Meta: + model = CaseDocument + fields = "__all__" + + +class CaseDocumentUploadSerializer(serializers.Serializer): + file_uploaded = serializers.FileField() + + class Meta: + fields = ["file_uploaded"] diff --git a/app/apps/cases/views/case.py b/app/apps/cases/views/case.py index e84c50d6e..1aab18ac9 100644 --- a/app/apps/cases/views/case.py +++ b/app/apps/cases/views/case.py @@ -5,6 +5,8 @@ from apps.cases.models import Case, CaseProject, CaseReason, CaseStateType from apps.cases.serializers import ( AdvertisementSerializer, + CaseDocumentSerializer, + CaseDocumentUploadSerializer, CaseSerializer, CitizenReportSerializer, SubjectSerializer, @@ -12,6 +14,7 @@ from apps.events.mixins import CaseEventsMixin from apps.main.filters import RelatedOrderingFilter from apps.main.pagination import EmptyPagination +from apps.openzaak.helpers import create_document from apps.schedules.models import DaySegment, Priority, Schedule, WeekSegment from apps.users.permissions import ( CanAccessSensitiveCases, @@ -469,3 +472,43 @@ def advertisements(self, request, pk): context = paginator.paginate_queryset(query_set, request) serializer = AdvertisementSerializer(context, many=True) return paginator.get_paginated_response(serializer.data) + + @extend_schema( + description="Gets the CaseDocument instances associated with this case", + responses={status.HTTP_200_OK: CaseDocumentSerializer(many=True)}, + ) + @action( + detail=True, + url_path="documents", + methods=["get"], + ) + def documents(self, request, pk): + paginator = LimitOffsetPagination() + case = self.get_object() + query_set = case.casedocument_set.all() + context = paginator.paginate_queryset(query_set, request) + serializer = CaseDocumentSerializer(context, many=True) + return paginator.get_paginated_response(serializer.data) + + @extend_schema( + description="Add CaseDocument instances and associate it with this case", + responses={status.HTTP_200_OK: CaseDocumentSerializer()}, + request=CaseDocumentUploadSerializer(), + ) + @action( + detail=True, + url_path="documents", + methods=["post"], + ) + def add_document(self, request, pk): + case = self.get_object() + print(request.FILES.get("file_uploaded")) + file_uploaded = request.FILES.get("file_uploaded") + content_type = file_uploaded.content_type + print(content_type) + response = create_document(case, file_uploaded, "Mijn docje") + print(response) + serialized = CaseDocumentSerializer(response) + print(serialized) + print(serialized.data) + return Response(serialized.data) diff --git a/app/apps/openzaak/helpers.py b/app/apps/openzaak/helpers.py index b808978ed..02997beb4 100644 --- a/app/apps/openzaak/helpers.py +++ b/app/apps/openzaak/helpers.py @@ -6,7 +6,7 @@ import hashlib from datetime import date, datetime -from apps.cases.models import CaseDocument, CaseState +from apps.cases.models import CaseDocument from django.conf import settings from django.utils import timezone from django.utils.translation import ugettext as _ @@ -31,10 +31,13 @@ def _parse_date(date): def _build_zaak_body(instance): today = date.today() + casetheme_url = settings.OPENZAAK_CASETHEME_URLS.get( + instance.theme.id, settings.OPENZAAK_CASETHEME_URL_DEFAULT + ) return { "identificatie": f"{instance.id}{instance.identification}", "toelichting": instance.description or "Zaak aangemaakt via AZA", - "zaaktype": instance.theme.case_type_url, + "zaaktype": casetheme_url, "bronorganisatie": settings.DEFAULT_RSIN, "verantwoordelijkeOrganisatie": settings.DEFAULT_RSIN, "registratiedatum": _parse_date(today), @@ -46,7 +49,7 @@ def _build_zaak_body(instance): def _build_document_body(file, title, language, lock=None): file.seek(0) content = file.read() - string_content = content.decode("utf-8") + string_content = content.decode("utf-8", errors="ignore") document_body = { "bronorganisatie": settings.DEFAULT_RSIN, @@ -135,26 +138,13 @@ def create_open_zaak_case_state(instance): now = timezone.now() with_time = datetime.combine(instance.created, now.time()) - state_type_url = settings.OPENZAAK_CASETYPEURL_DEFAULT - if ( - instance.status == CaseState.CaseStateChoice.TOEZICHT - and settings.OPENZAAK_CASETYPEURL_TOEZICHT - ): - state_type_url = settings.OPENZAAK_CASETYPEURL_TOEZICHT - if ( - instance.status == CaseState.CaseStateChoice.HANDHAVING - and settings.OPENZAAK_CASETYPEURL_HANDHAVING - ): - state_type_url = settings.OPENZAAK_CASETYPEURL_HANDHAVING - if ( - instance.status == CaseState.CaseStateChoice.AFGESLOTEN - and settings.OPENZAAK_CASETYPEURL_AFGESLOTEN - ): - state_type_url = settings.OPENZAAK_CASETYPEURL_AFGESLOTEN + state_url = settings.OPENZAAK_CASESTATE_URLS.get( + instance.status, settings.OPENZAAK_CASESTATE_URL_DEFAULT + ) status_body = { "zaak": instance.case.case_url, - "statustype": state_type_url, + "statustype": state_url, "datumStatusGezet": with_time.isoformat(), "statustoelichting": _("Status aangepast in AZA"), } diff --git a/app/config/settings.py b/app/config/settings.py index a19de4cbb..bc7636daf 100644 --- a/app/config/settings.py +++ b/app/config/settings.py @@ -494,6 +494,30 @@ OPENZAAK_CASETYPEURL_HANDHAVING = os.getenv("OPENZAAK_CASETYPE_HANDHAVING") OPENZAAK_CASETYPEURL_AFGESLOTEN = os.getenv("OPENZAAK_CASETYPE_AFGESLOTEN") OPENZAAK_CASETYPEURL_DEFAULT = os.getenv("OPENZAAK_CASETYPE_DEFAULT") + +OPENZAAK_CASESTATE_URL_DEFAULT = os.getenv("OPENZAAK_CASESTATE_URL_DEFAULT") +OPENZAAK_CASESTATE_URLS = { + "TOEZICHT": os.getenv( + "OPENZAAK_CASESTATE_URL_TOEZICHT", OPENZAAK_CASESTATE_URL_DEFAULT + ), + "HANDHAVING": os.getenv( + "OPENZAAK_CASESTATE_URL_TOEZICHT", OPENZAAK_CASESTATE_URL_DEFAULT + ), + "AFGESLOTEN": os.getenv( + "OPENZAAK_CASESTATE_URL_TOEZICHT", OPENZAAK_CASESTATE_URL_DEFAULT + ), +} +OPENZAAK_CASETHEME_URL_DEFAULT = os.getenv("OPENZAAK_CASETHEME_URL_DEFAULT") +OPENZAAK_CASETHEME_URLS = { + 2: os.getenv( + "OPENZAAK_CASETHEME_URL_VAKANTIEVERHUUR", OPENZAAK_CASETHEME_URL_DEFAULT + ), + 3: os.getenv("OPENZAAK_CASETHEME_URL_KAMERVERHUUR", OPENZAAK_CASETHEME_URL_DEFAULT), + 4: os.getenv("OPENZAAK_CASETHEME_URL_ONDERMIJNING", OPENZAAK_CASETHEME_URL_DEFAULT), + 5: os.getenv("OPENZAAK_CASETHEME_URL_LEEGSTAND", OPENZAAK_CASETHEME_URL_DEFAULT), + 6: os.getenv("OPENZAAK_CASETHEME_URL_ONDERHUUR", OPENZAAK_CASETHEME_URL_DEFAULT), +} + HOST = os.getenv("HOST") DEFAULT_WORKFLOW_TYPE = os.getenv("DEFAULT_WORKFLOW_TYPE", "director") diff --git a/open-zaak/docker-compose.yml b/open-zaak/docker-compose.yml index 50633be06..12dc32dd9 100644 --- a/open-zaak/docker-compose.yml +++ b/open-zaak/docker-compose.yml @@ -19,7 +19,7 @@ services: redis: image: redis ports: - - 6379:6379 + - 6380:6379 networks: - open_zaken_network - zaken_network @@ -32,7 +32,7 @@ services: networks: - open_zaken_network - openzaak_local: + open-zaak.local: image: openzaak/open-zaak:1.6.0 networks: - open_zaken_network @@ -70,6 +70,8 @@ services: open_notificaties_celery: image: openzaak/open-notificaties:1.3.0 + ports: + - 8808:8000 command: /celery_worker.sh env_file: - open-notificaties/.env @@ -91,7 +93,7 @@ services: - redis - rabbitmq - open_notificaties: + open-notificaties.local: image: openzaak/open-notificaties:1.3.0 ports: - 8888:8000 diff --git a/open-zaak/open-zaak/.env b/open-zaak/open-zaak/.env index 9a9c9367e..ba25adaeb 100644 --- a/open-zaak/open-zaak/.env +++ b/open-zaak/open-zaak/.env @@ -1,6 +1,6 @@ DJANGO_SETTINGS_MODULE=openzaak.conf.docker SECRET_KEY=!FIX_THIS_AND_REPLACE_THIS -ALLOWED_HOSTS=localhost,127.0.0.1,open-zaak.gemeente.local +ALLOWED_HOSTS=localhost,127.0.0.1,open-zaak.gemeente.local,open-zaak.local LOG_STDOUT=1 DB_HOST=db