Skip to content
Snippets Groups Projects
README.md 4.69 KiB
Newer Older
Olivier Le Brouster's avatar
Olivier Le Brouster committed
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
============
Olivier Le Brouster's avatar
Olivier Le Brouster committed

    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 ...] 
## 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)
Olivier Le Brouster's avatar
Olivier Le Brouster committed

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`
### Methodes
* 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.
Olivier Le Brouster's avatar
Olivier Le Brouster committed


### classmethod has_to_add(event)

Permet de savoir si un évenement doit être ajouté sur le portail ESTIM.