Beispiel #1
0
    def test_zet_zaakstatus(self):
        """
        De actuele status van een zaak moet gezet worden bij het aanmaken
        van de zaak.
        """
        url = get_operation_url("status_create")
        zaak = ZaakFactory.create()
        zaak_url = get_operation_url("zaak_read", uuid=zaak.uuid)
        statustype = StatusTypeFactory.create(zaaktype=zaak.zaaktype)
        statustype_url = reverse(statustype)
        StatusTypeFactory.create(zaaktype=zaak.zaaktype)
        data = {
            "zaak": zaak_url,
            "statustype": f"http://testserver{statustype_url}",
            "datumStatusGezet": isodatetime(2018, 6, 6, 17, 23, 43),
        }

        response = self.client.post(url, data)

        self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data)
        response_data = response.json()
        status_ = Status.objects.get()
        self.assertEqual(status_.zaak, zaak)
        detail_url = get_operation_url("status_read", uuid=status_.uuid)
        self.assertEqual(
            response_data,
            {
                "url": f"http://testserver{detail_url}",
                "uuid": str(status_.uuid),
                "zaak": f"http://testserver{zaak_url}",
                "statustype": f"http://testserver{statustype_url}",
                "datumStatusGezet": "2018-06-06T17:23:43Z",  # UTC
                "statustoelichting": "",
            },
        )
    def setUpTestData(cls):
        super().setUpTestData()

        cls.zaaktype = ZaakTypeFactory.create()
        StatusTypeFactory.create(zaaktype=cls.zaaktype)
        statustype_end = StatusTypeFactory.create(zaaktype=cls.zaaktype)
        cls.statustype_end_url = reverse(statustype_end)
Beispiel #3
0
    def test_reopenzaak_allowed(self):
        zaak = ZaakFactory.create(
            einddatum=timezone.now(),
            archiefactiedatum="2020-01-01",
            archiefnominatie=Archiefnominatie.blijvend_bewaren,
            zaaktype=self.zaaktype,
        )
        statustype = StatusTypeFactory.create(zaaktype=self.zaaktype)
        StatusTypeFactory.create(zaaktype=self.zaaktype)
        statustype_url = reverse(statustype)
        StatusTypeFactory.create()
        status_create_url = get_operation_url("status_create")

        self.autorisatie.scopes = [SCOPEN_ZAKEN_HEROPENEN]
        self.autorisatie.save()

        data = {
            "zaak": reverse(zaak),
            "statustype": statustype_url,
            "datumStatusGezet": datetime.datetime.now().isoformat(),
        }
        response = self.client.post(status_create_url, data)
        self.assertEqual(response.status_code, status.HTTP_201_CREATED,
                         response.data)

        zaak.refresh_from_db()
        self.assertIsNone(zaak.einddatum)
        self.assertIsNone(zaak.archiefactiedatum)
        self.assertIsNone(zaak.archiefnominatie)
Beispiel #4
0
    def setUpTestData(cls):
        cls.zaaktype = ZaakTypeFactory.create(concept=False)
        cls.zaaktype_url = reverse(cls.zaaktype)
        cls.statustype = StatusTypeFactory.create(zaaktype=cls.zaaktype)
        cls.statustype_url = reverse(cls.statustype)
        cls.statustype2 = StatusTypeFactory.create(zaaktype=cls.zaaktype)
        cls.statustype2_url = reverse(cls.statustype2)

        super().setUpTestData()
Beispiel #5
0
    def zet_statussen_resultaat(self):
        statustype = StatusTypeFactory.create(
            zaaktype=self.references["zaaktype"])
        statustype_url = reverse(statustype)
        statustype_overlast_geconstateerd = StatusTypeFactory.create(
            zaaktype=self.references["zaaktype"])
        statustype_overlast_geconstateerd_url = reverse(
            statustype_overlast_geconstateerd)
        resultaattype = ResultaatTypeFactory.create(
            zaaktype=self.references["zaaktype"],
            archiefactietermijn="P10Y",
            archiefnominatie=Archiefnominatie.blijvend_bewaren,
            brondatum_archiefprocedure_afleidingswijze=
            BrondatumArchiefprocedureAfleidingswijze.afgehandeld,
        )
        resultaattype_url = reverse(resultaattype)
        status_create_url = get_operation_url("status_create")
        resultaat_create_url = get_operation_url("resultaat_create")
        created = parser.parse(self.data["datetime"])

        self.client.post(
            status_create_url,
            {
                "zaak": self.references["zaak_url"],
                "statustype": f"http://testserver{statustype_url}",
                "datumStatusGezet": created.isoformat(),
            },
        )

        self.client.post(
            resultaat_create_url,
            {
                "zaak": self.references["zaak_url"],
                "resultaattype": f"http://testserver{resultaattype_url}",
                "toelichting": "",
            },
        )

        self.client.post(
            status_create_url,
            {
                "zaak":
                self.references["zaak_url"],
                "statustype":
                f"http://testserver{statustype_overlast_geconstateerd_url}",
                "datumStatusGezet":
                parser.parse(self.data["datetime_overlast"]).isoformat(),
            },
        )

        self.references["statustype"] = statustype
        self.references[
            "statustype_overlast_geconstateerd"] = statustype_overlast_geconstateerd
    def test_add_resultaat_on_zaak_with_remote_zaakobjecten_causes_archiefactiedatum_to_be_set(
        self, ):
        """
        Add RESULTAAT that causes `archiefactiedatum` to be set.
        """
        zaak = ZaakFactory.create()
        zaak_url = get_operation_url("zaak_read", uuid=zaak.uuid)
        zaak_object1 = ZaakObjectFactory.create(zaak=zaak)
        zaak_object2 = ZaakObjectFactory.create(
            zaak=zaak, object_type=zaak_object1.object_type)
        resultaattype = ResultaatTypeFactory.create(
            archiefactietermijn="P10Y",
            archiefnominatie=Archiefnominatie.blijvend_bewaren,
            brondatum_archiefprocedure_afleidingswijze=
            BrondatumArchiefprocedureAfleidingswijze.zaakobject,
            brondatum_archiefprocedure_datumkenmerk="einddatum",
            brondatum_archiefprocedure_objecttype=zaak_object1.object_type,
            zaaktype=zaak.zaaktype,
        )
        resultaattype_url = reverse(resultaattype)
        responses = {
            zaak_object1.object: {
                "einddatum": isodatetime(2019, 1, 1)
            },
            zaak_object2.object: {
                "einddatum": isodatetime(2022, 1, 1)
            },
        }

        # add resultaat
        resultaat_create_url = get_operation_url("resultaat_create")
        data = {
            "zaak": zaak_url,
            "resultaattype": f"http://testserver{resultaattype_url}",
            "toelichting": "",
        }

        response = self.client.post(resultaat_create_url, data)

        self.assertEqual(response.status_code, status.HTTP_201_CREATED,
                         response.data)

        # add final status to the case to close it and to calculate archive parameters
        status_create_url = get_operation_url("status_create")
        statustype = StatusTypeFactory.create(zaaktype=zaak.zaaktype)
        statustype_url = reverse(statustype)
        data = {
            "zaak": zaak_url,
            "statustype": f"http://testserver{statustype_url}",
            "datumStatusGezet": "2018-10-18T20:00:00Z",
        }

        with mock_client(responses):
            response = self.client.post(status_create_url, data)

        self.assertEqual(response.status_code, status.HTTP_201_CREATED,
                         response.data)

        zaak.refresh_from_db()
        self.assertEqual(zaak.archiefactiedatum, date(2032, 1, 1))
    def test_add_resultaat_on_zaak_with_external_gerelateerde_zaak_(self):
        """
        Add RESULTAAT that causes `archiefactiedatum` to be set.
        """
        zaak = ZaakFactory.create()
        zaak_url = get_operation_url("zaak_read", uuid=zaak.uuid)
        zaaktype_url = f"http://testserver.com{reverse(zaak.zaaktype)}"

        zaak2 = "https://external.nl/zaken/123"
        zaak2_data = get_zaak_response(zaak2, zaaktype_url)
        zaak2_data["einddatum"] = "2022-01-01"
        zaak3 = "https://external.nl/zaken/456"
        zaak3_data = get_zaak_response(zaak3, zaaktype_url)
        zaak3_data["einddatum"] = "2025-01-01"
        RelevanteZaakRelatieFactory.create(zaak=zaak, url=zaak2)
        RelevanteZaakRelatieFactory.create(zaak=zaak, url=zaak3)

        resultaattype = ResultaatTypeFactory.create(
            archiefactietermijn="P5Y",
            archiefnominatie=Archiefnominatie.blijvend_bewaren,
            brondatum_archiefprocedure_afleidingswijze=
            BrondatumArchiefprocedureAfleidingswijze.gerelateerde_zaak,
            brondatum_archiefprocedure_procestermijn=None,
            zaaktype=zaak.zaaktype,
        )
        resultaattype_url = reverse(resultaattype)
        resultaat_create_url = get_operation_url("resultaat_create")
        data = {
            "zaak": f"http://testserver.com{zaak_url}",
            "resultaattype": f"http://testserver.com{resultaattype_url}",
            "toelichting": "",
        }

        response = self.client.post(resultaat_create_url,
                                    data,
                                    HTTP_HOST="testserver.com")

        self.assertEqual(response.status_code, status.HTTP_201_CREATED,
                         response.data)

        # add final status to the case to close it and to calculate archive parameters
        status_create_url = get_operation_url("status_create")
        statustype = StatusTypeFactory.create(zaaktype=zaak.zaaktype)
        statustype_url = reverse(statustype)
        data = {
            "zaak": f"http://testserver.com{zaak_url}",
            "statustype": f"http://testserver.com{statustype_url}",
            "datumStatusGezet": "2018-10-18T20:00:00Z",
        }

        with requests_mock.Mocker(real_http=True) as m:
            m.register_uri("GET", zaak2, json=zaak2_data)
            m.register_uri("GET", zaak3, json=zaak3_data)
            response = self.client.post(status_create_url,
                                        data,
                                        HTTP_HOST="testserver.com")

        self.assertEqual(response.status_code, status.HTTP_201_CREATED,
                         response.data)
Beispiel #8
0
    def test_statussen(self):
        statustype = StatusTypeFactory.create(zaaktype=self.zaaktype)

        self.assertCreateBlocked(
            reverse(Status),
            {
                "zaak": reverse(self.zaak),
                "statustype": f"http://testserver{reverse(statustype)}",
            },
        )
    def test_add_resultaat_on_zaak_with_afleidingswijze_gerelateerde_zaak_causes_archiefactiedatum_to_be_set(
        self, ):
        """
        Add RESULTAAT that causes `archiefactiedatum` to be set.
        """
        zaak = ZaakFactory.create()
        zaak2 = ZaakFactory.create(einddatum="2022-01-01")
        zaak3 = ZaakFactory.create(einddatum="2025-01-01")
        RelevanteZaakRelatieFactory.create(zaak=zaak, url=zaak2)
        RelevanteZaakRelatieFactory.create(zaak=zaak, url=zaak3)

        zaak_url = get_operation_url("zaak_read", uuid=zaak.uuid)
        resultaattype = ResultaatTypeFactory.create(
            archiefactietermijn="P5Y",
            archiefnominatie=Archiefnominatie.blijvend_bewaren,
            brondatum_archiefprocedure_afleidingswijze=
            BrondatumArchiefprocedureAfleidingswijze.gerelateerde_zaak,
            brondatum_archiefprocedure_procestermijn=None,
            zaaktype=zaak.zaaktype,
        )
        resultaattype_url = reverse(resultaattype)
        resultaat_create_url = get_operation_url("resultaat_create")
        data = {
            "zaak": f"http://testserver.com{zaak_url}",
            "resultaattype": f"http://testserver.com{resultaattype_url}",
            "toelichting": "",
        }

        response = self.client.post(resultaat_create_url,
                                    data,
                                    HTTP_HOST="testserver.com")

        self.assertEqual(response.status_code, status.HTTP_201_CREATED,
                         response.data)

        # add final status to the case to close it and to calculate archive parameters
        status_create_url = get_operation_url("status_create")
        statustype = StatusTypeFactory.create(zaaktype=zaak.zaaktype)
        statustype_url = reverse(statustype)
        data = {
            "zaak": f"http://testserver.com{zaak_url}",
            "statustype": f"http://testserver.com{statustype_url}",
            "datumStatusGezet": "2018-10-18T20:00:00Z",
        }

        response = self.client.post(status_create_url,
                                    data,
                                    HTTP_HOST="testserver.com")

        self.assertEqual(response.status_code, status.HTTP_201_CREATED,
                         response.data)

        zaak.refresh_from_db()
        self.assertEqual(zaak.archiefactiedatum, date(2030, 1, 1))
    def test_status_create_fail_send_notification_create_db_entry(self):
        url = get_operation_url("status_create")
        zaak = ZaakFactory.create(
            einddatum=now(),
            archiefactiedatum="2020-01-01",
            archiefnominatie=Archiefnominatie.blijvend_bewaren,
        )
        zaak_url = reverse(zaak)
        ResultaatFactory.create(
            zaak=zaak,
            resultaattype__brondatum_archiefprocedure_afleidingswijze=
            Afleidingswijze.ander_datumkenmerk,
        )
        statustype = StatusTypeFactory.create(zaaktype=zaak.zaaktype)
        statustype_url = reverse(statustype)
        data = {
            "zaak": f"http://testserver{zaak_url}",
            "statustype": f"http://testserver{statustype_url}",
            "datumStatusGezet": "2019-01-01T12:00:00Z",
        }

        with capture_on_commit_callbacks(execute=True):
            response = self.client.post(url, data)

        self.assertEqual(response.status_code, status.HTTP_201_CREATED,
                         response.data)

        data = response.json()

        self.assertEqual(StatusLog.objects.count(), 1)

        logged_warning = StatusLog.objects.get()
        failed = FailedNotification.objects.get()
        message = {
            "aanmaakdatum": "2019-01-01T12:00:00Z",
            "actie": "create",
            "hoofdObject": f"http://testserver{zaak_url}",
            "kanaal": "zaken",
            "kenmerken": {
                "bronorganisatie": zaak.bronorganisatie,
                "zaaktype": f"http://testserver{reverse(zaak.zaaktype)}",
                "vertrouwelijkheidaanduiding":
                zaak.vertrouwelijkheidaanduiding,
            },
            "resource": "status",
            "resourceUrl": data["url"],
        }

        self.assertEqual(failed.statuslog_ptr, logged_warning)
        self.assertEqual(failed.message, message)
    def test_add_resultaat_on_zaak_with_eigenschap_causes_archiefactiedatum_to_be_set(
        self, ):
        """
        Add RESULTAAT that causes `archiefactiedatum` to be set.
        """
        zaak = ZaakFactory.create()
        zaak_url = get_operation_url("zaak_read", uuid=zaak.uuid)
        ZaakEigenschapFactory.create(zaak=zaak,
                                     _naam="brondatum",
                                     waarde=isodatetime(2019, 1, 1))
        resultaattype = ResultaatTypeFactory.create(
            archiefactietermijn="P10Y",
            archiefnominatie=Archiefnominatie.blijvend_bewaren,
            brondatum_archiefprocedure_afleidingswijze=
            BrondatumArchiefprocedureAfleidingswijze.eigenschap,
            brondatum_archiefprocedure_datumkenmerk="brondatum",
            zaaktype=zaak.zaaktype,
        )
        resultaattype_url = reverse(resultaattype)
        resultaat_create_url = get_operation_url("resultaat_create")
        data = {
            "zaak": zaak_url,
            "resultaattype": f"http://testserver{resultaattype_url}",
            "toelichting": "",
        }

        self.assertIsNone(zaak.archiefactiedatum)

        response = self.client.post(resultaat_create_url, data)

        self.assertEqual(response.status_code, status.HTTP_201_CREATED,
                         response.data)

        # add final status to the case to close it and to calculate archive parameters
        statustype = StatusTypeFactory.create(zaaktype=zaak.zaaktype)
        statustype_url = reverse(statustype)
        status_create_url = get_operation_url("status_create")
        data = {
            "zaak": zaak_url,
            "statustype": f"http://testserver{statustype_url}",
            "datumStatusGezet": "2018-10-18T20:00:00Z",
        }

        response = self.client.post(status_create_url, data)

        self.assertEqual(response.status_code, status.HTTP_201_CREATED,
                         response.data)

        zaak.refresh_from_db()
        self.assertEqual(zaak.archiefactiedatum, date(2029, 1, 1))
    def test_add_resultaat_on_zaak_with_ander_datumkenmerk_causes_archiefactiedatum_to_remain_empty(
        self, ):
        """
        Add RESULTAAT that causes `archiefactiedatum` to remain empty. It needs to be manually set based on the
        information in the RESULTAATTYPE.
        """
        zaak = ZaakFactory.create()
        zaak_url = get_operation_url("zaak_read", uuid=zaak.uuid)
        resultaattype = ResultaatTypeFactory.create(
            archiefactietermijn="P10Y",
            archiefnominatie=Archiefnominatie.blijvend_bewaren,
            brondatum_archiefprocedure_afleidingswijze=
            BrondatumArchiefprocedureAfleidingswijze.ander_datumkenmerk,
            brondatum_archiefprocedure_datumkenmerk="einddatum",
            brondatum_archiefprocedure_registratie=
            "LichtgevendeObjectenRegistratie",
            brondatum_archiefprocedure_objecttype="Lantaarnpaal",
            zaaktype=zaak.zaaktype,
        )
        resultaattype_url = reverse(resultaattype)
        # add resultaat
        resultaat_create_url = get_operation_url("resultaat_create")
        data = {
            "zaak": zaak_url,
            "resultaattype": f"http://testserver{resultaattype_url}",
            "toelichting": "",
        }

        response = self.client.post(resultaat_create_url, data)

        self.assertEqual(response.status_code, status.HTTP_201_CREATED,
                         response.data)

        # add final status to the case to close it and to calculate archive parameters
        status_create_url = get_operation_url("status_create")
        statustype = StatusTypeFactory.create(zaaktype=zaak.zaaktype)
        statustype_url = reverse(statustype)
        data = {
            "zaak": zaak_url,
            "statustype": f"http://testserver{statustype_url}",
            "datumStatusGezet": "2018-10-18T20:00:00Z",
        }

        response = self.client.post(status_create_url, data)

        self.assertEqual(response.status_code, status.HTTP_201_CREATED,
                         response.data)

        zaak.refresh_from_db()
        self.assertIsNone(zaak.archiefactiedatum)
Beispiel #13
0
    def test_reopenzaak_not_allowed(self):
        zaak = ZaakFactory.create(einddatum=timezone.now(), zaaktype=self.zaaktype)
        statustype = StatusTypeFactory.create(zaaktype=self.zaaktype)
        StatusTypeFactory.create(zaaktype=self.zaaktype)
        statustype_url = reverse(statustype)
        StatusTypeFactory.create()
        status_create_url = get_operation_url("status_create")
        self.autorisatie.scopes = [SCOPE_STATUSSEN_TOEVOEGEN]
        self.autorisatie.save()

        data = {
            "zaak": reverse(zaak),
            "statustype": f"http://testserver{statustype_url}",
            "datumStatusGezet": datetime.datetime.now().isoformat(),
        }
        response = self.client.post(status_create_url, data)

        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)

        data = response.json()
        self.assertEqual(
            data["detail"], "Reopening a closed case with current scope is forbidden"
        )
    def test_add_resultaat_on_zaak_with_afleidingswijze_gerelateerde_zaak_without_relevante_zaken_gives_400(
        self, ):
        """
        Add RESULTAAT that causes `archiefactiedatum` to be set.
        """
        zaak = ZaakFactory.create()

        zaak_url = get_operation_url("zaak_read", uuid=zaak.uuid)
        resultaattype = ResultaatTypeFactory.create(
            archiefactietermijn="P5Y",
            archiefnominatie=Archiefnominatie.blijvend_bewaren,
            brondatum_archiefprocedure_afleidingswijze=
            BrondatumArchiefprocedureAfleidingswijze.gerelateerde_zaak,
            brondatum_archiefprocedure_procestermijn=None,
            zaaktype=zaak.zaaktype,
        )
        resultaattype_url = reverse(resultaattype)
        resultaat_create_url = get_operation_url("resultaat_create")
        data = {
            "zaak": zaak_url,
            "resultaattype": f"http://testserver{resultaattype_url}",
            "toelichting": "",
        }

        response = self.client.post(resultaat_create_url, data)

        self.assertEqual(response.status_code, status.HTTP_201_CREATED,
                         response.data)

        # add final status to the case to close it and to calculate archive parameters
        status_create_url = get_operation_url("status_create")
        statustype = StatusTypeFactory.create(zaaktype=zaak.zaaktype)
        statustype_url = reverse(statustype)
        data = {
            "zaak": zaak_url,
            "statustype": f"http://testserver{statustype_url}",
            "datumStatusGezet": "2018-10-18T20:00:00Z",
        }

        response = self.client.post(status_create_url, data)

        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST,
                         response.data)

        error = get_validation_errors(response, "nonFieldErrors")
        self.assertEqual(error["code"], "archiefactiedatum-error")

        zaak.refresh_from_db()
        self.assertEqual(zaak.archiefactiedatum, None)
    def test_add_resultaat_on_zaak_causes_archiefnominatie_to_be_copied(self):
        """
        Add RESULTAAT that causes `archiefnominatie` to be copied from RESULTAATTYPE.
        """
        zaak = ZaakFactory.create()
        zaak_url = get_operation_url("zaak_read", uuid=zaak.uuid)

        # add a result for the case
        resultaattype = ResultaatTypeFactory.create(
            archiefactietermijn="P10Y",
            archiefnominatie=Archiefnominatie.blijvend_bewaren,
            brondatum_archiefprocedure_afleidingswijze=
            BrondatumArchiefprocedureAfleidingswijze.afgehandeld,
            zaaktype=zaak.zaaktype,
        )
        resultaattype_url = reverse(resultaattype)
        resultaat_create_url = get_operation_url("resultaat_create")
        data = {
            "zaak": zaak_url,
            "resultaattype": f"http://testserver{resultaattype_url}",
            "toelichting": "",
        }
        self.assertIsNone(zaak.archiefnominatie)

        response = self.client.post(resultaat_create_url, data)

        self.assertEqual(response.status_code, status.HTTP_201_CREATED,
                         response.data)

        # add final status to the case to close it and to calculate archive parameters
        statustype = StatusTypeFactory.create(zaaktype=zaak.zaaktype)
        statustype_url = reverse(statustype)
        status_create_url = get_operation_url("status_create")
        data = {
            "zaak": zaak_url,
            "statustype": f"http://testserver{statustype_url}",
            "datumStatusGezet": "2018-10-18T20:00:00Z",
        }

        response = self.client.post(status_create_url, data)

        self.assertEqual(response.status_code, status.HTTP_201_CREATED,
                         response.data)

        zaak.refresh_from_db()
        self.assertEqual(zaak.archiefnominatie,
                         Archiefnominatie.blijvend_bewaren)
Beispiel #16
0
    def test_add_resultaat_on_zaak_with_hoofdzaak_causes_archiefactiedatum_to_be_set(
            self):
        """
        Add RESULTAAT that causes `archiefactiedatum` to be set.
        """
        hoofd_zaak = ZaakFactory.create(einddatum=date(2019, 1, 1))

        zaak = ZaakFactory.create(hoofdzaak=hoofd_zaak)
        zaak_url = get_operation_url("zaak_read", uuid=zaak.uuid)
        resultaattype = ResultaatTypeFactory.create(
            archiefactietermijn="P10Y",
            archiefnominatie=Archiefnominatie.blijvend_bewaren,
            brondatum_archiefprocedure_afleidingswijze=
            BrondatumArchiefprocedureAfleidingswijze.hoofdzaak,
            zaaktype=zaak.zaaktype,
        )
        resultaattype_url = reverse(resultaattype)
        # add resultaat
        resultaat_create_url = get_operation_url("resultaat_create")
        data = {
            "zaak": zaak_url,
            "resultaattype": resultaattype_url,
            "toelichting": ""
        }

        response = self.client.post(resultaat_create_url, data)

        self.assertEqual(response.status_code, status.HTTP_201_CREATED,
                         response.data)

        # add final status to the case to close it and to calculate archive parameters
        statustype = StatusTypeFactory.create(zaaktype=zaak.zaaktype)
        statustype_url = reverse(statustype)
        status_create_url = get_operation_url("status_create")
        data = {
            "zaak": zaak_url,
            "statustype": statustype_url,
            "datumStatusGezet": "2018-10-18T20:00:00Z",
        }

        response = self.client.post(status_create_url, data)

        self.assertEqual(response.status_code, status.HTTP_201_CREATED,
                         response.data)

        zaak.refresh_from_db()
        self.assertEqual(zaak.archiefactiedatum, date(2029, 1, 1))
    def test_create_status(self):
        zaak = ZaakFactory.create()
        zaak_url = get_operation_url("zaak_read", uuid=zaak.uuid)
        statustype = StatusTypeFactory.create(zaaktype=zaak.zaaktype)

        add_url = reverse("admin:zaken_status_add")
        data = {
            "uuid": uuid.uuid4(),
            "zaak": zaak.id,
            "_statustype": statustype.id,
            "datum_status_gezet_0": date(2018, 1, 1),
            "datum_status_gezet_1": time(10, 0, 0),
        }

        self.client.post(add_url, data)

        self.assertEqual(Status.objects.count(), 1)

        status = Status.objects.get()
        status_url = get_operation_url("status_read", uuid=status.uuid)

        self.assertEqual(AuditTrail.objects.count(), 1)

        audittrail = AuditTrail.objects.get()

        self.assertEqual(audittrail.bron, "ZRC")
        self.assertEqual(audittrail.actie, "create")
        self.assertEqual(audittrail.resultaat, 0)
        self.assertEqual(audittrail.applicatie_weergave, "admin")
        self.assertEqual(audittrail.gebruikers_id, f"{self.user.id}"),
        self.assertEqual(audittrail.gebruikers_weergave,
                         self.user.get_full_name()),
        self.assertEqual(audittrail.hoofd_object,
                         f"http://testserver{zaak_url}"),
        self.assertEqual(audittrail.resource, "status"),
        self.assertEqual(audittrail.resource_url,
                         f"http://testserver{status_url}"),
        self.assertEqual(audittrail.resource_weergave,
                         status.unique_representation()),
        self.assertEqual(audittrail.oud, None)

        new_data = audittrail.nieuw

        self.assertEqual(new_data["datum_status_gezet"],
                         "2018-01-01T10:00:00Z")
    def test_add_resultaat_on_zaak_with_incorrect_eigenschap_fails(self):
        """
        Attempt to add RESULTAAT with incorrect ZTC-configuration.
        """
        zaak = ZaakFactory.create()
        zaak_url = get_operation_url("zaak_read", uuid=zaak.uuid)
        resultaattype = ResultaatTypeFactory.create(
            archiefactietermijn="P10Y",
            archiefnominatie=Archiefnominatie.blijvend_bewaren,
            brondatum_archiefprocedure_afleidingswijze=
            BrondatumArchiefprocedureAfleidingswijze.eigenschap,
            brondatum_archiefprocedure_datumkenmerk="brondatum",
            zaaktype=zaak.zaaktype,
        )
        resultaattype_url = reverse(resultaattype)
        # add resultaat
        resultaat_create_url = get_operation_url("resultaat_create")
        data = {
            "zaak": zaak_url,
            "resultaattype": f"http://testserver{resultaattype_url}",
            "toelichting": "",
        }

        response = self.client.post(resultaat_create_url, data)

        self.assertEqual(response.status_code, status.HTTP_201_CREATED,
                         response.data)

        # add final status to the case to close it and to calculate archive parameters
        statustype = StatusTypeFactory.create(zaaktype=zaak.zaaktype)
        statustype_url = reverse(statustype)
        status_create_url = get_operation_url("status_create")
        data = {
            "zaak": zaak_url,
            "statustype": statustype_url,
            "datumStatusGezet": "2018-10-18T20:00:00Z",
        }

        response = self.client.post(status_create_url, data)

        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
Beispiel #19
0
    def test_create_malformed_uuid(self):
        """
        Assert that providing a malformed ZAAK URL raises validation errors.

        Regression test for https://github.com/open-zaak/open-zaak/issues/604
        """
        zaak = ZaakFactory.create()
        statustype = StatusTypeFactory.create(zaaktype=zaak.zaaktype)
        zaak_url = f"http://testserver{reverse(zaak)}"
        data = {
            "zaak": f"{zaak_url} ",  # trailing space is deliberate!
            "statustype": f"http://testserver{reverse(statustype)}",
            "datumStatusGezet": "2020-05-28",
        }

        response = self.client.post(reverse("status-list"), data)

        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
        error = get_validation_errors(response, "zaak")
        self.assertIsNotNone(error)
        self.assertEqual(error["code"], "invalid")
Beispiel #20
0
    def test_zaak_archiefactiedatum_afleidingswijze_ingangsdatum_besluit(self):
        zaaktype = ZaakTypeFactory.create()
        zaak = ZaakFactory.create(zaaktype=zaaktype)
        zaak_url = reverse(zaak)
        statustype1 = StatusTypeFactory.create(zaaktype=zaaktype)
        statustype1_url = reverse(statustype1)
        statustype2 = StatusTypeFactory.create(zaaktype=zaaktype)
        statustype2_url = reverse(statustype2)
        resultaattype = ResultaatTypeFactory.create(
            zaaktype=zaaktype,
            archiefactietermijn=relativedelta(years=10),
            archiefnominatie=Archiefnominatie.blijvend_bewaren,
            brondatum_archiefprocedure_afleidingswijze=BrondatumArchiefprocedureAfleidingswijze.ingangsdatum_besluit,
        )
        resultaattype_url = reverse(resultaattype)

        BesluitFactory.create(zaak=zaak, ingangsdatum="2020-05-03")

        # Set initial status
        status_list_url = reverse("status-list")

        response = self.client.post(
            status_list_url,
            {
                "zaak": zaak_url,
                "statustype": f"http://testserver{statustype1_url}",
                "datumStatusGezet": isodatetime(2018, 10, 1, 10, 00, 00),
            },
        )
        self.assertEqual(
            response.status_code, status.HTTP_201_CREATED, response.content
        )

        zaak.refresh_from_db()
        self.assertIsNone(zaak.einddatum)

        # add a result for the case
        resultaat_create_url = get_operation_url("resultaat_create")
        data = {
            "zaak": zaak_url,
            "resultaattype": f"http://testserver{resultaattype_url}",
            "toelichting": "",
        }

        response = self.client.post(resultaat_create_url, data)

        self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data)

        # Set eindstatus
        datum_status_gezet = utcdatetime(2018, 10, 22, 10, 00, 00)

        response = self.client.post(
            status_list_url,
            {
                "zaak": zaak_url,
                "statustype": f"http://testserver{statustype2_url}",
                "datumStatusGezet": datum_status_gezet.isoformat(),
            },
        )
        self.assertEqual(
            response.status_code, status.HTTP_201_CREATED, response.content
        )

        zaak.refresh_from_db()
        self.assertEqual(zaak.einddatum, datum_status_gezet.date())
        self.assertEqual(
            zaak.archiefactiedatum, date(2030, 5, 3)  # 2020-05-03 + 10 years
        )
    def test_full_flow(self):
        zaaktype = ZaakTypeFactory.create()
        zaaktype_url = reverse(zaaktype)
        zaak_create_url = get_operation_url("zaak_create")
        zaakobject_create_url = get_operation_url("zaakobject_create")
        status_create_url = get_operation_url("status_create")
        rol_create_url = get_operation_url("rol_create")

        # Creeer InzageVerzoek
        # self.client.post(...)

        # Creeer Zaak
        data = {
            "zaaktype": zaaktype_url,
            "vertrouwelijkheidaanduiding": VertrouwelijkheidsAanduiding.openbaar,
            "bronorganisatie": "517439943",
            "verantwoordelijkeOrganisatie": VERANTWOORDELIJKE_ORGANISATIE,
            "identificatie": "AVG-inzageverzoek-1",
            "omschrijving": "Melding binnengekomen via website.",
            "toelichting": "Vanuit melding: Beste,\n\nGraag zou ik ...",
            "startdatum": "2018-08-22",
            "kenmerken": [
                {"kenmerk": "kenmerk 1", "bron": "bron 1"},
                {"kenmerk": "kenmerk 2", "bron": "bron 2"},
            ],
        }
        response = self.client.post(zaak_create_url, data, **ZAAK_WRITE_KWARGS)
        self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data)

        zaak = response.json()

        # Koppel Zaak aan InzageVerzoek
        data = {
            "zaak": zaak["url"],
            "object": AVG_INZAGE_VERZOEK,
            "relatieomschrijving": "Inzage verzoek horend bij deze zaak.",
            "objectType": ZaakobjectTypes.adres,
        }
        response = self.client.post(zaakobject_create_url, data)
        self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data)

        # Geef de Zaak een initiele Status
        statustype = StatusTypeFactory.create(zaaktype=zaaktype)
        statustype_url = reverse(statustype)
        StatusTypeFactory.create(zaaktype=zaaktype)
        data = {
            "zaak": zaak["url"],
            "statustype": statustype_url,
            "datumStatusGezet": datetime.datetime.now().isoformat(),
        }

        response = self.client.post(status_create_url, data)
        self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data)

        # Haal mogelijke rollen op uit ZTC...
        # self.client.get(...)

        # Voeg een behandelaar toe.
        roltype = RolTypeFactory.create(
            zaaktype=zaaktype,
            omschrijving=RolOmschrijving.behandelaar,
            omschrijving_generiek=RolOmschrijving.behandelaar,
        )
        roltype_url = reverse(roltype)
        data = {
            "zaak": zaak["url"],
            "betrokkene": BEHANDELAAR,
            "betrokkeneType": RolTypes.natuurlijk_persoon,
            "roltype": roltype_url,
            "roltoelichting": "Initiele behandelaar die meerdere (deel)behandelaren kan aanwijzen.",
        }
        response = self.client.post(rol_create_url, data)
        self.assertEqual(response.status_code, status.HTTP_201_CREATED, response.data)

        # Status wijzigingen...

        # Update Zaak met nieuwe behandeltermijn, uitstel van 2 weken.
        zaak_update_url = get_operation_url(
            "zaak_update", uuid=zaak["url"].rsplit("/", 1)[1]
        )

        if zaak["einddatumGepland"]:
            end_date_planned = parse_isodatetime(zaak["einddatumGepland"])
        else:
            end_date_planned = datetime.datetime.now()

        data = zaak.copy()
        data["verlenging"] = None
        data["opschorting"] = None
        data["einddatumGepland"] = (
            end_date_planned + datetime.timedelta(days=14)
        ).strftime("%Y-%m-%d")

        response = self.client.put(zaak_update_url, data, **ZAAK_WRITE_KWARGS)
        self.assertEqual(response.status_code, status.HTTP_200_OK, response.data)