def enforceInstructionConstraints(event): """Enforce instruction constraints (IBeforeRelationshipEvent subscriber). """ if not IBeforeRelationshipEvent.providedBy(event): return if event.rel_type != URIInstruction: return if ((event.role1, event.role2) != (URIInstructor, URISection) and (event.role1, event.role2) != (URISection, URIInstructor)): raise InvalidRelationship('Instruction must have one instructor' ' and one section.') if not ISection.providedBy(event[URISection]): raise InvalidRelationship('Sections must provide ISection.')
def enforceCourseSectionConstraint(event): """Each CourseSections relationship requires one ICourse and one ISection """ if not IBeforeRelationshipEvent.providedBy(event): return if event.rel_type != URICourseSections: return if ((event.role1, event.role2) != (URICourse, URISectionOfCourse) and (event.role1, event.role2) != (URISectionOfCourse, URIInstructor)): raise InvalidRelationship('CourseSections must have one course' ' and one section.') if not ISection.providedBy(event[URISectionOfCourse]): raise InvalidRelationship('Sections must provide ISection.') if not ICourse.providedBy(event[URICourse]): raise InvalidRelationship('Course must provide ICourse.')
def enforceMembershipConstraints(event): """Enforce membership constraints (IBeforeRelationshipEvent subscriber).""" # XXX look through all the IBeforeRelationshipEvent subscribers, # if there are any, and convert them to something different. if not IBeforeRelationshipEvent.providedBy(event): return if event.rel_type != URIMembership: return if ((event.role1, event.role2) != (URIMember, URIGroup) and (event.role1, event.role2) != (URIGroup, URIMember)): raise InvalidRelationship('Membership must have one member' ' and one group.') if IBaseResource.providedBy(event[URIMember]): raise InvalidRelationship("Resources cannot be members of a group.") if not IGroup.providedBy(event[URIGroup]): raise InvalidRelationship('Groups must provide IGroup.') if IGroup.providedBy(event[URIMember]): raise InvalidRelationship("Groups cannot be members of a group anymore.") if isTransitiveMember(event[URIGroup], event[URIMember]): raise InvalidRelationship('No cycles are allowed.')
def enforceMembershipConstraints(event): """Enforce membership constraints (IBeforeRelationshipEvent subscriber).""" # XXX look through all the IBeforeRelationshipEvent subscribers, # if there are any, and convert them to something different. if not IBeforeRelationshipEvent.providedBy(event): return if event.rel_type != URIMembership: return if ((event.role1, event.role2) != (URIMember, URIGroup) and (event.role1, event.role2) != (URIGroup, URIMember)): raise InvalidRelationship('Membership must have one member' ' and one group.') if IBaseResource.providedBy(event[URIMember]): raise InvalidRelationship("Resources cannot be members of a group.") if not IGroup.providedBy(event[URIGroup]): raise InvalidRelationship('Groups must provide IGroup.') if IGroup.providedBy(event[URIMember]): raise InvalidRelationship( "Groups cannot be members of a group anymore.") if isTransitiveMember(event[URIGroup], event[URIMember]): raise InvalidRelationship('No cycles are allowed.')