def __call__(self):

        if self.schema.getName() == "IRelatedItems":
            fieldset = Fieldset(
                "correlati",
                label=_("correlati_label", default="Contenuti collegati"),
                fields=["relatedItems"],
            )
            self.schema._Element__tagged_values[
                "plone.supermodel.fieldsets"] = [fieldset]
        if self.schema.getName() == "IEventBasic":
            fieldset = Fieldset(
                "date_e_orari",
                label=_("date_e_orari_label", default="Date e orari"),
                fields=["start", "end", "whole_day", "open_end", "sync_uid"],
            )
            self.schema._Element__tagged_values[
                "plone.supermodel.fieldsets"] = [fieldset]
        if self.schema.getName() == "IEventRecurrence":
            fieldset = Fieldset(
                "date_e_orari",
                label=_("date_e_orari_label", default="Date e orari"),
                fields=["recurrence"],
            )
            self.schema._Element__tagged_values[
                "plone.supermodel.fieldsets"] = [fieldset]
class IGeolocationDefaults(Interface):
    street = TextLine(
        title=_("Via"),
        required=False,
        default="Via Liszt, 21",
    )
    zip_code = TextLine(
        title=_("CAP"),
        required=False,
        default="00144",
    )
    city = TextLine(
        title=_("Città"),
        required=False,
        default="Roma",
    )
    country = TextLine(
        title=_("Nazione"),
        required=False,
        default="{'title': 'Italia','token': '380',}",
    )
    geolocation = TextLine(
        title=_("Coordinate"),
        required=True,
        default="{'latitude': 41.8337833,'longitude': 12.4677863,}",
    )
class ILuoghiCorrelatiEvento(model.Schema):
    """
    Events have a differente fieldset for this field
    """

    luoghi_correlati = RelationList(
        title=_("luoghi_correlati_label", default="Luoghi correlati"),
        description=_(
            "luoghi_correlati_event_help",
            default="Seleziona una lista di luoghi citati. Se il luogo "
            "dell'evento non è presente sul sito, inserisci le sue "
            "informazioni nei campi seguenti.",
        ),
        default=[],
        value_type=RelationChoice(vocabulary="plone.app.vocabularies.Catalog"),
        required=False,
    )
    form.widget(
        "luoghi_correlati",
        RelatedItemsFieldWidget,
        vocabulary="plone.app.vocabularies.Catalog",
        pattern_options={
            "selectableTypes": ["Venue"],
            "maximumSelectionSize": 50,
        },
    )

    model.fieldset(
        "luogo",
        label=_("luogo_label", default="Luogo"),
        fields=["luoghi_correlati"],
    )
示例#4
0
class IServiziCorrelati(model.Schema):

    servizi_correlati = RelationList(
        title=_("servizi_correlati_label", default="Servizi correlati"),
        description=_(
            "servizi_correlati_description",
            default="Questi servizi non verranno mostrati nel contenuto, ma"
            " permetteranno di vedere questo contenuto associato quando si"
            " visita il servizio",
        ),
        default=[],
        value_type=RelationChoice(
            title="Related", vocabulary="plone.app.vocabularies.Catalog"
        ),
        required=False,
    )
    form.widget(
        "servizi_correlati",
        RelatedItemsFieldWidget,
        vocabulary="plone.app.vocabularies.Catalog",
        pattern_options={
            "maximumSelectionSize": 10,
            "selectableTypes": ["Servizio"],
        },
    )

    model.fieldset(
        "correlati",
        label=_("correlati_label", default="Contenuti collegati"),
        fields=["servizi_correlati"],
    )
    form.order_before(servizi_correlati="IRelatedItems.relatedItems")
示例#5
0
class IDatasetCorrelati(model.Schema):

    dataset_correlati = RelationList(
        title=_("dataset_correlati_label", default="Dataset correlati"),
        description=_(
            "dataset_correlati_help",
            default="Seleziona una lista di schede dataset collegate a questo"
            " contenuto.",
        ),
        default=[],
        value_type=RelationChoice(vocabulary="plone.app.vocabularies.Catalog"),
        required=False,
    )
    form.widget(
        "dataset_correlati",
        RelatedItemsFieldWidget,
        vocabulary="plone.app.vocabularies.Catalog",
        pattern_options={
            "selectableTypes": ["Dataset"],
            "maximumSelectionSize": 50,
        },
    )

    model.fieldset(
        "correlati",
        label=_("correlati_label", default="Contenuti collegati"),
        fields=["dataset_correlati"],
    )
示例#6
0
class IStruttureCorrelate(model.Schema):

    strutture_politiche = RelationList(
        title="Strutture politiche coinvolte",
        default=[],
        value_type=RelationChoice(
            title=_("Struttura politica coinvolta"),
            vocabulary="plone.app.vocabularies.Catalog",
        ),
        required=False,
        missing_value=(),
        description=_(
            "strutture_politiche_help",
            default="Seleziona la lista delle strutture politiche coinvolte.",
        ),
    )
    form.widget(
        "strutture_politiche",
        RelatedItemsFieldWidget,
        vocabulary="plone.app.vocabularies.Catalog",
        pattern_options={
            "maximumSelectionSize": 10,
            "selectableTypes": ["UnitaOrganizzativa"],
        },
    )

    model.fieldset(
        "informazioni",
        label=_("informazioni_label", default="Ulteriori informazioni"),
        fields=["strutture_politiche"],
    )
    def __call__(self, context):
        # Just an example list of content for our vocabulary,
        # this can be any static or dynamic data, a catalog result for example.
        items = [
            VocabItem("pagare", _("Pagare")),
            VocabItem("iscriversi", _("Iscriversi")),
            VocabItem("richiedere", _("Richiedere")),
            VocabItem("leggere", _("Leggere")),
            VocabItem("attivare", _("Attivare")),
            VocabItem("autorizzare", _("Autorizzare")),
            VocabItem("delegare", _("Delegare")),
            VocabItem("informare", _("Informare")),
            VocabItem("accettare", _("Accettare")),
        ]
        # Fix context if you are using the vocabulary in DataGridField.
        # See https://github.com/collective/collective.z3cform.datagridfield/issues/31:  # NOQA: 501
        if not IDexterityContent.providedBy(context):
            req = getRequest()
            context = req.PARENTS[0]

        # create a list of SimpleTerm items:
        terms = []
        for item in items:
            terms.append(
                SimpleTerm(value=item.token,
                           token=str(item.token),
                           title=item.value))
        # Create a SimpleVocabulary from the terms list and return it:
        return SimpleVocabulary(terms)
class IInfoTestata(model.Schema):
    """ """

    info_testata = RichText(
        title=_(
            "info_testata_label",
            default="Informazioni aggiuntive per la testata",
        ),
        required=False,
        description=_(
            "info_testata_help",
            default=
            "Inserisci eventuale testo informativo che verrà mostrato in testata.",  # noqa
        ),
    )
    ricerca_in_testata = schema.Bool(
        title=_("ricerca_in_testata_label", default="Ricerca in testata"),
        default=False,
        required=False,
        description=_(
            "ricerca_in_testata_help",
            default=
            "Seleziona se mostrare o meno il campo di ricerca in testata.",
        ),
    )
    mostra_bottoni_condivisione = schema.Bool(
        title=_(
            "mostra_bottoni_condivisione_label",
            default="Mostra i bottoni per la condivisione sui social",
        ),
        default=False,
        required=False,
        description=_(
            "mostra_bottoni_condivisione_help",
            default="Seleziona se mostrare o meno i bottoni con i link per "
            "la condivisione sui vari social, mail e stampa.",
        ),
    )
    mostra_navigazione = schema.Bool(
        title=_("mostra_navigazione_label", default="Mostra la navigazione"),
        default=False,
        required=False,
        description=_(
            "mostra_navigazione_help",
            default=
            "Seleziona se mostrare o meno la navigazione laterale nella testata.",  # noqa
        ),
    )

    model.fieldset(
        "testata",
        label=_("testata_fieldset_label", default="Testata"),
        fields=[
            "ricerca_in_testata",
            "mostra_bottoni_condivisione",
            "info_testata",
            "mostra_navigazione",
        ],
    )
class IDescrizioneEstesaSchema(model.Schema):
    descrizione_estesa = BlocksField(
        title=_("descrizione_estesa", default="Descrizione estesa"),
        required=False,
        description=_(
            "descrizione_estesa_help",
            default="Descrizione dettagliata e completa.",
        ),
    )

    dexteritytextindexer.searchable("descrizione_estesa")
示例#10
0
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,
    )
    dexteritytextindexer.searchable("nome_sede")
示例#11
0
class IContattiVenue(IContatti):

    model.fieldset(
        "orari",
        label=_("orari_label", default="Orari di apertura"),
        fields=["orario_pubblico"],
    )

    model.fieldset(
        "contatti",
        label=_("contatti_label", default="Contatti"),
        fields=["telefono", "fax", "email", "pec", "web"],
    )
示例#12
0
class IArgomentiDocument(IArgomentiSchema):
    """ """

    model.fieldset(
        "correlati",
        label=_("correlati_label", default="Contenuti collegati"),
        fields=["correlato_in_evidenza"],
    )
    model.fieldset(
        "testata",
        label=_("testata_fieldset_label", default="Testata"),
        fields=["tassonomia_argomenti"],
    )
    form.order_after(correlato_in_evidenza="IRelatedItems.relatedItems")
    form.order_after(tassonomia_argomenti="IInfoTestata.mostra_navigazione")
class IGeolocatableUnitaOrganizzativa(IGeolocatable):

    model.fieldset(
        "contatti",
        label=_("contatti_label", default="Contatti"),
        fields=["geolocation"],
    )
class IGeolocatableEvent(IGeolocatable):

    model.fieldset(
        "luogo",
        label=_("luogo_label", default="Luogo"),
        fields=["geolocation"],
    )
class IRicevutaPagamento(model.Schema):
    """Marker interface for RicevutaPagamento"""

    numero_protocollo = schema.Id(
        title=_("numero_protocollo", default="Numero protocollo"),
        required=True,
    )

    stampa_ricevuta = field.NamedFile(title=_("stampa_ricevuta",
                                              default="Stampa ricevuta"),
                                      required=True)

    data_pagamento = schema.Date(title=_("data_pagamento",
                                         default="Data pagamento"),
                                 required=True)

    importo_pagato = schema.TextLine(title=_("importo_pagato",
                                             default="Importo pagato"),
                                     required=True)

    modalita_pagamento = schema.TextLine(
        title=_("modalita_pagamento", default="Modalità pagamento"),
        required=True,
    )

    # TODO: aggiungere tassonomia e vocabolario rilevante
    servizio_origine = schema.Choice(
        title=_("servizio_origine_ricevuta",
                default="Servizio che origina la pratica"),
        # vocabolario di riferimento sara' il servizio che genera il task e
        # permette di soddisfarlo
        vocabulary="design.plone.contenttypes.Mockup",
        required=False,
    )

    pratica_associata = field.NamedFile(
        title=_("pratica_associata_ricevuta",
                default="Pratica associata al pagamento"),
        required=True,
    )

    # TODO: capire se ci sono altri esiti oltre ai banali "accettato",
    # "rifiutato", "in attesa di conferma",
    # e costruire di conseguenza un vocabolario adeguato
    esito = schema.Choice(
        title=_("esito", default="Esito"),
        vocabulary="design.plone.contenttypes.Mockup",
        required=True,
    )

    allegato = field.NamedFile(title=_("allegato", default="Allegato"),
                               required=False)
class IDescrizioneEstesaDocumento(IDescrizioneEstesaSchema):
    """ """

    model.fieldset(
        "descrizione",
        label=_("descrizione_label", default="Descrizione"),
        fields=["descrizione_estesa"],
    )
class IDescrizioneEstesaServizio(IDescrizioneEstesaSchema):
    """ """

    model.fieldset(
        "cose",
        label=_("cose_label", default="Cos'è"),
        fields=["descrizione_estesa"],
    )
class IShowModified(model.Schema):

    show_modified = schema.Bool(
        title=_("show_modified_label", default="Mostra la data di ultima modifica"),
        description=_(
            "show_modified_help",
            default="Se attivo, verrà mostrata la data di ultima modifica in "
            "visualizzazione del contenuto.",
        ),
        required=False,
        defaultFactory=showModifiedDefaultValue,
    )

    model.fieldset(
        "settings",
        label="Impostazioni",
        fields=["show_modified"],
    )
示例#19
0
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
    dexteritytextindexer.searchable("quartiere")
    dexteritytextindexer.searchable("circoscrizione")
示例#20
0
class IArgomenti(IArgomentiSchema):
    """ """

    model.fieldset(
        "correlati",
        label=_("correlati_label", default="Contenuti collegati"),
        fields=["correlato_in_evidenza"],
    )
    form.order_after(correlato_in_evidenza="IRelatedItems.relatedItems")
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"],
    )

    dexteritytextindexer.searchable("ulteriori_informazioni")
示例#22
0
class IArgomentiDocumento(IArgomentiSchema):
    """ """

    model.fieldset(
        "correlati",
        label=_("correlati_label", default="Contenuti collegati"),
        fields=["correlato_in_evidenza"],
    )
    form.order_after(correlato_in_evidenza="IRelatedItems.relatedItems")
    form.order_after(tassonomia_argomenti="IDublinCore.title")
class ILuoghiCorrelatiSchema(model.Schema):

    luoghi_correlati = RelationList(
        title=_("luoghi_correlati_label", default="Luoghi correlati"),
        description=_(
            "luoghi_correlati_help",
            default="Seleziona una lista di luoghi citati.",
        ),
        default=[],
        value_type=RelationChoice(vocabulary="plone.app.vocabularies.Catalog"),
        required=False,
    )
    form.widget(
        "luoghi_correlati",
        RelatedItemsFieldWidget,
        vocabulary="plone.app.vocabularies.Catalog",
        pattern_options={
            "selectableTypes": ["Venue"],
            "maximumSelectionSize": 50,
        },
    )
class IMultiFileSchema(model.Schema):
    """"""

    file_principale = field.NamedBlobFile(
        title=_("file_principale_label", default="File principale"),
        description=_(
            "file_principale_help",
            default="Inserisci il file principale di questo contenuto.",
        ),
        required=True,
    )

    formato_alternativo_1 = field.NamedBlobFile(
        title=_("formato_alternativo_1_label", default="Formato alternativo 1"),
        description=_(
            "formato_alternativo_1_help",
            default="Inserisci un eventuale formato alternativo del "
            "file principale.",
        ),
        required=False,
    )

    formato_alternativo_2 = field.NamedBlobFile(
        title=_("formato_alternativo_2_label", default="Formato alternativo 2"),
        description=_(
            "formato_alternativo_2_help",
            default="Inserisci un eventuale formato alternativo del "
            "file principale.",
        ),
        required=False,
    )
class IDataset(model.Schema):
    """Marker interface for Dataset"""

    # TODO: aggiungere tassonomia e vocabolario rilevante fornito nelle linee guida  # noqa
    temi = schema.Choice(
        title=_("temi", default="Temi"),
        vocabulary="design.plone.contenttypes.temi_dataset",
        required=True,
    )

    # TODO: identificativo dataset

    distribuzione = BlocksField(
        title=_("distribuzione", default="Distribuzione"), required=True
    )

    licenza = schema.TextLine(title=_("licenza", default="Licenza"), required=True)

    dataset = field.NamedBlobFile(title=_("dataset", default="Dataset"), required=True)

    titolare = schema.TextLine(title=_("titolare", default="Titolare"), required=True)

    frequenza_aggiornamento = schema.TextLine(
        title=_("frequenza_aggiornamento", default="Frequenza di aggiornamento"),
        required=True,
    )
    def __call__(self, context):
        # Just an example list of content for our vocabulary,
        # this can be any static or dynamic data, a catalog result for example.
        items = [
            VocabItem("sony-a7r-iii", _("Sony Aplha 7R III")),
            VocabItem("canon-5d-iv", _("Canon 5D IV")),
            VocabItem("pippo", _("Pippo")),
            VocabItem("pluto", _("Pluto")),
            VocabItem("paperino", _("Paperino")),
            VocabItem("giovanni", _("Giovanni")),
        ]

        # Fix context if you are using the vocabulary in DataGridField.
        # See https://github.com/collective/collective.z3cform.datagridfield/issues/31:  # NOQA: 501
        if not IDexterityContent.providedBy(context):
            req = getRequest()
            context = req.PARENTS[0]

        # create a list of SimpleTerm items:
        terms = []
        for item in items:
            terms.append(
                SimpleTerm(value=item.token,
                           token=str(item.token),
                           title=item.value))
        # Create a SimpleVocabulary from the terms list and return it:
        return SimpleVocabulary(terms)
 def __call__(self, value):
     if "latitude" not in value or "longitude" not in value:
         raise ValueError(
             translate(
                 _(
                     "geolocation_field_validator_label",
                     default=
                     "Invalid geolocation data: ${value}. Provide latitude and longitude coordinates.",  # noqa
                     mapping={"value": value},
                 ),
                 context=self.request,
             ))
     return Geolocation(latitude=value["latitude"],
                        longitude=value["longitude"])
示例#28
0
class IAddressUnitaOrganizzativa(IAddress, IAddressNomeSede, IAddressLocal):

    model.fieldset(
        "contatti",
        label=_("contatti_label", default="Contatti"),
        fields=[
            "nome_sede",
            "street",
            "zip_code",
            "city",
            "quartiere",
            "circoscrizione",
            "country",
        ],
    )
示例#29
0
class IAddressVenue(IAddress, IAddressLocal):
    """"""

    model.fieldset(
        "dove",
        label=_("dove_label", default="Dove"),
        fields=[
            "street",
            "zip_code",
            "city",
            "quartiere",
            "circoscrizione",
            "country",
        ],
    )
示例#30
0
    def get_schema(self):
        schema = super(LeadImageJsonSchemaProvider, self).get_schema()
        sizes = self.get_size_vocabulary()
        portal_type = getattr(self.request, "steps")[-1]
        portal_type_size = sizes.get(portal_type, None)
        if portal_type_size:
            msgid = _(
                "image_size_help",
                default=
                "La dimensione dell'immagine dovrebbe essere di ${size} px",  # noqa
                mapping={"size": portal_type_size},
            )
            schema["description"] = translate(msgid, context=self.request)

        return schema