git Use ID
Conference management site for FOSSY. Forked from Linux Australia's version at
Statistics are disabled for this repository
Downloads are disabled for this repository
bsturmfels 9408a5c7bf65
9 hours ago
bsturmfels 9135d6006721
15 days ago
bsturmfels 8f2fb700944e
15 days ago
bsturmfels 1fccc11354e7
15 days ago
bsturmfels c56b15f279d1
19 days ago
bsturmfels 50cfcb768305
1 month ago
bsturmfels d11767cbf453
1 month ago
bsturmfels 87987e9ce945
1 month ago
bsturmfels 87fdbd8af1a3
1 month ago
bsturmfels 9cb0c6f6768a
1 month ago


At this time, considerations have not been made to have the django project run without additional infrastructure.

This can be configured in the future by switching the default DEFAULT_FILE_STORAGE django default, and properly configuring django to load subsequent configuration to switch this back to GCS on run in our testing and production environments.

Login is a bit more complicated, the default flow redirects you out to a SAML server, you can probably work something out with testshib. But if you go to /admin and log in, that will persist into /dashboard.

Required Configuration


1. Set the bucket in 1. Store your Service Account JSON in a file 1. Set GOOGLE_APPLICATION_CREDENTIALS to your account file 1. Set GCS_BUCKET to your bucket name


Please familiarise yourself with Shibboleth configuration and the general flow of how to register a SP with an IDP.

If you send the SP metadata statically, validity time must be removed.

You will also need to register your IDP metadata here either statically or remotely updated.

You may consider testing with testshib.

Configure signing and encryption keys, and configure them in the

Running a dev instance in Docker

Assuming you have docker installed and working on your machine::

will build you a container and run through the initial setup steps. The last stage interactively creates a superuser account: you'll need to interact with this for it to finish.

Once this has completed, you can hit http://localhost:28000/admin to log into the admin interface. Once you're logged in, http://localhost:28000 will take you to the dashboard.

Note that when you do this you're logged in as a superuser, so what you see will be different from what a normal user will see.

Making migrations

If you make changes to the data model, you'll need to run " makemigrations" to create a matching migration file. If you're on a mac, or a system without python3, this can be difficult.

In such a case, you can use the above script to make and run a dev container; then:

docker exec -it symposion ./ makemigrations

Running a dev instance in a VirtualEnv

Not all things are lovely, so we use constraints to force the versions we we wish for without having to do anything ugly. This may require a newer version of pip than is packaged with distros virtualenv.

Note that this application is python 3 only so you must create your virtualenv with a python3 interpreter.

  • <tt class="docutils literal">python3 -m venv venv</tt>
  • <tt class="docutils literal">source ./venv/bin/activate</tt>
  • <tt class="docutils literal">pip install -c constraints.txt -r requirements.txt</tt>
  • <tt class="docutils literal">pip install -c constraints.txt -r vendored_requirements.txt</tt>

Once your dev instance is up and running

Pre-post-start configuration

Now that we are ready to start the app, we need to do initial setup, start it, perform voodoo string magic, run more database jingling voodoo, and then we can start it up and start looking around and customising the application.

<tt class="docutils literal">./ migrate</tt> <tt class="docutils literal">./ runserver</tt>

Now we hit up the admin interface, find <cite>symposion_proposals</cite> <cite>proposalkind</cite> and add <cite>Talk</cite> slug <cite>talk</cite>, <cite>Tutorial</cite>:<cite>tutorial</cite>, and <cite>Miniconf</cite>:<cite>miniconf</cite>.

Shut down and now run: <tt class="docutils literal">./ populate_inventory</tt>

Now you can run the system and see how it goes.

Admin tasks

Admin Credentials

To create a local administrator account run:

<tt class="docutils literal">./ createsuperuser</tt>

and enter your username, email and password. This can then be used to login to: (http://localhost:8000/admin).

Base Data

On initial creation and whenever you reset the database you must reload the basic data. This data is stored in the /fixtures directory. You can load this with:

<tt class="docutils literal">./ loaddata ./fixtures/{conference,sites,sitetree,flatpages}.json</tt>

And to load the base admin users:

<tt class="docutils literal">./ loaddata ./fixtures/admin_users.json</tt>




Creating review permissions objects

After conference Sections have been created, this command will add Permission objects for those sections.

<tt class="docutils literal">./ create_review_permissions</tt>

CI/CD Workflow

4 stages:

  1. Dev Review apps
  4. (not yet live)
  • Driven by <cite>.gitlab-ci.yml</cite>

Stages 1 and 2 use sqlite databases; fixtures in the repo are loaded when the container starts but there is no persistent storage - except that stage 2 has some persistence of admin accounts. Stages 3 and 4 have (seperate) mysql backends which persist between deploys.

Stages 2-4 use SSO for login; stage 1 has admin accounts defined in fixtures.

All commits to any dev/* branch create a dev review app; for instance, a commit on dev/tchaypo/reviewapps becomes available at (for now you'll need to add <cite></cite> to /etc/hosts for this to work.)

Once a commit is accepted into <cite>/dev/2019</cite> it will also be auto-deployed to <cite></cite>.

Once it's been tested there and is ready for further testing it can be manually deployed to staging, which gives the first chance to test database migrations and to double-check the MySQL backend.

The CI/CD processes can be monitored through Gitlab's CI/CD page

Manual deployments (eg, to staging and production) can be initiated from a pipeline's page - eg - after prior stages pass.

Traps for new players

  1. Terms and Conditions during ticket purchase workflow are implemented by having a product category called something like "Terms & Conditions" with a product called "I accept". See <cite>settings.TERMS_PRODUCT_CATEGORY</cite> and <cite>pinaxcon/registrasion/management/commands/</cite>.


Couldn't upgrade to Django 3.2 due to <cite>python_2_unicode_compatible</cite> in <cite>pinax-stripe==4.4.0</cite>. Trialed <cite>pinax-stripe-light==5.0.0</cite>, which seems to be it's successor, but it's missing the <cite>pinax.stripe.models.Charge</cite> model.

Got <cite>AssertionError: database connection isn't set to UTC</cite> in development. Fixed by <cite>pip install psycopg2==2.8.6</cite>.