server/repository.py
changeset 2880 bfc8e1831290
parent 2867 e8581a4f1bae
parent 2875 b7399ef8b3e0
child 2881 d1a5b77e42bc
equal deleted inserted replaced
2869:0cb160fd3cdf 2880:bfc8e1831290
  1009         entity.check()
  1009         entity.check()
  1010         eschema = entity.e_schema
  1010         eschema = entity.e_schema
  1011         session.set_entity_cache(entity)
  1011         session.set_entity_cache(entity)
  1012         only_inline_rels, need_fti_update = True, False
  1012         only_inline_rels, need_fti_update = True, False
  1013         relations = []
  1013         relations = []
  1014         for attr in entity.keys():
  1014         for attr in edited_attributes:
  1015             if attr == 'eid':
  1015             if attr == 'eid':
  1016                 continue
  1016                 continue
  1017             rschema = eschema.subject_relation(attr)
  1017             rschema = eschema.subject_relation(attr)
  1018             if rschema.is_final():
  1018             if rschema.is_final():
  1019                 if eschema.rproperty(attr, 'fulltextindexed'):
  1019                 if eschema.rproperty(attr, 'fulltextindexed'):
  1020                     need_fti_update = True
  1020                     need_fti_update = True
  1021                 only_inline_rels = False
  1021                 only_inline_rels = False
  1022             else:
  1022             else:
  1023                 # inlined relation
  1023                 # inlined relation
  1024                 previous_value = entity.related(attr)
  1024                 previous_value = entity.related(attr) or None
  1025                 if previous_value:
  1025                 if previous_value is not None:
  1026                     previous_value = previous_value[0][0] # got a result set
  1026                     previous_value = previous_value[0][0] # got a result set
  1027                     if previous_value == entity[attr]:
  1027                     if previous_value == entity[attr]:
  1028                         previous_value = None
  1028                         previous_value = None
  1029                     else:
  1029                     else:
  1030                         self.hm.call_hooks('before_delete_relation', session,
  1030                         self.hm.call_hooks('before_delete_relation', session,
  1049                 self.hm.call_hooks('after_update_entity', session, entity=entity)
  1049                 self.hm.call_hooks('after_update_entity', session, entity=entity)
  1050         if source.should_call_hooks:
  1050         if source.should_call_hooks:
  1051             for attr, value, prevvalue in relations:
  1051             for attr, value, prevvalue in relations:
  1052                 # if the relation is already cached, update existant cache
  1052                 # if the relation is already cached, update existant cache
  1053                 relcache = entity.relation_cached(attr, 'subject')
  1053                 relcache = entity.relation_cached(attr, 'subject')
  1054                 if prevvalue:
  1054                 if prevvalue is not None:
  1055                     self.hm.call_hooks('after_delete_relation', session,
  1055                     self.hm.call_hooks('after_delete_relation', session,
  1056                                        eidfrom=entity.eid, rtype=attr, eidto=prevvalue)
  1056                                        eidfrom=entity.eid, rtype=attr, eidto=prevvalue)
  1057                     if relcache is not None:
  1057                     if relcache is not None:
  1058                         session.update_rel_cache_del(entity.eid, attr, prevvalue)
  1058                         session.update_rel_cache_del(entity.eid, attr, prevvalue)
  1059                 del_existing_rel_if_needed(session, entity.eid, attr, value)
  1059                 del_existing_rel_if_needed(session, entity.eid, attr, value)