""" defines activitypub collections (lists) """ from dataclasses import dataclass, field from typing import List from .base_activity import ActivityObject # pylint: disable=invalid-name @dataclass(init=False) class OrderedCollection(ActivityObject): """structure of an ordered collection activity""" totalItems: int first: str last: str = None name: str = None owner: str = None type: str = "OrderedCollection" # pylint: disable=invalid-name @dataclass(init=False) class OrderedCollectionPrivate(OrderedCollection): """an ordered collection with privacy settings""" to: List[str] = field(default_factory=lambda: []) cc: List[str] = field(default_factory=lambda: []) @dataclass(init=False) class Shelf(OrderedCollectionPrivate): """structure of an ordered collection activity""" type: str = "Shelf" @dataclass(init=False) class BookList(OrderedCollectionPrivate): """structure of an ordered collection activity""" summary: str = None curation: str = "closed" type: str = "BookList" # pylint: disable=invalid-name @dataclass(init=False) class OrderedCollectionPage(ActivityObject): """structure of an ordered collection activity""" partOf: str orderedItems: List next: str = None prev: str = None type: str = "OrderedCollectionPage" @dataclass(init=False) class CollectionItem(ActivityObject): """an item in a collection""" actor: str type: str = "CollectionItem" @dataclass(init=False) class ListItem(CollectionItem): """a book on a list""" book: str notes: str = None approved: bool = True order: int = None type: str = "ListItem" @dataclass(init=False) class ShelfItem(CollectionItem): """a book on a list""" book: str type: str = "ShelfItem"