542 rschema = self.add_relation_type(ybo.RelationType('has_text')) |
542 rschema = self.add_relation_type(ybo.RelationType('has_text')) |
543 rschema.final = True |
543 rschema.final = True |
544 rschema = self.add_relation_type(ybo.RelationType('identity')) |
544 rschema = self.add_relation_type(ybo.RelationType('identity')) |
545 rschema.final = False |
545 rschema.final = False |
546 |
546 |
|
547 etype_name_re = r'[A-Z][A-Za-z0-9]*[a-z]+[A-Za-z0-9]*$' |
547 def add_entity_type(self, edef): |
548 def add_entity_type(self, edef): |
548 edef.name = edef.name.encode() |
549 edef.name = edef.name.encode() |
549 edef.name = bw_normalize_etype(edef.name) |
550 edef.name = bw_normalize_etype(edef.name) |
550 if not re.match(r'[A-Z][A-Za-z0-9]*[a-z]+[0-9]*$', edef.name): |
551 if not re.match(self.etype_name_re, edef.name): |
551 raise BadSchemaDefinition( |
552 raise BadSchemaDefinition( |
552 '%r is not a valid name for an entity type. It should start ' |
553 '%r is not a valid name for an entity type. It should start ' |
553 'with an upper cased letter and be followed by at least a ' |
554 'with an upper cased letter and be followed by at least a ' |
554 'lower cased letter' % edef.name) |
555 'lower cased letter' % edef.name) |
555 eschema = super(CubicWebSchema, self).add_entity_type(edef) |
556 eschema = super(CubicWebSchema, self).add_entity_type(edef) |
663 permissions) |
664 permissions) |
664 """ |
665 """ |
665 # these are overridden by set_log_methods below |
666 # these are overridden by set_log_methods below |
666 # only defining here to prevent pylint from complaining |
667 # only defining here to prevent pylint from complaining |
667 info = warning = error = critical = exception = debug = lambda msg,*a,**kw: None |
668 info = warning = error = critical = exception = debug = lambda msg,*a,**kw: None |
|
669 # to be defined in concrete classes |
|
670 full_rql = None |
668 |
671 |
669 def __init__(self, expression, mainvars, eid): |
672 def __init__(self, expression, mainvars, eid): |
670 self.eid = eid # eid of the entity representing this rql expression |
673 self.eid = eid # eid of the entity representing this rql expression |
671 assert mainvars, 'bad mainvars %s' % mainvars |
674 assert mainvars, 'bad mainvars %s' % mainvars |
672 if isinstance(mainvars, basestring): |
675 if isinstance(mainvars, basestring): |