server/repository.py
branchstable
changeset 5292 8b496574b65c
parent 5187 5f9a2b32c9e1
child 5302 dfd147de06b2
child 5376 2c3f14bc2590
equal deleted inserted replaced
5291:593adaccd737 5292:8b496574b65c
  1074         try:
  1074         try:
  1075             if session.is_hook_category_activated('integrity'):
  1075             if session.is_hook_category_activated('integrity'):
  1076                 entity.check()
  1076                 entity.check()
  1077             only_inline_rels, need_fti_update = True, False
  1077             only_inline_rels, need_fti_update = True, False
  1078             relations = []
  1078             relations = []
       
  1079             source = self.source_from_eid(entity.eid, session)
  1079             for attr in list(edited_attributes):
  1080             for attr in list(edited_attributes):
  1080                 if attr == 'eid':
  1081                 if attr == 'eid':
  1081                     continue
  1082                     continue
  1082                 rschema = eschema.subjrels[attr]
  1083                 rschema = eschema.subjrels[attr]
  1083                 if rschema.final:
  1084                 if rschema.final:
  1089                     previous_value = entity.related(attr) or None
  1090                     previous_value = entity.related(attr) or None
  1090                     if previous_value is not None:
  1091                     if previous_value is not None:
  1091                         previous_value = previous_value[0][0] # got a result set
  1092                         previous_value = previous_value[0][0] # got a result set
  1092                         if previous_value == entity[attr]:
  1093                         if previous_value == entity[attr]:
  1093                             previous_value = None
  1094                             previous_value = None
  1094                         else:
  1095                         elif source.should_call_hooks:
  1095                             hm.call_hooks('before_delete_relation', session,
  1096                             hm.call_hooks('before_delete_relation', session,
  1096                                           eidfrom=entity.eid, rtype=attr,
  1097                                           eidfrom=entity.eid, rtype=attr,
  1097                                           eidto=previous_value)
  1098                                           eidto=previous_value)
  1098                     relations.append((attr, entity[attr], previous_value))
  1099                     relations.append((attr, entity[attr], previous_value))
  1099                 source = self.source_from_eid(entity.eid, session)
  1100             if source.should_call_hooks:
  1100                 if source.should_call_hooks:
  1101                 # call hooks for inlined relations
  1101                     # call hooks for inlined relations
  1102                 for attr, value, _ in relations:
  1102                     for attr, value, _ in relations:
  1103                     hm.call_hooks('before_add_relation', session,
  1103                         hm.call_hooks('before_add_relation', session,
  1104                                   eidfrom=entity.eid, rtype=attr, eidto=value)
  1104                                       eidfrom=entity.eid, rtype=attr, eidto=value)
  1105                 if not only_inline_rels:
  1105                     if not only_inline_rels:
  1106                     hm.call_hooks('before_update_entity', session, entity=entity)
  1106                         hm.call_hooks('before_update_entity', session, entity=entity)
       
  1107             source.update_entity(session, entity)
  1107             source.update_entity(session, entity)
  1108             self.system_source.update_info(session, entity, need_fti_update)
  1108             self.system_source.update_info(session, entity, need_fti_update)
  1109             if source.should_call_hooks:
  1109             if source.should_call_hooks:
  1110                 if not only_inline_rels:
  1110                 if not only_inline_rels:
  1111                     hm.call_hooks('after_update_entity', session, entity=entity)
  1111                     hm.call_hooks('after_update_entity', session, entity=entity)