Wafer apps for DebConf
This package contains several Django apps used by the DebConf
conference.
badges - Name tag generation
bursary - Bursary requests and review
debconf - Random bits and pieces
exports - CSV data exports for organisers
front_desk - Check-In
invoices - Paid Attendee Invoicing
register - Attendee Registration
volunteers - On-site volunteer wrangling
Configuration
Uses the following Django settings:
Invoicing:
DEBCONF_INVOICE_ADDRESS
: String. Postal address to issue invoices from.DEBCONF_BILLING_CURRENCY_SYMBOL
: String. The billing currency symbol. (e.g. $)DEBCONF_BILLING_CURRENCY
: String. The billing currency code. (e.g. USD)DEBCONF_BURSARY_CURRENCY_SYMBOL
: String. The bursary currency symbol. (e.g. $)DEBCONF_BURSARY_CURRENCY
: String. The bursary currency code (e.g. USD)DEBCONF_LOCAL_CURRENCY_RATE
: Decimal. The exchange rate. What does 1 DEBCONF_BILLING_CURRENCY buy in local currency.DEBCONF_LOCAL_CURRENCY_SYMBOL
: String. The local currency symbol.DEBCONF_LOCAL_CURRENCY
: String. The local currency code.INVOICE_PREFIX
: String. Prefix to invoice IDs.PRICES
: Dict of Dicts, with purchasable items and prices.
fee
: Dict of conferences fees, each having a name
and price
.meal
: Dict of Dicts, (breakfast
, lunch
, dinner
, conference_dinner
):
- Each having a
price
and optional name
.
accomm
: Dict of Dicts, (description
(String), price
(Decimal/int) per night, bursary
(bool), paid_separately
(bool), included_meals
(set of strs)) for each accommodation option. If an option has a price, it's for sale. If bursary, it'll be available for free for bursaried attendants.daytrip
: Dict of Dicts, (description
(String), long_description
(String), price
(Decimal/int), capacity
(int)) per option.
DAYTRIP_OPEN
: Boolean. Close daytrip registration.DAYTRIP_INSURANCE_OPEN
: Boolean. Close daytrip insurance registration.STRIPE_PUBLISHABLE_KEY
: String. Stripe API Publishable Key.STRIPE_SECRET_KEY
: String. Stripe API Secret Key.STRIPE_ENDPOINT_SECRET
: String. Stripe Webhook endpoint secret.
Dates:
DEBCONF_BURSARY_DEADLINE
: Date. The date that bursaries need to be submitted by, AoEDEBCONF_BURSARY_ACCEPTANCE_DEADLINE
: Date. The date that all bursaries need to be accepted by, or the attendee will be issued an invoice.DEBCONF_CONFERENCE_DINNER_DAY
: Date. The day that has the conference dinner.DEBCONF_CONFIRMATION_DEADLINE
: Date. The date that attendance needs to be confirmed by, AoE.DEBCONF_DATES
: List of (Description, Start Date, End Date) for the parts of the conference.DEBCONF_SKIPPED_MEALS
: List of (String: meal name, Date) of meals that will not be provided.VOLUNTEERS_FIRST_DAY
: Date. The first day of volunteering.VOLUNTEERS_LAST_DAY
: Date. The last day of volunteering.
Registration:
BURSARIES_CLOSED
: Boolean. Can bursary requests still be submitted.DEBCONF_BREAKFAST
: Boolean. Is DebConf providing breakfast for attendees.DEBCONF_SHOE_SIZES
: List of (Key, Description) for Shoe sizes.DEBCONF_T_SHIRT_SIZES
: List of (Key, Description) for T-Shirt sizes.RECONFIRMATION
: Boolean. Is there a reconfirmation round (set True once it has started).DEBCONF_REVIEW_FREE_ATTENDEES
: Boolean. Use the bursary system to review the attendance of free attendees too.DEBCONF_COLLECT_AFFILIATION
: Boolean. Ask attendees for their affiliation, for government sponsors.
MiniDebConf registration:
MINIDEBCONF_REGISTER_PHONE
: for minidebconfs, whether to ask for phone
numbers upon registration. Values:
None
- don't ask (default)False
- ask but not requireTrue
- ask and require
MINIDEBCONF_REGISTER_ARRANGED_ACCOMMODATION
: boolean. Determines whether
contributors can request to stay at the accomodation arranged by the orga
team (default: False
).MINIDEBCONF_REGISTER_ARRANGED_FOOD
: boolean. Determines whether attendees
can request to eat the meals arranged by the orga team (default: False
).MINIDEBCONF_REGISTER_TRAVEL_REIMBURSEMENT
: whether contributores can
request travel bursaries to the MiniDebConf (default: False).MINIDEBCONF_REGISTER_DEFAULT_COUNTRY
: string. Which country should be
selected by default in MiniDebConf registration form (default: None)MINIDEBCONF_REGISTER_BURSARY_INFO_PAGE
: string. URL to a page with bursary
information. If informed, will be linked from the MiniDebConf registration
form (default: None
)MINIDEBCONF_REGISTER_SHIRT_INFO_PAGE
: string. URL to a page with
information about T-shirt sizes. If informed, will be linked from the
MiniDebConf registration form (default: None
)
Content:
TRACKS_FILE
: String. path to a YAML file with the list of tracks to be loadede into the databaseTALK_TYPES_FILE
: String. path to a YAML file with the list of talk types to be loaded into the databaseDEBCONF_TALK_PROVISION_URLS
: Dictionary of {Key: {pattern: String, private: Boolean}} for online services to generate links for. Format string parameters available: id
, slug
, secret16
).
Misc:
DEBCONF_CITY
: String. The name of the city hosting DebConf.DEBCONF_NAME
: String. The name of the Debconf (e.g. "DebConf XX").DCSCHEDULE_TOKEN
: String. Authentication token for the DCSchedule IRC bot to hit the API.SANDBOX
: Boolean. Is this a development instance or production.ISSUE_KSP_ID
: Boolean. Is the key-signing sign-up still open?
Streaming:
DEBCONF_VENUE_STREAM_HLS_URL
: String. URL to the HLS stream. {name}, if
present, is replaced with with the venue name in lower case and with all
sequences of non-alphanumeric characters replaced with a "-". Examples:
- Fixed URL:
"https://foo.bar/stream.m3u8"
(good enough for single-venue
conferences.) - Per-venue URL:
"https://foo.bar/stream/{name}.m3u8"
becomes
"https://foo.bar/stream/my-venue.m3u8"
DEBCONF_VENUE_STREAM_RTMP_URL
String. URL to the RTMP stream. {name} is
substituted as with DEBCONF_VENUE_STREAM_HLS_URL
; {quality} is replaced with
the quality (src, high, mid, low). Examples:
- Fixed URL:
"rtmp://foo.bar/stream"
(for single-venue conferences) - Per-venue URL:
"rtmp://foo.bar/stream/{name}_{quality}"
becomes
"rtmp://foo.bar/stream/my-venue_high"
("high" quality stream for "My
Venue")
DEBCONF_VENUE_IRC_CHANNELS
: List of strings. List of channels to join for
each venue; {name} is replaced as above. Examples:
- Single-channel conference:
["#conference"]
- Multi-venue conference:
["#thatconf2020-{name}", "#thatconf2020"]
becomes ["#thatconf2020-my-venue", "#thatconf2020"]
Stripe Payments
First, configure the STRIPE_PUBLISHABLE_KEY
and STRIPE_SECRET_KEY
settings, with the API keys from the Stripe dashboard.
To receive payment confirmation from Stripe, we need to receive a
webhook from them.
For local development, you can receive this with the stripe
CLI:
$ stripe login
...
$ stripe listen --forward-to http://127.0.0.1:8000/invoices/stripe-webhook/
> Ready! Your webhook signing secret is whsec_I_AM_A_SECRET_KEY (^C to quit)
Configure STRIPE_ENDPOINT_SECRET
with the secret key provided by
stripe-cli listen
.
For production use, configure a webhook in the Stripe dashboard.
The endpoint should be https://my.debconf/invoices/stripe-webhook/
.
Listen for charge.dispute.created
, charge.refunded
, and
payment_intent.succeeded
.
Again, STRIPE_ENDPOINT_SECRET
should be configured to the webhook's
signing secret.