Reservation Flags - YaleSTC/reservations GitHub Wiki
Flagging Reservations
flags
is a bitmask that holds miscellaneous booleans.
Basic Usage
To use any of the currently existing flags, pass the flag's symbol to these methods: flagged?(flag)
, flag(flag)
, and unflag(flag)
. Note that you must call save
after changing flags.
To assign multiple flags at once, you can use |
to concatenate them, e.g.
res.flags |= Reservation::FLAGS[:request] | Reservation::FLAGS[:expired]
res.save!
Current Flags
request
, used to remember which reservations started off as requestsbroken
, used to mark a reservation that resulted in broken equipment (NOT YET IMPLEMENTED, see issue #1216)lost
, used to mark a reservation where the equipment was lost (NOT YET IMPLEMENTED, see issue #1216)fined
, used to mark a reservation that has incurred a fine (NOT YET IMPLEMENTED, see issue #1216)missed_email_sent
, used to remember if we've sent a missed notification email so we don't spam users.expired
, used to mark requests that were denied because the start date passed before the request could be approved or denied
Adding a New Flag
To add a new flag, you will need to add it to the FLAGS
hash in the reservation model.
FLAGS = { request: (1 << 1), broken: (1 << 2), lost: (1 << 3),
fined: (1 << 4), missed_email_sent: (1 << 5),
expired: (1 << 6) }
The value that your new flag maps to should be a shift of one greater than whatever the last shift is. In this case, that would be (1 << 6)
.
FLAGS = { request: (1 << 1), broken: (1 << 2), lost: (1 << 3),
fined: (1 << 4), missed_email_sent: (1 << 5),
expired: (1 << 6), your_new_flag: (1 << 7) }
You can now use your new flag with the flagged?(flag)
, flag(flag)
, and unflag(flag)
methods!