Skip to content

Add presentation uploads for talk speakers - #803

Open
KainatJamal wants to merge 3 commits into
CTPUG:masterfrom
KainatJamal:feature/speaker-presentation-upload
Open

KainatJamal wants to merge 3 commits into
CTPUG:masterfrom
KainatJamal:feature/speaker-presentation-upload

Conversation

@KainatJamal

@KainatJamal KainatJamal commented Nov 5, 2026 •

Copy link
Copy Markdown

Summary

This change adds a presentation and file attachment upload system for talks in Wafer.
It allows talk speakers and conference administrators to upload and manage multiple attachments associated with a talk, rather than relying on a single presentation file.

Features

  • Supports PDF and ZIP uploads, with file extension and content validation.
  • Allows multiple attachments per talk, each with its own name and description.
  • Keeps uploaded files private by default.
  • Provides individual public/private visibility controls for conference administrators.
  • Restricts private file access to authorized users.
  • Provides protected download views for attachments.
  • Stores private files outside the public media directory.
  • Migrates existing presentation data into the new attachment system.
  • Integrates attachment display and upload links into talk pages.

The implementation uses a dedicated TalkFile model and reuses Wafer's existing permission and administration patterns.

Testing

  • Focused presentation upload tests passed.
  • Complete wafer.talks test suite: 139 tests passed.
  • Django system check passed.
  • git diff --check passed.

Related Work

The corresponding DebConf-specific template integration is submitted separately:

Debian Salsa: [wafer-debconf MR !362 — Display talk attachments on DebConf talk pages](https://salsa.debian.org/debconf-team/public/websites/wafer-debconf/-/merge_requests/362)

Related issue: [wafer-debconf #94](https://salsa.debian.org/debconf-team/public/websites/wafer-debconf/-/issues/94)

]

operations = [
migrations.AddField(

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A single presentation field isn't the right solution.

Conferences will want to do things like have the pdf presentation and a link to supporting info like code samples as separate downloads, or potentially multiple downloads (presentation, article, supporting materiel).

verbose_name=_('presentation'),
),
),
]

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We already have the File model used for pages and sponsors, which allows multiple items and descriptions for iterms - anything here should be closer to that.

</ul>
{% endif %}

{% if object.presentation %}

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Presentation visibility needs to be more controlled.

Conferences may want to allow speakers to upload stuff earlier for review, but not make the presentation or article visible to the public until after the conference (or at all), for example.

@KainatJamal

Copy link
Copy Markdown
Author

Thank you for reviewing my contribution and explaining these design considerations. @drnlm

I understand that a single presentation field would be too restrictive and that the existing File model would be a better starting point for supporting multiple attachments. I also understand the need for configurable visibility so that uploaded files can remain private for review and only become publicly accessible when the conference organizers decide. I'll investigate how the existing File model is used for pages and sponsors, and revise my implementation to follow the project's existing approach. Could you also clarify what visibility controls you would expect for talk attachments? For example, should visibility be managed individually for each file by conference administrators?

@KainatJamal
KainatJamal requested a review from drnlm November 5, 2026 19:54
@KainatJamal

Copy link
Copy Markdown
Author

Hi @drnlm
I've updated the implementation based on your feedback. It now supports multiple talk attachments using a separate TalkFile model, individual public/private visibility controls for organisers, and protected downloads. I've also added PDF and ZIP file validation, including content checks. The complete wafer.talks test suite now passes all 139 tests.
I've pushed the updates to this PR. Could you please review the revised implementation when you have a chance?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants