From 805d93f41cff47f0c49c283b84615da1c2f56fd1 Mon Sep 17 00:00:00 2001 From: daniele-andreotti Date: Fri, 5 Jul 2024 10:11:47 +0200 Subject: [PATCH] Us 56248 evento (#2) * added Event ct * zpretty * added Event ct * updated installation profiles --- setup.py | 5 + .../behaviors/additional_help_infos.py | 41 +++ .../contenttypes/behaviors/address.py | 99 +++++++ .../contenttypes/behaviors/argomenti.py | 87 ++++++ .../contenttypes/behaviors/configure.zcml | 106 +++++++ .../contenttypes/behaviors/contatti.py | 53 ++++ src/iosanita/contenttypes/behaviors/evento.py | 267 ++++++++++++++++++ .../contenttypes/behaviors/geolocation.py | 27 ++ .../behaviors/strutture_correlate.py | 53 ++++ src/iosanita/contenttypes/configure.zcml | 1 + src/iosanita/contenttypes/content/evento.py | 9 + src/iosanita/contenttypes/interfaces.py | 8 - .../contenttypes/interfaces/__init__.py | 14 + src/iosanita/contenttypes/permissions.zcml | 9 + .../behaviors/taxonomies/tipologia_evento.cfg | 11 + .../behaviors/taxonomies/tipologia_evento.xml | 92 ++++++ .../behaviors/taxonomies/tipologia_target.cfg | 11 + .../behaviors/taxonomies/tipologia_target.xml | 56 ++++ .../profiles/default/metadata.xml | 3 + .../contenttypes/profiles/default/rolemap.xml | 9 +- .../profiles/default/types/Event.xml | 68 +++++ test_plone60.cfg | 87 ++++++ 22 files changed, 1107 insertions(+), 9 deletions(-) create mode 100644 src/iosanita/contenttypes/behaviors/additional_help_infos.py create mode 100644 src/iosanita/contenttypes/behaviors/address.py create mode 100644 src/iosanita/contenttypes/behaviors/argomenti.py create mode 100644 src/iosanita/contenttypes/behaviors/configure.zcml create mode 100644 src/iosanita/contenttypes/behaviors/contatti.py create mode 100644 src/iosanita/contenttypes/behaviors/evento.py create mode 100644 src/iosanita/contenttypes/behaviors/geolocation.py create mode 100644 src/iosanita/contenttypes/behaviors/strutture_correlate.py create mode 100644 src/iosanita/contenttypes/content/evento.py delete mode 100644 src/iosanita/contenttypes/interfaces.py create mode 100644 src/iosanita/contenttypes/interfaces/__init__.py create mode 100644 src/iosanita/contenttypes/profiles/behaviors/taxonomies/tipologia_evento.cfg create mode 100644 src/iosanita/contenttypes/profiles/behaviors/taxonomies/tipologia_evento.xml create mode 100644 src/iosanita/contenttypes/profiles/behaviors/taxonomies/tipologia_target.cfg create mode 100644 src/iosanita/contenttypes/profiles/behaviors/taxonomies/tipologia_target.xml create mode 100644 src/iosanita/contenttypes/profiles/default/types/Event.xml diff --git a/setup.py b/setup.py index c953b17..21499b8 100644 --- a/setup.py +++ b/setup.py @@ -57,6 +57,11 @@ "z3c.jbot", "plone.api>=1.8.4", "plone.app.dexterity", + "collective.venue[geolocation]", + "collective.volto.blocksfield", + "redturtle.volto>=5.0.0", + "plone.restapi", + "collective.taxonomy", ], extras_require={ "test": [ diff --git a/src/iosanita/contenttypes/behaviors/additional_help_infos.py b/src/iosanita/contenttypes/behaviors/additional_help_infos.py new file mode 100644 index 0000000..05a97c9 --- /dev/null +++ b/src/iosanita/contenttypes/behaviors/additional_help_infos.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +from collective.volto.blocksfield.field import BlocksField +from iosanita.contenttypes import _ +from plone.app.dexterity import textindexer +from plone.autoform.interfaces import IFormFieldProvider +from plone.dexterity.interfaces import IDexterityContent +from plone.supermodel import model +from zope.component import adapter +from zope.interface import implementer +from zope.interface import provider + + +# TODO: valutare se aggiungere 'box_aiuto', in alcuni CT e' obbligatorio +# e bisognerebbe metterlo unifrme per tutti in barba alle linee guida +@provider(IFormFieldProvider) +class IAdditionalHelpInfos(model.Schema): + ulteriori_informazioni = BlocksField( + title=_("ulteriori_informazioni", default="Ulteriori informazioni"), + description=_( + "ulteriori_informazioni_help", + default="Ulteriori informazioni non contemplate" " dai campi precedenti.", + ), + required=False, + ) + + model.fieldset( + "informazioni", + label=_("informazioni_label", default="Ulteriori informazioni"), + fields=["ulteriori_informazioni"], + ) + + textindexer.searchable("ulteriori_informazioni") + + +@implementer(IAdditionalHelpInfos) +@adapter(IDexterityContent) +class AdditionalHelpInfos(object): + """ """ + + def __init__(self, context): + self.context = context diff --git a/src/iosanita/contenttypes/behaviors/address.py b/src/iosanita/contenttypes/behaviors/address.py new file mode 100644 index 0000000..8c89bfc --- /dev/null +++ b/src/iosanita/contenttypes/behaviors/address.py @@ -0,0 +1,99 @@ +# -*- coding: utf-8 -*- +from collective.address.behaviors import IAddress +from iosanita.contenttypes import _ +from plone.app.dexterity import textindexer +from plone.autoform.interfaces import IFormFieldProvider +from plone.dexterity.interfaces import IDexterityContent +from plone.supermodel import model +from zope import schema +from zope.component import adapter +from zope.interface import implementer +from zope.interface import provider + + +class IAddressNomeSede(model.Schema): + nome_sede = schema.TextLine( + title=_("nome_sede", default="Nome sede"), + description=_( + "help_nome_sede", + default="Inserisci il nome della " + "sede, se non è presente tra i Luoghi del sito.", + ), + required=False, + ) + textindexer.searchable("nome_sede") + + +class IAddressLocal(model.Schema): + """ """ + + quartiere = schema.TextLine( + title=_("quartiere", default="Quartiere"), + description=_("help_quartiere", default=""), + required=False, + ) + + circoscrizione = schema.TextLine( + title=_("circoscrizione", default="Circoscrizione"), + description=_("help_circoscrizione", default=""), + required=False, + ) + + # searchabletext indexer + textindexer.searchable("quartiere") + textindexer.searchable("circoscrizione") + + +@provider(IFormFieldProvider) +class IAddressVenue(IAddress, IAddressLocal): + """""" + + model.fieldset( + "dove", + label=_("dove_label", default="Dove"), + fields=[ + "street", + "zip_code", + "city", + "quartiere", + "circoscrizione", + "country", + ], + ) + + +@provider(IFormFieldProvider) +class IAddressEvent(IAddress, IAddressNomeSede, IAddressLocal): + """""" + + model.fieldset( + "luogo", + label=_("luogo_label", default="Luogo"), + fields=[ + "nome_sede", + "street", + "zip_code", + "city", + "quartiere", + "circoscrizione", + "country", + ], + ) + + +@implementer(IAddressVenue) +@adapter(IDexterityContent) +class AddressVenue(object): + """ """ + + def __init__(self, context): + self.context = context + + +@implementer(IAddressEvent) +@adapter(IDexterityContent) +class AddressEvent(object): + """ """ + + def __init__(self, context): + self.context = context diff --git a/src/iosanita/contenttypes/behaviors/argomenti.py b/src/iosanita/contenttypes/behaviors/argomenti.py new file mode 100644 index 0000000..844c164 --- /dev/null +++ b/src/iosanita/contenttypes/behaviors/argomenti.py @@ -0,0 +1,87 @@ +# -*- coding: utf-8 -*- +from iosanita.contenttypes import _ +from plone.app.contenttypes.interfaces import IEvent +from plone.app.dexterity import textindexer +from plone.app.z3cform.widget import RelatedItemsFieldWidget +from plone.autoform import directives as form +from plone.autoform.interfaces import IFormFieldProvider +from plone.dexterity.interfaces import IDexterityContent +from plone.supermodel import model +from z3c.relationfield.schema import RelationChoice +from z3c.relationfield.schema import RelationList +from zope.component import adapter +from zope.interface import implementer +from zope.interface import provider + + +class IArgomentiSchema(model.Schema): + """Marker interface for Argomenti""" + + tassonomia_argomenti = RelationList( + title=_("tassonomia_argomenti_label", default="Argomenti"), + description=_( + "tassonomia_argomenti_help", + default="Seleziona una lista di argomenti d'interesse per questo" + " contenuto.", + ), + value_type=RelationChoice( + title=_("Argomenti correlati"), + vocabulary="plone.app.vocabularies.Catalog", + ), + required=False, + default=[], + ) + + form.widget( + "tassonomia_argomenti", + RelatedItemsFieldWidget, + vocabulary="plone.app.vocabularies.Catalog", + pattern_options={ + "selectableTypes": ["Pagina Argomento"], + }, + ) + + textindexer.searchable("tassonomia_argomenti") + + +@provider(IFormFieldProvider) +class IArgomenti(IArgomentiSchema): + """ """ + + +@provider(IFormFieldProvider) +class IArgomentiEvento(IArgomentiSchema): + """ """ + + tassonomia_argomenti = RelationList( + title=_("tassonomia_argomenti_label", default="Argomenti"), + description=_( + "tassonomia_argomenti_help", + default="Seleziona una lista di argomenti d'interesse per questo" + " contenuto.", + ), + value_type=RelationChoice( + title=_("Argomenti correlati"), + vocabulary="plone.app.vocabularies.Catalog", + ), + required=True, + default=[], + ) + + +@implementer(IArgomenti) +@adapter(IDexterityContent) +class Argomenti(object): + """""" + + def __init__(self, context): + self.context = context + + +@implementer(IArgomentiEvento) +@adapter(IEvent) +class ArgomentiEvento(object): + """""" + + def __init__(self, context): + self.context = context diff --git a/src/iosanita/contenttypes/behaviors/configure.zcml b/src/iosanita/contenttypes/behaviors/configure.zcml new file mode 100644 index 0000000..f391c64 --- /dev/null +++ b/src/iosanita/contenttypes/behaviors/configure.zcml @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/iosanita/contenttypes/behaviors/contatti.py b/src/iosanita/contenttypes/behaviors/contatti.py new file mode 100644 index 0000000..b489d91 --- /dev/null +++ b/src/iosanita/contenttypes/behaviors/contatti.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +from iosanita.contenttypes import _ +from plone.app.z3cform.widget import RelatedItemsFieldWidget +from plone.autoform import directives as form +from plone.autoform.interfaces import IFormFieldProvider +from plone.supermodel import model +from z3c.relationfield.schema import RelationChoice +from z3c.relationfield.schema import RelationList +from zope.component import adapter +from zope.interface import implementer +from zope.interface import provider + + +@provider(IFormFieldProvider) +class IContattiEvent(model.Schema): + contact_info = RelationList( + title=_( + "contact_info_label", + default="Punti di contatto", + ), + description=_( + "contact_info_help", + default="Relazione con i punti di contatto dell'evento.", + ), + required=True, + default=[], + value_type=RelationChoice( + title=_("Punti di contatto"), + vocabulary="plone.app.vocabularies.Catalog", + ), + ) + form.widget( + "contact_info", + RelatedItemsFieldWidget, + vocabulary="plone.app.vocabularies.Catalog", + pattern_options={ + "selectableTypes": ["PuntoDiContatto"], + }, + ) + model.fieldset( + "contatti", + label=_("contatti_label", default="Contatti"), + fields=["contact_info"], + ) + + +@implementer(IContattiEvent) +@adapter(IContattiEvent) +class ContattiEvent(object): + """ """ + + def __init__(self, context): + self.context = context diff --git a/src/iosanita/contenttypes/behaviors/evento.py b/src/iosanita/contenttypes/behaviors/evento.py new file mode 100644 index 0000000..d72ab80 --- /dev/null +++ b/src/iosanita/contenttypes/behaviors/evento.py @@ -0,0 +1,267 @@ +# -*- coding: utf-8 -*- +from collective.volto.blocksfield.field import BlocksField +from iosanita.contenttypes import _ +from plone.app.dexterity import textindexer +from plone.app.z3cform.widget import RelatedItemsFieldWidget +from plone.autoform import directives as form +from plone.autoform.interfaces import IFormFieldProvider +from plone.dexterity.interfaces import IDexterityContent +from plone.supermodel import model +from z3c.relationfield.schema import RelationChoice +from z3c.relationfield.schema import RelationList +from zope import schema +from zope.component import adapter +from zope.interface import implementer +from zope.interface import provider + + +@provider(IFormFieldProvider) +class IEvento(model.Schema): + """Marker inteerface for content type Evento""" + + sottotitolo = schema.TextLine( + title=_("sottotitolo_label", default="Sottotitolo"), + description=_( + "sottotitolo_help", + default="Indica un eventuale sottotitolo/titolo alternativo.", + ), + required=False, + ) + + descrizione_estesa = BlocksField( + title=_("descrizione_estesa", default="Descrizione estesa"), + required=True, + description=_( + "descrizione_estesa_help", + default="Descrizione dettagliata e completa.", + ), + ) + + descrizione_destinatari = BlocksField( + title=_("a_chi_si_rivolge_label", default="A chi è rivolto"), + required=True, + description=_( + "a_chi_si_rivolge_help", + default="Descrizione testuale dei principali destinatari dell'Evento", + ), + ) + + orari = BlocksField( + title=_("orari", default="Informazioni sugli orari"), + required=False, + description=_( + "orari_help", + default="Informazioni sugli orari di svolgimento dell'evento.", + ), + ) + + prezzo = BlocksField( + title=_("prezzo", default="Costo"), + required=True, + description=_( + "prezzo_help", + default="Eventuale costo dell'evento (se ci sono uno o più biglietti), " + "con link all'acquisto se disponibile", + ), + ) + + # campi presenti nelle vecchie grafiche che abbiamo deciso di continuare a mostrare + organizzato_da_interno = RelationList( + title=_("organizzato_da_interno_label", default="Organizzato da"), + default=[], + value_type=RelationChoice(vocabulary="plone.app.vocabularies.Catalog"), + required=False, + description=_( + "organizzato_da_interno_help", + default="Se l'evento è organizzato direttamente dal comune," + " indicare l'ufficio/ente organizzatore. I dati di contatto " + "verranno presi direttamente dall'ufficio selezionato. Se l'evento" + " non è organizzato direttamente dal comune, o si vogliono " + "sovrascrivere alcuni dati di contatto, utilizzare i seguenti campi.", # noqa + ), + ) + organizzato_da_esterno = BlocksField( + title=_("organizzato_da_esterno_label", default="Organizzatore"), + required=False, + description=_( + "organizzato_da_esterno_help", + default="Se l'evento non è organizzato direttamente dal comune oppure ha anche un organizzatore esterno," # noqa + " indicare il nome del contatto.", + ), + ) + + #  campi aggiunti con il pnrr + patrocinato_da = BlocksField( + title=_("patrocinato_da_label", default="Patrocinato da"), + required=False, + description=_( + "patrocinato_da_help", + default="Indicare l'ente che supporta l'evento, se presente.", + ), + ) + + persone_amministrazione = RelationList( + title=_("parteciperanno_label", default="Parteciperanno (Persone)"), + required=False, + default=[], + value_type=RelationChoice(vocabulary="plone.app.vocabularies.Catalog"), + description=_( + "parteciperanno_help", + default="Link a persone dell'amministrazione che interverranno all'evento", + ), + ) + + chi_partecipa = BlocksField( + title=_("chi_partecipa_label", default="Parteciperanno"), + required=True, + description=_( + "chi_partecipa_help", + default="Descrizione testuale dei principali partecipanti.", + ), + ) + + evento_genitore = RelationList( + title="Evento genitore", + default=[], + description=_( + "evento_genitore_help", + default='Un evento può essere parte di un altro evento definito come "genitore"', + ), + value_type=RelationChoice( + title=_("Event"), vocabulary="plone.app.vocabularies.Catalog" + ), + required=False, + ) + + appuntamenti = RelationList( + title="Appuntamenti", + default=[], + description=_( + "appuntamenti_help", + default="Link agli eventi figlio (solo se l'evento in questione è evento genitore).", + ), + value_type=RelationChoice( + title=_("Event"), vocabulary="plone.app.vocabularies.Catalog" + ), + required=False, + ) + + dove_rivolgersi = RelationList( + title="Dove rivolgersi", + default=[], + required=True, + description=_( + "dove_rivolgersi_help", + default="Link all'eventuale scheda della struttura dell'ASL in cui si svolge l'evento.", + ), + value_type=RelationChoice( + title=_("Struttura"), vocabulary="plone.app.vocabularies.Catalog" + ), + ) + + a_chi_si_rivolge = BlocksField( + title=_("a_chi_si_rivolge_label", default="A chi è rivolto"), + required=True, + description=_( + "a_chi_si_rivolge_help", + default="A chi si rivolge questo servizio.", + ), + ) + + documenti_correlati = RelationList( + title="Documenti correlati", + default=[], + required=True, + description=_( + "documenti_correlati_help", + default="Link alle schede documenti e allegati di supporto all'evento. Per poter scaricare direttamente un file occorre inserirlo all'interno della cartella 'Allegati'.", + ), + value_type=RelationChoice( + title=_("Documento"), vocabulary="plone.app.vocabularies.Catalog" + ), + ) + + eventi_correlati = RelationList( + title="Eventi correlati", + default=[], + required=True, + description=_( + "eventi_correlati_help", default="Seleziona gli eventi correlati." + ), + value_type=RelationChoice( + title=_("Event"), vocabulary="plone.app.vocabularies.Catalog" + ), + ) + + # custom widgets + + form.widget( + "organizzato_da_interno", + RelatedItemsFieldWidget, + vocabulary="plone.app.vocabularies.Catalog", + pattern_options={ + "selectableTypes": ["Persona", "UnitaOrganizzativa", "Servizio"], + }, + ) + form.widget( + "persone_amministrazione", + RelatedItemsFieldWidget, + vocabulary="plone.app.vocabularies.Catalog", + pattern_options={ + "selectableTypes": ["Persona"], + }, + ) + + # custom fieldsets and order + form.order_before(sottotitolo="ILeadImageBehavior.image") + + model.fieldset( + "cose", + label=_("cose_label", default="Cos'è"), + fields=[ + "descrizione_estesa", + "descrizione_destinatari", + "persone_amministrazione", + ], + ) + model.fieldset( + "date_e_orari", + label=_("date_e_orari_label", default="Date e orari"), + fields=["orari"], + ) + model.fieldset("costi", label=_("costi_label", default="Costi"), fields=["prezzo"]) + model.fieldset( + "contatti", + label=_("contatti_label", default="Contatti"), + fields=[ + "organizzato_da_interno", + "organizzato_da_esterno", + "patrocinato_da", + ], + ) + model.fieldset( + "partecipanti", + label=_("partecipanti_label", default="Chi partecipa"), + fields=["chi_partecipa"], + ) + model.fieldset( + "categorization", + label=_("evento_genitore_label", default="Categorizzazione"), + fields=["evento_genitore"], + ) + model.fieldset( + "categorization", + label=_("appuntamenti_label", default="Categorizzazione"), + fields=["appuntamenti"], + ) + + textindexer.searchable("descrizione_estesa") + + +@implementer(IEvento) +@adapter(IDexterityContent) +class Evento(object): + """ """ + + def __init__(self, context): + self.context = context diff --git a/src/iosanita/contenttypes/behaviors/geolocation.py b/src/iosanita/contenttypes/behaviors/geolocation.py new file mode 100644 index 0000000..dfd45fa --- /dev/null +++ b/src/iosanita/contenttypes/behaviors/geolocation.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +from collective.geolocationbehavior.geolocation import IGeolocatable +from iosanita.contenttypes import _ +from plone.autoform.interfaces import IFormFieldProvider +from plone.dexterity.interfaces import IDexterityContent +from plone.supermodel import model +from zope.component import adapter +from zope.interface import implementer +from zope.interface import provider + + +@provider(IFormFieldProvider) +class IGeolocatableEvent(IGeolocatable): + model.fieldset( + "luogo", + label=_("luogo_label", default="Luogo"), + fields=["geolocation"], + ) + + +@implementer(IGeolocatableEvent) +@adapter(IDexterityContent) +class GeolocatableEvent(object): + """ """ + + def __init__(self, context): + self.context = context diff --git a/src/iosanita/contenttypes/behaviors/strutture_correlate.py b/src/iosanita/contenttypes/behaviors/strutture_correlate.py new file mode 100644 index 0000000..96a5a83 --- /dev/null +++ b/src/iosanita/contenttypes/behaviors/strutture_correlate.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +from iosanita.contenttypes import _ +from plone.app.z3cform.widget import RelatedItemsFieldWidget +from plone.autoform import directives as form +from plone.autoform.interfaces import IFormFieldProvider +from plone.dexterity.interfaces import IDexterityContent +from plone.supermodel import model +from z3c.relationfield.schema import RelationChoice +from z3c.relationfield.schema import RelationList +from zope.component import adapter +from zope.interface import implementer +from zope.interface import provider + + +@provider(IFormFieldProvider) +class IStruttureCorrelate(model.Schema): + strutture_correlate = RelationList( + title="Strutture correlate", + default=[], + value_type=RelationChoice( + title=_("Struttura correlata"), + vocabulary="plone.app.vocabularies.Catalog", + ), + required=False, + missing_value=(), + description=_( + "strutture_correlate_help", + default="Seleziona la lista delle strutture correlate.", + ), + ) + form.widget( + "strutture_correlate", + RelatedItemsFieldWidget, + vocabulary="plone.app.vocabularies.Catalog", + pattern_options={ + "selectableTypes": ["UnitaOrganizzativa"], + }, + ) + + model.fieldset( + "luogo", + label=_("luogo_label", default="Luogo"), + fields=["strutture_correlate"], + ) + + +@implementer(IStruttureCorrelate) +@adapter(IDexterityContent) +class StruttureCorrelate(object): + """ """ + + def __init__(self, context): + self.context = context diff --git a/src/iosanita/contenttypes/configure.zcml b/src/iosanita/contenttypes/configure.zcml index d18ab89..1364057 100644 --- a/src/iosanita/contenttypes/configure.zcml +++ b/src/iosanita/contenttypes/configure.zcml @@ -15,6 +15,7 @@ + diff --git a/src/iosanita/contenttypes/content/evento.py b/src/iosanita/contenttypes/content/evento.py new file mode 100644 index 0000000..2fe6214 --- /dev/null +++ b/src/iosanita/contenttypes/content/evento.py @@ -0,0 +1,9 @@ +# -*- coding: utf-8 -*- +from plone.dexterity.content import Container +from plone.event.interfaces import IEvent +from zope.interface import implementer + + +@implementer(IEvent) +class Event(Container): + """ """ diff --git a/src/iosanita/contenttypes/interfaces.py b/src/iosanita/contenttypes/interfaces.py deleted file mode 100644 index bc3dc28..0000000 --- a/src/iosanita/contenttypes/interfaces.py +++ /dev/null @@ -1,8 +0,0 @@ -# -*- coding: utf-8 -*- -"""Module where all interfaces, events and exceptions live.""" - -from zope.publisher.interfaces.browser import IDefaultBrowserLayer - - -class IIosanitaContenttypesLayer(IDefaultBrowserLayer): - """Marker interface that defines a browser layer.""" diff --git a/src/iosanita/contenttypes/interfaces/__init__.py b/src/iosanita/contenttypes/interfaces/__init__.py new file mode 100644 index 0000000..7b92853 --- /dev/null +++ b/src/iosanita/contenttypes/interfaces/__init__.py @@ -0,0 +1,14 @@ +# -*- coding: utf-8 -*- +"""Module where all interfaces, events and exceptions live.""" +from redturtle.volto.interfaces import IRedturtleVoltoLayer +from zope.interface import Interface + + +class IIosanitaContenttypesLayer(IRedturtleVoltoLayer): + """Marker interface that defines a browser layer.""" + + +class IIosanitaContenttypes(Interface): + """ + Marker interface + """ diff --git a/src/iosanita/contenttypes/permissions.zcml b/src/iosanita/contenttypes/permissions.zcml index 74de0f4..bf2ad04 100644 --- a/src/iosanita/contenttypes/permissions.zcml +++ b/src/iosanita/contenttypes/permissions.zcml @@ -7,6 +7,15 @@ + + + diff --git a/src/iosanita/contenttypes/profiles/behaviors/taxonomies/tipologia_evento.cfg b/src/iosanita/contenttypes/profiles/behaviors/taxonomies/tipologia_evento.cfg new file mode 100644 index 0000000..ae23182 --- /dev/null +++ b/src/iosanita/contenttypes/profiles/behaviors/taxonomies/tipologia_evento.cfg @@ -0,0 +1,11 @@ +[taxonomy] +name = tipologia_evento +title = Tipo di evento +description = Il sistema di gestione contenuti basato su React +default_language = it +field_title = Tipo di evento +field_description = Seleziona la tipologia dell'evento +field_prefix = +taxonomy_fieldset = default +is_single_select = true +is_required = true diff --git a/src/iosanita/contenttypes/profiles/behaviors/taxonomies/tipologia_evento.xml b/src/iosanita/contenttypes/profiles/behaviors/taxonomies/tipologia_evento.xml new file mode 100644 index 0000000..3f160aa --- /dev/null +++ b/src/iosanita/contenttypes/profiles/behaviors/taxonomies/tipologia_evento.xml @@ -0,0 +1,92 @@ + + + + Tipo di evento + + tipologia_evento + + evento_di_formazione + + Evento di formazione + + + scuola_estiva_invernale + + Scuola estiva/invernale + + + + webinar + + Webinar + + + + seminario + + Seminario + + + + laboratorio + + Laboratorio + + + + presentazione_libro + + Presentazione libro + + + + corso + + Corso + + + + + conferenza_summit + + Conferenza e Summit + + + convegno + + Convegno + + + + vertice + + Vertice + + + + congresso + + Congresso + + + + + giornata_informativa + + Giornata informativa + + + giornata_aperta + + Giornata aperta + + + + + diff --git a/src/iosanita/contenttypes/profiles/behaviors/taxonomies/tipologia_target.cfg b/src/iosanita/contenttypes/profiles/behaviors/taxonomies/tipologia_target.cfg new file mode 100644 index 0000000..f091804 --- /dev/null +++ b/src/iosanita/contenttypes/profiles/behaviors/taxonomies/tipologia_target.cfg @@ -0,0 +1,11 @@ +[taxonomy] +name = tipologia_target +title = Target +description = Il sistema di gestione contenuti basato su React +default_language = it +field_title = Target +field_description = Seleziona il target +field_prefix = +taxonomy_fieldset = default +is_single_select = true +is_required = false diff --git a/src/iosanita/contenttypes/profiles/behaviors/taxonomies/tipologia_target.xml b/src/iosanita/contenttypes/profiles/behaviors/taxonomies/tipologia_target.xml new file mode 100644 index 0000000..481f840 --- /dev/null +++ b/src/iosanita/contenttypes/profiles/behaviors/taxonomies/tipologia_target.xml @@ -0,0 +1,56 @@ + + + + Target + + target + + persone + + Persone + + + bambini + + Bambini + + + + adoescenti + + Adolescenti + + + + + Entità + + Entitàt + + + imprese + + Imprese + + + + scuole + + Scuole + + + + congresso + + Congresso + + + + + diff --git a/src/iosanita/contenttypes/profiles/default/metadata.xml b/src/iosanita/contenttypes/profiles/default/metadata.xml index 3fcf1da..5ca96e0 100644 --- a/src/iosanita/contenttypes/profiles/default/metadata.xml +++ b/src/iosanita/contenttypes/profiles/default/metadata.xml @@ -3,5 +3,8 @@ 1000 + profile-plone.restapi:default + profile-collective.taxonomy:default + profile-collective.venue:default diff --git a/src/iosanita/contenttypes/profiles/default/rolemap.xml b/src/iosanita/contenttypes/profiles/default/rolemap.xml index 0a24e7e..9ab0cdb 100644 --- a/src/iosanita/contenttypes/profiles/default/rolemap.xml +++ b/src/iosanita/contenttypes/profiles/default/rolemap.xml @@ -2,6 +2,13 @@ - + + + + + + diff --git a/src/iosanita/contenttypes/profiles/default/types/Event.xml b/src/iosanita/contenttypes/profiles/default/types/Event.xml new file mode 100644 index 0000000..b7c3393 --- /dev/null +++ b/src/iosanita/contenttypes/profiles/default/types/Event.xml @@ -0,0 +1,68 @@ + + + True + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test_plone60.cfg b/test_plone60.cfg index d56cb6d..51d8a02 100644 --- a/test_plone60.cfg +++ b/test_plone60.cfg @@ -10,3 +10,90 @@ update-versions-file = test_plone60.cfg [versions] createcoverage = 1.5 watchdog = 2.1.6 + +# Added by buildout at 2024-07-03 11:55:13.835262 +build = 1.2.1 +cmarkgfm = 2024.1.14 +collective.geolocationbehavior = 1.7.2 +collective.venue = 4.1 +coverage = 7.5.4 +geographiclib = 2.0 +geopy = 2.4.1 +i18ndude = 6.2.0 +keyring = 25.2.1 +kitconcept.seo = 2.1.0 +markdown-it-py = 3.0.0 +mdurl = 0.1.2 +nh3 = 0.2.17 +pkginfo = 1.10.0 +plone.formwidget.geolocation = 3.0.6 +pyproject-hooks = 1.1.0 +readme-renderer = 43.0 +redturtle.volto = 5.4.9 +requests-toolbelt = 1.0.0 +rfc3986 = 2.0.0 +rich = 13.7.1 +tomli = 2.0.1 +twine = 5.1.1 +zest.releaser = 9.2.0 + +# Required by: +# jaraco.context==5.3.0 +backports.tarfile = 1.2.0 + +# Required by: +# collective.venue==4.1 +collective.address = 1.6 + +# Required by: +# redturtle.volto==5.4.9 +collective.purgebyid = 1.2.2 + +# Required by: +# redturtle.volto==5.4.9 +collective.volto.cookieconsent = 1.1.1 + +# Required by: +# redturtle.volto==5.4.9 +collective.volto.gdprcookie = 1.0.3 + +# Required by: +# keyring==25.2.1 +jaraco.classes = 3.4.0 + +# Required by: +# keyring==25.2.1 +jaraco.context = 5.3.0 + +# Required by: +# keyring==25.2.1 +jaraco.functools = 4.0.1 + +# Required by: +# jaraco.classes==3.4.0 +# jaraco.functools==4.0.1 +more-itertools = 10.3.0 + +# Required by: +# collective.address==1.6 +pycountry = 24.6.1 + +# Required by: +# iosanita.contenttypes==2.0.0.dev0 +z3c.jbot = 2.0 + +# Added by buildout at 2024-07-03 11:55:59.594145 + +# Required by: +# iosanita.contenttypes==2.0.0.dev0 +collective.volto.blocksfield = 2.0.0 + +# Added by buildout at 2024-07-03 12:28:31.637588 + +# Required by: +# eea.api.taxonomy==1.5 +collective.taxonomy = 3.1.1 + +# Required by: +# iosanita.contenttypes==2.0.0.dev0 +eea.api.taxonomy = 1.5