server/checkintegrity.py
changeset 8696 0bb18407c053
parent 8695 358d8bed9626
child 8900 010a59e12d89
equal deleted inserted replaced
8695:358d8bed9626 8696:0bb18407c053
   315     for rschema in schema.relations():
   315     for rschema in schema.relations():
   316         if rschema.final or rschema in PURE_VIRTUAL_RTYPES or rschema in ('is', 'is_instance_of'):
   316         if rschema.final or rschema in PURE_VIRTUAL_RTYPES or rschema in ('is', 'is_instance_of'):
   317             continue
   317             continue
   318         smandatory = set()
   318         smandatory = set()
   319         omandatory = set()
   319         omandatory = set()
   320         for rdef in rschema.rdefs.values():
   320         for rdef in rschema.rdefs.itervalues():
   321             if rdef.cardinality[0] in '1+':
   321             if rdef.cardinality[0] in '1+':
   322                 smandatory.add(rdef.subject)
   322                 smandatory.add(rdef.subject)
   323             if rdef.cardinality[1] in '1+':
   323             if rdef.cardinality[1] in '1+':
   324                 omandatory.add(rdef.object)
   324                 omandatory.add(rdef.object)
   325         for role, etypes in (('subject', smandatory), ('object', omandatory)):
   325         for role, etypes in (('subject', smandatory), ('object', omandatory)):
   343     print 'Checking mandatory attributes'
   343     print 'Checking mandatory attributes'
   344     msg = '%s #%s is missing mandatory attribute %s (autofix will delete the entity)'
   344     msg = '%s #%s is missing mandatory attribute %s (autofix will delete the entity)'
   345     for rschema in schema.relations():
   345     for rschema in schema.relations():
   346         if not rschema.final or rschema in VIRTUAL_RTYPES:
   346         if not rschema.final or rschema in VIRTUAL_RTYPES:
   347             continue
   347             continue
   348         for rdef in rschema.rdefs.values():
   348         for rdef in rschema.rdefs.itervalues():
   349             if rdef.cardinality[0] in '1+':
   349             if rdef.cardinality[0] in '1+':
   350                 rql = 'Any X WHERE X %s NULL, X is %s, X cw_source S, S name "system"' % (
   350                 rql = 'Any X WHERE X %s NULL, X is %s, X cw_source S, S name "system"' % (
   351                     rschema, rdef.subject)
   351                     rschema, rdef.subject)
   352                 for entity in session.execute(rql).entities():
   352                 for entity in session.execute(rql).entities():
   353                     sys.stderr.write(msg % (entity.__regid__, entity.eid, rschema))
   353                     sys.stderr.write(msg % (entity.__regid__, entity.eid, rschema))