django_program.programs.views

Views for the programs app.

Provides activity listing, detail, signup, travel grant application, status, accept, decline, withdraw, edit, and messaging views scoped to a conference via the conference_slug URL kwarg.

Classes

ActivityCancelSignupView

POST-only view for cancelling an activity signup.

ActivityDetailView

Detail view for a single activity with linked talks.

ActivityListView

List view of all active activities for a conference.

ActivitySignupView

POST-only view for signing up to an activity.

PaymentInfoView

View for submitting or editing payment information.

ReceiptDeleteView

POST-only view for deleting a receipt.

ReceiptUploadView

View for uploading and listing expense receipts.

TravelGrantAcceptView

POST-only view to accept an offered travel grant.

TravelGrantApplyView

View for applying for a travel grant.

TravelGrantDeclineView

POST-only view to decline an offered travel grant.

TravelGrantEditView

View for editing an existing travel grant application.

TravelGrantMessageView

POST-only view for sending a message on an existing grant.

TravelGrantProvideInfoView

View for applicants to provide information requested by reviewers.

TravelGrantStatusView

View for checking travel grant application status.

TravelGrantWithdrawView

POST-only view to withdraw a travel grant application.

class django_program.programs.views.ActivityListView[source]

Bases: ConferenceMixin, FeatureRequiredMixin, ListView

List view of all active activities for a conference.

required_feature: str | tuple[str, ...] = ('programs', 'public_ui')
template_name = 'django_program/programs/activity_list.html'
context_object_name = 'activities'
get_queryset()[source]

Return active activities for the current conference.

Supports an optional ?type= query parameter to filter by activity type. Annotates signup_count (confirmed only), waitlist_count, and talk_count to avoid N+1 queries.

Return type:

QuerySet

Returns:

A queryset of active Activity instances ordered by time and name.

get_context_data(**kwargs)[source]

Add activity type choices and current filter to context.

Return type:

dict[str, object]

Returns:

Context dict with activity_types and current_type.

Parameters:

kwargs (object)

class django_program.programs.views.ActivityDetailView[source]

Bases: ConferenceMixin, FeatureRequiredMixin, DetailView

Detail view for a single activity with linked talks.

required_feature: str | tuple[str, ...] = ('programs', 'public_ui')
template_name = 'django_program/programs/activity_detail.html'
context_object_name = 'activity'
get_object(queryset=None)[source]

Look up the activity by conference and slug.

Return type:

Activity

Returns:

The matched Activity instance.

Raises:

Http404 – If no active activity matches the conference and slug.

Parameters:

queryset (QuerySet | None)

get_context_data(**kwargs)[source]

Add signups, linked talks, speakers, and schedule to context.

Return type:

dict[str, object]

Returns:

Context dict with signups, spots_remaining, user_signup, waitlist_count, linked_talks, speakers, and schedule_by_day.

Parameters:

kwargs (object)

class django_program.programs.views.ActivitySignupView[source]

Bases: LoginRequiredMixin, ConferenceMixin, FeatureRequiredMixin, View

POST-only view for signing up to an activity.

required_feature: str | tuple[str, ...] = ('programs', 'public_ui')
post(request, **kwargs)[source]

Handle the signup form submission.

Uses select_for_update inside a transaction to prevent race conditions when checking capacity. When the activity is at capacity the signup is created with WAITLISTED status.

Parameters:
  • request (HttpRequest) – The incoming HTTP request.

  • **kwargs (str) – URL keyword arguments (unused).

Return type:

HttpResponse

Returns:

A redirect to the activity detail page.

class django_program.programs.views.ActivityCancelSignupView[source]

Bases: LoginRequiredMixin, ConferenceMixin, FeatureRequiredMixin, View

POST-only view for cancelling an activity signup.

required_feature: str | tuple[str, ...] = ('programs', 'public_ui')
post(request, **kwargs)[source]

Cancel the user’s signup and promote the next waitlisted person if applicable.

Parameters:
  • request (HttpRequest)

  • kwargs (str)

Return type:

HttpResponse

class django_program.programs.views.TravelGrantApplyView[source]

Bases: LoginRequiredMixin, ConferenceMixin, FeatureRequiredMixin, View

View for applying for a travel grant.

Uses TravelGrantApplicationForm for server-side validation of the requested amount, travel origin, and reason fields.

required_feature: str | tuple[str, ...] = ('travel_grants', 'public_ui')
template_name = 'django_program/programs/travel_grant_form.html'
get(request, **kwargs)[source]

Render the travel grant application form.

Parameters:
  • request (HttpRequest) – The incoming HTTP request.

  • **kwargs (str) – URL keyword arguments (unused).

Return type:

HttpResponse

Returns:

The rendered form page.

post(request, **kwargs)[source]

Handle the travel grant application submission.

Parameters:
  • request (HttpRequest) – The incoming HTTP request.

  • **kwargs (str) – URL keyword arguments (unused).

Return type:

HttpResponse

Returns:

A redirect to the grant status page on success, or the form with errors on validation failure.

class django_program.programs.views.TravelGrantStatusView[source]

Bases: LoginRequiredMixin, ConferenceMixin, FeatureRequiredMixin, View

View for checking travel grant application status.

Shows current grant status, action buttons based on state, visible messages from reviewers, and a message form.

required_feature: str | tuple[str, ...] = ('travel_grants', 'public_ui')
template_name = 'django_program/programs/travel_grant_status.html'
get(request, **kwargs)[source]

Render the travel grant status page.

Parameters:
  • request (HttpRequest)

  • kwargs (str)

Return type:

HttpResponse

class django_program.programs.views.TravelGrantAcceptView[source]

Bases: LoginRequiredMixin, ConferenceMixin, FeatureRequiredMixin, View

POST-only view to accept an offered travel grant.

required_feature: str | tuple[str, ...] = ('travel_grants', 'public_ui')
post(request, **kwargs)[source]

Accept the offered grant.

Parameters:
  • request (HttpRequest)

  • kwargs (str)

Return type:

HttpResponse

class django_program.programs.views.TravelGrantDeclineView[source]

Bases: LoginRequiredMixin, ConferenceMixin, FeatureRequiredMixin, View

POST-only view to decline an offered travel grant.

required_feature: str | tuple[str, ...] = ('travel_grants', 'public_ui')
post(request, **kwargs)[source]

Decline the offered grant.

Parameters:
  • request (HttpRequest)

  • kwargs (str)

Return type:

HttpResponse

class django_program.programs.views.TravelGrantWithdrawView[source]

Bases: LoginRequiredMixin, ConferenceMixin, FeatureRequiredMixin, View

POST-only view to withdraw a travel grant application.

required_feature: str | tuple[str, ...] = ('travel_grants', 'public_ui')
post(request, **kwargs)[source]

Withdraw the application.

Parameters:
  • request (HttpRequest)

  • kwargs (str)

Return type:

HttpResponse

class django_program.programs.views.TravelGrantEditView[source]

Bases: LoginRequiredMixin, ConferenceMixin, FeatureRequiredMixin, View

View for editing an existing travel grant application.

required_feature: str | tuple[str, ...] = ('travel_grants', 'public_ui')
template_name = 'django_program/programs/travel_grant_form.html'
get(request, **kwargs)[source]

Render the edit form pre-filled with existing data.

Parameters:
  • request (HttpRequest)

  • kwargs (str)

Return type:

HttpResponse

post(request, **kwargs)[source]

Handle the edit form submission.

Parameters:
  • request (HttpRequest)

  • kwargs (str)

Return type:

HttpResponse

class django_program.programs.views.TravelGrantProvideInfoView[source]

Bases: LoginRequiredMixin, ConferenceMixin, FeatureRequiredMixin, View

View for applicants to provide information requested by reviewers.

required_feature: str | tuple[str, ...] = ('travel_grants', 'public_ui')
template_name = 'django_program/programs/travel_grant_provide_info.html'
get(request, **kwargs)[source]

Render the provide-info form.

Parameters:
  • request (HttpRequest)

  • kwargs (str)

Return type:

HttpResponse

post(request, **kwargs)[source]

Handle info submission — sends message and resets status to submitted.

Parameters:
  • request (HttpRequest)

  • kwargs (str)

Return type:

HttpResponse

class django_program.programs.views.TravelGrantMessageView[source]

Bases: LoginRequiredMixin, ConferenceMixin, FeatureRequiredMixin, View

POST-only view for sending a message on an existing grant.

required_feature: str | tuple[str, ...] = ('travel_grants', 'public_ui')
post(request, **kwargs)[source]

Create a visible message from the applicant.

Parameters:
  • request (HttpRequest)

  • kwargs (str)

Return type:

HttpResponse

class django_program.programs.views.ReceiptUploadView[source]

Bases: LoginRequiredMixin, ConferenceMixin, FeatureRequiredMixin, View

View for uploading and listing expense receipts.

required_feature: str | tuple[str, ...] = ('travel_grants', 'public_ui')
template_name = 'django_program/programs/travel_grant_receipts.html'
get(request, **kwargs)[source]

Render the receipt upload form and existing receipts.

Parameters:
  • request (HttpRequest)

  • kwargs (str)

Return type:

HttpResponse

post(request, **kwargs)[source]

Handle receipt file upload.

Parameters:
  • request (HttpRequest)

  • kwargs (str)

Return type:

HttpResponse

class django_program.programs.views.ReceiptDeleteView[source]

Bases: LoginRequiredMixin, ConferenceMixin, FeatureRequiredMixin, View

POST-only view for deleting a receipt.

required_feature: str | tuple[str, ...] = ('travel_grants', 'public_ui')
post(request, **kwargs)[source]

Delete the receipt if it has not been approved or flagged.

Parameters:
  • request (HttpRequest)

  • kwargs (str)

Return type:

HttpResponse

class django_program.programs.views.PaymentInfoView[source]

Bases: LoginRequiredMixin, ConferenceMixin, FeatureRequiredMixin, View

View for submitting or editing payment information.

required_feature: str | tuple[str, ...] = ('travel_grants', 'public_ui')
template_name = 'django_program/programs/travel_grant_payment_info.html'
get(request, **kwargs)[source]

Render the payment info form.

Parameters:
  • request (HttpRequest)

  • kwargs (str)

Return type:

HttpResponse

post(request, **kwargs)[source]

Handle payment info form submission.

Parameters:
  • request (HttpRequest)

  • kwargs (str)

Return type:

HttpResponse