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 =========== ```python 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 ```python INSTALLED_APPS = [ … 'estimevent.contrib.django.estimevent', … ] ``` ### Écrire une classe héritant de EstimEventWrapperBase et la décorer avec estim_wrapper ```python 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 === ## class `estimevent.api.EstimEventAPI` 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) ## class `estimevent.contrib.django.estimevent.models.EstimEventWrapperBase` ### classmethod `events_to_sync`() Retourne l'ensemble des événements à synchroniser sous la forme d'une liste de tuple (object, data). ### classmethod `has_to_keep`(event) Permet de savoir si un évenement doit être conservé sur le portail ESTIM. ### classmethod `has_to_add`(event) Permet de savoir si un évenement doit être ajouté sur le portail ESTIM.