server/repository.py
changeset 5302 dfd147de06b2
parent 5201 2b4267157f85
parent 5292 8b496574b65c
child 5385 b6e250dd7a7d
equal deleted inserted replaced
5298:66b0987716f9 5302:dfd147de06b2
  1089         try:
  1089         try:
  1090             if session.is_hook_category_activated('integrity'):
  1090             if session.is_hook_category_activated('integrity'):
  1091                 entity.check()
  1091                 entity.check()
  1092             only_inline_rels, need_fti_update = True, False
  1092             only_inline_rels, need_fti_update = True, False
  1093             relations = []
  1093             relations = []
       
  1094             source = self.source_from_eid(entity.eid, session)
  1094             for attr in list(edited_attributes):
  1095             for attr in list(edited_attributes):
  1095                 if attr == 'eid':
  1096                 if attr == 'eid':
  1096                     continue
  1097                     continue
  1097                 rschema = eschema.subjrels[attr]
  1098                 rschema = eschema.subjrels[attr]
  1098                 if rschema.final:
  1099                 if rschema.final:
  1104                     previous_value = entity.related(attr) or None
  1105                     previous_value = entity.related(attr) or None
  1105                     if previous_value is not None:
  1106                     if previous_value is not None:
  1106                         previous_value = previous_value[0][0] # got a result set
  1107                         previous_value = previous_value[0][0] # got a result set
  1107                         if previous_value == entity[attr]:
  1108                         if previous_value == entity[attr]:
  1108                             previous_value = None
  1109                             previous_value = None
  1109                         else:
  1110                         elif source.should_call_hooks:
  1110                             hm.call_hooks('before_delete_relation', session,
  1111                             hm.call_hooks('before_delete_relation', session,
  1111                                           eidfrom=entity.eid, rtype=attr,
  1112                                           eidfrom=entity.eid, rtype=attr,
  1112                                           eidto=previous_value)
  1113                                           eidto=previous_value)
  1113                     relations.append((attr, entity[attr], previous_value))
  1114                     relations.append((attr, entity[attr], previous_value))
  1114                 source = self.source_from_eid(entity.eid, session)
  1115             if source.should_call_hooks:
  1115                 if source.should_call_hooks:
  1116                 # call hooks for inlined relations
  1116                     # call hooks for inlined relations
  1117                 for attr, value, _ in relations:
  1117                     for attr, value, _ in relations:
  1118                     hm.call_hooks('before_add_relation', session,
  1118                         hm.call_hooks('before_add_relation', session,
  1119                                   eidfrom=entity.eid, rtype=attr, eidto=value)
  1119                                       eidfrom=entity.eid, rtype=attr, eidto=value)
  1120                 if not only_inline_rels:
  1120                     if not only_inline_rels:
  1121                     hm.call_hooks('before_update_entity', session, entity=entity)
  1121                         hm.call_hooks('before_update_entity', session, entity=entity)
       
  1122             source.update_entity(session, entity)
  1122             source.update_entity(session, entity)
  1123             self.system_source.update_info(session, entity, need_fti_update)
  1123             self.system_source.update_info(session, entity, need_fti_update)
  1124             if source.should_call_hooks:
  1124             if source.should_call_hooks:
  1125                 if not only_inline_rels:
  1125                 if not only_inline_rels:
  1126                     hm.call_hooks('after_update_entity', session, entity=entity)
  1126                     hm.call_hooks('after_update_entity', session, entity=entity)