Skip to content
Snippets Groups Projects
Name Last commit Last update
estimevent
.gitignore
README.md
setup.py
tox.ini

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

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.