Requires and Satisfies

The requires/satisfies mechanism is used to restrict the choice of rooms.

How it works

Who/what can require or satisfy?
The following atoms can require or satisfy a feature: events, staff, students, rooms.
How does this affect choice?
When Tatties picks a room for an event it ensures that all the requirements for the event are satified. The requirements of an event is the requiements of the teacher and those of the students attending together with the requirements of the event itself and those of the candidate room. The "satisfations" of the event are calculated similarly.

Notes

  • All requirements must be satisfied - the reverse is not true. There is no problem with events satisfying features which are never required.
  • Only the direct attendees count - if an attendee contains another group their requirements/satifactions are not considered. (Nor are any containers of attendees considered)
  • Only the direct room counts - if a room contains other rooms with different features - these are not considered.

Some examples

To ensure that particular events take place in particular types of room.
A chemistry practical must take place in a chemistry laboratory. We ensure that the event requires the feature chem.lab and that all chemistry laboratories (the rooms) satisfy the feature chem.lab.
Note that this will not keep other events out of the chemistry laboratories. There are probably good safety reasons why Maths classes must not take place in Chemistry Laboratories. The easiest way to prevent such things is to have a default feature which ordinary events require and which ordinary rooms satisfy.
General purpose rooms
Rooms which belong to the pool of general purpose share accomodation all have the feature gp.room. All events which are to take place in such rooms require this feature.
As the chemistry lab does not satisfy gp.room and the Maths event requires gp.room we can be sure that the maths events will not be place in labs.
To ensure exclusive access
Suppose we have a facility which is only to be used by a particular group of students. For example a computer lab might be dedicated to postgraduate students.
To keep the undergraduates out we could ensure that the room requires the feature cs.postgrad and that only groups of postgraduate students satisfy the feature cs.postgrad.
Not that in itself this will not ensure that postgraduates are always placed in the "postgraduate lab" where possible - simply that everyone else is excluded.
To ensure use
Suppose instead we do not care if the postgraduates have exclusive use, simply that all their events (which require labs) take place in the postgraduate lab.
In this case the feature cs.postgraduate might be a feature required of appropriate postgraduate events and satisfied by the room.
Specifying a particulart room
If an event is to take place in a specific room it can be placed there and "fixed" without worrying about features.