server/schemaserial.py
changeset 4003 b9436fe77c9e
parent 3998 94cc7cad3d2d
child 4010 b2d0b14a365d
--- a/server/schemaserial.py	Thu Dec 03 17:17:43 2009 +0100
+++ b/server/schemaserial.py	Mon Dec 07 05:09:09 2009 -0800
@@ -183,7 +183,6 @@
                                  fulltext_container=ft_container, eid=eid)
         rschema = schema.add_relation_type(rtype)
         index[eid] = rschema
-        set_perms(rschema, permsdict.get(eid, {}))
     cstrsdict = deserialize_rdef_constraints(session)
     for values in session.execute(
         'Any X,SE,RT,OE,CARD,ORD,DESC,IDX,FTIDX,I18N,DFLT WHERE X is CWAttribute,'
@@ -202,7 +201,8 @@
                                   indexed=idx, fulltextindexed=ftidx,
                                   internationalizable=i18n,
                                   default=default, eid=rdefeid)
-        schema.add_relation_def(rdef)
+        rdefs = schema.add_relation_def(rdef)
+        set_perms(rdefs, permsdict.get(rdefeid, {}))
     for values in session.execute(
         'Any X,SE,RT,OE,CARD,ORD,DESC,C WHERE X is CWRelation, X relation_type RT,'
         'X cardinality CARD, X ordernum ORD, X description DESC, '
@@ -216,7 +216,8 @@
                                   order=ord, description=desc,
                                   composite=c, constraints=constraints,
                                   eid=rdefeid)
-        schema.add_relation_def(rdef)
+        rdefs = schema.add_relation_def(rdef)
+        set_perms(rdefs, permsdict.get(rdefeid, {}))
     schema.infer_specialization_rules()
     if _3_2_migration:
         _update_database(schema, sqlcu)
@@ -363,7 +364,7 @@
     amap = {'order': 'ordernum'}
     values = {}
     for prop, default in rschema.rproperty_defs(objtype).iteritems():
-        if prop in ('eid', 'constraints', 'uid', 'infered'):
+        if prop in ('eid', 'constraints', 'uid', 'infered', 'permissions'):
             continue
         value = props.get(prop, default)
         if prop in ('indexed', 'fulltextindexed', 'internationalizable'):
@@ -536,7 +537,7 @@
     else:
         # entity schema
         for rql, args in _erperms2rql(erschema, groupmapping):
-            args['name'] = str(eschema)
+            args['name'] = str(erschema)
             yield rql + 'X is CWEType, X name %(name)s', args
 
 def _erperms2rql(erschema, groupmapping):
@@ -550,7 +551,7 @@
             if isinstance(group_or_rqlexpr, basestring):
                 # group
                 try:
-                    yield ('SET X %s_permission Y WHERE Y eid %%(g)s' % action,
+                    yield ('SET X %s_permission Y WHERE Y eid %%(g)s, ' % action,
                            {'g': groupmapping[group_or_rqlexpr]})
                 except KeyError:
                     continue