tasks[task] = result[slug]
# Return a mapping with the list and domains
- return { task.result() : tasks[task] for task in tasks }
+ return {
+ task.result() : SearchResult(self.backend, **tasks[task]) for task in tasks
+ }
class Model(pydantic.BaseModel):
# Closed By
closed_by : str | None = None
+ # Closed?
+ def is_closed(self):
+ if self.closed_at:
+ return True
+
+ return False
+
# Comment
comment : str = ""
# Allows
allows: int = 0
+
+
+class SearchResult(Model):
+ # Domain
+ domain: str
+
+ # Changed At
+ changed_at: datetime.datetime
+
+ # Status
+ status: str
{% if report.comment %}
<pre>{{ report.comment }}</pre>
{% end %}
+
+ {# Status #}
+ {% if status %}
+ <h5 class="title is-5">
+ {{ _("Status") }}
+ </h5>
+
+ <ul>
+ {% for l, s in sorted(status.items()) %}
+ <li>
+ <a href="/dbl/lists/{{ l.slug }}/domains/{{ s.domain }}">
+ {% if s.status == "ALLOWED" %}
+ {{ _("%(name)s is currently allowed on %(list)s") % {
+ "name" : report.name,
+ "list" : l,
+ } }}
+ {% elif s.status == "BLOCKED" %}
+ {{ _("%(name)s is currently blocked on %(list)s") % {
+ "name" : report.name,
+ "list" : l,
+ } }}
+ {% end %}
+ </a>
+ </li>
+ {% end %}
+ </ul>
+ {% end %}
</div>
</div>
</div>
<div class="container">
{# Show any results #}
{% if results %}
- {% for list, domains in sorted(results.items()) %}
+ {% for list, result in sorted(results.items()) %}
<div class="block">
<h5 class="title is-5">
<a href="/dbl/lists/{{ list.slug }}">
</h5>
<div class="content">
- {{ _("There is one matching domain on this list:",
- "There are %(num)s matching domains on this list:", len(domains)) % \
- { "num" : len(domains) } }}
-
- <ul>
- {% for domain in domains %}
- <li>
- <a href="/dbl/lists/{{ list.slug }}/domains/{{ domain }}">
- {{ format_domain(domain) }}
- </a>
- </li>
- {% end %}
- </ul>
+ {% if result.status == "ALLOWED" %}
+ <p>
+ <span class="icon-text">
+ <span class="icon has-text-success">
+ <i class="fas fa-check"></i>
+ </span>
+ <span>
+ <a href="/dbl/lists/{{ list.slug }}/domains/{{ result.domain }}">
+ {{ _("%s is currently allowed") % format_domain(result.domain) }}
+ </a>
+ </span>
+ </span>
+ </p>
+ {% elif result.status == "BLOCKED" %}
+ <p>
+ <span class="icon-text">
+ <span class="icon has-text-danger">
+ <i class="fas fa-x"></i>
+ </span>
+ <span>
+ <a href="/dbl/lists/{{ list.slug }}/domains/{{ result.domain }}">
+ {{ _("%s is currently blocked") % format_domain(result.domain) }}
+ </a>
+ </span>
+ </span>
+ </p>
+ {% end %}
</div>
</div>
{% end %}
# Fetch the list
list = await report.get_list()
- self.render("dbl/reports/show.html", report=report, list=list)
+ # Fetch the domain status
+ if report.is_closed():
+ status = None
+ else:
+ status = await self.backend.dbl.search(report.name)
+
+ self.render("dbl/reports/show.html", report=report, list=list, status=status)
class SearchHandler(base.AnalyticsMixin, BaseHandler):