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): |