Digital Helsinki CMS

Build status codecov Requirements Stories in Ready

This Wagtail-based CMS powers the Digital Helsinki website.

Installation

Set the DEBUG environment variable to 1

export DEBUG=1

Install required Python packages

(sudo) pip install -r requirements.txt

Create the database

sudo -u postgres createuser digihel
sudo -u postgres createdb -O digihel digihel

Install node dependencies

npm install

Install bower components

./manage.py bower install

If you have acquired a database dump, install it this way:

tar xvjf digihel-backup.tar.bz2
pg_restore -d digihel digihel.sql
echo "delete from wagtailimages_rendition;" | ./manage.py dbshell

Requirements

This project uses two files for requirements. The workflow is as follows.

requirements.txt is not edited manually, but is generated with pip-compile.

requirements.txt always contains fully tested, pinned versions of the requirements. requirements.in contains the primary, unpinned requirements of the project without their dependencies.

In production, deployments should always use requirements.txt and the versions pinned therein. In development, new virtualenvs and development environments should also be initialised using requirements.txt. pip-sync will synchronize the active virtualenv to match exactly the packages in requirements.txt.

In development and testing, to update to the latest versions of requirements, use the command pip-compile. You can use requires.io to monitor the pinned versions for updates.

To remove a dependency, remove it from requirements.in, run pip-compile and then pip-sync. If everything works as expected, commit the changes.

Configuration

These settings are recognized in the Django settings.

You can acquire the Twitter keys from the Twitter developer portal (https://apps.twitter.com).

Docker

Currently the development environment has been dockerized.

Configurations

Configure the following settings to local_settings.py:

DEBUG = True

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'postgres',
        'USER': 'postgres',
        'PASSWORD': 'postgres',
        'HOST': 'db',
        'PORT': '5432',
    }
}

Daily running