/ssp

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

ssp

System Securtiy Plan

Quick setup

The next steps assume that conda is already installed

1 - Create a conda environment:

conda create python=3.8 -n ssp

2 - Activate the conda environment

conda activate ssp

3 - Install the project basic dependencies and development dependencies

Make sure you are inside the root project directory before executing the next commands.

The root project directory is the directory that contains the manage.py file

On Linux and Mac

pip install -r requirements/local.txt

On Windows

pip install -r requirements\local.txt

4 - Configure the database connection string on the .env

On Linux and Mac

cp env.sample.mac_or_linux .env

On Windows

copy env.sample.windows .env

Change the value of the variable DATABASE_URL inside the file .env with the information of the database we want to connect.

Note: Several project settings have been configured so that they can be easily manipulated using environment variables or a plain text configuration file, such as the .env file. This is done with the help of a library called django-environ. We can see the formats expected by DATABASE_URL at https://github.com/jacobian/dj-database-url#url-schema.

5 - Use the django-extension's sqlcreate management command to help to create the database

On Linux:

python manage.py sqlcreate | sudo -u postgres psql -U postgres

On Mac:

python manage.py sqlcreate | psql

On Windows:

Since there is no official support for PostgreSQL 12 on Windows 10 (officially PostgreSQL 12 is only supported on Windows Server), we choose to use SQLite3 on Windows

6 - Run the migrations to finish configuring the database to able to run the project

python manage.py migrate
coverage run -m pytest

If for some reason you get an error similar to bellow, is because the DATABASE_URL is configured to postgres:///ssp and because of it the generated DATABASES settings are configured to connect on PostgreSQL using the socket mode. In that case, you must create the database manually because the sqlcreate is not capable to correctly generate the SQL query in this case.

ERROR:  syntax error at or near "WITH"
LINE 1: CREATE USER  WITH ENCRYPTED PASSWORD '' CREATEDB;
                     ^
ERROR:  zero-length delimited identifier at or near """"
LINE 1: CREATE DATABASE ssp WITH ENCODING 'UTF-8' OWNER "";
                                                             ^
ERROR:  syntax error at or near ";"
LINE 1: GRANT ALL PRIVILEGES ON DATABASE ssp TO ;
ERROR:  role "myuser" already exists
ERROR:  database "ssp" already exists
GRANT

You can delete the database and the user with the commands below and then perform step 5 again.

⚠️ Be very careful here!: The commands below erase data, and should only be executed on your local development machine and NEVER on a production server.

On Linux:

sudo -u postgres dropdb -U postgres --if-exists ssp
sudo -u postgres dropuser -U postgres --if-exists myuser

On Mac:

dropdb --if-exists ssp
dropuser --if-exists myuser