server/schemaserial.py
branchstable
changeset 4570 ede247bbbf62
parent 4475 37c413a07216
child 4631 457160bc8cfe
equal deleted inserted replaced
4569:1acd90d0cb59 4570:ede247bbbf62
   187 def set_perms(erschema, permsdict):
   187 def set_perms(erschema, permsdict):
   188     """set permissions on the given erschema according to the permission
   188     """set permissions on the given erschema according to the permission
   189     definition dictionary as built by deserialize_ertype_permissions for a
   189     definition dictionary as built by deserialize_ertype_permissions for a
   190     given erschema's eid
   190     given erschema's eid
   191     """
   191     """
       
   192     # reset erschema permissions here to avoid getting yams default anyway
       
   193     erschema.permissions = dict((action, ()) for action in erschema.ACTIONS)
   192     try:
   194     try:
   193         thispermsdict = permsdict[erschema.eid]
   195         thispermsdict = permsdict[erschema.eid]
   194     except KeyError:
   196     except KeyError:
   195         return
   197         return
   196     permissions = erschema.permissions
       
   197     for action, somethings in thispermsdict.iteritems():
   198     for action, somethings in thispermsdict.iteritems():
   198         permissions[action] = tuple(
   199         # XXX cw < 3.6.1 bw compat
       
   200         if isinstance(erschema, schemamod.RelationDefinitionSchema) and erschema.final and action == 'add':
       
   201             action = 'update'
       
   202         erschema.permissions[action] = tuple(
   199             isinstance(p, tuple) and erschema.rql_expression(*p) or p
   203             isinstance(p, tuple) and erschema.rql_expression(*p) or p
   200             for p in somethings)
   204             for p in somethings)
   201 
   205 
   202 
   206 
   203 def deserialize_rdef_constraints(session):
   207 def deserialize_rdef_constraints(session):