398 def __rdef2rql(genmap, rschema, subjtype=None, objtype=None, props=None, |
398 def __rdef2rql(genmap, rschema, subjtype=None, objtype=None, props=None, |
399 groupmap=None): |
399 groupmap=None): |
400 if subjtype is None: |
400 if subjtype is None: |
401 assert objtype is None |
401 assert objtype is None |
402 assert props is None |
402 assert props is None |
403 targets = rschema.rdefs |
403 targets = sorted(rschema.rdefs) |
404 else: |
404 else: |
405 assert not objtype is None |
405 assert not objtype is None |
406 targets = [(subjtype, objtype)] |
406 targets = [(subjtype, objtype)] |
407 # relation schema |
407 # relation schema |
408 if rschema.final: |
408 if rschema.final: |
447 def erschema2rql(erschema, groupmap): |
447 def erschema2rql(erschema, groupmap): |
448 if isinstance(erschema, schemamod.EntitySchema): |
448 if isinstance(erschema, schemamod.EntitySchema): |
449 return eschema2rql(erschema, groupmap=groupmap) |
449 return eschema2rql(erschema, groupmap=groupmap) |
450 return rschema2rql(erschema, groupmap=groupmap) |
450 return rschema2rql(erschema, groupmap=groupmap) |
451 |
451 |
452 def eschema2rql(eschema, groupmap): |
452 def eschema2rql(eschema, groupmap=None): |
453 """return a list of rql insert statements to enter an entity schema |
453 """return a list of rql insert statements to enter an entity schema |
454 in the database as an CWEType entity |
454 in the database as an CWEType entity |
455 """ |
455 """ |
456 relations, values = eschema_relations_values(eschema) |
456 relations, values = eschema_relations_values(eschema) |
457 # NOTE: 'specializes' relation can't be inserted here since there's no |
457 # NOTE: 'specializes' relation can't be inserted here since there's no |
458 # way to make sure the parent type is inserted before the child type |
458 # way to make sure the parent type is inserted before the child type |
459 yield 'INSERT CWEType X: %s' % ','.join(relations) , values |
459 yield 'INSERT CWEType X: %s' % ','.join(relations) , values |
460 # entity schema |
460 # entity permissions |
461 for rql, args in _erperms2rql(eschema, groupmap): |
461 if groupmap is not None: |
462 args['name'] = str(eschema) |
462 for rql, args in _erperms2rql(eschema, groupmap): |
463 yield rql + 'X is CWEType, X name %(name)s', args |
463 args['name'] = str(eschema) |
|
464 yield rql + 'X is CWEType, X name %(name)s', args |
464 |
465 |
465 def specialize2rql(schema): |
466 def specialize2rql(schema): |
466 for eschema in schema.entities(): |
467 for eschema in schema.entities(): |
467 for rql, kwargs in eschemaspecialize2rql(eschema): |
468 for rql, kwargs in eschemaspecialize2rql(eschema): |
468 yield rql, kwargs |
469 yield rql, kwargs |