Description
Cette bibliotheque facilite la publication d'événement sur le portail ESTIM (https://www.estim-science.fr/) dans le cadre d'une application python.
Elle contient également une application django.
Installation
pip install -e git+https://dev.webu.coop/shared/estimevent
Utilisation
from estimevent.api import EstimEventAPI
api = EstimEventAPI(user=my_user, password=my_password)
api.save_event({
'titre': 'mon_titre'
'date_debut': today(),
'date_fin': today(),
'id_structure_organisatrice': 12345
'adresse': '38 rue des Tournelles, 67890'
'tranche_dages': AGE_0_A_3_ANS,
'thematiques': [THE_AGRI_ALI]
'publics_cibles': [PUB_CIB_GROUP, PUB_CIB_MEDIA]
'types_evenement': [TYP_EVT_SPEC_VIV]
'description': 'ma description'
})
api.delete_event({
'titre': 'mon_titre'
'date_debut': today(),
'date_fin': today(),
'id_structure_organisatrice': 12345
'adresse': '38 rue des Tournelles, 67890'
})
Django
Mise en place
Ajouter estimevent to INSTALLED_APPS
INSTALLED_APPS = [
…
'estimevent.contrib.django.estimevent',
…
]
Écrire une classe héritant de EstimEventWrapperBase et la décorer avec estim_wrapper
from estimevent.contrib.django.estimevent.models import estim_wrapper
from estimevent.contrib.django.estimevent.models import EstimEventWrapperBase
@estim_wrapper
class EstimNoteWrapper(EstimEventWrapperBase):
user = getattr(settings, 'ESTIMEVENT_USER')
password = getattr(settings, 'ESTIMEVENT_PASSWORD')
dry_run = getattr(settings, 'ESTIMEVENT_DRY_RUN', False)
@staticmethod
def titre(note):
return note.name
...
@classmethod
def events_to_sync(cls, until=None):
for note in Note.published.all():
data = cls.properties(note)
for overrided_data in cls.occurences(note, until):
data = data.copy()
data.update(overrided_data)
yield (note, data)
@classmethod
def has_to_keep(cls, event):
if event.status not in [event.STATUS_PUBLISHED, event.STATUS_MODERATE]:
return False
return super(EstimNoteWrapper, cls).has_to_sync(event)
Utilisation
Cette application ajoute la commande estimsync
qui synchronise l'ensemble des
événements, les met à jour au besoin et supprime les évenements à ne pas
conserver.
./manage.py estimsync [--dry-run] [event_id event_id ...]
API
estimevent.api.EstimEventAPI
class Cette classe contient toutes les constantes ESTIM.
__init__
(user, password, production=True, host=None, proto=None)
save_event
(date, production=True)
Les champs sont nommés à la manière python. Par exemple, trancheDages
devient tranche_dages
.
delete_event
(date, production=True)
estimevent.contrib.django.estimevent.models.EstimEventWrapperBase
class
events_to_sync
()
classmethod Retourne l'ensemble des événements à synchroniser sous la forme d'une liste de tuple (object, data).
has_to_keep
(event)
classmethod Permet de savoir si un évenement doit être conservé sur le portail ESTIM.
has_to_add
(event)
classmethod Permet de savoir si un évenement doit être ajouté sur le portail ESTIM.