Skip to content

Commit

Permalink
add versioning + refactoring Servizio and struttura
Browse files Browse the repository at this point in the history
  • Loading branch information
cekk committed Jul 18, 2024
1 parent ec3764d commit df1760b
Show file tree
Hide file tree
Showing 17 changed files with 750 additions and 127 deletions.
9 changes: 9 additions & 0 deletions src/iosanita/contenttypes/content/servizio.py
Original file line number Diff line number Diff line change
@@ -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):
""" """
5 changes: 1 addition & 4 deletions src/iosanita/contenttypes/indexers/configure.zcml
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,7 @@
factory=".events.rassegna"
name="rassegna"
/>
<adapter
factory=".uo_appartenenza.uo_appartenenza_uid"
name="uo_appartenenza_uid"
/>
<adapter factory=".uo.uo_correlata_uid" name="uo_correlata_uid" />

<!-- only metadata -->

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
]
219 changes: 219 additions & 0 deletions src/iosanita/contenttypes/interfaces/servizio.py
Original file line number Diff line number Diff line change
@@ -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")
Loading

0 comments on commit df1760b

Please sign in to comment.