server/repository.py
changeset 2880 bfc8e1831290
parent 2867 e8581a4f1bae
parent 2875 b7399ef8b3e0
child 2881 d1a5b77e42bc
--- a/server/repository.py	Sun Aug 16 20:42:33 2009 +0200
+++ b/server/repository.py	Mon Aug 17 18:25:57 2009 +0200
@@ -1011,7 +1011,7 @@
         session.set_entity_cache(entity)
         only_inline_rels, need_fti_update = True, False
         relations = []
-        for attr in entity.keys():
+        for attr in edited_attributes:
             if attr == 'eid':
                 continue
             rschema = eschema.subject_relation(attr)
@@ -1021,8 +1021,8 @@
                 only_inline_rels = False
             else:
                 # inlined relation
-                previous_value = entity.related(attr)
-                if previous_value:
+                previous_value = entity.related(attr) or None
+                if previous_value is not None:
                     previous_value = previous_value[0][0] # got a result set
                     if previous_value == entity[attr]:
                         previous_value = None
@@ -1051,7 +1051,7 @@
             for attr, value, prevvalue in relations:
                 # if the relation is already cached, update existant cache
                 relcache = entity.relation_cached(attr, 'subject')
-                if prevvalue:
+                if prevvalue is not None:
                     self.hm.call_hooks('after_delete_relation', session,
                                        eidfrom=entity.eid, rtype=attr, eidto=prevvalue)
                     if relcache is not None: