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