This is an old revision of the document!
grantTutorRights(ident uid, ident username, ident exerciseId, ident groupId) { assume exists //accounts/account[uid]/assistant[id]; assume exists //accounts/account[username]; # implicitly true in OO implementations assume exists //exercises/exercise[exerciseId]/groups/group[groupId]; assume not exists //accounts/account[username]/tutor[exerciseId]/group[groupId]); assume not exists //exercises/exercise[exerciseId]/groups/group[groupId]/tutor[account]; # implied by integrity and the assumption before if not exists //accounts/account[username]/tutor[exerciseId] then # we could split the tutor rights here insert //accounts/account[username] <tutor exercise=[exerciseId] />; fi insert //accounts/account[username]/tutor[exerciseId] <group id=[groupId] />; insert //exercises/exercise[exerciseId]/groups/group[groupId] <tutor account=[account] />; }