526 rschema = self.add_relation_type(ybo.RelationType('has_text')) |
526 rschema = self.add_relation_type(ybo.RelationType('has_text')) |
527 rschema.final = True |
527 rschema.final = True |
528 rschema = self.add_relation_type(ybo.RelationType('identity')) |
528 rschema = self.add_relation_type(ybo.RelationType('identity')) |
529 rschema.final = False |
529 rschema.final = False |
530 |
530 |
531 etype_name_re = r'[A-Z][A-Za-z0-9]*[a-z]+[0-9]*$' |
531 etype_name_re = r'[A-Z][A-Za-z0-9]*[a-z]+[A-Za-z0-9]*$' |
532 def add_entity_type(self, edef): |
532 def add_entity_type(self, edef): |
533 edef.name = edef.name.encode() |
533 edef.name = edef.name.encode() |
534 edef.name = bw_normalize_etype(edef.name) |
534 edef.name = bw_normalize_etype(edef.name) |
535 if not re.match(self.etype_name_re, edef.name): |
535 if not re.match(self.etype_name_re, edef.name): |
536 raise BadSchemaDefinition( |
536 raise BadSchemaDefinition( |
537 '%r is not a valid name for an entity type. It should match ' |
537 '%r is not a valid name for an entity type. It should start ' |
538 'the following regular expresion: %r' % (edef.name, |
538 'with an upper cased letter and be followed by at least a ' |
539 self.etype_name_re)) |
539 'lower cased letter' % edef.name) |
540 eschema = super(CubicWebSchema, self).add_entity_type(edef) |
540 eschema = super(CubicWebSchema, self).add_entity_type(edef) |
541 if not eschema.final: |
541 if not eschema.final: |
542 # automatically add the eid relation to non final entity types |
542 # automatically add the eid relation to non final entity types |
543 rdef = ybo.RelationDefinition(eschema.type, 'eid', 'Int', |
543 rdef = ybo.RelationDefinition(eschema.type, 'eid', 'Int', |
544 cardinality='11', uid=True, |
544 cardinality='11', uid=True, |