set a size constraint on ECache's title
It's not a good idea to use text field with no size constraint and to
index them. Somme BDD backends (MySQL for instance) simply don't support
it.
"""core CubicWeb schema necessary for bootstrapping the actual application's schema:organization: Logilab:copyright: 2001-2008 LOGILAB S.A. (Paris, FRANCE), all rights reserved.:contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr"""fromcubicweb.schemaimportformat_constraint# not restricted since as "is" is handled as other relations, guests need# access to thisclassEEType(MetaEntityType):"""define an entity type, used to build the application schema"""name=String(required=True,indexed=True,internationalizable=True,unique=True,maxsize=64)description_format=String(meta=True,internationalizable=True,maxsize=50,default='text/plain',constraints=[format_constraint])description=String(internationalizable=True,description=_('semantic description of this entity type'))meta=Boolean(description=_('is it an application entity type or not ?'))# necessary to filter using RQLfinal=Boolean(description=_('automatic'))classERType(MetaEntityType):"""define a relation type, used to build the application schema"""name=String(required=True,indexed=True,internationalizable=True,unique=True,maxsize=64)description_format=String(meta=True,internationalizable=True,maxsize=50,default='text/plain',constraints=[format_constraint])description=String(internationalizable=True,description=_('semantic description of this relation type'))meta=Boolean(description=_('is it an application relation type or not ?'))symetric=Boolean(description=_('is this relation equivalent in both direction ?'))inlined=Boolean(description=_('is this relation physically inlined? you should know what you\'re doing if you are changing this!'))fulltext_container=String(description=_('if full text content of subject/object entity ''should be added to other side entity (the container).'),vocabulary=('',_('subject'),_('object')),maxsize=8,default=None)final=Boolean(description=_('automatic'))classEFRDef(MetaEntityType):"""define a final relation: link a final relation type from a non final entity to a final entity type. used to build the application schema """relation_type=SubjectRelation('ERType',cardinality='1*',constraints=[RQLConstraint('O final TRUE')],composite='object')from_entity=SubjectRelation('EEType',cardinality='1*',constraints=[RQLConstraint('O final FALSE')],composite='object')to_entity=SubjectRelation('EEType',cardinality='1*',constraints=[RQLConstraint('O final TRUE')],composite='object')constrained_by=SubjectRelation('EConstraint',cardinality='*1',composite='subject')cardinality=String(maxsize=2,internationalizable=True,vocabulary=[_('?1'),_('11'),_('??'),_('1?')],description=_('subject/object cardinality'))ordernum=Int(description=('control subject entity\'s relations order'),default=0)indexed=Boolean(description=_('create an index for quick search on this attribute'))fulltextindexed=Boolean(description=_('index this attribute\'s value in the plain text index'))internationalizable=Boolean(description=_('is this attribute\'s value translatable'))defaultval=String(maxsize=256)description_format=String(meta=True,internationalizable=True,maxsize=50,default='text/plain',constraints=[format_constraint])description=String(internationalizable=True,description=_('semantic description of this attribute'))CARDINALITY_VOCAB=[_('?*'),_('1*'),_('+*'),_('**'),_('?+'),_('1+'),_('++'),_('*+'),_('?1'),_('11'),_('+1'),_('*1'),_('??'),_('1?'),_('+?'),_('*?')]classENFRDef(MetaEntityType):"""define a non final relation: link a non final relation type from a non final entity to a non final entity type. used to build the application schema """relation_type=SubjectRelation('ERType',cardinality='1*',constraints=[RQLConstraint('O final FALSE')],composite='object')from_entity=SubjectRelation('EEType',cardinality='1*',constraints=[RQLConstraint('O final FALSE')],composite='object')to_entity=SubjectRelation('EEType',cardinality='1*',constraints=[RQLConstraint('O final FALSE')],composite='object')constrained_by=SubjectRelation('EConstraint',cardinality='*1',composite='subject')cardinality=String(maxsize=2,internationalizable=True,vocabulary=CARDINALITY_VOCAB,description=_('subject/object cardinality'))ordernum=Int(description=_('control subject entity\'s relations order'),default=0)composite=String(description=_('is the subject/object entity of the relation ''composed of the other ? This implies that when ''the composite is deleted, composants are also ''deleted.'),vocabulary=('',_('subject'),_('object')),maxsize=8,default=None)description_format=String(meta=True,internationalizable=True,maxsize=50,default='text/plain',constraints=[format_constraint])description=String(internationalizable=True,description=_('semantic description of this relation'))# not restricted since it has to be read when checking allowed transitionsclassRQLExpression(MetaEntityType):"""define a rql expression used to define permissions"""exprtype=String(required=True,vocabulary=['ERQLExpression','RRQLExpression'])mainvars=String(maxsize=8,description=_('name of the main variables which should be ''used in the selection if necessary (comma ''separated)'))expression=String(required=True,description=_('restriction part of a rql query. ''For entity rql expression, X and U are ''predefined respectivly to the current object and to ''the request user. For relation rql expression, ''S, O and U are predefined respectivly to the current ''relation\'subject, object and to ''the request user. '))read_permission=ObjectRelation(('EEType','ERType'),cardinality='+?',composite='subject',description=_('rql expression allowing to read entities/relations of this type'))add_permission=ObjectRelation(('EEType','ERType'),cardinality='*?',composite='subject',description=_('rql expression allowing to add entities/relations of this type'))delete_permission=ObjectRelation(('EEType','ERType'),cardinality='*?',composite='subject',description=_('rql expression allowing to delete entities/relations of this type'))update_permission=ObjectRelation('EEType',cardinality='*?',composite='subject',description=_('rql expression allowing to update entities of this type'))classEConstraint(MetaEntityType):"""define a schema constraint"""cstrtype=SubjectRelation('EConstraintType',cardinality='1*')value=String(description=_('depends on the constraint type'))classEConstraintType(MetaEntityType):"""define a schema constraint type"""name=String(required=True,indexed=True,internationalizable=True,unique=True,maxsize=64)# not restricted since it has to be read when checking allowed transitionsclassEGroup(MetaEntityType):"""define a CubicWeb users group"""name=String(required=True,indexed=True,internationalizable=True,unique=True,maxsize=64)read_permission=ObjectRelation(('EEType','ERType'),cardinality='+*',description=_('groups allowed to read entities/relations of this type'))add_permission=ObjectRelation(('EEType','ERType'),description=_('groups allowed to add entities/relations of this type'))delete_permission=ObjectRelation(('EEType','ERType'),description=_('groups allowed to delete entities/relations of this type'))update_permission=ObjectRelation('EEType',description=_('groups allowed to update entities of this type'))classrelation_type(MetaRelationType):"""link a relation definition to its relation type"""inlined=Trueclassfrom_entity(MetaRelationType):"""link a relation definition to its subject entity type"""inlined=Trueclassto_entity(MetaRelationType):"""link a relation definition to its object entity type"""inlined=Trueclassconstrained_by(MetaRelationType):"""constraints applying on this relation"""classcstrtype(MetaRelationType):"""constraint factory"""inlined=Trueclassread_permission(MetaRelationType):"""core relation giving to a group the permission to read an entity or relation type """classadd_permission(MetaRelationType):"""core relation giving to a group the permission to add an entity or relation type """classdelete_permission(MetaRelationType):"""core relation giving to a group the permission to delete an entity or relation type """classupdate_permission(MetaRelationType):"""core relation giving to a group the permission to update an entity type """classis_(MetaRelationType):"""core relation indicating the type of an entity """name='is'# don't explicitly set composite here, this is handled anyway#composite = 'object'permissions={'read':('managers','users','guests'),'add':(),'delete':(),}cardinality='1*'subject='**'object='EEType'classis_instance_of(MetaRelationType):"""core relation indicating the types (including specialized types) of an entity """# don't explicitly set composite here, this is handled anyway#composite = 'object'permissions={'read':('managers','users','guests'),'add':(),'delete':(),}cardinality='+*'subject='**'object='EEType'classspecializes(MetaRelationType):name='specializes'permissions={'read':('managers','users','guests'),'add':('managers',),'delete':('managers',),}cardinality='?*'subject='EEType'object='EEType'