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
Search User
  • Description and Priority

This is a medium priority feature which allows the system administrators to search users based on some chosen filters.

  • Stimulus/Response Sequences
Making Booking Requests

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

  1. Visit the user sign-up page
  2. You will receive a verification email. Follow the link inside to confirm your account

How to Make a Booking

  1. Login using your account
_images/login.png
  1. 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.
_images/create-booking.png _images/create-booking-cal.png
  1. 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.

  1. You will receive a booking creation email, with details about the pending booking.
_images/booking-success-email.png
  1. Once the mentor accepts the booking, you will receive a booking confirmation email.
_images/booking-confirmation-email.png

How to View Bookings

  1. Login to your account
  2. Open the menu and select ‘View Bookings’
  3. Here you can see a list of bookings and their status
_images/booking-list.png
  1. To view more details about a specific booking, click on its booking ID
_images/booking-detail.png

(Mentors) How to Approve Booking Request

  1. Login to your account
  2. Open the menu and click ‘View Bookings’
  3. Select a pending booking and click ‘Approve’
_images/confirm-booking.png
  1. 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

  1. Login to your account
  2. Open the menu, slect ‘Add Availaility’ or ‘View Calendar’. An availability can be added from either of these pages.
_images/add-availability.png _images/add-availability-cal.png
  1. 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
  2. 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

  1. Login to django admin (url/admin)
_images/django-admin-login.png
  1. Click ‘Add User’ on the top right of the page
_images/django-admin-users.png
  1. Enter the users details and save
_images/django-admin-users-save.png
  1. On the next page, scroll down and select ‘Staff Status’ and sys admin group, then save

Adding Students

Same process as above, except select ‘student’ group

_images/add-student.png

Adding Mentors

Same process as above, except select ‘Mentor’

_images/add-mentor.png

How to Remove User

  1. Login to django admin (url/admin)
  2. Open the users table
  3. Click the name of the user you want to remove
  4. Click the ‘Delete’ button
  5. Confirm deletion

How to Add a Car

  1. Login to django admin (url/admin)
  2. Open the Car table
  3. Select ‘Add Car’ in the top right hand corner
  4. Enter a CarID and tick ‘is_available’
_images/add-car.png
  1. 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.

_images/class-diagram.png

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
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