dataimport.py
changeset 6142 8bc6eac1fac1
parent 6122 4d2b04b32cdc
child 6149 57e956441ca4
equal deleted inserted replaced
6141:b8287e54b528 6142:8bc6eac1fac1
    79 from logilab.common.date import strptime
    79 from logilab.common.date import strptime
    80 from logilab.common.decorators import cached
    80 from logilab.common.decorators import cached
    81 from logilab.common.deprecation import deprecated
    81 from logilab.common.deprecation import deprecated
    82 
    82 
    83 from cubicweb.server.utils import eschema_eid
    83 from cubicweb.server.utils import eschema_eid
       
    84 from cubicweb.server.ssplanner import EditedEntity
    84 
    85 
    85 def count_lines(stream_or_filename):
    86 def count_lines(stream_or_filename):
    86     if isinstance(stream_or_filename, basestring):
    87     if isinstance(stream_or_filename, basestring):
    87         f = open(filename)
    88         f = open(filename)
    88     else:
    89     else:
   603             kwargs[k] = getattr(v, 'eid', v)
   604             kwargs[k] = getattr(v, 'eid', v)
   604         entity, rels = self.metagen.base_etype_dicts(etype)
   605         entity, rels = self.metagen.base_etype_dicts(etype)
   605         entity = copy(entity)
   606         entity = copy(entity)
   606         entity.cw_clear_relation_cache()
   607         entity.cw_clear_relation_cache()
   607         self.metagen.init_entity(entity)
   608         self.metagen.init_entity(entity)
   608         entity.update(kwargs)
   609         entity.cw_edited.update(kwargs, skipsec=False)
   609         entity.edited_attributes = set(entity)
       
   610         session = self.session
   610         session = self.session
   611         self.source.add_entity(session, entity)
   611         self.source.add_entity(session, entity)
   612         self.source.add_info(session, entity, self.source, None, complete=False)
   612         self.source.add_info(session, entity, self.source, None, complete=False)
   613         for rtype, targeteids in rels.iteritems():
   613         for rtype, targeteids in rels.iteritems():
   614             # targeteids may be a single eid or a list of eids
   614             # targeteids may be a single eid or a list of eids
   677     @cached
   677     @cached
   678     def base_etype_dicts(self, etype):
   678     def base_etype_dicts(self, etype):
   679         entity = self.session.vreg['etypes'].etype_class(etype)(self.session)
   679         entity = self.session.vreg['etypes'].etype_class(etype)(self.session)
   680         # entity are "surface" copied, avoid shared dict between copies
   680         # entity are "surface" copied, avoid shared dict between copies
   681         del entity.cw_extra_kwargs
   681         del entity.cw_extra_kwargs
       
   682         entity.cw_edited = EditedEntity(entity)
   682         for attr in self.etype_attrs:
   683         for attr in self.etype_attrs:
   683             entity[attr] = self.generate(entity, attr)
   684             entity.cw_edited.attribute_edited(attr, self.generate(entity, attr))
   684         rels = {}
   685         rels = {}
   685         for rel in self.etype_rels:
   686         for rel in self.etype_rels:
   686             rels[rel] = self.generate(entity, rel)
   687             rels[rel] = self.generate(entity, rel)
   687         return entity, rels
   688         return entity, rels
   688 
   689 
   689     def init_entity(self, entity):
   690     def init_entity(self, entity):
   690         entity.eid = self.source.create_eid(self.session)
   691         entity.eid = self.source.create_eid(self.session)
   691         for attr in self.entity_attrs:
   692         for attr in self.entity_attrs:
   692             entity[attr] = self.generate(entity, attr)
   693             entity.cw_edited.attribute_edited(attr, self.generate(entity, attr))
   693 
   694 
   694     def generate(self, entity, rtype):
   695     def generate(self, entity, rtype):
   695         return getattr(self, 'gen_%s' % rtype)(entity)
   696         return getattr(self, 'gen_%s' % rtype)(entity)
   696 
   697 
   697     def gen_cwuri(self, entity):
   698     def gen_cwuri(self, entity):