470 if value is None: |
470 if value is None: |
471 return |
471 return |
472 if isinstance(value, unicode): |
472 if isinstance(value, unicode): |
473 value = value.encode(encoding) |
473 value = value.encode(encoding) |
474 elif isinstance(value, (date, datetime)): |
474 elif isinstance(value, (date, datetime)): |
475 # Do not use strftime, as it yields issue |
|
476 # with date < 1900 |
|
477 value = '%04d-%02d-%02d' % (value.year, |
475 value = '%04d-%02d-%02d' % (value.year, |
478 value.month, |
476 value.month, |
479 value.day) |
477 value.day) |
|
478 if isinstance(value, datetime): |
|
479 value += ' %02d:%02d:%02d' % (value.hour, |
|
480 value.minutes, |
|
481 value.second) |
480 else: |
482 else: |
481 return None |
483 return None |
482 # We push the value to the new formatted row |
484 # We push the value to the new formatted row |
483 # if the value is not None and could be converted to a string. |
485 # if the value is not None and could be converted to a string. |
484 formatted_row.append(value) |
486 formatted_row.append(value) |
858 entity = self.session.vreg['etypes'].etype_class(etype)(self.session) |
860 entity = self.session.vreg['etypes'].etype_class(etype)(self.session) |
859 # entity are "surface" copied, avoid shared dict between copies |
861 # entity are "surface" copied, avoid shared dict between copies |
860 del entity.cw_extra_kwargs |
862 del entity.cw_extra_kwargs |
861 entity.cw_edited = EditedEntity(entity) |
863 entity.cw_edited = EditedEntity(entity) |
862 for attr in self.etype_attrs: |
864 for attr in self.etype_attrs: |
863 entity.cw_edited.edited_attribute(attr, self.generate(entity, attr)) |
865 genfunc = self.generate(attr) |
|
866 if genfunc: |
|
867 entity.cw_edited.edited_attribute(attr, genfunc(entity)) |
864 rels = {} |
868 rels = {} |
865 for rel in self.etype_rels: |
869 for rel in self.etype_rels: |
866 rels[rel] = self.generate(entity, rel) |
870 genfunc = self.generate(rel) |
|
871 if genfunc: |
|
872 rels[rel] = genfunc(entity) |
867 return entity, rels |
873 return entity, rels |
868 |
874 |
869 def init_entity(self, entity): |
875 def init_entity(self, entity): |
870 entity.eid = self.source.create_eid(self.session) |
876 entity.eid = self.source.create_eid(self.session) |
871 for attr in self.entity_attrs: |
877 for attr in self.entity_attrs: |
872 entity.cw_edited.edited_attribute(attr, self.generate(entity, attr)) |
878 genfunc = self.generate(attr) |
873 |
879 if genfunc: |
874 def generate(self, entity, rtype): |
880 entity.cw_edited.edited_attribute(attr, genfunc(entity)) |
875 return getattr(self, 'gen_%s' % rtype)(entity) |
881 |
|
882 def generate(self, rtype): |
|
883 return getattr(self, 'gen_%s' % rtype, None) |
876 |
884 |
877 def gen_cwuri(self, entity): |
885 def gen_cwuri(self, entity): |
878 return u'%s%s' % (self.baseurl, entity.eid) |
886 return u'%s%s' % (self.baseurl, entity.eid) |
879 |
887 |
880 def gen_creation_date(self, entity): |
888 def gen_creation_date(self, entity): |
881 return self.time |
889 return self.time |
|
890 |
882 def gen_modification_date(self, entity): |
891 def gen_modification_date(self, entity): |
883 return self.time |
892 return self.time |
884 |
893 |
885 def gen_created_by(self, entity): |
894 def gen_created_by(self, entity): |
886 return self.session.user.eid |
895 return self.session.user.eid |
|
896 |
887 def gen_owned_by(self, entity): |
897 def gen_owned_by(self, entity): |
888 return self.session.user.eid |
898 return self.session.user.eid |
889 |
899 |
890 |
900 |
891 ########################################################################### |
901 ########################################################################### |