Skip to content

Commit

Permalink
Merge pull request #432 from maykinmedia/issue/426-register-kanalen
Browse files Browse the repository at this point in the history
Issue/426 register kanalen
  • Loading branch information
annashamray authored Aug 13, 2024
2 parents a17b704 + a8615f7 commit 000edef
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 11 deletions.
26 changes: 25 additions & 1 deletion src/objects/api/kanalen.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from django.conf import settings
from django.db import models

from notifications_api_common.kanalen import Kanaal
from notifications_api_common.kanalen import KANAAL_REGISTRY, Kanaal

from objects.core.models import ObjectRecord

Expand All @@ -20,6 +20,8 @@ def __init__(
# check that we're refering to existing fields
self.kenmerken = kenmerken or ()

KANAAL_REGISTRY.add(self)

def get_kenmerken(self, obj: models.Model, data: dict = None) -> dict:
data = data or {}
return {
Expand All @@ -31,6 +33,28 @@ def get_kenmerken(self, obj: models.Model, data: dict = None) -> dict:
for kenmerk in self.kenmerken
}

@property
def description(self):
"""For Objects endpoint main resource is ObjectRecord, so adjust info here"""
kenmerk_template = "* `{kenmerk}`: {help_text}"
main_resource = self.main_resource.object.field.related_model
kenmerken = [
kenmerk_template.format(
kenmerk=kenmerk,
help_text=main_resource._meta.get_field(kenmerk).help_text,
)
for kenmerk in self.kenmerken
]

description = (
"**Main resource**\n\n"
"`{options.model_name}`\n\n\n\n"
"**Kenmerken**\n\n"
"{kenmerken}"
).format(options=main_resource._meta, kenmerken="\n".join(kenmerken))

return description


KANAAL_OBJECTEN = ObjectKanaal(
settings.NOTIFICATIONS_KANAAL,
Expand Down
22 changes: 22 additions & 0 deletions src/objects/core/migrations/0029_alter_object_object_type.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Generated by Django 4.2.11 on 2024-08-12 09:36

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


class Migration(migrations.Migration):
dependencies = [
("core", "0028_alter_objectrecord_data"),
]

operations = [
migrations.AlterField(
model_name="object",
name="object_type",
field=models.ForeignKey(
help_text="OBJECTTYPE in Objecttypes API",
on_delete=django.db.models.deletion.PROTECT,
to="core.objecttype",
),
),
]
1 change: 1 addition & 0 deletions src/objects/core/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ class Object(models.Model):
object_type = models.ForeignKey(
ObjectType,
on_delete=models.PROTECT,
help_text=_("OBJECTTYPE in Objecttypes API"),
)

objects = ObjectQuerySet.as_manager()
Expand Down
33 changes: 23 additions & 10 deletions src/objects/tests/v2/test_notifications_kanaal.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
from io import StringIO
from unittest.mock import patch
from unittest.mock import call, patch

from django.contrib.sites.models import Site
from django.core.management import call_command
from django.test import override_settings

from notifications_api_common.kanalen import KANAAL_REGISTRY, Kanaal
from notifications_api_common.kanalen import KANAAL_REGISTRY
from notifications_api_common.models import NotificationsConfig
from rest_framework.test import APITestCase
from zgw_consumers.constants import APITypes
from zgw_consumers.models import Service

from objects.api.kanalen import ObjectKanaal
from objects.core.models import Object


Expand All @@ -23,7 +24,7 @@ def setUpTestData(cls):
site.domain = "example.com"
site.save()

kanaal = Kanaal(label="kanaal_test", main_resource=Object)
kanaal = ObjectKanaal(label="kanaal_test", main_resource=Object)
cls.addClassCleanup(lambda: KANAAL_REGISTRY.remove(kanaal))

service, _ = Service.objects.update_or_create(
Expand Down Expand Up @@ -79,11 +80,23 @@ def test_kanaal_create_without_name(self, mock_get_client):
stdout=stdout,
)

client.create.assert_called_once_with(
"kanaal",
{
"naam": "kanaal_test",
"documentatieLink": "https://example.com/ref/kanalen/#kanaal_test",
"filters": [],
},
client.create.assert_has_calls(
[
call(
"kanaal",
{
"naam": "kanaal_test",
"documentatieLink": "https://example.com/ref/kanalen/#kanaal_test",
"filters": [],
},
),
call(
"kanaal",
{
"naam": "objecten",
"documentatieLink": "https://example.com/ref/kanalen/#objecten",
"filters": ["object_type"],
},
),
]
)

0 comments on commit 000edef

Please sign in to comment.