Ejemplo n.º 1
0
    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.")
Ejemplo n.º 2
0
 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
Ejemplo n.º 3
0
 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
Ejemplo n.º 4
0
 def title(self, request: IRequest, tag: Tag) -> KleinRenderable:
     """
     `<title>` element.
     """
     if self.name is None:
         return tag
     else:
         return tag.clone()(self.name)
Ejemplo n.º 5
0
 def title(self, request: IRequest, tag: Tag) -> KleinRenderable:
     """
     `<title>` element.
     """
     if self.titleText is None:
         return tag
     else:
         return tag.clone()(self.titleText)
Ejemplo n.º 6
0
 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
     ]
Ejemplo n.º 7
0
 def title(self, request: IRequest, tag: Tag) -> KleinRenderable:
     """
     `<title>` element.
     """
     return tag.clone()(self.name)