Blender development fund website. https://fund.blender.org
Go to file
2024-08-22 10:02:46 +02:00
assets_shared@8839ec4de3 Bump web-assets submodule to bring in a JS fix 2023-11-28 15:07:33 +01:00
blender_fund Admin mail: change subject prefix to domain 2024-08-22 10:00:58 +02:00
blender_fund_main Stripe: delay handle_payment_intent_succeeded 30 sec to avoid racing with the return page 2024-08-22 10:02:46 +02:00
blender_notes Upgrade to Django 4.2 2024-06-20 20:04:26 +02:00
campaign/simulator Campaign: revive code to make dummy gifts data for development 2023-12-31 13:23:31 +01:00
docs Automate Customer creation 2018-07-28 15:33:15 +02:00
donation-box@398d77d64b Version: Bump donation box to v1.0.12 2024-04-29 15:53:03 +02:00
GeoLite2-Country_20181002 Set default currency based on GeoIP database 2018-10-09 12:30:26 +02:00
logentry_admin Breaking changes: account-less checkout 2023-10-26 16:07:53 +02:00
playbooks Playbooks: use shared, add new staging inventory 2024-08-12 11:50:22 +02:00
templates Remove old checkout template (unused) 2024-08-09 18:26:12 +02:00
.coveragerc Tests: add coverage config 2023-11-23 11:44:28 +01:00
.env.example Settings: use .env 2024-08-09 18:27:24 +02:00
.gitignore Settings: use .env 2024-08-09 18:27:24 +02:00
.gitmodules Playbooks: use shared, add new staging inventory 2024-08-12 11:50:22 +02:00
deploy.sh Playbooks: use shared, add new staging inventory 2024-08-12 11:50:22 +02:00
LICENSE.txt Add GPL 3 license file 2019-11-05 11:20:51 +01:00
manage.py Refactor into an example app 2018-06-27 19:57:20 +02:00
pyproject.toml Replace poetry with requirements{,_dev,_prod}.txt 2024-07-01 17:11:03 +02:00
README.md Settings: use .env 2024-08-09 18:27:24 +02:00
requirements_dev.txt Deps: only install python-dotenv in dev 2024-08-20 18:28:25 +02:00
requirements_prod.txt Replace poetry with requirements{,_dev,_prod}.txt 2024-07-01 17:11:03 +02:00
requirements.txt Deps: only install python-dotenv in dev 2024-08-20 18:28:25 +02:00
setup.cfg deps: bump mypy, update setup.cfg 2024-07-11 12:09:23 +02:00

Table of Contents

Blender Development Fund

Development

Requirements

Recommended for local development:

virtualenvwrapper adds commands for naming, creating, listing, activating and deactivating Python virtualenvs, which makes it much easier to work on various Python projects.

If you prefer not to use it, any other way of creating a virtualenv or venv will do.

Database setup

To create a new Blender Development Fund database, run this as the PostgreSQL root user:

CREATE USER blender_fund CREATEDB PASSWORD 'blender_fund';
CREATE DATABASE blender_fund OWNER blender_fund;
CREATE SCHEMA blender_fund;
GRANT ALL ON schema blender_fund TO blender_fund;

Password can be changed using the following:

ALTER ROLE blender_fund WITH PASSWORD 'new_password';

In case of production, make sure that blender_id user has a good hard to guess password.

Development server setup

Make a copy of example .env:

cp .env.example .env

Initialise the submodule included into this repo:

git submodule update --init

While inside project's directory, run the following to install project dependencies. Note that path to python3.10 binary might differ in your OS, adjust the mkvirtualenv command accordingly:

mkvirtualenv fund -a `pwd` -p /usr/bin/python3.10
pip install -r requirements_dev.txt
./manage.py migrate
./manage.py loaddata systemuser devfund default_site
./manage.py collectmedia --noinput
./manage.py runserver 8010
./manage.py createsuperuser

The last command creates an admin account that can be used to log in at http://fund.local:8010/admin/.

Working with virtualenvwrapper

In addition to mkvirtualenv mentioned above, the following commands are useful:

  • use workon fund to go to Fund's project directory and activate its virtualenv;
  • use deactivate to "exit" it;
  • use lsvirtualenv to list existing virtualenvs;
  • use rmvirtualenv fund to delete Fund's virtualenv.

Blender ID

Blender DevFund, as all other Blender web services, uses Blender ID.

For development, Blender ID's code contains a fixture with an OAuth app that should work without any changes to default configuration. To load this fixture, go to your development Blender ID and run the following:

./manage.py loaddata blender_development_fund_devserver

CMS

We use Wagtail as CMS for providing access to dynamic content of the website, such as page titles, calls to action, or entire pages. The CMS is accessible at the /cms endpoint.

Note: we are currently using a development version of Wagtail, therefore we need to build the static assets for the package ourselves. Check the warning in the startup log for more info on how to do it.

Stripe integration

TODO improve this section.

Follow the official guide for setting up Stripe CLI: https://stripe.com/docs/development/quickstart

Webhook testing

Run a local listener that will make webhook requests to your development server:

stripe listen --forward-to fund.local:8010/webhooks/stripe/

Run background tasks that are created by the webhook code:

./manage.py process_tasks

Documentation

cd docs
mkdocs serve -a localhost:8080

Testing

Run ./manage.py test --parallel to run all project's tests.

Use the --reuse-db option to speed up subsequent test runs. However, this skips the database migrations; add --create-db on the CLI to recreate the test database and run all the migrations when necessary.

GeoIP

The GeoIP database was downloaded from GeoLite2-Country

Deploy

See playbooks.