# Scope

Django project, without virtual environment.

Hint, to create a virtualenv in the current dir: `virtualenv --python=python3.7 .`
This probably requires you to have built python3.7 manually and have debian packages installed: `python3-virtualenv python-virtualenv`

Then activate the virtenv: `source bin/activate`
To later deactive: `deactivate`


# Prerequisites

## Python 3.7.4

Older versions might work, development environ and runtime environment run Python-3.7.4
Currently newer then in the repo's, if that's still the case, you might have to compile and built it yourself.

If you notice you can' t use ssl when using pip, you should have installed `libssl-dev` before building python, or any of the following packages: `libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev`

## System packages needed for psycopg2
Install either postgresql-server-dev-X.Y or libpq-dev: `sudo apt install`...

## Python packages

Install required pyton packages: `pip3 install -r requirements.txt`

## Postgres database with user.

Fill in the passwords, don't change the database name, it's hardcoded in pyRot, for now.
1. `sudo apt install postrgresql`
1. `sudo su - postgresql`
1. `psql`
1. `CREATE ROLE website WITH LOGIN PASSWORD '';
1. `CREATE DATABASE website WITH OWNER = website;`
1. `CREATE ROLE pyrot WITH LOGIN PASSWORD '';`
1. `GRANT ALL ON DATABASE website TO pyrot;`
1. Connect to database website
1. `GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO pyrot;`
1. `GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO pyrot;`

## DB authentication

For now, set the database authentication details in the following files:
1. website/website/settings.py
1. rotbot/bot.py

## Create the database tables and static files.

1. `cd website`
1. `python manage.py makemigrations`
1. `python manage.py migrate`
1. `python manage.py collectstatic`

## uwsgi
1. `sudo ln -s /opt/h0v1n8-website-env/website_uwsgi.ini /etc/uwsgi/vassals/website_uwsgi.ini`
1. `sudo nano /etc/rc.local`:
```
#!/bin/sh

/opt/h0v1n8-env/bin/uwsgi --emperor /etc/uwsgi/vassals/ --daemonize /var/log/uwsgi-emperor.log`

exit 0
```
Test with: `bin/uwsgi --emperor /etc/uwsgi/vassals/`
TBD
/etc/rc.local:

## Nginx configuration
1. See if you to change `STATIC_ROOT` in `website/website/settings.py`.
1. `sudo ln -s /opt/h0v1n8-website-env/website_nginx.conf /etc/nginx/sites-enabled/website_nginx.conf`
1. `sudo systemctl reload nginx`



# Testing the project.

## webgui

1. `cd website`
1. `python manage.py runserver`

# Running the project
## pyRot
The pythonic version of RotBot, there have been 5 earlier versions including winRot and javaRot.

1. `cd rotbot`
1. `python bot.py 1` Where `1` is the ID of the server database record.


# Edeting the look of the webgui

## Build Fomatic-ui 2.7.8

### Requirements: NodeJS 10.15.3 & NPM 6.4.1

On debian: `sudo apt install npm`
