doc/book/fr/04-02-schema-definition.fr.txt
branchtls-sprint
changeset 1398 5fe84a5f7035
parent 171 c7d6a465b951
child 4467 0e73d299730a
equal deleted inserted replaced
1397:6cbc7bc8ea6d 1398:5fe84a5f7035
    30   
    30   
    31   - `creation_date` (`Datetime`)
    31   - `creation_date` (`Datetime`)
    32   
    32   
    33   - `modification_date` (`Datetime`)
    33   - `modification_date` (`Datetime`)
    34   
    34   
    35   - `created_by` (`EUser`) (quel utilisateur a créé l'entité)
    35   - `created_by` (`CWUser`) (quel utilisateur a créé l'entité)
    36   
    36   
    37   - `owned_by` (`EUser`) (à qui appartient l'entité, par défaut le
    37   - `owned_by` (`CWUser`) (à qui appartient l'entité, par défaut le
    38      créateur mais pas forcément et il peut exister plusieurs propriétaires)
    38      créateur mais pas forcément et il peut exister plusieurs propriétaires)
    39      
    39      
    40   - `is` (`EEType`)
    40   - `is` (`CWEType`)
    41 
    41 
    42   
    42   
    43 * il est également possible de définir des relations dont le type d'entité est
    43 * il est également possible de définir des relations dont le type d'entité est
    44   l'objet en utilisant `ObjectRelation` plutôt que `SubjectRelation`
    44   l'objet en utilisant `ObjectRelation` plutôt que `SubjectRelation`
    45 
    45 
   165   class verrouille_par(RelationType):
   165   class verrouille_par(RelationType):
   166     """relation sur toutes les entités applicatives indiquant que celles-ci sont vérouillées
   166     """relation sur toutes les entités applicatives indiquant que celles-ci sont vérouillées
   167     inlined = True
   167     inlined = True
   168     cardinality = '?*'
   168     cardinality = '?*'
   169     subject = '*'
   169     subject = '*'
   170     object = 'EUser'
   170     object = 'CWUser'
   171 
   171 
   172 En plus des permissions, les propriétés propres aux types de relation (et donc
   172 En plus des permissions, les propriétés propres aux types de relation (et donc
   173 partagés par toutes les définitions de relation de ce type) sont :
   173 partagés par toutes les définitions de relation de ce type) sont :
   174 
   174 
   175 * `inlined` : booléen contrôlant l'optimisation physique consistant à stocker la
   175 * `inlined` : booléen contrôlant l'optimisation physique consistant à stocker la
   261 
   261 
   262   - les permissions 'add' et 'delete' sont équivalentes. En pratique seul
   262   - les permissions 'add' et 'delete' sont équivalentes. En pratique seul
   263     'add'/'read' son pris en considération
   263     'add'/'read' son pris en considération
   264 
   264 
   265 
   265 
   266 En plus de cela, le type d'entité `EPermission` de la librairie standard permet
   266 En plus de cela, le type d'entité `CWPermission` de la librairie standard permet
   267 de construire des modèles de sécurités très complexes et dynamiques. Le schéma
   267 de construire des modèles de sécurités très complexes et dynamiques. Le schéma
   268 de ce type d'entité est le suivant : ::
   268 de ce type d'entité est le suivant : ::
   269 
   269 
   270 
   270 
   271     class EPermission(MetaEntityType):
   271     class CWPermission(MetaEntityType):
   272 	"""entity type that may be used to construct some advanced security configuration
   272 	"""entity type that may be used to construct some advanced security configuration
   273 	"""
   273 	"""
   274 	name = String(required=True, indexed=True, internationalizable=True, maxsize=100)
   274 	name = String(required=True, indexed=True, internationalizable=True, maxsize=100)
   275 	require_group = SubjectRelation('EGroup', cardinality='+*',
   275 	require_group = SubjectRelation('CWGroup', cardinality='+*',
   276 					description=_('groups to which the permission is granted'))
   276 					description=_('groups to which the permission is granted'))
   277 	require_state = SubjectRelation('State',
   277 	require_state = SubjectRelation('State',
   278 				    description=_("entity'state in which the permission is applyable"))
   278 				    description=_("entity'state in which the permission is applyable"))
   279 	# can be used on any entity
   279 	# can be used on any entity
   280 	require_permission = ObjectRelation('**', cardinality='*1', composite='subject',
   280 	require_permission = ObjectRelation('**', cardinality='*1', composite='subject',
   309 				  RRQLExpression('O require_permission P, P name "add_version",'
   309 				  RRQLExpression('O require_permission P, P name "add_version",'
   310 						 'U in_group G, P require_group G'),)
   310 						 'U in_group G, P require_group G'),)
   311 		       }
   311 		       }
   312 	inlined = True
   312 	inlined = True
   313 
   313 
   314 Cette configuration suppose indique qu'une entité `EPermission` de nom
   314 Cette configuration suppose indique qu'une entité `CWPermission` de nom
   315 "add_version" peut-être associée à un projet et donner le droit de créer des
   315 "add_version" peut-être associée à un projet et donner le droit de créer des
   316 versions sur ce projet à des groupes spécifiques. Il est important de noter les
   316 versions sur ce projet à des groupes spécifiques. Il est important de noter les
   317 points suivants :
   317 points suivants :
   318 
   318 
   319 * dans ce cas il faut protéger à la fois le type d'entité "Version" et la
   319 * dans ce cas il faut protéger à la fois le type d'entité "Version" et la
   320   relation liant une version à un projet ("version_of")
   320   relation liant une version à un projet ("version_of")
   321 
   321 
   322 * du fait de la généricité du type d'entité `EPermission`, il faut effectuer
   322 * du fait de la généricité du type d'entité `CWPermission`, il faut effectuer
   323   l'unification avec les groupes et / ou les états le cas échéant dans
   323   l'unification avec les groupes et / ou les états le cas échéant dans
   324   l'expression ("U in_group G, P require_group G" dans l'exemple ci-dessus)
   324   l'expression ("U in_group G, P require_group G" dans l'exemple ci-dessus)
   325 
   325 
   326 
   326 
   327 Utilisation d'expression RQL sur les droits en lecture
   327 Utilisation d'expression RQL sur les droits en lecture