Skip to content

About

Political Revolution Site using Python+Django+Wagtail

Resources

Stars

4 stars

Watchers

2 watching

Forks

Repository files navigation

polrev-django

Development Setup

Linux / WSL

.bashrc

export DOCKER_GATEWAY_HOST="`hostname -I | awk '{print $1}'`"
export POLREV_DOMAIN=docker.localhost

Django Setup

cd polrev

python manage.py migrate
python manage.py collectstatic
python manage.py createsuperuser
python manage.py runserver

Wagtail Setup

Login to the Wagtail admin: http://localhost:8000/admin/

Edit the Blog page under Pages. Change the title to 'Political Revolution'

Navigate to Settings/Sites. Change the site name to 'Political Revolution'. Change the root page to 'Political Revolution' as well.

Docker Compose

Development

cp .env.dev.example .env
cp docker-compose.dev.yml docker-compose.override.yml
docker compose up

Production

cp docker-compose.prod.yml docker-compose.override.yml
docker compose up -d

Dump Data

./manage.py dumpdata --natural-foreign --indent 2 \
    -e contenttypes -e auth.permission  \
    -e wagtailcore.groupcollectionpermission \
    -e wagtailcore.grouppagepermission -e wagtailimages.rendition \
    -e wagtailsearch.indexentry \
    -e sessions -o ./dump/db.json.gz

Load Data

cd polrev
./manage.py loaddata ./dump/db.json.gz

Make Migrations

cd polrev
./manage.py makemigrations puput
./manage.py makemigrations avatar
./manage.py makemigrations joyous
./manage.py makemigrations

Check Deployment

cd polrev
DJANGO_SETTINGS_MODULE=polrev.settings.production ./manage.py check --deploy

Traefik/Let's Encrypt

sudo chmod 600 acme.json

Generic Production Update Procedure

Development

cd polrev
hatch shell
./manage.py makemigrations
git push

Production

docker compose down
git pull
docker compose build
docker compose up db redis
hatch shell
cd polrev
./manage.py migrate
./manage.py flush --noinput
./manage.py loaddata ./dump/db.json.gz --verbosity 3
cd ..
docker compose up -d

Postgres

psql -U polrev polrev

This is set up to dump to an s3 bucket Run from inside the django container

Install psql

sudo apt install postgresql-client

Backup

#./manage.py dbbackup -z
#./manage.py dbbackup -x 'public.wagtailsearch_indexentry'
./manage.py dbbackup

Restore

#./manage.py dbrestore -z
./manage.py dbrestore

Docker

Backup

docker exec -i polrev-db-1 /usr/bin/pg_dump -U polrev polrev | gzip -9 > 20220418.sql.gz 

SCP

scp 20220418.sql.gz me@pol-rev.com:Dev

Restore

docker cp 20220418.sql.gz polrev_dbbackup_1:/backups

docker exec --tty --interactive polrev_dbbackup_1 /bin/sh -c "zcat ./backups/20220418.sql.gz | psql --host db --username=polrev --dbname=polrev -W"

Delete Wagtail Renditions

./manage.py dbshell
polrev=# delete from wagtailimages_rendition;

S3 Synchronization

rclone rcd --rc-web-gui

rclone/rclone#2658

From Production to Development

cd polrev
rclone copy polrev-backup:polrev-backup minio:polrev-backup --no-gzip-encoding
./manage.py dbrestore -z
rclone copy polrev:polrev/media minio:polrev/media

From Development to Production

rclone copy minio:polrev-backup polrev-backup:polrev-backup --no-gzip-encoding

Time Synchronization

sudo apt install ntpdate
wsl -d docker-desktop -e "hwclock -s"

Search

cd polrev
./manage.py update_index

About

Political Revolution Site using Python+Django+Wagtail

Resources

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages