sidequest_common.schemas.events#
Guild event, signup, and raid-chart schemas.
class is a Python keyword, so the Python-side attribute is wow_class; Field(alias=...) maps it to the
wire name class in both directions. populate_by_name=True lets services also construct instances with the
wow_class= keyword.
Attributes#
EP (effort points) for attending an event of each kind, unless an officer overrides it on the event. |
|
Classes#
Body for |
|
Discord "Interested" clicks on an event's linked Discord event. Names are never shown for non-site accounts. |
|
Headcounts for an event. |
|
Body for |
|
A single event with its full roster. |
|
What kind of guild event this is. |
|
Body for |
|
One repeating event series, as returned by |
|
Body for |
|
Lifecycle of a scheduled guild event. |
|
One event as returned in list views. |
|
Body for |
|
The minimal repeating-event schedule, attached to |
|
A repeating schedule rule, nested on |
|
One member's signup for an event, including the officer-assigned raid chart slot. |
|
The public-facing slice of a signed-up member. |
|
What role a signed-up character plays. |
|
Whether a member is coming. |
|
Body for |
|
Playable WoW classes. |
Functions#
|
The EP an event awards: the officer's override, else its kind's preset. |
Module Contents#
- class sidequest_common.schemas.events.ChartUpdate#
Bases:
pydantic.BaseModelBody for
PATCH /api/events/{id}/signups/{signup_id}(officer): place a signed player on the raid chart.- bench: bool | None = None#
- group: int | None#
- class sidequest_common.schemas.events.DiscordInterest#
Bases:
pydantic.BaseModelDiscord “Interested” clicks on an event’s linked Discord event. Names are never shown for non-site accounts.
- count: int#
- members: list[SignupMember]#
- class sidequest_common.schemas.events.EventCounts#
Bases:
pydantic.BaseModelHeadcounts for an event.
tank/healer/dps/signedonly countsignedsignups.interestedis every Discord user who clicked “Interested” on the linked Discord event, regardless of whether they have a site account.- absent: int#
- dps: int#
- healer: int#
- interested: int#
- signed: int#
- tank: int#
- tentative: int#
- class sidequest_common.schemas.events.EventCreate#
Bases:
pydantic.BaseModelBody for
POST /api/events(officer).- ends_at: datetime.datetime | None = None#
- ep_override: int | None#
- location: str#
- notes: str | None#
- size: int | None#
- starts_at: datetime.datetime#
- title: str#
- class sidequest_common.schemas.events.EventDetail#
Bases:
EventSummaryA single event with its full roster.
signups/my_signupare empty, anddiscord_interest/awayareNone, for anonymous visitors.- away: list[SignupMember] | None#
Members away (see
AwayRangeIn) on this event’s start date, America/Chicago.Noneif anonymous.
- discord_interest: DiscordInterest | None#
- class sidequest_common.schemas.events.EventKind#
Bases:
enum.StrEnumWhat kind of guild event this is.
raid/dungeonare “role kinds”: sign-ups need character/class/role.Initialize self. See help(type(self)) for accurate signature.
- DUNGEON = 'dungeon'#
- LEVELING = 'leveling'#
- OTHER = 'other'#
- PVP = 'pvp'#
- RAID = 'raid'#
- SOCIAL = 'social'#
- TRANSMOG = 'transmog'#
- class sidequest_common.schemas.events.EventSeriesCreate#
Bases:
pydantic.BaseModelBody for
POST /api/event-series(officer). Content and rule fields are flat (norulenesting).- duration_minutes: int | None#
- ep_override: int | None#
- interval_weeks: int#
- location: str#
- notes: str | None#
- size: int | None#
- start_time: str#
- starts_on: datetime.date#
- timezone: str#
- title: str#
- until: datetime.date | None = None#
- weekdays: list[int]#
- class sidequest_common.schemas.events.EventSeriesSummary#
Bases:
pydantic.BaseModelOne repeating event series, as returned by
GET/POST/PATCH /api/event-series.ep/ep_overrideas onEventSummary; occurrences copyep_override.- active: bool#
- ep: int#
- ep_override: int | None#
- id: uuid.UUID#
- location: str#
- model_config#
- next_starts_at: datetime.datetime | None#
- notes: str | None#
- rule: SeriesRule#
- size: int | None#
- title: str#
- class sidequest_common.schemas.events.EventSeriesUpdate#
Bases:
pydantic.BaseModelBody for
PATCH /api/event-series/{id}(officer). Only present fields change; all are optional.- duration_minutes: int | None#
- ep_override: int | None#
- interval_weeks: int | None = None#
- location: str | None#
- notes: str | None#
- size: int | None#
- start_time: str | None = None#
- starts_on: datetime.date | None = None#
- timezone: str | None = None#
- title: str | None#
- until: datetime.date | None = None#
- weekdays: list[int] | None = None#
- class sidequest_common.schemas.events.EventStatus#
Bases:
enum.StrEnumLifecycle of a scheduled guild event.
Initialize self. See help(type(self)) for accurate signature.
- CANCELLED = 'cancelled'#
- COMPLETED = 'completed'#
- SCHEDULED = 'scheduled'#
- class sidequest_common.schemas.events.EventSummary#
Bases:
pydantic.BaseModelOne event as returned in list views.
locationis""andsizeNonefor Discord-created events.epis what attending awards;ep_overrideis the officer-set value behind it (None: the kind’s preset).notes/countsareNonefor anonymous visitors (no session, no botX-API-Key).- counts: EventCounts | None#
- ends_at: datetime.datetime | None#
- ep: int#
- ep_override: int | None#
- id: uuid.UUID#
- location: str#
- model_config#
- notes: str | None#
- size: int | None#
- starts_at: datetime.datetime#
- status: EventStatus#
- title: str#
- class sidequest_common.schemas.events.EventUpdate#
Bases:
pydantic.BaseModelBody for
PATCH /api/events/{id}(officer). Only present fields change;ends_at: nullclears the end.ep_override: nullgoes back to the kind’s EP preset.ends_atvsstarts_atis checked against the stored event by the service when only one of them is sent.- ends_at: datetime.datetime | None = None#
- ep_override: int | None#
- location: str | None#
- notes: str | None#
- size: int | None#
- starts_at: datetime.datetime | None = None#
- status: EventStatus | None = None#
- title: str | None#
- class sidequest_common.schemas.events.SeriesRef#
Bases:
pydantic.BaseModelThe minimal repeating-event schedule, attached to
EventSummaryfor non-detached series occurrences.NoneonEventSummary.seriesfor one-off events and occurrences an officer has edited/deleted individually (series_detached).- id: uuid.UUID#
- interval_weeks: int#
- model_config#
- start_time: str#
- timezone: str#
- weekdays: list[int]#
- class sidequest_common.schemas.events.SeriesRule#
Bases:
pydantic.BaseModelA repeating schedule rule, nested on
EventSeriesSummary.start_timeis"HH:MM"24-hour local time.- duration_minutes: int | None#
- interval_weeks: int#
- start_time: str#
- starts_on: datetime.date#
- timezone: str#
- until: datetime.date | None#
- weekdays: list[int]#
- class sidequest_common.schemas.events.Signup#
Bases:
pydantic.BaseModelOne member’s signup for an event, including the officer-assigned raid chart slot.
- bench: bool#
- character: str | None#
- comment: str | None#
- group: int | None#
- id: uuid.UUID#
- member: SignupMember#
- model_config#
- role: SignupRole | None#
- status: SignupStatus#
- updated_at: datetime.datetime#
- class sidequest_common.schemas.events.SignupMember#
Bases:
pydantic.BaseModelThe public-facing slice of a signed-up member.
- avatar_url: str | None#
- display_name: str#
- model_config#
- class sidequest_common.schemas.events.SignupRole#
Bases:
enum.StrEnumWhat role a signed-up character plays.
Initialize self. See help(type(self)) for accurate signature.
- DPS = 'dps'#
- HEALER = 'healer'#
- TANK = 'tank'#
- class sidequest_common.schemas.events.SignupStatus#
Bases:
enum.StrEnumWhether a member is coming.
Initialize self. See help(type(self)) for accurate signature.
- ABSENT = 'absent'#
- SIGNED = 'signed'#
- TENTATIVE = 'tentative'#
- class sidequest_common.schemas.events.SignupUpsert#
Bases:
pydantic.BaseModelBody for
PUT /api/events/{id}/signup(member).character/class/roleare required (400 if missing) when the event’s kind israid/dungeon; other kinds accept a bare RSVP.- character: str | None#
- comment: str | None#
- model_config#
- role: SignupRole | None = None#
- status: SignupStatus#
- class sidequest_common.schemas.events.WowClass#
Bases:
enum.StrEnumPlayable WoW classes.
Initialize self. See help(type(self)) for accurate signature.
- DRUID = 'druid'#
- HUNTER = 'hunter'#
- MAGE = 'mage'#
- PALADIN = 'paladin'#
- PRIEST = 'priest'#
- ROGUE = 'rogue'#
- SHAMAN = 'shaman'#
- WARLOCK = 'warlock'#
- WARRIOR = 'warrior'#
- sidequest_common.schemas.events.event_ep(kind: str, ep_override: int | None) int#
The EP an event awards: the officer’s override, else its kind’s preset.
- sidequest_common.schemas.events.EVENT_KIND_EP: dict[EventKind, int]#
EP (effort points) for attending an event of each kind, unless an officer overrides it on the event.
A raid boss kill is worth 10 EP, so these keep guild nights a small nudge next to raiding. A raid’s 10 is its on-time and full-night attendance bonus; boss kills earn their own EP on top.
- sidequest_common.schemas.events.MAX_EVENT_EP = 50#
- sidequest_common.schemas.events.ROLE_KINDS#