dataimport.py
changeset 9906 b2919eca7514
parent 9905 1fa35cc06c69
child 9907 696b81eba218
equal deleted inserted replaced
9905:1fa35cc06c69 9906:b2919eca7514
    47          ]
    47          ]
    48 
    48 
    49   GENERATORS.append( (gen_users, CHK) )
    49   GENERATORS.append( (gen_users, CHK) )
    50 
    50 
    51   # create controller
    51   # create controller
    52   if 'cnx' in globals():
    52   ctl = CWImportController(RQLObjectStore(cnx))
    53       ctl = CWImportController(RQLObjectStore(cnx))
       
    54   else:
       
    55       print 'debug mode (not connected)'
       
    56       print 'run through cubicweb-ctl shell to access an instance'
       
    57       ctl = CWImportController(ObjectStore())
       
    58   ctl.askerror = 1
    53   ctl.askerror = 1
    59   ctl.generators = GENERATORS
    54   ctl.generators = GENERATORS
    60   ctl.data['utilisateurs'] = lazytable(ucsvreader(open('users.csv')))
    55   ctl.data['utilisateurs'] = lazytable(ucsvreader(open('users.csv')))
    61   # run
    56   # run
    62   ctl.run()
    57   ctl.run()
   551         self.items = []
   546         self.items = []
   552         self.eids = {}
   547         self.eids = {}
   553         self.types = {}
   548         self.types = {}
   554         self.relations = set()
   549         self.relations = set()
   555         self.indexes = {}
   550         self.indexes = {}
   556         self._rql = None
       
   557         self._commit = None
       
   558 
   551 
   559     def create_entity(self, etype, **data):
   552     def create_entity(self, etype, **data):
   560         data = attrdict(data)
   553         data = attrdict(data)
   561         data['eid'] = eid = len(self.items)
   554         data['eid'] = eid = len(self.items)
   562         self.items.append(data)
   555         self.items.append(data)
   598         except:
   591         except:
   599             print 'failed to flush'
   592             print 'failed to flush'
   600         else:
   593         else:
   601             print 'flush done'
   594             print 'flush done'
   602 
   595 
   603     def rql(self, *args):
       
   604         if self._rql is not None:
       
   605             return self._rql(*args)
       
   606         return []
       
   607 
       
   608     @property
   596     @property
   609     def nb_inserted_entities(self):
   597     def nb_inserted_entities(self):
   610         return len(self.eids)
   598         return len(self.eids)
   611     @property
   599     @property
   612     def nb_inserted_types(self):
   600     def nb_inserted_types(self):
   615     def nb_inserted_relations(self):
   603     def nb_inserted_relations(self):
   616         return len(self.relations)
   604         return len(self.relations)
   617 
   605 
   618 class RQLObjectStore(ObjectStore):
   606 class RQLObjectStore(ObjectStore):
   619     """ObjectStore that works with an actual RQL repository (production mode)"""
   607     """ObjectStore that works with an actual RQL repository (production mode)"""
   620     _rql = None # bw compat
       
   621 
   608 
   622     def __init__(self, session, commit=None):
   609     def __init__(self, session, commit=None):
   623         ObjectStore.__init__(self)
   610         ObjectStore.__init__(self)
   624         if not hasattr(session, 'set_cnxset'):
   611         if not hasattr(session, 'set_cnxset'):
   625             if hasattr(session, 'request'):
   612             if hasattr(session, 'request'):
   639         txuuid = self._commit()
   626         txuuid = self._commit()
   640         self.session.set_cnxset()
   627         self.session.set_cnxset()
   641         return txuuid
   628         return txuuid
   642 
   629 
   643     def rql(self, *args):
   630     def rql(self, *args):
   644         if self._rql is not None:
       
   645             return self._rql(*args)
       
   646         return self.session.execute(*args)
   631         return self.session.execute(*args)
   647 
   632 
   648     def create_entity(self, *args, **kwargs):
   633     def create_entity(self, *args, **kwargs):
   649         entity = self.session.create_entity(*args, **kwargs)
   634         entity = self.session.create_entity(*args, **kwargs)
   650         self.eids[entity.eid] = entity
   635         self.eids[entity.eid] = entity
   788                                   self.get_data(datakey))
   773                                   self.get_data(datakey))
   789 
   774 
   790 
   775 
   791 class NoHookRQLObjectStore(RQLObjectStore):
   776 class NoHookRQLObjectStore(RQLObjectStore):
   792     """ObjectStore that works with an actual RQL repository (production mode)"""
   777     """ObjectStore that works with an actual RQL repository (production mode)"""
   793     _rql = None # bw compat
       
   794 
   778 
   795     def __init__(self, session, metagen=None, baseurl=None):
   779     def __init__(self, session, metagen=None, baseurl=None):
   796         super(NoHookRQLObjectStore, self).__init__(session)
   780         super(NoHookRQLObjectStore, self).__init__(session)
   797         self.source = session.repo.system_source
   781         self.source = session.repo.system_source
   798         self.rschema = session.repo.schema.rschema
   782         self.rschema = session.repo.schema.rschema
   801             metagen = MetaGenerator(session, baseurl)
   785             metagen = MetaGenerator(session, baseurl)
   802         self.metagen = metagen
   786         self.metagen = metagen
   803         self._nb_inserted_entities = 0
   787         self._nb_inserted_entities = 0
   804         self._nb_inserted_types = 0
   788         self._nb_inserted_types = 0
   805         self._nb_inserted_relations = 0
   789         self._nb_inserted_relations = 0
   806         self.rql = session.execute
       
   807         # deactivate security
   790         # deactivate security
   808         session.read_security = False
   791         session.read_security = False
   809         session.write_security = False
   792         session.write_security = False
   810 
   793 
   811     def create_entity(self, etype, **kwargs):
   794     def create_entity(self, etype, **kwargs):