edcf363027
* Primary commit towards improved team communications. Add new events app to handle team notifications when various events happen, with a Type model which contain event types and a Routing model which controls routing of events to teams. Add shortslug for Camp and Team models. events.handler.py contains the code for sending irc and email notifications for teams. The first two eventtypes have been added in datamigrations, 'ticket_created' and 'public_credit_name_changed', and the tickets and profile apps have been adjusted accordingly. Team IRC channels can be marked as managed and if so the IRC bot will register the team channel with ChanServ if possible. Team IRC channels can be marked as private and the bot will set invite only and maintain an ACL with team members. Users can set their NickServ username in their profile to get on the ACL. Rework all team views and templates. Remove TeamArea model and make Team have an FK to Camp directly. Add docstrings a whole bunch of places. Move signal handlers to apps.py and signal_handlers.py in a few apps. Add basic team mailing list handling, more work to be done. Update bootstrap-devsite script to add more teammembers and add some team event routing for the two eventtypes we have. * default to the console backend for email unless we specifically ask for realworld email * fix signal for public_credit_name approval irc message * fix name display on /people/ page * fix the text on people pages when all non-responsible team members are anonymous * handle cases where we fallback to the area responsible properly * readd removed property, it is used in team_detail view * make it possible to filter profiles by public_credit_name_approved * add method for sending IRC messages in ircbot.utils.add_irc_message(), extend periodic bot method to do more than check for outgoing messages so rename it, refactor chanserv and nickserv handling code, create methods to check and join/part IRC channels as needed, maintain channel ACLs for private channels, do not autojoin any channels when instatiating the bot instead rely on the new check_irc_channels() method to join them, rename profile presave signal, add checking for changed nickserv usernames for acl handling, add teammember.irc_channel_acl_ok boolean to track ACL state, add missing help_text properties to TeamMember fields, rename teammember postsave signal, add teammember deleted signal, readd wrongly deleted EnsureTeamMemberResponsibleMixin * add a few missing early returns |
||
---|---|---|
schedule | ||
scripts | ||
src | ||
.gitignore | ||
.gitmodules | ||
LICENSE | ||
README.md |
Bornhack
Django project to power Bornhack. Features include news, villages, webshop, and more.
Setup
Clone the repo
Clone with --recursive to include submodules:
git clone --recursive https://github.com/bornhack/bornhack-website
If you already cloned the repository, you can add the submodules like this:
git submodule update --init --recursive
Virtualenv
Create a Python 3 virtual environment and activate it:
$ virtualenv venv -p python3
$ source venv/bin/activate
System libraries
Install system dependencies (method depends on OS):
- postgresql headers (for psycopg2):
- Debian: libpq-dev
- FreeBSD: databases/postgresql93-client
- libjpeg (for pdf generation)
- Debian: libjpeg-dev
- FreeBSD: graphics/jpeg-turbo
- wkhtmltopdf (also for pdf generation):
- Debian: wkhtmltopdf
- FreeBSD: converters/wkhtmltopdf
- fonts
- Debian: ?
- FreeBSD: x11-fonts/webfonts
Python packages
Install pip packages:
(venv) $ pip install -r src/requirements.txt
Configuration file
Copy environment settings file and change settings as needed:
(venv) $ cp src/bornhack/environment_settings.py.dist src/bornhack/environment_settings.py
Edit the configuration file, replacing all the {{ placeholder }}
patterns
(intended for Ansible).
Database
Is this a new installation? Initialize the database:
(venv) $ src/manage.py migrate
Is this for local development? Bootstrap the database with dummy data and users:
(venv) $ src/manage.py bootstrap-devsite
Deploy camps+program test data
Run this command to create a bunch of nice test data:
(venv) $ src/manage.py bootstrap-devsite
Done
Is this for local development? Start the Django devserver:
(venv) $ src/manage.py runserver
Otherwise start uwsgi or similar to serve the application.
Enjoy!
Notes
Add a camp
Add a new camp by running:
(venv) $ src/manage.py createcamp {camp-slug}
Then go to the admin interface to edit the camp details, adding the same slug that you just used and some current dates.
You can also specify details like:
- A sponsors page,
{camp-slug}_sponsors.html
, tosponsors/templates
. - A frontpage,
{camp-slug}_camp_detail.html
, tocamps/templates
. - A call for speakers page,
{camp-slug}_call_for_speakers.html
, toprogram/templates
. - A
static_src/img/{camp-slug}/logo
and add two logos:{camp-slug}-logo-large.png
{camp-slug}-logo-small.png
Contributors
- Alexander Færøy https://github.com/ahf
- Benjamin Bach https://github.com/benjaoming
- coral https://github.com/coral
- Henrik Kramshøj https://github.com/kramse
- Janus Troelsen https://github.com/ysangkok
- Jonty Wareing https://github.com/Jonty
- Kasper Christensen https://github.com/fALKENdk
- klarstrup https://github.com/klarstrup
- kugg https://github.com/kugg
- RadicalPet https://github.com/RadicalPet
- Reynir Björnsson https://github.com/reynir
- Ronni Elken Lindsgaard https://github.com/rlindsgaard
- Stephan Telling https://github.com/Telling
- Thomas Steen Rasmusssen https://github.com/tykling
- Víðir Valberg Guðmundsson https://github.com/valberg
- Ximin Luo https://github.com/infinity0