async def _events(self, request: IRequest, tag: Tag, reverse_order: bool = False) -> KleinRenderable: if reverse_order: def order(i: Iterable) -> Iterable: return reversed(sorted(i)) else: def order(i: Iterable) -> Iterable: return sorted(i) authorizationsForUser = partial( self.config.authProvider.authorizationsForUser, request.user) relevantAuthorizations = (Authorization.readIncidents | Authorization.writeIncidentReports) eventIDs = order([ event.id for event in await self.config.store.events() if relevantAuthorizations & await authorizationsForUser(event) ]) if eventIDs: eventPage = self.config.urls.viewEvent.asText() return (tag.clone()(tags.a(eventID, href=eventPage.replace( "<eventID>", eventID))) for eventID in eventIDs) else: return tag("No events found.")
def roots(self, request: object, tag: Tag) -> "Flattenable": r = [] for o in self.system.rootobjects: r.append(tag.clone().fillSlots(root=tags.code( epydoc2stan.taglink(o, self.filename) ))) return r
def names(self, request: object, tag: Tag) -> "Flattenable": def link(obj: model.Documentable) -> Tag: # The "data-type" attribute helps doc2dash figure out what # category (class, method, etc.) an object belongs to. attributes = {} if obj.kind: attributes["data-type"] = epydoc2stan.format_kind(obj.kind) return tags.code( epydoc2stan.taglink(obj, NameIndexPage.filename), **attributes ) name2obs: DefaultDict[str, List[model.Documentable]] = defaultdict(list) for obj in self.initials[self.my_letter]: name2obs[obj.name].append(obj) r = [] for name in sorted(name2obs, key=lambda x:(x.lower(), x)): item: Tag = tag.clone()(name) obs = name2obs[name] if all(isPrivate(ob) for ob in obs): item(class_='private') if len(obs) == 1: item(' - ', link(obs[0])) else: ul = tags.ul() for ob in sorted(obs, key=_lckey): subitem = tags.li(link(ob)) if isPrivate(ob): subitem(class_='private') ul(subitem) item(ul) r.append(item) return r
def title(self, request: IRequest, tag: Tag) -> KleinRenderable: """ `<title>` element. """ if self.name is None: return tag else: return tag.clone()(self.name)
def title(self, request: IRequest, tag: Tag) -> KleinRenderable: """ `<title>` element. """ if self.titleText is None: return tag else: return tag.clone()(self.titleText)
def baseTables(self, request: object, item: Tag) -> "Flattenable": baselists = self.baselists[:] if not baselists: return [] if baselists[0][0][0] == self.ob: del baselists[0] loader = ChildTable.lookup_loader(self.template_lookup) return [ item.clone().fillSlots(baseName=self.baseName(b), baseTable=ChildTable( self.docgetter, self.ob, sorted(attrs, key=objects_order), loader)) for b, attrs in baselists ]
def title(self, request: IRequest, tag: Tag) -> KleinRenderable: """ `<title>` element. """ return tag.clone()(self.name)