granicus_archiver.web.views¶
- class granicus_archiver.web.views.GlobalContext[source]¶
Bases:
TypedDictContext data for all templated views
Navigation links
- class granicus_archiver.web.views.ContextT¶
Type variable for template context data
alias of TypeVar(‘ContextT’, bound=
GlobalContext)
- granicus_archiver.web.views.ClipIdOrNoneStr¶
Type variable for a clip id
- granicus_archiver.web.views.GuidOrNoneStr¶
Type variable for a guid
- granicus_archiver.web.views.read_only_guard(func)[source]¶
Decorator to prevent modification of data when in
read_onlymode
- granicus_archiver.web.views.with_data_file_lock(func)[source]¶
Decorator to hold the
DataFileLockwithin wrapped the function
- granicus_archiver.web.views.is_truthy(value: str | bool | None) bool[source]¶
Check if the value is truthy
- granicus_archiver.web.views.parse_date(value: str | None) date | None[source]¶
Parse a date from a string
Check if a clip is hidden based on the app config
Check if a clip is hidden and raise a 404 if it is
- async granicus_archiver.web.views.healthcheck(request: Request) Response[source]¶
Health check endpoint
- Parameters:
request (Request)
- Return type:
Response
- async granicus_archiver.web.views.clip_webvtt(request: Request) Response | StreamResponse[source]¶
View to display a webvtt file for a clip
- Parameters:
request (Request)
- Return type:
Response | StreamResponse
- class granicus_archiver.web.views.AbstractView[source]¶
-
Abstract base class for views that render templates
- abstract classmethod get_template_name() str[source]¶
Get the template name for this view
- Return type:
- class granicus_archiver.web.views.TemplatedView(request: None)[source]¶
Bases:
View,Generic[ContextT],AbstractView[ContextT]Base class for views that render templates
- Parameters:
request (None)
- get_config() Config[source]¶
Get the
granicus_archiver.config.Configobject- Return type:
- class granicus_archiver.web.views.ListFilterContext[source]¶
-
Context data for list views with filters
List of list filter fields to hide in the UI
- class granicus_archiver.web.views.ClipListContext[source]¶
Bases:
GlobalContextTemplate context for
ClipListView- clip_guids: dict[CLIP_ID, GUID | Literal['None'] | Literal['NoClip']]¶
Mapping of clip ids to their associated legistar item guids. A value of
NoneorNoClipindicates no associated legistar item.
- filter_context: ListFilterContext[Location]¶
Filter context data
- class granicus_archiver.web.views.ClipListView(request: Request)[source]¶
Bases:
TemplatedView[ClipListContext]List view for
granicus_archiver.model.Clipobjects- Parameters:
request (web.Request)
- parse_filter_context() ListFilterContext[Location][source]¶
Parse the filter context from the request’s query parameters
- Return type:
- get_filtered_items(clips: Sequence[Clip]) Sequence[Clip][source]¶
Get items filtered by the
filter_context
- async get_context_data() ClipListContext[source]¶
Get the context data for this view
- Return type:
- class granicus_archiver.web.views.ClipViewContext[source]¶
Bases:
GlobalContextTemplate context for
ClipViewBase- legistar_item: DetailPageResult | Literal[_DoesNotExistEnum.DoesNotExist] | None¶
The associated legistar item, or
Noneif no match is found
- legistar_guid: GUID | Literal[_DoesNotExistEnum.DoesNotExist] | None¶
The associated legistar item guid, if one exists
- legistar_rguid_item: RGuidDetailResult | Literal[_DoesNotExistEnum.DoesNotExist] | None¶
The associated real-guid legistar item, or
Noneif no match is found
- legistar_rguid_item_id: REAL_GUID | Literal[_DoesNotExistEnum.DoesNotExist] | None¶
Item id for
legistar_rguid_item
- class granicus_archiver.web.views.ClipViewBase(request: Request)[source]¶
Bases:
TemplatedView[ClipViewContextT]Base class for views that display a single
Clipinstance- Parameters:
request (web.Request)
- async get_context_data() ClipViewContext[source]¶
Get the context data for this view
- Return type:
- class granicus_archiver.web.views.ClipView(request: Request)[source]¶
Bases:
ClipViewBaseView for a single
Clipinstance- Parameters:
request (web.Request)
- class granicus_archiver.web.views.ClipEditForm[source]¶
Bases:
TypedDictForm data for
ClipEditView
- class granicus_archiver.web.views.ClipEditViewContext[source]¶
Bases:
ClipViewContextTemplate context for
ClipEditView- form_data: ClipEditForm¶
The
formdata
- item_options: Iterable[DetailPageResult]¶
An iterable of possible choices to assign to the clip
- rguid_item_options: Iterable[RGuidDetailResult]¶
An iterable of possible choices to assign to the clip (real-guid)
- class granicus_archiver.web.views.ClipEditView(request: Request)[source]¶
Bases:
ClipViewBase[ClipEditViewContext]Edit view for a single
Clipinstance- Parameters:
request (web.Request)
- async get_context_data() ClipEditViewContext[source]¶
Get the context data for this view
- Return type:
- class granicus_archiver.web.views.LegistarListFilterContext[source]¶
Bases:
ListFilterContext[Category]Filter context data for legistar items
- agenda_status_items: Iterable[AgendaStatus]¶
All possible agenda status items
- minutes_status_items: Iterable[MinutesStatus]¶
All possible minutes status items
- class granicus_archiver.web.views.LegistarSearchForm[source]¶
Bases:
TypedDictForm data for searching legistar items
- max_results: SearchResultCount¶
The maximum number of search results to return
- max_results_options: Sequence[SearchResultCount]¶
All possible options for
max_results
- class granicus_archiver.web.views.LegistarItemsContext[source]¶
Bases:
GlobalContext,GenericTemplate context for
LegistarItemsViewBase- item_clip_ids: dict[IdT, CLIP_ID | Literal['None'] | Literal['NoClip']]¶
Mapping of item ids to their associated clip ids
- filter_context: LegistarListFilterContext¶
Filter context data
- search_form: LegistarSearchForm | None¶
The search form data, if applicable
- search_item_scores: dict[IdT, float] | None¶
Mapping of item ids to their search scores, if applicable
- search_item_results: dict[IdT, SearchResult] | None¶
Mapping of item ids to their search results, if applicable
- class granicus_archiver.web.views.LegistarItemsViewBase(request: Request)[source]¶
Bases:
TemplatedView[LegistarItemsContext],GenericBase class for views that display a list of legistar items
- Parameters:
request (web.Request)
- get_filtered_items(item_dict: dict[IdT, ItemT]) dict[IdT, ItemT][source]¶
Get items filtered by the
filter_context
- async get_context_data() LegistarItemsContext[IdT, ItemT][source]¶
Get the context data for this view
- Return type:
LegistarItemsContext[IdT, ItemT]
- class granicus_archiver.web.views.LegistarItemsView(request: Request)[source]¶
Bases:
LegistarItemsViewBase[GUID,DetailPageResult]A list view of
DetailPageResultinstances- Parameters:
request (web.Request)
- class granicus_archiver.web.views.RGuidLegistarItemsView(request: Request)[source]¶
Bases:
LegistarItemsViewBase[REAL_GUID,RGuidDetailResult]A list view of
RGuidDetailResultinstances- Parameters:
request (web.Request)
- class granicus_archiver.web.views.LegistarItemFormData[source]¶
Bases:
TypedDictForm data for
LItemChangeView
- class granicus_archiver.web.views._ItemContext[source]¶
Bases:
GlobalContext,GenericTemplate context for
LItemViewBase- item: ItemT¶
The item being viewed
- files: LegistarFiles | None¶
The files associated with the item
- file_iter: Iterable[tuple[LegistarFileUID, AbstractFile]]¶
An iterable of
AbstractFileinstances
- file_static_key: Literal['assets', 'granicus', 'legistar', 'legistar_rguid']¶
The key for the item assets in
StaticUrlRoots
- class granicus_archiver.web.views._ItemChangeContext[source]¶
Bases:
_ItemContext,GenericTemplate context for
LItemChangeView- form_data: LegistarItemFormData¶
The form data
- class granicus_archiver.web.views.LItemViewBase(request: Request)[source]¶
Bases:
TemplatedView[ItemContext],GenericBase class for views that display a single
DetailPageResultorRGuidDetailResultinstance- Parameters:
request (web.Request)
- class granicus_archiver.web.views.LItemMixin[source]¶
Bases:
objectMixin for views that display a single
DetailPageResult
- class granicus_archiver.web.views.LItemView(request: Request)[source]¶
Bases:
LItemMixin,LItemViewBase[_ItemContext[GUID,DetailPageResult],GUID,DetailPageResult]View for a single
DetailPageResultinstance- Parameters:
request (Request)
- async get_context_data() _ItemContext[GUID, DetailPageResult][source]¶
Get the context data for this view
- Return type:
- class granicus_archiver.web.views.RGItemMixin[source]¶
Bases:
objectMixin for views that display a single
RGuidDetailResult
- class granicus_archiver.web.views.RGItemView(request: Request)[source]¶
Bases:
RGItemMixin,LItemViewBase[_ItemContext[REAL_GUID,RGuidDetailResult],REAL_GUID,RGuidDetailResult]View for a single
RGuidDetailResultinstance- Parameters:
request (Request)
- async get_context_data() _ItemContext[REAL_GUID, RGuidDetailResult][source]¶
Get the context data for this view
- Return type:
- class granicus_archiver.web.views.LItemChangeViewBase(request: Request)[source]¶
Bases:
LItemViewBase[_ItemChangeContext,IdT,ItemT],GenericBase class for edit views of legistar items
- Parameters:
request (web.Request)
- async get_context_data() _ItemChangeContext[IdT, ItemT][source]¶
Get the context data for this view
- Return type:
_ItemChangeContext[IdT, ItemT]
- class granicus_archiver.web.views.LItemChangeView(request: Request)[source]¶
Bases:
LItemMixin,LItemChangeViewBase[GUID,DetailPageResult]Edit view for a single
DetailPageResultinstance- Parameters:
request (Request)
- class granicus_archiver.web.views.RGLItemChangeView(request: Request)[source]¶
Bases:
RGItemMixin,LItemChangeViewBase[REAL_GUID,RGuidDetailResult]Edit view for a single
RGuidDetailResultinstance- Parameters:
request (Request)