# Contributing

This guide explains how to contribute.

## Requirements

Django and other related libraries aren't included with python by default, and need to be installed:

1. Setup a python virtual environment

    `python -m venv venv`

2. Activate the virtual environment

    `source venv/bin/activate` (linux)

    `./venv/Scripts/activate.ps1` (windows)

3. Install the pip dependencies

    `pip install -r requirements.txt`

## Migrations

Migration files instruct the database on how to create tables and other entities.

Migration files have already been created, you can import them with:

`python manage.py migrate`

If you make changes to the models, you will need to update the migrations:

Available app names are:

- "home"
- "authentication"

`python manage.py makemigrations <APP_NAME>`

## Fixtures

Fixtures allow you to import default data into the database.
They is very useful for testing purposes.

The following fixture options are available:

- `authentication/defaultuser.json` add some default users (<admin@mail.com> & <user@mail.com>, password=password)
- `authentication/department.json` add some default departments
- `home/ticketpriority.json` add some default ticket priorities
- `home/tickettag.json` add some default ticket tags
- `home/defaulttickets.json` add some default tickets (depends on ticketpriority and tickettag fixtures)

You can import a fixture using the following command (remember to replace `<OPTION>` with one of the above options):

`python manage.py loaddata apps/fixtures/<OPTION>`

## Running

1. Run the development server

    `python manage.py runserver`

2. Access the website

    `http://localhost:8000`
