Prodotto per la gestione delle comunicazioni alla stampa.
- Content-type dedicati (Comunicato Stampa e Invito Stampa)
- Gestione canali di iscrizioni per i giornalisti
- Invio dei comunicati
Sono presenti due content-type uguali tra loro per la gestione di due tipi diversi di comunicazioni:
- Comunicato Stampa
- Invito Stampa
Sono delle pagine con due campi aggiuntivi (Argomenti e Legislatura) e folderish (in cui si può inserire solo Immagini, File e Cartelle).
I 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.
C'è un database interno (basato su souper.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.
- Metodo
add
- Parametri:
data
(dizionario con i parametri) - Risposta: l'id univoco del nuovo record
data
deve essere un dizionario con la lista di possibili parametri:
- email [obbligatorio]: indirizzo a cui inviare i comunicati
- channels [obbligatorio]: lista dei canali di invio di interesse
- name: nome dell'iscritto
- surname: cognome dell'iscritto
- phone: numero di telefono dell'iscritto
- newspaper: nome della testata giornalistica di riferimento dell'iscritto
Altri campi verranno ignorati.
- Metodo
search
- Parametri:
query
(dizionario con i parametri),sort_index
(default=date),reverse
(default=False) - Risposta: la lista di risultati
query
è un dizionario che può contenere uno o più dei seguenti parametri:
- text (viene ricercato nei campi nome, email e cognome)
- channels
- newspaper
- Metodo
update
- Parametri:
data
(dizionario con i parametri),id
(identificativo dell'iscritto) - Risposta:
data
è un dizionario che può contenere uno o più dei parametri di iscrizione.
- Metodo
delete
- Parametri:
id
(identificativo dell'iscritto) - Risposta:
- Metodo
clear
- Parametri:
- Risposta:
@subscriptions
Endpoint da chiamare in GET sulla 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:admin
La risposta è simile a questa:
{ "@id": "http://localhost:8080/Plone/@subscriptions", "items": [ ... ], "items_total": 42, "channels": [...] }
@subscriptions
Endpoint da chiamare in POST sulla 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": "[email protected]", "channels": ["first", "second"]}' --user admin:admin
Se l'operazione va a buon fine, il server ritorna un 204
.
@subscriptions
Endpoint da chiamare in PATCH sulla 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": "[email protected]", "name": "John"}' --user admin:admin
Dove subscription_id è l'id dell'iscritto da aggiornare.
Se l'operazione va a buon fine, il server ritorna un 204
.
Valgono le regole dei campi per la creazione.
@subscriptions
Endpoint da chiamare in DELETE sulla 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:admin
Dove subscription_id è l'id dell'iscritto da aggiornare.
Se l'operazione va a buon fine, il server ritorna un 204
.
@subscriptions-clear
Endpoint da chiamare in GET sulla 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:admin
Svuota completamente il db degli iscritti.
Se l'operazione va a buon fine, il server ritorna un 204
.
@subscriptions-csv
Endpoint da chiamare in GET sulla 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:admin
Ritorna un file csv con la lista degli iscritti.
@subscriptions-csv
Endpoint da chiamare in POST sulla 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:admin
Accetta i seguenti parametri:
- overwrite: se
true
, 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: se
true
, prima di eseguire l'import, viene completamente cancellato il db. - file: il file csv da caricare. Encodato in base64
La chiamata ritorna una risposta del genere:
{ "imported": 0, "skipped": [] }
Dove imported è il numero di elementi inseriti effettivamente nel db, e skipped è 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": [] }
Install rer.ufficiostampa by adding it to your buildout:
[buildout] ... eggs = rer.ufficiostampa
and then running bin/buildout
- Issue Tracker: https://github.com/collective/rer.ufficiostampa/issues
- Source Code: https://github.com/collective/rer.ufficiostampa
- Documentation: https://docs.plone.org/foo/bar
If you are having issues, please let us know. We have a mailing list located at: [email protected]
The project is licensed under the GPLv2.