""":organization: Logilab:copyright: 2001-2009 LOGILAB S.A. (Paris, FRANCE), license is LGPL v2.:contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr:license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses"""fromyams.buildobjsimport(EntityType,RelationType,RelationDefinition,SubjectRelation,ObjectRelation,RichString,String,Int,Boolean,Datetime)fromyams.constraintsimportSizeConstraintfromcubicweb.schemaimport(WorkflowableEntityType,RQLConstraint,ERQLExpression,RRQLExpression)classAffaire(WorkflowableEntityType):permissions={'read':('managers',ERQLExpression('X owned_by U'),ERQLExpression('X concerne S?, S owned_by U')),'add':('managers',ERQLExpression('X concerne S, S owned_by U')),'update':('managers','owners',ERQLExpression('X in_state S, S name in ("pitetre", "en cours")')),'delete':('managers','owners',ERQLExpression('X concerne S, S owned_by U')),}ref=String(fulltextindexed=True,indexed=True,constraints=[SizeConstraint(16)])sujet=String(fulltextindexed=True,constraints=[SizeConstraint(256)])descr=RichString(fulltextindexed=True,description=_('more detailed description'))duration=Int()invoiced=Int()depends_on=SubjectRelation('Affaire')require_permission=SubjectRelation('CWPermission')concerne=SubjectRelation(('Societe','Note'))todo_by=SubjectRelation('Personne',cardinality='?*')documented_by=SubjectRelation('Card')classSociete(EntityType):permissions={'read':('managers','users','guests'),'update':('managers','owners',ERQLExpression('U login L, X nom L')),'delete':('managers','owners',ERQLExpression('U login L, X nom L')),'add':('managers','users',)}nom=String(maxsize=64,fulltextindexed=True)web=String(maxsize=128)type=String(maxsize=128)# attribute in common with Notetel=Int()fax=Int()rncs=String(maxsize=128)ad1=String(maxsize=128)ad2=String(maxsize=128)ad3=String(maxsize=128)cp=String(maxsize=12)ville=String(maxsize=32)classDivision(Societe):__specializes_schema__=TrueclassSubDivision(Division):__specializes_schema__=Truetravaille_subdivision=ObjectRelation('Personne')fromcubicweb.schemas.baseimportCWUserCWUser.get_relations('login').next().fulltextindexed=TrueclassNote(WorkflowableEntityType):date=String(maxsize=10)type=String(maxsize=6)para=String(maxsize=512)migrated_from=SubjectRelation('Note')attachment=SubjectRelation(('File','Image'))inline1=SubjectRelation('Affaire',inlined=True,cardinality='?*')todo_by=SubjectRelation('CWUser')classPersonne(EntityType):nom=String(fulltextindexed=True,required=True,maxsize=64)prenom=String(fulltextindexed=True,maxsize=64)sexe=String(maxsize=1,default='M')promo=String(vocabulary=('bon','pasbon'))titre=String(fulltextindexed=True,maxsize=128)adel=String(maxsize=128)ass=String(maxsize=128)web=String(maxsize=128)tel=Int()fax=Int()datenaiss=Datetime()test=Boolean()description=String()firstname=String(fulltextindexed=True,maxsize=64)travaille=SubjectRelation('Societe')concerne=SubjectRelation('Affaire')connait=SubjectRelation('Personne')inline2=SubjectRelation('Affaire',inlined=True,cardinality='?*')comments=ObjectRelation('Comment')classfiche(RelationType):inlined=Truesubject='Personne'object='Card'cardinality='??'classmultisource_inlined_rel(RelationType):inlined=Truecardinality='?*'subject=('Card','Note')object=('Affaire','Note')classecrit_par(RelationType):inlined=Trueclassconnait(RelationType):symetric=Trueclassconcerne(RelationType):permissions={'read':('managers','users','guests'),'add':('managers',RRQLExpression('U has_update_permission S')),'delete':('managers',RRQLExpression('O owned_by U')),}classtravaille(RelationType):permissions={'read':('managers','users','guests'),'add':('managers',RRQLExpression('U has_update_permission S')),'delete':('managers',RRQLExpression('O owned_by U')),}classpara(RelationType):permissions={'read':('managers','users','guests'),'add':('managers',ERQLExpression('X in_state S, S name "todo"')),'delete':('managers',ERQLExpression('X in_state S, S name "todo"')),}classtest(RelationType):permissions={'read':('managers','users','guests'),'delete':('managers',),'add':('managers',)}classmultisource_rel(RelationDefinition):subject=('Card','Note')object='Note'classmultisource_crossed_rel(RelationDefinition):subject=('Card','Note')object='Note'classsee_also_1(RelationDefinition):name='see_also'subject=object='Folder'classsee_also_2(RelationDefinition):name='see_also'subject=('Bookmark','Note')object=('Bookmark','Note')classevaluee(RelationDefinition):subject=('Personne','CWUser','Societe')object=('Note')classecrit_par_1(RelationDefinition):name='ecrit_par'subject='Note'object='Personne'constraints=[RQLConstraint('E concerns P, X version_of P')]cardinality='?*'classecrit_par_2(RelationDefinition):name='ecrit_par'subject='Note'object='CWUser'cardinality='?*'classcopain(RelationDefinition):subject=object='CWUser'classtags(RelationDefinition):subject='Tag'object=('CWUser','CWGroup','State','Note','Card','Affaire')classfiled_under(RelationDefinition):subject=('Note','Affaire')object='Folder'classrequire_permission(RelationDefinition):subject=('Card','Note','Personne')object='CWPermission'classrequire_state(RelationDefinition):subject='CWPermission'object='State'