--- a/server/schemaserial.py Fri Jul 17 16:48:43 2015 +0200
+++ b/server/schemaserial.py Tue Jul 28 09:25:26 2015 +0200
@@ -92,14 +92,6 @@
with cnx.ensure_cnx_set:
tables = set(t.lower() for t in dbhelper.list_tables(cnx.cnxset.cu))
has_computed_relations = 'cw_cwcomputedrtype' in tables
- if has_computed_relations:
- rset = cnx.execute(
- 'Any X, N, R, D WHERE X is CWComputedRType, X name N, '
- 'X rule R, X description D')
- for eid, rule_name, rule, description in rset.rows:
- rtype = ybo.ComputedRelation(name=rule_name, rule=rule, eid=eid,
- description=description)
- schema.add_relation_type(rtype)
# computed attribute
try:
cnx.system_sql("SELECT cw_formula FROM cw_CWAttribute")
@@ -177,6 +169,15 @@
stype = ETYPE_NAME_MAP.get(stype, stype)
schema.eschema(etype)._specialized_type = stype
schema.eschema(stype)._specialized_by.append(etype)
+ if has_computed_relations:
+ rset = cnx.execute(
+ 'Any X, N, R, D WHERE X is CWComputedRType, X name N, '
+ 'X rule R, X description D')
+ for eid, rule_name, rule, description in rset.rows:
+ rtype = ybo.ComputedRelation(name=rule_name, rule=rule, eid=eid,
+ description=description)
+ rschema = schema.add_relation_type(rtype)
+ set_perms(rschema, permsidx)
# load every relation types
for eid, rtype, desc, sym, il, ftc in cnx.execute(
'Any X,N,D,S,I,FTC WHERE X is CWRType, X name N, X description D, '
@@ -375,7 +376,7 @@
pb.update()
continue
if rschema.rule:
- execschemarql(execute, rschema, crschema2rql(rschema))
+ execschemarql(execute, rschema, crschema2rql(rschema, groupmap))
pb.update()
continue
execschemarql(execute, rschema, rschema2rql(rschema, addrdef=False))
@@ -525,9 +526,12 @@
relations = ['X %s %%(%s)s' % (attr, attr) for attr in sorted(values)]
return relations, values
-def crschema2rql(crschema):
+def crschema2rql(crschema, groupmap):
relations, values = crschema_relations_values(crschema)
yield 'INSERT CWComputedRType X: %s' % ','.join(relations), values
+ if groupmap:
+ for rql, args in _erperms2rql(crschema, groupmap):
+ yield rql, args
def crschema_relations_values(crschema):
values = _ervalues(crschema)