server/schemaserial.py
branchstable
changeset 4570 ede247bbbf62
parent 4475 37c413a07216
child 4631 457160bc8cfe
--- a/server/schemaserial.py	Mon Feb 15 15:05:15 2010 +0100
+++ b/server/schemaserial.py	Mon Feb 15 15:10:25 2010 +0100
@@ -189,13 +189,17 @@
     definition dictionary as built by deserialize_ertype_permissions for a
     given erschema's eid
     """
+    # reset erschema permissions here to avoid getting yams default anyway
+    erschema.permissions = dict((action, ()) for action in erschema.ACTIONS)
     try:
         thispermsdict = permsdict[erschema.eid]
     except KeyError:
         return
-    permissions = erschema.permissions
     for action, somethings in thispermsdict.iteritems():
-        permissions[action] = tuple(
+        # XXX cw < 3.6.1 bw compat
+        if isinstance(erschema, schemamod.RelationDefinitionSchema) and erschema.final and action == 'add':
+            action = 'update'
+        erschema.permissions[action] = tuple(
             isinstance(p, tuple) and erschema.rql_expression(*p) or p
             for p in somethings)