add result summaries

main
eric 2023-04-27 17:05:29 -04:00
parent 62e00928f4
commit 7d1c1f4e80
3 changed files with 84 additions and 11 deletions

View File

@ -4,15 +4,30 @@
</head> </head>
<body> <body>
<h2> <h2>
Linkchecking for Link Checking for
{{provider.provider}} ({{provider.link_count}}) {{provider.provider}} ({{provider.link_count}} links)
</h2> </h2>
<h3>Summary</h3>
<table>
<tr>
<th>HTTP Code</th>
<th>number</th>
</tr>
{% for code in codes %}
<tr {% if code.recent_check__return_code != 200 %} style="color:red"{% endif %}>
<td> {{ code.recent_check__return_code }} </td>
<td> {{ code.count }} </td>
</tr>
{% endfor %}
</table>
<h3>Checked links</h3>
<ul> <ul>
{% for link in links %} {% for link in links %}
<li> <li>
<a href="{{link.url}}">{{link.url}}</a> <a href="{{link.url}}">{{link.url}}</a>
<table> <table>
{% for check in link.checks.all %} {% for check in link.recent_checks %}
<tr> <tr>
<td>{{ check.created }}</td> <td>{{ check.created }}</td>
<td {% if check.return_code != 200 %} style="color:red"{% endif %}>{{ check.return_code }}</td> <td {% if check.return_code != 200 %} style="color:red"{% endif %}>{{ check.return_code }}</td>

View File

@ -5,8 +5,24 @@
<body> <body>
<h2> <h2>
DOAB Linkchecking for DOAB Linkchecking for
{{ publisher.publisher }} ({{ items.count }} records) {{ publisher.publisher }} ({{ publisher.item_count|default:0 }} records)
</h2> </h2>
<h3>Link checking summary</h3>
<table>
<tr>
<th>HTTP Code</th>
<th>number</th>
</tr>
{% for code in codes %}
<tr {% if code.links__recent_check__return_code != 200 %} style="color:red"{% endif %}>
<td> {{ code.links__recent_check__return_code }} </td>
<td> {{ code.count }} </td>
</tr>
{% endfor %}
</table>
<h3>Items with checked links</h3>
<ul> <ul>
{% for item in items %} {% for item in items %}
<li> <li>
@ -20,9 +36,9 @@ DOAB Linkchecking for
<tr> <tr>
<td> <td>
<table> <table>
{% for check in link.checks.all %} {% for check in link.recent_checks %}
<tr {% if check.return_code != 200 %} style="color:red"{% endif %}> <tr {% if check.return_code != 200 %} style="color:red"{% endif %}>
<td>{{ check.created }}</td> <td>{{ check.created }}:</td>
<td>{{ check.return_code }}</td> <td>{{ check.return_code }}</td>
<td>{{ check.content_type }}</td> <td>{{ check.content_type }}</td>
</tr> </tr>
@ -33,6 +49,8 @@ DOAB Linkchecking for
{% endfor %} {% endfor %}
</table> </table>
</li> </li>
{% empty %}
None of the active links for {{ publisher.publisher }} have been checked.
{% endfor %} {% endfor %}
</ul> </ul>
</body> </body>

View File

@ -1,6 +1,7 @@
"""doab_check views """doab_check views
""" """
from django.db.models import Count
from django.http import HttpResponseRedirect from django.http import HttpResponseRedirect
from django.shortcuts import get_object_or_404, render from django.shortcuts import get_object_or_404, render
from django.urls import reverse from django.urls import reverse
@ -9,6 +10,30 @@ from django.views import generic
from .models import Item, Link from .models import Item, Link
class HomepageView(generic.TemplateView):
template_name = 'index.html'
def get_context_data(self, **kwargs):
codes = Link.objects.filter(recent_check__isnull=False).order_by('-recent_check__return_code').values(
'recent_check__return_code').distinct()
for code in codes:
code['count'] = Link.objects.filter(
recent_check__return_code=code['recent_check__return_code'],
).distinct().count()
return {'codes': codes}
class ProblemsView(generic.TemplateView):
template_name = 'problems.html'
def get_context_data(self, **kwargs):
problems = Link.objects.exclude(
recent_check__return_code__exact=200).exclude(recent_check__isnull=True
).order_by(
'-recent_check__return_code', 'provider')
return {'problem_list': problems}
class ProvidersView(generic.TemplateView): class ProvidersView(generic.TemplateView):
template_name = 'providers.html' template_name = 'providers.html'
@ -25,10 +50,16 @@ class ProviderView(generic.TemplateView):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
prov = kwargs['provider'] prov = kwargs['provider']
provider = {'provider': prov} provider = {'provider': prov}
provider_links = Link.objects.filter(provider=prov, live=True) provider_links = Link.objects.filter(provider=prov, live=True, recent_check__isnull=False)
provider['link_count'] = provider_links.count() provider['link_count'] = provider_links.count()
codes = provider_links.order_by('-recent_check__return_code').values(
'recent_check__return_code').distinct()
for code in codes:
code['count'] = provider_links.filter(
recent_check__return_code=code['recent_check__return_code'],
).distinct().count()
return {'provider': provider, 'links': provider_links} return {'provider': provider, 'links': provider_links, 'codes': codes}
class PublishersView(generic.TemplateView): class PublishersView(generic.TemplateView):
template_name = 'publishers.html' template_name = 'publishers.html'
@ -46,12 +77,21 @@ class PublisherView(generic.TemplateView):
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
pub = kwargs['publisher'] pub = kwargs['publisher']
publisher = {'publisher': pub} publisher = {'publisher': pub}
publisher_items = Item.objects.filter(publisher_name=pub, status=1)
publisher['link_count'] = publisher_items.count()
if pub == '*** no publisher name ***': if pub == '*** no publisher name ***':
pub = '' pub = ''
publisher_items = Item.objects.filter( publisher_items = Item.objects.filter(
publisher_name=pub, status=1, publisher_name=pub, status=1,
) )
publisher['item_count'] = publisher_items.count()
publisher_items = publisher_items.filter(links__recent_check__isnull=False).distinct()
return {'publisher': publisher, 'items': publisher_items} codes = publisher_items.order_by('-links__recent_check__return_code').values(
'links__recent_check__return_code').distinct()
for code in codes:
code['count'] = Link.objects.filter(live=True,
recent_check__return_code=code['links__recent_check__return_code'],
items__publisher_name=pub).distinct().count()
return {'publisher': publisher, 'items': publisher_items, 'codes': codes}