schema.py
brancholdstable
changeset 8123 a4e667270dd4
parent 7879 9aae456abab5
child 7894 ad0eeb0f7a8d
equal deleted inserted replaced
7863:d8bb8f631d41 8123:a4e667270dd4
   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):