django_program.settings

Typed configuration for django-program.

Reads a single DJANGO_PROGRAM dict from Django settings and exposes it as composed, frozen dataclasses with sensible defaults.

Usage:

from django_program.settings import get_config

config = get_config()
config.stripe.secret_key
config.pretalx.base_url
config.currency

Functions

get_config()

Build and return the program configuration.

Classes

FeaturesConfig

Feature toggles for enabling/disabling django-program modules and UIs.

PSFSponsorConfig

PSF sponsorship API configuration for PyCon US conferences.

PretalxConfig

Pretalx schedule API configuration.

ProgramConfig

Top-level django-program configuration.

StripeConfig

Stripe payment gateway configuration.

class django_program.settings.StripeConfig[source]

Bases: object

Stripe payment gateway configuration.

Parameters:
secret_key: str | None
publishable_key: str | None
webhook_secret: str | None
api_version: str
webhook_tolerance: int
__init__(secret_key=None, publishable_key=None, webhook_secret=None, api_version='2024-12-18', webhook_tolerance=300)
Parameters:
class django_program.settings.PretalxConfig[source]

Bases: object

Pretalx schedule API configuration.

Parameters:
  • base_url (str)

  • token (str | None)

  • schedule_delete_guard_enabled (bool)

  • schedule_delete_guard_min_existing_slots (int)

  • schedule_delete_guard_max_fraction_removed (float)

base_url: str
token: str | None
schedule_delete_guard_enabled: bool
schedule_delete_guard_min_existing_slots: int
schedule_delete_guard_max_fraction_removed: float
__init__(base_url='https://pretalx.com', token=None, schedule_delete_guard_enabled=True, schedule_delete_guard_min_existing_slots=5, schedule_delete_guard_max_fraction_removed=0.4)
Parameters:
  • base_url (str)

  • token (str | None)

  • schedule_delete_guard_enabled (bool)

  • schedule_delete_guard_min_existing_slots (int)

  • schedule_delete_guard_max_fraction_removed (float)

class django_program.settings.PSFSponsorConfig[source]

Bases: object

PSF sponsorship API configuration for PyCon US conferences.

Parameters:
api_url: str
token: str | None
auth_scheme: str
publisher: str
flight: str
__init__(api_url='https://www.python.org/api/v2', token=None, auth_scheme='Token', publisher='pycon', flight='sponsors')
Parameters:
class django_program.settings.FeaturesConfig[source]

Bases: object

Feature toggles for enabling/disabling django-program modules and UIs.

Module toggles control backend functionality (registration, sponsors, etc.) while UI toggles control the public-facing and management interfaces. The all_ui_enabled flag acts as a master switch for all UI toggles.

All features are enabled by default. Set to False in DJANGO_PROGRAM['features'] to disable.

Parameters:
  • registration_enabled (bool)

  • sponsors_enabled (bool)

  • travel_grants_enabled (bool)

  • programs_enabled (bool)

  • pretalx_sync_enabled (bool)

  • public_ui_enabled (bool)

  • manage_ui_enabled (bool)

  • all_ui_enabled (bool)

registration_enabled: bool
sponsors_enabled: bool
travel_grants_enabled: bool
programs_enabled: bool
pretalx_sync_enabled: bool
public_ui_enabled: bool
manage_ui_enabled: bool
all_ui_enabled: bool
__init__(registration_enabled=True, sponsors_enabled=True, travel_grants_enabled=True, programs_enabled=True, pretalx_sync_enabled=True, public_ui_enabled=True, manage_ui_enabled=True, all_ui_enabled=True)
Parameters:
  • registration_enabled (bool)

  • sponsors_enabled (bool)

  • travel_grants_enabled (bool)

  • programs_enabled (bool)

  • pretalx_sync_enabled (bool)

  • public_ui_enabled (bool)

  • manage_ui_enabled (bool)

  • all_ui_enabled (bool)

class django_program.settings.ProgramConfig[source]

Bases: object

Top-level django-program configuration.

Parameters:
stripe: StripeConfig
pretalx: PretalxConfig
psf_sponsors: PSFSponsorConfig
features: FeaturesConfig
cart_expiry_minutes: int
pending_order_expiry_minutes: int
order_reference_prefix: str
currency: str
currency_symbol: str
max_grant_amount: int
__init__(stripe=<factory>, pretalx=<factory>, psf_sponsors=<factory>, features=<factory>, cart_expiry_minutes=30, pending_order_expiry_minutes=15, order_reference_prefix='ORD', currency='USD', currency_symbol='$', max_grant_amount=3000)
Parameters:
django_program.settings.get_config()[source]

Build and return the program configuration.

Reads settings.DJANGO_PROGRAM (a plain dict) and returns a frozen ProgramConfig. The result is cached; the cache is cleared automatically when Django’s setting_changed signal fires (e.g. inside override_settings).

Return type:

ProgramConfig