Rotary Driver App Documentation¶
Release 1.0
Bryce Chambers
03 March, 2018
Introduction¶
The Rotary Driver App (RDA) is an online platform for reserving cars for the Rotary Community Driver Program. It aims to provide an efficient and convenient way of reserving cars for all individuals involved.
Issues caused by human error can easily be avoided by the RDA, like preventing conflicting reservations.
System Features¶
Introduction¶
This section details the core functionality of the system, and should be examined in tandem with the technical documentation.
Managing Users¶
Add User¶
- Description and Priority
This is a high priority feature which allows the system administrators to create a new user of a particular type.
- Stimulus/Response Sequences
Edit User¶
- Description and Priority
This is a medium priority feature which allows the system administrators or users to edit user information.
- Stimulus/Response Sequences
Make Booking Request¶
- Description and Priority
This is a high priority feature which allows the users to create a request a booking for a car.
- Stimulus/Response Sequences
Tracking Bookings¶
- Description and Priority
This is a medium priority feature which allows the users to find their requests and to see the progress of its approval.
Add Car¶
- Description and Priority
This is a high priority feature which allows the system administrators to create a new car.
Edit Car¶
- Description and Priority
This is a low priority feature which allows the system administrators to edit an existing car.
Remove Car¶
- Description and Priority
This is a low priority feature which allows the system administrators to remove a car from the database.
User Guide¶
Introduction¶
This is a how-to-guide for students, mentors and organizers of the program
How to Create an Account¶
- Visit the user sign-up page
- You will receive a verification email. Follow the link inside to confirm your account
How to Make a Booking¶
- Login using your account

- Open the menu on the top right of the page. Click ‘Create Booking’ or ‘View Calendar’. A booking can be created from either of these pages. The Calendar view is recommended so that you can view current bookings and availabilities for mentors.


Enter a start time for the booking. An end time will be automatically populated for you. Select a mentor (the mentor must be available to create a booking). Select a car. The system will produce errors in the following cases:
- There is less than 30 minutes between bookings
- The booking clashes with another booking
- The proposed booking date/time is outside business hours (9am - 8pm)
- The selected mentor is not available or booked for the proposed booking date/time
- The selected car is booked during the proposed booking date
- The booking is in the past
- The booking is > 6 weeks ahead
A success message will display on booking creation.
- You will receive a booking creation email, with details about the pending booking.

- Once the mentor accepts the booking, you will receive a booking confirmation email.

How to View Bookings¶
- Login to your account
- Open the menu and select ‘View Bookings’
- Here you can see a list of bookings and their status

- To view more details about a specific booking, click on its booking ID

(Mentors) How to Approve Booking Request¶
- Login to your account
- Open the menu and click ‘View Bookings’
- Select a pending booking and click ‘Approve’

- You will receive a confirmation email
(Mentors) How to Cancel Booking Request¶
As above, only select ‘Cancel’ on the booking detail page. You, and the student will receive a cancellation email.
(Mentors) How to Enter Availabilities¶
- Login to your account
- Open the menu, slect ‘Add Availaility’ or ‘View Calendar’. An availability can be added from either of these pages.


- Select a start and end date for your availability. Availabilities are limited to 12hrs, and must be within business hours (9am - 8pm)
- The system will generate errors in the following cases:
- The start and end date are the same
- The end date is before the start date
- The availability is in the past
- The availability is > 6 weeks in the future
- You will see a success message upon submit
System Administrators Guide¶
Introduction¶
The system admin has the ability to make new users, edit their information and to delete user accounts.
How to Add a New System Admin¶
- Login to django admin (url/admin)

- Click ‘Add User’ on the top right of the page

- Enter the users details and save

- On the next page, scroll down and select ‘Staff Status’ and sys admin group, then save
How to Remove User¶
- Login to django admin (url/admin)
- Open the users table
- Click the name of the user you want to remove
- Click the ‘Delete’ button
- Confirm deletion
How to Add a Car¶
- Login to django admin (url/admin)
- Open the Car table
- Select ‘Add Car’ in the top right hand corner
- Enter a CarID and tick ‘is_available’

- Save
Note: if a car does not have is_available ticked, the system will assume the car is not available. It will not be displayed for booking to users.
Technical Document¶
Introduction¶
The program is composed of different modules, classes, and tools for the software itself to be fully functional. Its components, their relationships, and their features are described in this portion, as well as the dependencies used for optimal end-product utilization.
Database Schema¶
The database schema presents the relationships between the classes (relations) involved in the system’s backend. It also includes the fields of each class and how they interact with other classes.
The following figure shows the initial database schema of the system.

The class diagram abov details objects in the database. It also shows how a booking is created and how it is approved by the mentor. For a reservation to be instantiated, the booking class needs a car, user, mentor, start_time and end_time. Validation for car availability and conflicting bookings is performed in Forms.py and Models.py rather than in the Booking class itself.
Modules¶
Current:
auth
- forms.py
- user registration form
- views.py
- add user(s)
- view user(s)
- models.py
- user attributes reflected in database
- urls.py
- reference for user navigation on the website
reservation
- forms.py
- reservation form
- availability form
- views.py
- add reservation(s)
- view reservation(s)
- show reservation(s) status
- change reservation(s) status
- models.py
- reservation attributes reflected in database
- urls.py
- reference for user navigation on the website
Dependencies¶
Database¶
PostgreSQL (Postgres) - An object-relational database management system (ORDBMS) used to store and retrieve data securely. - The extensibility, reliability, stability, and compatibility of PostgreSQL are the key reasons why it was chosen as the project database server.
Django_post-office¶
- A Django application that queues emails and sends them at user-defined intervals (i.e. every X minutes via cron)
- It provides logging abilities and the ability to view sent emails
- It allows html and plain text email templates to be stored in the database
- https://github.com/ui/django-post_office
Django-Bootstrap-Form¶
- Allows for bootstrap-styled forms without large amounts of css
- Uses filters inside curly braces, i.e. {{ form.car|bootstrap }}
- https://django-bootstrap-form.readthedocs.io/en/latest/#installation
Django-bootstrap3-datetimepicker¶
- A form widget that allows for easy integration of a bootstrap3 datetimepicker
- Used on availability forms, booking forms use (https://github.com/Eonasdan/bootstrap-datetimepicker) instead due to javascript requirements to populate end_time
- https://github.com/inducer/django-bootstrap3-datetimepicker
Bootstrap 3¶
- The majority of the site is styled using bootstrap3, without it the site will not be styled as intended, and functionaility may be impeded