Package: rer.ufficiostampa
Prodotto per la gestione delle comunicazioni alla stampa.Funzionalità principaliContent-type dedicati (Comunicato Stampa e Invito Stampa)Gestione canali di iscrizioni per i giornalistiInvio dei comunicatiContent-typeSono presenti due content-type uguali tra loro per la gestione di due tipi diversi di comunicazioni:Comunicato StampaInvito StampaSono delle pagine con due campi aggiuntivi (Argomenti e Legislatura) e folderish (in cui si può inserire soloImmagini,FileeCartelle).Progressivo Comunicato StampaI comunicati stampa hanno un progressivo rispetto all’anno corrente (es: 1/2021).Ogni volta che viene pubblicato un Comunicato Stampa, viene incrementato il progressivo e il valore viene
associato a quel comunicato (scritto in un campo).Il primo Comunicato Stampa inviato in un anno, parte col numero 1.Database iscrittiC’è un database interno (basato susouper.plone) nel quale vengono memorizzati i dati degli iscritti.E’ possibile interrogare il database tramite rotte api (vedi in seguito) o mediante utility Plone:from zope.component import getUtility
from rer.ufficiostampa.interfaces import ISubscriptionsStore

tool = getUtility(ISubscriptionsStore)Di seguito vengono riportati i principali metodi.Aggiunta iscrittoMetodoaddParametri:data(dizionario con i parametri)Risposta: l’id univoco del nuovo recorddatadeve essere un dizionario con la lista di possibili parametri:email [obbligatorio]: indirizzo a cui inviare i comunicatichannels [obbligatorio]: lista dei canali di invio di interessename: nome dell’iscrittosurname: cognome dell’iscrittophone: numero di telefono dell’iscrittonewspaper: nome della testata giornalistica di riferimento dell’iscrittoAltri campi verranno ignorati.Ricerca iscrittiMetodosearchParametri:query(dizionario con i parametri),sort_index(default=date),reverse(default=False)Risposta: la lista di risultatiqueryè un dizionario che può contenere uno o più dei seguenti parametri:text (viene ricercato nei campi nome, email e cognome)channelsnewspaperAggiornamento dati iscrittoMetodoupdateParametri:data(dizionario con i parametri),id(identificativo dell’iscritto)Risposta:dataè un dizionario che può contenere uno o più dei parametri di iscrizione.Cancellazione iscrittoMetododeleteParametri:id(identificativo dell’iscritto)Risposta:Reset databaseMetodoclearParametri:Risposta:Rotte restapiLista iscritti@subscriptionsEndpoint da chiamare inGETsulla radice del sito.Ritorna la lista degli iscritti e i possibili canali. Solo per gli utenti che hanno il permesso “rer.ufficiostampa.ManageChannels”:> curl -i -X GET http://localhost:8080/Plone/@subscriptions -H 'Accept: application/json' -H 'Content-Type: application/json' --user admin:adminLa risposta è simile a questa:{
    "@id": "http://localhost:8080/Plone/@subscriptions",
    "items": [
        ...
    ],
    "items_total": 42,
    "channels": [...]
}Creazione nuovo iscritto@subscriptionsEndpoint da chiamare inPOSTsulla radice del sito.Solo per gli utenti che hanno il permesso “rer.ufficiostampa.ManageChannels”:> curl -i -X POST http://localhost:8080/Plone/@subscriptions -H 'Accept: application/json' -H 'Content-Type: application/json' --data-raw '{"email": "foo@plone.org", "channels": ["first", "second"]}' --user admin:adminSe l’operazione va a buon fine, il server ritorna un204.Aggiornamento dati iscritto@subscriptionsEndpoint da chiamare inPATCHsulla radice del sito.Solo per gli utenti che hanno il permesso “rer.ufficiostampa.ManageChannels”:> curl -i -X PATCH http://localhost:8080/Plone/@subscriptions/subscription_id -H 'Accept: application/json' -H 'Content-Type: application/json' --data-raw '{"email": "foo@plone.org", "name": "John"}' --user admin:adminDovesubscription_idè l’id dell’iscritto da aggiornare.Se l’operazione va a buon fine, il server ritorna un204.Valgono le regole dei campi per la creazione.Cancellazione iscritto@subscriptionsEndpoint da chiamare inDELETEsulla radice del sito.Solo per gli utenti che hanno il permesso “rer.ufficiostampa.ManageChannels”:> curl -i -X DELETE http://localhost:8080/Plone/@subscriptions/subscription_id -H 'Accept: application/json' --user admin:adminDovesubscription_idè l’id dell’iscritto da aggiornare.Se l’operazione va a buon fine, il server ritorna un204.Cancellazione iscritto@subscriptions-clearEndpoint da chiamare inGETsulla radice del sito.Solo per gli utenti che hanno il permesso “rer.ufficiostampa.ManageChannels”:> curl -i -X DELETE http://localhost:8080/Plone/@subscriptions-clear -H 'Accept: application/json' --user admin:adminSvuota completamente il db degli iscritti.Se l’operazione va a buon fine, il server ritorna un204.Export in CSV@subscriptions-csvEndpoint da chiamare inGETsulla radice del sito.Solo per gli utenti che hanno il permesso “rer.ufficiostampa.ManageChannels”:> curl -i -X GET http://localhost:8080/Plone/@subscriptions-csv -H 'Accept: application/json' --user admin:adminRitorna un file csv con la lista degli iscritti.Import da CSV@subscriptions-csvEndpoint da chiamare inPOSTsulla radice del sito.Solo per gli utenti che hanno il permesso “rer.ufficiostampa.ManageChannels”:> curl -i -X POST http://localhost:8080/Plone/@subscriptions-csv -H 'Accept: application/json' -H 'Content-Type: application/json' --data-raw '{"overwrite":true,"file":{"data": "...","encoding":"base64","content-type":"text/comma-separated-values","filename":"iscritti.csv"}}' --user admin:adminAccetta i seguenti parametri:overwrite: setrue, se esiste già un record nel db con l’email presente nel file, questo verrà sovrascritto con i nuovi dati. Se il parametro è mancante ofalse, viene mantenuto il valore già presente nel db senza aggiornarlo.clear: setrue, prima di eseguire l’import, viene completamente cancellato il db.file: il file csv da caricare. Encodato in base64La chiamata ritorna una risposta del genere:{
    "imported": 0,
    "skipped": []
}Doveimportedè il numero di elementi inseriti effettivamente nel db, eskippedè la lista di righe del file che sono state ignorate per qualche motivo (entry già presenti e overwrite non impostato).Se l’email non è valida o channels contiene uno dei canali non impostati nel panello di controllo, allora il procedimeto si interrompe e viene ritonata la risposta con
la lista di righe del file che hanno dei valori non validi:{
    "errored": []
}InstallazioneInstall rer.ufficiostampa by adding it to your buildout:[buildout]

...

eggs =
    rer.ufficiostampaand then runningbin/buildoutContributeIssue Tracker:https://github.com/collective/rer.ufficiostampa/issuesSource Code:https://github.com/collective/rer.ufficiostampaDocumentation:https://docs.plone.org/foo/barSupportIf you are having issues, please let us know.
We have a mailing list located at:project@example.comLicenseThe project is licensed under the GPLv2.ContributorsRedTurtle Technology,sviluppo@redturtle.itChangelog1.6.6 (2023-03-14)Do not send duplicated emails lowering all addresses before send.
[cekk]1.6.5 (2023-01-05)Add querystring modifiers for keyord indexes to prevent utf-8 errors.
[cekk]1.6.4 (2023-01-03)Index also text from contents.
[cekk]1.6.3 (2022-11-23)Read value of slave form fields from the querystring.
[cekk]1.6.2 (2022-11-03)Fix field logic.
[cekk]Set proper value in legislature field.
[cekk]1.6.1 (2022-10-27)Fix README identation.
[cekk]1.6.0 (2022-10-27)Handle master/select logic for Legislature and Arguments in search form.
[cekk]Additional validations for subscribers import, also new behavior if invalid email/channels passed
[foxtrot-dfm1]1.5.1 (2022-06-06)Pass query to export-csv endpoint to export only selected subscribers.
[cekk]1.5.0 (2022-03-10)Add versioning for Comunicato and Invito.
[cekk]Add solrpush behavior for additional fields.
[cekk]1.4.0 (2022-01-20)New search endpoint for comunicati (@search-comunicati). This is needed because new rer.sitesearch overrides @search endpoint and always search on SOLR.
[cekk]1.3.0 (2022-01-20)Normalize title and description on save.
[cekk]Add effective date in Comunicato view.
[cekk]1.2.2 (2021-11-04)Arguments field is now required.
[cekk]1.2.1 (2021-09-16)Cleanup subject string before send, to remove strange characters.
[cekk]1.2.0 (2021-09-02)Cleanup channels (remove duplicated ones).
[cekk]Refactor how to perform queries (to handle also unicode problems).
[cekk]Accessibilty fixes: modal focus trap + select keyboard events
[nzambello]1.1.0 (2021-08-05)Disallow add new items inargumentsfield.
[cekk]Export in csv also title and number.
[cekk]Correctly wrap search terms with “’” in it.
[cekk]Customize social viewlets to fix title and description meta tags (and also add a light dependency with rer.agidtheme.base).
[cekk]Add dependency to ftfy to better encode csv exports.
[cekk]1.0.1 (2021-07-09)Fix import for python2 and sort indexes.
[cekk]1.0.0 (2021-05-26)Initial release.
[cekk]