Ignore:
Timestamp:
31/07/12 15:35:45 (8 years ago)
Author:
mnagni
Message:

Implemented adapters for TM_Instant, TM_Period and partially for CEDA_Observation

Added a Sphinx documentation folder

File:
1 edited

Legend:

Unmodified
Added
Removed
  • mauRepo/MolesManager/trunk/src/MolesManager/views/moles2gui/__init__.py

    r8476 r8477  
    88from MolesManager.djencoder import escapeForJSON 
    99import operator 
     10import inspect 
    1011 
    1112""" 
     
    1516""" 
    1617 
    17 _encodeMapper = {'ea_model.moles3_4.utilities.mo_organisation.MO_Organisation': ('MolesManager.views.moles2gui.relatedParty', 'Party'), 
    18                  'ea_model.moles3_4.utilities.mo_individual.MO_Individual': ('MolesManager.views.moles2gui.relatedParty', 'Party'), 
    19                  'ea_model.moles3_4.utilities.mo_responsiblepartyinfo.MO_ResponsiblePartyInfo': ('MolesManager.views.moles2gui.relatedParty', 'RelatedParty') 
     18_encodeMapper = {'ea_model.iso_19108_2006_temporal_schema.temporal_objects.tm_instant.TM_Instant':  
     19                    ('MolesManager.views.moles2gui.om.instant', 'Instant'), 
     20                 'ea_model.iso_19108_2006_temporal_schema.temporal_objects.tm_period.TM_Period':  
     21                    ('MolesManager.views.moles2gui.om.period', 'Period'),                     
     22                 'ea_model.moles3_4.utilities.mo_organisation.MO_Organisation':  
     23                    ('MolesManager.views.moles2gui.mo.party', 'Party'), 
     24                 'ea_model.moles3_4.utilities.mo_individual.MO_Individual':  
     25                    ('MolesManager.views.moles2gui.mo.party', 'Party'), 
     26                 'ea_model.moles3_4.utilities.mo_responsiblepartyinfo.MO_ResponsiblePartyInfo':  
     27                    ('MolesManager.views.moles2gui.mo.responsiblePartyInfo', 'ResponsiblePartyInfo'), 
     28                 'ea_model.ceda_metadatamodel.ceda_observation.ceda_observation.CEDA_Observation':  
     29                    ('MolesManager.views.moles2gui.ceda.observation', 'Observation')                     
    2030                 } 
    2131 
     
    8191 
    8292    @classmethod 
    83     def _cedaObjToAdapterMapping(cls, instance, cedaObj): 
    84         if type(cedaObj) in cls.acceptedTypes:        
     93    def _cedaObjToAdapterMapping(cls, instance, cedaObject): 
     94        if type(cedaObject) in cls.acceptedTypes:        
    8595            for item in cls.mapper.items(): 
    86                 setattr(instance, item[0], getData(cedaObj, item[1])) 
    87  
    88     def postCedaObjToAdapterMapping(self, cedaObj): 
     96                setattr(instance, item[0], getData(cedaObject, item[1])) 
     97 
     98    @classmethod 
     99    def _adapterToCedaObjMapping(cls, instance, cedaObj): 
     100        for item in cls.mapper.items():             
     101            _setData(cedaObj, item[1], getattr(instance, item[0])) 
     102 
     103    def postCedaObjToAdapterMapping(self, cedaObject): 
    89104        """ 
    90105        Refines the mapping done using the internal `mapper`. 
     
    95110        """ 
    96111        pass 
     112     
     113    def postAdapterToCedaObjMapping(self, cedaObject): 
     114        """ 
     115        Refines the mapping done using the internal `mapper`. 
     116        If some mapping are possible only at a later moment override this method 
     117         
     118        **Parameters** 
     119                * cedaObject: the Ceda object instance which has to be mapped from the adapter 
     120        """ 
     121    pass 
    97122 
    98123    @classmethod 
    99     def cedaObjToAdapter(cls, cedaObj): 
     124    def cedaObjToAdapter(cls, cedaObject): 
    100125        """ 
    101126        Injects a new attribute in a CedaMolesGuiAdapter. Using the 2 component `attributeMap` tuple, 
     
    105130            
    106131        **Parameters** 
    107             * cedaObj: a Ceda object instance  
     132            * cedaObject: a Ceda object instance  
    108133        """ 
    109134        adapter = cls() 
    110         if type(cedaObj) not in cls.acceptedTypes: 
     135        if type(cedaObject) not in cls.acceptedTypes: 
    111136            raise Exception ("Not accepted type mapping") 
    112137         
    113         if cedaObj is not None: 
     138        if cedaObject is not None: 
    114139            setattr(adapter, 'id', None) 
    115             if hasattr(cedaObj, 'id'): 
    116                 setattr(adapter, 'id', cedaObj.id) 
     140            if hasattr(cedaObject, 'id'): 
     141                setattr(adapter, 'id', cedaObject.id) 
    117142                 
    118             setattr(adapter, '_module', cedaObj.__module__)         
    119             setattr(adapter, '_clazz', cedaObj.__class__.__name__)         
     143            setattr(adapter, '_module', cedaObject.__module__)         
     144            setattr(adapter, '_clazz', cedaObject.__class__.__name__)         
    120145        setattr(adapter, '_adapter_module', adapter.__module__)         
    121146        setattr(adapter, '_adapter_clazz', adapter.__class__.__name__) 
    122147             
    123         cls._cedaObjToAdapterMapping(adapter, cedaObj) 
    124         adapter.postCedaObjToAdapterMapping(cedaObj) 
     148        cls._cedaObjToAdapterMapping(adapter, cedaObject) 
     149        adapter.postCedaObjToAdapterMapping(cedaObject) 
    125150         
    126151        return adapter 
    127152 
    128     def decode(self, cedaObj):        
    129         if type(cedaObj) not in self.acceptedTypes: 
     153    def decode(self, cedaObject):        
     154        if type(cedaObject) not in self.acceptedTypes: 
    130155            raise Exception ("Not accepted type mapping") 
    131156 
    132         for item in self.mapper.items():             
    133             _setData(cedaObj, item[1], getattr(self, item[0])) 
     157        self._adapterToCedaObjMapping(self, cedaObject) 
     158        self.postAdapterToCedaObjMapping(cedaObject) 
    134159 
    135160class _Moles2guiEncoder(JSONEncoder): 
     
    282307        return _encodeCedaMoles2Adapter(newobj)             
    283308     
     309def _isPrimitive(obj): 
     310    # Is a simple primitive? 
     311    return obj is None \ 
     312            or isinstance(obj, str) \ 
     313            or isinstance(obj, int) \ 
     314            or isinstance(obj, unicode) 
     315     
     316     
    284317def _encodeCedaMoles2Adapter(cedaObj): 
    285     # Is a simple primitive? 
    286     if cedaObj is None \ 
    287             or isinstance(cedaObj, str) \ 
    288             or isinstance(cedaObj, unicode): 
     318    if _isPrimitive(cedaObj): 
    289319        return cedaObj 
    290320     
     
    301331def _decodeJson2Adapter(json): 
    302332    decJson = json 
     333     
     334    if _isPrimitive(decJson) and not isinstance(decJson, str): 
     335        return decJson  
     336     
    303337    if not isinstance(json, dict): 
    304338        try: 
     
    316350        _setDataToAdapter(adapter, item[0], decJson[item[0]]) 
    317351    return adapter 
     352 
     353def unicodeToString(text): 
     354    if isinstance(text, unicode): 
     355        return str(text) 
     356    return text 
     357 
     358def hasAttrNotNone(obj, name): 
     359    return hasattr(obj, name) and getattr(obj, name) is not None 
Note: See TracChangeset for help on using the changeset viewer.