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