Hello,
I want to add a condition to a Magritte-described object that checks the
whole object for consistency (and not just a single attribute). Is that
possible?
Example: Think about creating a workgroup from some of the users of your
site. The workgroup has a manager. The condition is that the manager must be
one of the members of the workgroup.
I've tried to do this. I have two descriptions on the workgroup class side:
one for the manager (saying that it can be any of the site's users) and one
for the users (saying that this is a subset of all users). I can add a
method #description to modify the standard description that is assembled
from the description* methods on the class side. So I tried:
Workgroup>>description
^super description
addCondition: [:workgroup | workgroup users includes: workgroup
manager]
labelled: 'Manager must be a member of the workgroup';
yourself
Alas, trying to edit an existing workgroup, I learned that the argument of
the condition block is a MACheckedMemento, so I can't ask it for users.
What would be the best way to have this check everytime the work group is
edited? Or should I just write the #manager: method such that the condition
will be satisfied automatically?
Cheers
Matthias
PS: I want to say a big thank you, especially to Lukas, for the great
answers on this list. I have learned something every time, and I was
impressed when my questions on how to do something were answered with a
patch.
PPS: No, this email is not a request for a patch :-)