# copyright 2003-2011 LOGILAB S.A. (Paris, FRANCE), all rights reserved.# contact http://www.logilab.fr/ -- mailto:contact@logilab.fr## This file is part of CubicWeb.## CubicWeb is free software: you can redistribute it and/or modify it under the# terms of the GNU Lesser General Public License as published by the Free# Software Foundation, either version 2.1 of the License, or (at your option)# any later version.## CubicWeb is distributed in the hope that it will be useful, but WITHOUT# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more# details.## You should have received a copy of the GNU Lesser General Public License along# with CubicWeb. If not, see <http://www.gnu.org/licenses/>.fromyams.buildobjsimport(EntityType,String,SubjectRelation,RelationDefinition)fromcubicweb.schemaimport(WorkflowableEntityType,RQLConstraint,RQLVocabularyConstraint)classPersonne(EntityType):nom=String(required=True)prenom=String()type=String()travaille=SubjectRelation('Societe')evaluee=SubjectRelation(('Note','Personne'))connait=SubjectRelation('Personne',symmetric=True,constraints=[RQLConstraint('NOT S identity O'),# conflicting constraints, see cw_unrelated_rql tests in# unittest_entity.pyRQLVocabularyConstraint('NOT (S connait P, P nom "toto")'),RQLVocabularyConstraint('S travaille P, P nom "tutu"')])actionnaire=SubjectRelation('Societe',cardinality='??',constraints=[RQLConstraint('NOT EXISTS(O contrat_exclusif S)')])dirige=SubjectRelation('Societe',cardinality='??',constraints=[RQLConstraint('S actionnaire O')])associe=SubjectRelation('Personne',cardinality='1*',constraints=[RQLConstraint('S actionnaire SOC, O actionnaire SOC')])classSociete(EntityType):nom=String()evaluee=SubjectRelation('Note')fournit=SubjectRelation(('Service','Produit'),cardinality='1*')contrat_exclusif=SubjectRelation('Personne',cardinality='??')classService(EntityType):fabrique_par=SubjectRelation('Personne',cardinality='1*')classProduit(EntityType):fabrique_par=SubjectRelation('Usine',cardinality='1*')classUsine(EntityType):lieu=String(required=True)classNote(EntityType):type=String()ecrit_par=SubjectRelation('Personne')classSubNote(Note):__specializes_schema__=Truedescription=String()classtags(RelationDefinition):subject='Tag'object=('Personne','Note')classevaluee(RelationDefinition):subject='CWUser'object='Note'classStateFull(WorkflowableEntityType):name=String()