diff --git a/src/iosanita/contenttypes/content/servizio.py b/src/iosanita/contenttypes/content/servizio.py
new file mode 100644
index 0000000..e308ff5
--- /dev/null
+++ b/src/iosanita/contenttypes/content/servizio.py
@@ -0,0 +1,9 @@
+# -*- coding: utf-8 -*-
+from iosanita.contenttypes.interfaces.servizio import IServizio
+from plone.dexterity.content import Container
+from zope.interface import implementer
+
+
+@implementer(IServizio)
+class Servizio(Container):
+ """ """
diff --git a/src/iosanita/contenttypes/indexers/configure.zcml b/src/iosanita/contenttypes/indexers/configure.zcml
index 20b6b42..b31b0f7 100644
--- a/src/iosanita/contenttypes/indexers/configure.zcml
+++ b/src/iosanita/contenttypes/indexers/configure.zcml
@@ -28,10 +28,7 @@
factory=".events.rassegna"
name="rassegna"
/>
-
+
diff --git a/src/iosanita/contenttypes/indexers/uo_appartenenza.py b/src/iosanita/contenttypes/indexers/uo.py
similarity index 69%
rename from src/iosanita/contenttypes/indexers/uo_appartenenza.py
rename to src/iosanita/contenttypes/indexers/uo.py
index c0bb8c0..b3b46fd 100644
--- a/src/iosanita/contenttypes/indexers/uo_appartenenza.py
+++ b/src/iosanita/contenttypes/indexers/uo.py
@@ -4,10 +4,10 @@
@indexer(IDexterityContent)
-def uo_appartenenza_uid(context, **kw):
+def uo_correlata_uid(context, **kw):
""" """
return [
x.to_object.UID()
- for x in getattr(context.aq_base, "uo_appartenenza", [])
+ for x in getattr(context.aq_base, "uo_correlata", [])
if x.to_object
]
diff --git a/src/iosanita/contenttypes/interfaces/servizio.py b/src/iosanita/contenttypes/interfaces/servizio.py
new file mode 100644
index 0000000..7f53478
--- /dev/null
+++ b/src/iosanita/contenttypes/interfaces/servizio.py
@@ -0,0 +1,219 @@
+# -*- coding: utf-8 -*-
+
+from collective.volto.blocksfield.field import BlocksField
+from iosanita.contenttypes import _
+from iosanita.contenttypes.interfaces import IIosanitaContenttypes
+from plone.app.z3cform.widget import RelatedItemsFieldWidget
+from plone.autoform import directives as form
+from plone.supermodel import model
+from z3c.relationfield.schema import RelationChoice
+from z3c.relationfield.schema import RelationList
+from zope import schema
+from plone.app.dexterity import textindexer
+
+
+class IServizio(model.Schema, IIosanitaContenttypes):
+ """Marker interface for content type"""
+
+ stato_servizio = schema.Bool(
+ title=_("stato_servizio_label", default="Stato servzio"),
+ required=False,
+ description=_(
+ "stato_servizio_help",
+ default="Indica se il servizio è effettivamente fruibile o meno. "
+ "Spuntare se non è fruibile.",
+ ),
+ )
+
+ cosa_serve = BlocksField(
+ title=_("cosa_serve_label", default="Cosa serve"),
+ required=True,
+ description=_(
+ "cosa_serve_help",
+ default="Descrizione delle istruzioni per usufruire del servizio.",
+ ),
+ )
+
+ come_accedere = BlocksField(
+ title=_("come_accedere_label", default="Come accedere"),
+ required=True,
+ description=_(
+ "come_accedere_help",
+ default="Descrizione della procedura da seguire per poter"
+ " usufruire del servizio.",
+ ),
+ )
+ orari = BlocksField(
+ title=_("orari_servizio_label", default="Orari del servizio"),
+ required=True,
+ description=_(
+ "orari_servizio_help",
+ default="Indicazione dell'orario in cui è possibile usufruire del servizio o della prestazione. "
+ "Se gli orari del servizio coincidono con quelli della struttura che lo eroga, ripeterli anche qui.",
+ ),
+ )
+
+ piattaforma_online_link = schema.TextLine(
+ title=_("piattaforma_online_link_label", default="Piattaforma online"),
+ description=_(
+ "piattaforma_online_link_help",
+ default="Collegamento con l'eventuale piattaforma online del servzio.",
+ ),
+ required=False,
+ )
+ piattaforma_online_label = schema.TextLine(
+ title=_(
+ "piattaforma_online_label",
+ default="Etichetta bottone per piattaforma online",
+ ),
+ description=_(
+ "piattaforma_online_help",
+ default="Testo da mostrare nel bottone del link alla piattaforma online.",
+ ),
+ default="Prenota online",
+ required=False,
+ )
+ strutture_correlate = RelationList(
+ title=_(
+ "strutture_correlate_label",
+ default="Struttura correlata",
+ ),
+ description=_(
+ "strutture_correlate_help",
+ default="Seleziona una struttura correlata.",
+ ),
+ default=[],
+ value_type=RelationChoice(vocabulary="plone.app.vocabularies.Catalog"),
+ required=False,
+ missing_value=(),
+ )
+
+ tempi_attesa = BlocksField(
+ title=_("tempi_attesa_label", default="Tempi di attesa"),
+ required=True,
+ description=_("tempi_attesa_help", default=""),
+ )
+ costi = BlocksField(
+ title=_("costi_label", default="Costi"),
+ required=True,
+ description=_("costi_help", default=""),
+ )
+
+ descrizione_estesa = BlocksField(
+ title=_("descrizione_estesa_servizio_label", default="Descrizione estesa"),
+ required=False,
+ description=_(
+ "descrizione_estesa_servizio_help",
+ default="Descrizione estesa e completa del servizio o della prestazione. "
+ "Se si sta descrivendo un Percorso di Cura specificare contestualmente l'elenco delle prestazioni afferenti al percorso.",
+ ),
+ )
+ procedure_collegate_esito = BlocksField(
+ title=_(
+ "procedure_collegate_esito_label", default="Procedure collegate all'esito"
+ ),
+ description=_(
+ "procedure_collegate_esito_help",
+ default="Spiegazione relativa all'esito della procedura e dove eventualmente "
+ "sarà disponibile o sarà possibile ritirare l'esito (sede dell'ufficio, orari, numero sportello, etc.)",
+ ),
+ required=False,
+ )
+
+ uo_correlata = RelationList(
+ title=_(
+ "uo_correlata_servizio_label", default="Unità organizzativa responsabile"
+ ),
+ default=[],
+ value_type=RelationChoice(vocabulary="plone.app.vocabularies.Catalog"),
+ required=True,
+ missing_value=(),
+ )
+ responsabile_correlato = RelationList(
+ title=_(
+ "responsabile_correlato_servizio_label", default="Responsabile del servizio"
+ ),
+ default=[],
+ value_type=RelationChoice(vocabulary="plone.app.vocabularies.Catalog"),
+ required=True,
+ missing_value=(),
+ )
+
+ # widgets
+ form.widget(
+ "strutture_correlate",
+ RelatedItemsFieldWidget,
+ vocabulary="plone.app.vocabularies.Catalog",
+ pattern_options={
+ "selectableTypes": ["Struttura"],
+ },
+ )
+ form.widget(
+ "uo_correlata",
+ RelatedItemsFieldWidget,
+ vocabulary="plone.app.vocabularies.Catalog",
+ pattern_options={
+ "maximumSelectionSize": 1,
+ "selectableTypes": ["UnitaOrganizzativa"],
+ },
+ )
+ form.widget(
+ "responsabile_correlato",
+ RelatedItemsFieldWidget,
+ vocabulary="plone.app.vocabularies.Catalog",
+ pattern_options={
+ "maximumSelectionSize": 1,
+ "selectableTypes": ["Persona"],
+ },
+ )
+
+ # fieldsets
+ model.fieldset(
+ "cosa_serve",
+ label=_("cosa_serve_label", default="Cosa serve"),
+ fields=["cosa_serve"],
+ )
+ model.fieldset(
+ "accedi_al_servizio",
+ label=_("accedi_al_servizio_label", default="Accedi al servizio"),
+ fields=["come_accedere", "piattaforma_online_link", "piattaforma_online_label"],
+ )
+ model.fieldset(
+ "tempi_attesa",
+ label=_("tempi_attesa_label", default="Tempi di attesa"),
+ fields=["tempi_attesa"],
+ )
+ model.fieldset(
+ "costi",
+ label=_("costi_label", default="Costi"),
+ fields=["costi"],
+ )
+ model.fieldset(
+ "dove",
+ label=_("dove_label", default="Dove"),
+ fields=["strutture_correlate"],
+ )
+ model.fieldset(
+ "orari",
+ label=_("orari_servizio_label", default="Orari del servizio"),
+ fields=["orari"],
+ )
+ model.fieldset(
+ "cosa_e",
+ label=_("cosa_e_fieldset", default="Cos'è"),
+ fields=["descrizione_estesa"],
+ )
+ model.fieldset(
+ "procedure_collegate_esito",
+ label=_(
+ "procedure_collegate_esito_label", default="Procedure collegate all'esito"
+ ),
+ fields=["procedure_collegate_esito"],
+ )
+ model.fieldset(
+ "responsabili",
+ label=_("responsabili_label", default="Responsabili"),
+ fields=["uo_correlata", "responsabile_correlato"],
+ )
+
+ textindexer.searchable("cosa_serve")
diff --git a/src/iosanita/contenttypes/interfaces/struttura.py b/src/iosanita/contenttypes/interfaces/struttura.py
index bea6ec0..278188d 100644
--- a/src/iosanita/contenttypes/interfaces/struttura.py
+++ b/src/iosanita/contenttypes/interfaces/struttura.py
@@ -17,7 +17,7 @@ class IStruttura(model.Schema, IIosanitaContenttypes):
title=_("descrizione_estesa_struttura_label", default="Descrizione estesa"),
required=False,
description=_(
- "descrizione_estesa_label_help",
+ "descrizione_estesa_struttura_help",
default="Descrizione più estesa della struttura con riferimento alle principali attività sanitarie svolte.",
),
)
@@ -31,22 +31,22 @@ class IStruttura(model.Schema, IIosanitaContenttypes):
),
)
- orari_apertura = BlocksField(
- title=_("orari_apertura_label", default="Orari di apertura"),
+ orari = BlocksField(
+ title=_("orari_struttura_label", default="Orari di apertura"),
required=True,
description=_(
- "orari_apertura_help",
- default="Orario di apertura della struttura al pubblico.",
+ "orari_struttura_help",
+ default="Orari di apertura della struttura al pubblico.",
),
)
- responsabile_struttura = RelationList(
+ responsabile_correlato = RelationList(
title=_(
- "responsabile_struttura_label",
+ "responsabile_correlato_struttura_label",
default="Responsabile",
),
description=_(
- "responsabile_help",
+ "responsabile_correlato_struttura_help",
default="La persona che dirige la struttura.",
),
required=True,
@@ -54,67 +54,63 @@ class IStruttura(model.Schema, IIosanitaContenttypes):
value_type=RelationChoice(vocabulary="plone.app.vocabularies.Catalog"),
)
- coordinatore_struttura = RelationList(
+ coordinatore_correlato = RelationList(
title=_(
- "coordinatore_label",
+ "coordinatore_correlato_struttura_label",
default="Coordinatore",
),
description=_(
- "responsabile_struttura_help",
+ "coordinatore_correlato_struttura_help",
default="La persona che coordina la struttura.",
),
required=False,
default=[],
value_type=RelationChoice(vocabulary="plone.app.vocabularies.Catalog"),
)
- personale_struttura = RelationList(
+ personale_correlato = RelationList(
title=_(
- "personale_label",
+ "personale_correlato_struttura_label",
default="Personale",
),
description=_(
- "personale_struttura_help",
+ "personale_correlato_struttura_help",
default="Elenco del personale che opera nella struttura.",
),
required=False,
default=[],
value_type=RelationChoice(vocabulary="plone.app.vocabularies.Catalog"),
)
- uo_appartenenza = RelationList(
+ uo_correlata = RelationList(
title=_(
- "uo_appartenenza_label",
+ "uo_correlata_struttura_label",
default="Unità organizzativa di appartenenza",
),
- description=_(
- "uo_appartenenza_help",
- default="",
- ),
required=False,
default=[],
value_type=RelationChoice(vocabulary="plone.app.vocabularies.Catalog"),
)
form.widget(
- "responsabile_struttura",
+ "responsabile_correlato",
RelatedItemsFieldWidget,
vocabulary="plone.app.vocabularies.Catalog",
pattern_options={"selectableTypes": ["Persona"]},
)
form.widget(
- "coordinatore_struttura",
+ "coordinatore_correlato",
RelatedItemsFieldWidget,
vocabulary="plone.app.vocabularies.Catalog",
pattern_options={"selectableTypes": ["Persona"]},
)
form.widget(
- "personale_struttura",
+ "personale_correlato",
RelatedItemsFieldWidget,
vocabulary="plone.app.vocabularies.Catalog",
pattern_options={"selectableTypes": ["Persona"]},
)
form.widget(
- "uo_appartenenza",
+ "uo_correlata",
RelatedItemsFieldWidget,
vocabulary="plone.app.vocabularies.Catalog",
pattern_options={"selectableTypes": ["UnitaOrganizzativa"]},
@@ -132,22 +128,22 @@ class IStruttura(model.Schema, IIosanitaContenttypes):
fields=["come_accedere"],
)
model.fieldset(
- "orari_apertura",
- label=_("orari_apertura_label", default="Orari di apertura"),
- fields=["orari_apertura"],
+ "orari",
+ label=_("orari_label", default="Orari di apertura"),
+ fields=["orari"],
)
model.fieldset(
"persone_struttura",
label=_("persone_struttura_label", default="Persone struttura"),
fields=[
- "responsabile_struttura",
- "coordinatore_struttura",
- "personale_struttura",
+ "responsabile_correlato",
+ "coordinatore_correlato",
+ "personale_correlato",
],
)
model.fieldset(
"contenuti_collegati",
label=_("contenuti_collegati_label", default="Contenuti collegati"),
- fields=["uo_appartenenza"],
+ fields=["uo_correlata"],
)
diff --git a/src/iosanita/contenttypes/permissions.zcml b/src/iosanita/contenttypes/permissions.zcml
index 1a69fe2..b4108b6 100644
--- a/src/iosanita/contenttypes/permissions.zcml
+++ b/src/iosanita/contenttypes/permissions.zcml
@@ -19,14 +19,6 @@
id="iosanita.contenttypes.AddStep"
title="iosanita.contenttypes: Add Step"
/>
-
-
+
diff --git a/src/iosanita/contenttypes/profiles/default/catalog.xml b/src/iosanita/contenttypes/profiles/default/catalog.xml
index cea6443..0dc514d 100644
--- a/src/iosanita/contenttypes/profiles/default/catalog.xml
+++ b/src/iosanita/contenttypes/profiles/default/catalog.xml
@@ -19,8 +19,8 @@
-
-
+
+
diff --git a/src/iosanita/contenttypes/profiles/default/diff_tool.xml b/src/iosanita/contenttypes/profiles/default/diff_tool.xml
new file mode 100644
index 0000000..8f51afd
--- /dev/null
+++ b/src/iosanita/contenttypes/profiles/default/diff_tool.xml
@@ -0,0 +1,29 @@
+
+
diff --git a/src/iosanita/contenttypes/profiles/default/repositorytool.xml b/src/iosanita/contenttypes/profiles/default/repositorytool.xml
new file mode 100644
index 0000000..e7535fc
--- /dev/null
+++ b/src/iosanita/contenttypes/profiles/default/repositorytool.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/iosanita/contenttypes/profiles/default/rolemap.xml b/src/iosanita/contenttypes/profiles/default/rolemap.xml
index c977627..3647c74 100644
--- a/src/iosanita/contenttypes/profiles/default/rolemap.xml
+++ b/src/iosanita/contenttypes/profiles/default/rolemap.xml
@@ -19,24 +19,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -71,5 +53,11 @@
-
+
+
+
+
+
+
+
diff --git a/src/iosanita/contenttypes/profiles/default/types.xml b/src/iosanita/contenttypes/profiles/default/types.xml
index fe3d5fa..bc925a3 100644
--- a/src/iosanita/contenttypes/profiles/default/types.xml
+++ b/src/iosanita/contenttypes/profiles/default/types.xml
@@ -21,4 +21,6 @@
+
+
diff --git a/src/iosanita/contenttypes/profiles/default/types/Document.xml b/src/iosanita/contenttypes/profiles/default/types/Document.xml
index 0d5096a..b6c463d 100644
--- a/src/iosanita/contenttypes/profiles/default/types/Document.xml
+++ b/src/iosanita/contenttypes/profiles/default/types/Document.xml
@@ -5,11 +5,7 @@
i18n:domain="plone"
>
-
-
-
+
diff --git a/src/iosanita/contenttypes/profiles/default/types/Servizio.xml b/src/iosanita/contenttypes/profiles/default/types/Servizio.xml
new file mode 100644
index 0000000..133ca73
--- /dev/null
+++ b/src/iosanita/contenttypes/profiles/default/types/Servizio.xml
@@ -0,0 +1,111 @@
+
+
diff --git a/src/iosanita/contenttypes/restapi/services/types/get.py b/src/iosanita/contenttypes/restapi/services/types/get.py
index 5a0402b..18596b8 100644
--- a/src/iosanita/contenttypes/restapi/services/types/get.py
+++ b/src/iosanita/contenttypes/restapi/services/types/get.py
@@ -33,7 +33,7 @@ class FieldsetsMismatchError(Exception):
"a_chi_si_rivolge",
"dove",
"come_accedere",
- "orari_apertura",
+ "orari",
"contatti",
"servizi",
"persone_struttura",
@@ -58,18 +58,18 @@ class FieldsetsMismatchError(Exception):
],
"Servizio": [
"default",
- "cose",
- "a_chi_si_rivolge",
- "accedi_al_servizio",
"cosa_serve",
- "costi_e_vincoli",
- "tempi_e_scadenze",
- "casi_particolari",
+ "accedi_al_servizio",
+ "tempi_attesa",
+ "costi",
+ "dove",
+ "orari",
"contatti",
- "documenti",
- "link_utili",
+ "cosa_e",
+ "a_chi_si_rivolge",
+ "procedure_collegate_esito",
+ "responsabili",
"ulteriori_informazioni",
- "contenuti_collegati",
],
"UnitaOrganizzativa": [
"default",
diff --git a/src/iosanita/contenttypes/tests/test_ct_servizio.py b/src/iosanita/contenttypes/tests/test_ct_servizio.py
new file mode 100644
index 0000000..8bf3ad7
--- /dev/null
+++ b/src/iosanita/contenttypes/tests/test_ct_servizio.py
@@ -0,0 +1,233 @@
+# -*- coding: utf-8 -*-
+"""Setup tests for this package."""
+from iosanita.contenttypes.testing import RESTAPI_TESTING
+from plone import api
+from plone.app.testing import setRoles
+from plone.app.testing import SITE_OWNER_NAME
+from plone.app.testing import SITE_OWNER_PASSWORD
+from plone.app.testing import TEST_USER_ID
+from plone.restapi.testing import RelativeSession
+
+import unittest
+
+
+class TestServizioSchema(unittest.TestCase):
+ layer = RESTAPI_TESTING
+
+ def setUp(self):
+ self.app = self.layer["app"]
+ self.portal = self.layer["portal"]
+ self.request = self.layer["request"]
+ self.portal_url = self.portal.absolute_url()
+ setRoles(self.portal, TEST_USER_ID, ["Manager"])
+
+ self.api_session = RelativeSession(self.portal_url)
+ self.api_session.headers.update({"Accept": "application/json"})
+ self.api_session.auth = (SITE_OWNER_NAME, SITE_OWNER_PASSWORD)
+
+ def tearDown(self):
+ self.api_session.close()
+
+ def test_behaviors_enabled_for_servizio(self):
+ portal_types = api.portal.get_tool(name="portal_types")
+ self.assertEqual(
+ portal_types["Servizio"].behaviors,
+ (
+ "plone.namefromtitle",
+ "plone.allowdiscussion",
+ "plone.excludefromnavigation",
+ "plone.shortname",
+ "plone.ownership",
+ "plone.publication",
+ "plone.categorization",
+ "plone.basic",
+ "iosanita.contenttypes.behavior.sottotitolo",
+ "plone.locking",
+ "plone.constraintypes",
+ "plone.leadimage",
+ "volto.preview_image",
+ "plone.relateditems",
+ "plone.textindexer",
+ "plone.translatable",
+ "kitconcept.seo",
+ "plone.versioning",
+ "iosanita.contenttypes.behavior.contatti",
+ "iosanita.contenttypes.behavior.a_chi_si_rivolge",
+ "collective.taxonomy.generated.a_chi_si_rivolge_tassonomia",
+ "collective.taxonomy.generated.parliamo_di",
+ "iosanita.contenttypes.behavior.ulteriori_informazioni",
+ ),
+ )
+
+ def test_servizio_fieldsets(self):
+ """
+ Get the list from restapi
+ """
+ resp = self.api_session.get("@types/Servizio").json()
+ self.assertEqual(len(resp["fieldsets"]), 18)
+ self.assertEqual(
+ [x.get("id") for x in resp["fieldsets"]],
+ [
+ "default",
+ "cosa_serve",
+ "accedi_al_servizio",
+ "tempi_attesa",
+ "costi",
+ "dove",
+ "orari",
+ "contatti",
+ "cosa_e",
+ "a_chi_si_rivolge",
+ "procedure_collegate_esito",
+ "responsabili",
+ "ulteriori_informazioni",
+ "settings",
+ "ownership",
+ "dates",
+ "categorization",
+ "seo",
+ ],
+ )
+
+ def test_servizio_required_fields(self):
+ resp = self.api_session.get("@types/Servizio").json()
+ self.assertEqual(
+ sorted(resp["required"]),
+ sorted(
+ [
+ "title",
+ "cosa_serve",
+ "come_accedere",
+ "tempi_attesa",
+ "costi",
+ "orari",
+ "uo_correlata",
+ "responsabile_correlato",
+ "punti_di_contatto",
+ "a_chi_si_rivolge",
+ "description",
+ ]
+ ),
+ )
+
+ def test_servizio_fields_default_fieldset(self):
+ """
+ Get the list from restapi
+ """
+ resp = self.api_session.get("@types/Servizio").json()
+ self.assertEqual(
+ resp["fieldsets"][0]["fields"],
+ [
+ "title",
+ "description",
+ "stato_servizio",
+ "sottotitolo",
+ "image",
+ "image_caption",
+ "preview_image",
+ "preview_caption",
+ "parliamo_di",
+ ],
+ )
+
+ def test_servizio_fields_cosa_serve_fieldset(self):
+ """
+ Get the list from restapi
+ """
+ resp = self.api_session.get("@types/Servizio").json()
+ self.assertEqual(
+ resp["fieldsets"][1]["fields"],
+ ["cosa_serve"],
+ )
+
+ def test_servizio_fields_accedi_al_servizio_fieldset(self):
+ """
+ Get the list from restapi
+ """
+ resp = self.api_session.get("@types/Servizio").json()
+ self.assertEqual(
+ resp["fieldsets"][2]["fields"],
+ ["come_accedere", "piattaforma_online_link", "piattaforma_online_label"],
+ )
+
+ def test_servizio_fields_tempi_attesa_fieldset(self):
+ """
+ Get the list from restapi
+ """
+ resp = self.api_session.get("@types/Servizio").json()
+ self.assertEqual(
+ resp["fieldsets"][3]["fields"],
+ ["tempi_attesa"],
+ )
+
+ def test_servizio_fields_costi_fieldset(self):
+ """
+ Get the list from restapi
+ """
+ resp = self.api_session.get("@types/Servizio").json()
+ self.assertEqual(
+ resp["fieldsets"][4]["fields"],
+ ["costi"],
+ )
+
+ def test_servizio_fields_strutture_correlate_fieldset(self):
+ """
+ Get the list from restapi
+ """
+ resp = self.api_session.get("@types/Servizio").json()
+ self.assertEqual(resp["fieldsets"][5]["fields"], ["strutture_correlate"])
+
+ def test_servizio_fields_orari_fieldset(self):
+ """
+ Get the list from restapi
+ """
+ resp = self.api_session.get("@types/Servizio").json()
+ self.assertEqual(resp["fieldsets"][6]["fields"], ["orari"])
+
+ def test_servizio_fields_contatti_fieldset(self):
+ """
+ Get the list from restapi
+ """
+ resp = self.api_session.get("@types/Servizio").json()
+ self.assertEqual(resp["fieldsets"][7]["fields"], ["punti_di_contatto"])
+
+ def test_servizio_fields_cosa_e_fieldset(self):
+ """
+ Get the list from restapi
+ """
+ resp = self.api_session.get("@types/Servizio").json()
+ self.assertEqual(resp["fieldsets"][8]["fields"], ["descrizione_estesa"])
+
+ def test_servizio_fields_a_chi_si_rivolge_fieldset(self):
+ """
+ Get the list from restapi
+ """
+ resp = self.api_session.get("@types/Servizio").json()
+ self.assertEqual(
+ resp["fieldsets"][9]["fields"],
+ ["a_chi_si_rivolge", "a_chi_si_rivolge_tassonomia"],
+ )
+
+ def test_servizio_fields_esito_fieldset(self):
+ """
+ Get the list from restapi
+ """
+ resp = self.api_session.get("@types/Servizio").json()
+ self.assertEqual(resp["fieldsets"][10]["fields"], ["procedure_collegate_esito"])
+
+ def test_servizio_fields_responsabili_fieldset(self):
+ """
+ Get the list from restapi
+ """
+ resp = self.api_session.get("@types/Servizio").json()
+ self.assertEqual(
+ resp["fieldsets"][11]["fields"],
+ ["uo_correlata", "responsabile_correlato"],
+ )
+
+ def test_servizio_fields_ulteriori_informazioni_fieldset(self):
+ """
+ Get the list from restapi
+ """
+ resp = self.api_session.get("@types/Servizio").json()
+ self.assertEqual(resp["fieldsets"][12]["fields"], ["ulteriori_informazioni"])
diff --git a/src/iosanita/contenttypes/tests/test_ct_struttura.py b/src/iosanita/contenttypes/tests/test_ct_struttura.py
index 7be9c08..e0fe988 100644
--- a/src/iosanita/contenttypes/tests/test_ct_struttura.py
+++ b/src/iosanita/contenttypes/tests/test_ct_struttura.py
@@ -1,6 +1,5 @@
# -*- coding: utf-8 -*-
"""Setup tests for this package."""
-from iosanita.contenttypes.testing import INTEGRATION_TESTING
from iosanita.contenttypes.testing import RESTAPI_TESTING
from plone import api
from plone.app.testing import setRoles
@@ -8,11 +7,6 @@
from plone.app.testing import SITE_OWNER_PASSWORD
from plone.app.testing import TEST_USER_ID
from plone.restapi.testing import RelativeSession
-from z3c.relationfield import RelationValue
-from zope.component import getUtility
-from zope.event import notify
-from zope.intid.interfaces import IIntIds
-from zope.lifecycleevent import ObjectModifiedEvent
import unittest
@@ -82,7 +76,7 @@ def test_struttura_fieldsets(self):
"a_chi_si_rivolge",
"dove",
"come_accedere",
- "orari_apertura",
+ "orari",
"contatti",
"servizi",
"persone_struttura",
@@ -104,9 +98,9 @@ def test_struttura_required_fields(self):
[
"a_chi_si_rivolge",
"come_accedere",
- "orari_apertura",
+ "orari",
"punti_di_contatto",
- "responsabile_struttura",
+ "responsabile_correlato",
"title",
]
),
@@ -181,12 +175,12 @@ def test_struttura_fields_come_accedere_fieldset(self):
["come_accedere"],
)
- def test_struttura_fields_orari_apertura_fieldset(self):
+ def test_struttura_fields_orari_fieldset(self):
"""
Get the list from restapi
"""
resp = self.api_session.get("@types/Struttura").json()
- self.assertEqual(resp["fieldsets"][5]["fields"], ["orari_apertura"])
+ self.assertEqual(resp["fieldsets"][5]["fields"], ["orari"])
def test_struttura_fields_contatti_fieldset(self):
"""
@@ -209,17 +203,17 @@ def test_struttura_fields_persone_struttura_fieldset(self):
resp = self.api_session.get("@types/Struttura").json()
self.assertEqual(
resp["fieldsets"][8]["fields"],
- ["responsabile_struttura", "coordinatore_struttura", "personale_struttura"],
+ ["responsabile_correlato", "coordinatore_correlato", "personale_correlato"],
)
- def test_struttura_fields_contenuti_collegati_fieldset(self):
+ def test_struttura_fields_correlati_fieldset(self):
"""
Get the list from restapi
"""
resp = self.api_session.get("@types/Struttura").json()
self.assertEqual(
resp["fieldsets"][9]["fields"],
- ["uo_appartenenza", "strutture_correlate"],
+ ["uo_correlata", "strutture_correlate"],
)
def test_struttura_fields_ulteriori_informazioni_fieldset(self):
@@ -227,36 +221,7 @@ def test_struttura_fields_ulteriori_informazioni_fieldset(self):
Get the list from restapi
"""
resp = self.api_session.get("@types/Struttura").json()
- self.assertEqual(resp["fieldsets"][10]["fields"], ["ulteriori_informazioni"])
-
-
-class TestStruttura(unittest.TestCase):
- """Test that design.plone.contenttypes is properly installed."""
-
- layer = INTEGRATION_TESTING
-
- def setUp(self):
- self.app = self.layer["app"]
- self.portal = self.layer["portal"]
- self.portal_url = self.portal.absolute_url()
- setRoles(self.portal, TEST_USER_ID, ["Manager"])
-
- self.uo = api.content.create(
- container=self.portal, type="UnitaOrganizzativa", title="uo"
- )
-
- def test_uo_appartenenza_reference_is_in_catalog(self):
- """ """
- struttura = api.content.create(
- container=self.portal,
- type="Struttura",
- title="Test servizio",
+ self.assertEqual(
+ resp["fieldsets"][10]["fields"],
+ ["ulteriori_informazioni"],
)
- intids = getUtility(IIntIds)
- struttura.uo_appartenenza = [RelationValue(intids.getId(self.uo))]
- notify(ObjectModifiedEvent(struttura))
-
- res = api.content.find(uo_appartenenza_uid=self.uo.UID())
-
- self.assertEqual(len(res), 1)
- self.assertEqual(res[0].UID, struttura.UID())
diff --git a/src/iosanita/contenttypes/tests/test_uo_correlata.py b/src/iosanita/contenttypes/tests/test_uo_correlata.py
new file mode 100644
index 0000000..55e92fc
--- /dev/null
+++ b/src/iosanita/contenttypes/tests/test_uo_correlata.py
@@ -0,0 +1,45 @@
+# -*- coding: utf-8 -*-
+"""Setup tests for this package."""
+from iosanita.contenttypes.testing import INTEGRATION_TESTING
+from plone import api
+from plone.app.testing import setRoles
+from plone.app.testing import TEST_USER_ID
+from z3c.relationfield import RelationValue
+from zope.component import getUtility
+from zope.event import notify
+from zope.intid.interfaces import IIntIds
+from zope.lifecycleevent import ObjectModifiedEvent
+
+import unittest
+
+
+class TestUOCorrelata(unittest.TestCase):
+ """"""
+
+ layer = INTEGRATION_TESTING
+
+ def setUp(self):
+ self.app = self.layer["app"]
+ self.portal = self.layer["portal"]
+ self.portal_url = self.portal.absolute_url()
+ setRoles(self.portal, TEST_USER_ID, ["Manager"])
+
+ self.uo = api.content.create(
+ container=self.portal, type="UnitaOrganizzativa", title="uo"
+ )
+
+ def test_uo_correlata_reference_is_in_catalog(self):
+ """ """
+ struttura = api.content.create(
+ container=self.portal,
+ type="Struttura",
+ title="Test servizio",
+ )
+ intids = getUtility(IIntIds)
+ struttura.uo_correlata = [RelationValue(intids.getId(self.uo))]
+ notify(ObjectModifiedEvent(struttura))
+
+ res = api.content.find(uo_correlata_uid=self.uo.UID())
+
+ self.assertEqual(len(res), 1)
+ self.assertEqual(res[0].UID, struttura.UID())