Content system
Proposals
Proposals deal exclusively with content which is submitted via the Call for Participation for inclusion in the official schedule.
Some proposals are handled through an anonymous review system, where they are anonymised and sent to a review panel to vote on.
- class models.content.cfp.Proposal(**kwargs)[source]
A proposal for content submitted to us through the Call for Participation.
Proposals can be reviewed manually or through the anonymous review system. If a proposal is accepted, a
ScheduleItemis created.- type: Mapped[Literal['talk', 'performance', 'workshop', 'youthworkshop', 'installation']][source]
The type of the proposal. This controls how the proposal is handled.
- state: Mapped[Literal['new', 'edit', 'checked', 'rejected', 'anonymised', 'anon-blocked', 'manual-review', 'reviewed', 'accepted', 'finalised', 'withdrawn', 'conduct-blocked']][source]
The state of the proposal: where it is in the review process
- accept()[source]
Accept the proposal, create a ScheduleItem, and issue the user a CfP voucher if needed.
- Return type:
None
- reject()[source]
Mark the proposal as rejected, and remove from the schedule if present.
- Return type:
None
Schedule
The schedule deals with the entire schedule for the event, including accepted CfP content, manually-added/booked official content, and attendee content.
- class models.content.schedule.ScheduleItem(**kwargs)[source]
An item of content in the schedule.
This contains the details displayed in the schedule on the website. ScheduleItems are created for a Proposal if it’s submitted through the CfP and accepted, but they can also be created directly by villages.
- type: Mapped[Literal['talk', 'performance', 'workshop', 'film', 'youthworkshop', 'installation', 'lightning']][source]
The type of the ScheduleItem, which controls how it’s displayed in the schedule
- state: Mapped[Literal['published', 'unpublished', 'cancelled']][source]
The state of the ScheduleItem
- user_id: Mapped[int][source]
The user who owns the ScheduleItem. An attendee ScheduleItem has an associated owner who can edit it (in addition to anyone who’s an admin for the scheduled village)
- proposal_id: Mapped[int | None][source]
The proposal for this ScheduleItem. May be None in the case of attendee content.
- class models.content.schedule.Occurrence(**kwargs)[source]
An occurrence of a ScheduleItem. This indicates when and where a ScheduleItem will occur.
In future there may be multiple occurrences of a ScheduleItem, for example if the same workshop is presented twice, however this is not currently guaranteed to work.
- manually_scheduled: Mapped[bool][source]
Prevents the automatic scheduler from trying to move this occurrence
- potential_scheduled_slots: Mapped[list[PotentialScheduleOccurrence]][source]
Potential timeslots for this occurrence in a proposed schedule.
- is_valid_slot(start_time, venue, user=None)[source]
Check whether this occurrence can be scheduled in a given start_time and venue.
For village content, a user object should be passed in.
- Return type:
bool
- set_slot(start_time, venue, user=None)[source]
Set the start_time and venue, validating that this is allowed.
For village content, a user object should be passed in.
- Return type:
None
- property availability: list[ScheduleItemAvailability][source]
The speaker’s availability to present this occurrence.
Inherited from the ScheduleItem.
- property valid_allowed_venues: list[Venue][source]
A list of venues this Occurrence is allowed to be scheduled in.
Venues
Venues are places on site (official or village-run) where content can be scheduled.
- class models.content.venue.Venue(**kwargs)[source]
A location where content can be scheduled.
This can be an official talk stage, a village location, or any other place on site.
- allows_attendee_content: Mapped[bool | None][source]
Whether this venue allows any attendee to schedule content in it. This is only true for official venues which allow attendee content (e.g. bar, lounge) and is currently null for village stages (which allow content to be scheduled by their admins)
- class models.content.venue.TimeBlock(**kwargs)[source]
A block of time allocated in a venue for scheduling official content.
Villages can schedule content in their venues outside a TimeBlock, but all official content must be inside a TimeBlock.
- Constraints:
There can only be one TimeBlock active for a venue at any time.
Each TimeBlock can only allow one content type in it.
TimeBlocks cannot span 5am, when the scheduling day ends.