# Neptune
Django app to handle to manage subscriptions to products using Stripe, and implementation of the products themselves.

## Setting up the environment
Create the virtual environment, enable it, and install the dependencies.
```shell
$ python3 -m venv env
$ source env/bin/activate
(env) $ pip install -r requirements.txt
```

## Local settings
You'll need to copy the `app/local_settings.example.py` file to `app/local_settings.py`. The project won't start otherwise.
```
$ cp app/local_settings.example.py app/local_settings.py
```

## Running database migrations
Now we need to run the database migrations in order to get a working database.
```shell
(env) $ python manage.py migrate
```

## Creating a superuser
In order to access Django admin, we need a superuser.
```shell
(env) $ python manage.py createsuperuser
Username: t2
Email address: t2@google.com
Password: 
Password (again): 
Superuser created successfully.
```

## Running the server
```shell
(env) $ python manage.py runserver 8001
Starting development server at http://127.0.0.1:8001/
Quit the server with CONTROL-C.
```
As you've guessed, you can access it at http://127.0.0.1:8001/

## Troubleshooting
Sometimes Django is difficult.

> `django.db.utils.OperationalError: no such table: core_user`

This means you haven't yet run the migrations. See above.

### Updating the models
If you make changes to the database models, you will need to create new migrations.
Do this like so:
```shell
(env) $ python manage.py makemigrations
```
Afterwards, we can apply them as normal.
```shell
(env) $ python manage.py migrate
```