This application manages commitfests for the PostgreSQL community.
A commitfest is a collection of patches and reviews for a project and is part of the PostgreSQL development process.
This is a Django 4.2 application backed by PostgreSQL and running on Python 3.x.
First, prepare your development environment by installing pip, virtualenv, and postgresql-server-dev-X.Y.
sudo apt install python-pip postgresql-server-dev-14
Next, configure your local environment with virtualenv and install local dependencies.
python3 -m venv env
source env/bin/activate
pip install -r dev_requirements.txt
Create a database for the application:
createdb pgcommitfest
Create a local settings file (feel free to edit it):
cp pgcommitfest/local_settings_example.py pgcommitfest/local_settings.py
Now you can now create the required tables. Note that a password might need to be provided.
./manage.py migrate
For a quick start, you can load some dummy data into the database. Here's how you do that:
./manage.py loaddata auth_data.json
./manage.py loaddata commitfest_data.json
If you do this, the admin username and password are admin
and admin
. There
are a few other users as well (staff
, normal
, committer
,
inactive-committer
), that all have the same password as their username.
On the other hand, if you'd like to start from scratch instead, you can run the following command to create a super user:
./manage.py createsuperuser
Finally, you're ready to start the application:
./run_dev.py
Then open http://localhost:8007/admin to log in. Once redirected to the Django admin interface, go back to the main interface. You're now logged in.
Code formatting and linting is done using ruff
, biome
, and djhtml
.
You can run formatting using make format
. Linting can be done using make lint
and automatic fixing of linting errors can be done using make lint-fix
or make lint-fix-unsafe
(unsafe fixes can slightly change program behaviour,
but often the fixed behaviour is the one you intended). You can also run both
make format
and make lint-fix-unsafe
together by using make fix
. CI
automatically checks that you adhere to these coding standards.
You can install the git pre-commit hook to help you adhere to the codestyle:
ln -s ../../tools/githook/pre-commit .git/hooks/
If you want to discuss development of a fix/feature over chat. Please join the
#commitfest-dev
channel on the "PostgreSQL Hacking" Discord server
The staging server is available at: https://commitfest-test.postgresql.org/
User and password for the HTTP authentication popup are both pgtest
. The
main
branch is automatically deployed to the staging server. After some time
on the staging server, commits will be merged into the prod
branch, which
automatically deploys to the production server.
If you'd like to regenerate the database dump files, you can run the following commands:
./manage.py dumpdata auth --format=json --indent=4 --exclude=auth.permission > pgcommitfest/commitfest/fixtures/auth_data.json
./manage.py dumpdata commitfest --format=json --indent=4 > pgcommitfest/commitfest/fixtures/commitfest_data.json
If you want to reload data from dump file, you can run drop owned by postgres;
in the pgcommitfest
database first.