Allows staff to book rooms for a given time and date and view room availability. Provides admins with additional privileges such as managing rooms, bookings and users.
- Set up virtual environment
python3 -m venv env
- Install requirements
pip install -r requirements.txt
- Change directory into
roomBooking
- Create admin user and follow instructions
python manage.py createsuperuser
- Run server
python manage.py runserver
- Login with created admin account
After setup, login with the newly created account.
Logging in as an admin takes the user to the admin dashboard. Here, admins can manage users, rooms, bookings as well as make bookings themselves.
Clicking on User management allows admins to add and remove users.
Clicking on staff/admin account takes the user to the account signup form. Admins can assign if the newly created user should be made an admin or staff account.
Upon form submission, admins are taken back to User management:
Now back to the dashboard by clicking Home.
Room creation, modification and deletion is handled in Room management:
The room creation form asks for a room name, room capacity and image.
Upon form submission, the user is taken back to Room management.
More rooms can be created:
Rooms can have their name and capacity modified. For example, here Room Red has changed to Room Purple and has a new capacity of 10 people. The form is also autofilled with Room Red's old name and old capacity before editing.
Deleting rooms requires an additional confirmation:
Returning back to the dashboard shows the 'Rooms available now' counter updated from 0 to 2, since 2 new rooms have been made with no bookings happening for them right now.
Booking creation, modification and deletion is handled in Booking management. Admins can see all bookings made by all users.
The booking creation form asks for a room to be a selected as well as an appropriate time. Date and time inputs are handled with django-datetime-widget
and limited so that users are only permitted to make bookings for the future. A room image carousel allows the users to preview the rooms and clicking on 'Check availability' allows users to confirm that no other bookings conflicts with theirs.
Upon form submission, the user is taken back to Booking management.
Creating another booking that lies on the same day as another, is valid and clicking on 'Check availability' will result in a availability confirmation message, as well as display all the current bookings for that day allowing users to adjust their bookings easily.
Creating a booking that conflicts with another will display an error message. Ignoring the message and clicking on 'Make booking' will result in the invalid booking page.
Creating another valid booking and returning to the dashboard updates the 'Bookings made' counter. When a meeting begins, the 'Meetings happening now' counter increments and the 'Rooms available now' counter decrements.
Deleting a booking requires additional confirmation. Both staff and admin users are given an alert on their dashboard when an admin deletes their booking which can be cleared by clicking 'Ok'.
Logging out and logging back in using a staff account:
The staff dashboard only allows users to make bookings.
Staff users can also only see their own bookings, unlike admins. See the admin booking demonstration to see the booking functionality.
Major
Users can overlap booking time slots for the same roomUsers can put end time before start time when booking roomStaff can access create room, book room, create user by hardcode entering url
Minor
- Changing start time to be after end time when modifying booking after creation opens new ValidationError page instead of displaying on current page
- Creating room with non unique name prevents adding but doesn't display error message or redirect anywhere
- Header text jumps back and forth sometimes?
Alert users when an admin has deleted their booking / room they bookedAllow users to see the booking history for diferent roomsBreak up admin home page layout into 3 buttons - account management, room management, booking management (put tables behind them)Meetings happening now counter not hooked upRooms available now counter not hooked up