server/sources/pyrorql.py
changeset 6427 c8a5ac2d1eaa
parent 6309 9f03e3c32676
child 6582 8eb7883b4223
equal deleted inserted replaced
6426:541659c39f6a 6427:c8a5ac2d1eaa
    62     unknown = set(mapping) - set( ('support_entities', 'support_relations',
    62     unknown = set(mapping) - set( ('support_entities', 'support_relations',
    63                                    'dont_cross_relations', 'cross_relations') )
    63                                    'dont_cross_relations', 'cross_relations') )
    64     assert not unknown, 'unknown mapping attribute(s): %s' % unknown
    64     assert not unknown, 'unknown mapping attribute(s): %s' % unknown
    65     # relations that are necessarily not crossed
    65     # relations that are necessarily not crossed
    66     mapping['dont_cross_relations'] |= set(('owned_by', 'created_by'))
    66     mapping['dont_cross_relations'] |= set(('owned_by', 'created_by'))
    67     for rtype in ('is', 'is_instance_of'):
    67     for rtype in ('is', 'is_instance_of', 'cw_source'):
    68         assert rtype not in mapping['dont_cross_relations'], \
    68         assert rtype not in mapping['dont_cross_relations'], \
    69                '%s relation should not be in dont_cross_relations' % rtype
    69                '%s relation should not be in dont_cross_relations' % rtype
    70         assert rtype not in mapping['support_relations'], \
    70         assert rtype not in mapping['support_relations'], \
    71                '%s relation should not be in support_relations' % rtype
    71                '%s relation should not be in support_relations' % rtype
    72     return mapping
    72     return mapping
   144     )
   144     )
   145 
   145 
   146     PUBLIC_KEYS = AbstractSource.PUBLIC_KEYS + ('base-url',)
   146     PUBLIC_KEYS = AbstractSource.PUBLIC_KEYS + ('base-url',)
   147     _conn = None
   147     _conn = None
   148 
   148 
   149     def __init__(self, repo, appschema, source_config, *args, **kwargs):
   149     def __init__(self, repo, source_config, *args, **kwargs):
   150         AbstractSource.__init__(self, repo, appschema, source_config,
   150         AbstractSource.__init__(self, repo, source_config, *args, **kwargs)
   151                                 *args, **kwargs)
       
   152         mappingfile = source_config['mapping-file']
   151         mappingfile = source_config['mapping-file']
   153         if not mappingfile[0] == '/':
   152         if not mappingfile[0] == '/':
   154             mappingfile = join(repo.config.apphome, mappingfile)
   153             mappingfile = join(repo.config.apphome, mappingfile)
   155         mapping = load_mapping_file(mappingfile)
   154         try:
   156         self.support_entities = mapping['support_entities']
   155             mapping = load_mapping_file(mappingfile)
   157         self.support_relations = mapping['support_relations']
   156         except IOError:
   158         self.dont_cross_relations = mapping['dont_cross_relations']
   157             self.disabled = True
   159         self.cross_relations = mapping['cross_relations']
   158             self.error('cant read mapping file %s, source disabled',
       
   159                        mappingfile)
       
   160             self.support_entities = {}
       
   161             self.support_relations = {}
       
   162             self.dont_cross_relations = set()
       
   163             self.cross_relations = set()
       
   164         else:
       
   165             self.support_entities = mapping['support_entities']
       
   166             self.support_relations = mapping['support_relations']
       
   167             self.dont_cross_relations = mapping['dont_cross_relations']
       
   168             self.cross_relations = mapping['cross_relations']
   160         baseurl = source_config.get('base-url')
   169         baseurl = source_config.get('base-url')
   161         if baseurl and not baseurl.endswith('/'):
   170         if baseurl and not baseurl.endswith('/'):
   162             source_config['base-url'] += '/'
   171             source_config['base-url'] += '/'
   163         self.config = source_config
   172         self.config = source_config
   164         myoptions = (('%s.latest-update-time' % self.uri,
   173         myoptions = (('%s.latest-update-time' % self.uri,