Skip to content
Snippets Groups Projects
README.md 4.44 KiB
Newer Older
Olivier Le Brouster's avatar
Olivier Le Brouster committed

Description
===========

Setup
=====

Install application

    pip install -e git+https://dev.webu.coop/shared/estimevent

Usage
=====

    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
======

## setup

- Ajouter estimevent to INSTALLED_APPS
- É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)                            


## usage

Cette application ajoute la command estimsync qui synchronise l'ensemble des evenements.

./manage.py estimsync [--dry-run] [event_id event_id ...] 


API
===

## class estimevent.api.EstimEventAPI

All ESTIM constants (see estimevent.api contant)

### __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.