Skip to content

Commit 4f7897d

Browse files
committed
switch to django-tables2
1 parent f798882 commit 4f7897d

File tree

26 files changed

+420
-344
lines changed

26 files changed

+420
-344
lines changed

errata/tables.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import django_tables2 as tables
2+
3+
from errata.models import Erratum
4+
5+
6+
class ErratumTable(tables.Table):
7+
name = tables.TemplateColumn('<a href="{{ record.get_absolute_url }}">{{ record.name }}</a>', order_by='name', verbose_name='ID', attrs={'th': {'class': 'col-sm-2'}, 'td': {'class': 'col-sm-2'}})
8+
e_type = tables.Column(order_by='e_type', verbose_name='Type', attrs={'th': {'class': 'col-sm-1'}, 'td': {'class': 'col-sm-1'}})
9+
issue_date = tables.DateColumn(order_by='issue_date', verbose_name='Published Date', attrs={'th': {'class': 'col-sm-1'}, 'td': {'class': 'col-sm-1'}})
10+
synopsis = tables.Column(orderable=False, verbose_name='Synopsis', attrs={'th': {'class': 'col-sm-4'}, 'td': {'class': 'col-sm-4'}})
11+
packages_affected = tables.TemplateColumn('{% with count=record.affected_packages.count %}{% if count != 0 %}<a href="{% url \'packages:package_list\' %}?erratum_id={{ record.id }}&type=affected">{{ count }}</a>{% else %}{% endif %}{% endwith %}', orderable=False, verbose_name='Packages Affected', attrs={'th': {'class': 'col-sm-1'}, 'td': {'class': 'col-sm-1'}})
12+
packages_fixed = tables.TemplateColumn('{% with count=record.fixed_packages.count %}{% if count != 0 %}<a href="{% url \'packages:package_list\' %}?erratum_id={{ record.id }}&type=fixed">{{ count }}</a>{% else %}{% endif %}{% endwith %}', orderable=False, verbose_name='Packages Fixed', attrs={'th': {'class': 'col-sm-1'}, 'td': {'class': 'col-sm-1'}})
13+
osreleases = tables.TemplateColumn('{% with count=record.osreleases.count %}{% if count != 0 %}<a href="{% url \'operatingsystems:osrelease_list\' %}?erratum_id={{ record.id }}">{{ count }}</a>{% else %}{% endif %}{% endwith %}', orderable=False, verbose_name='OS Releases Affected', attrs={'th': {'class': 'col-sm-1'}, 'td': {'class': 'col-sm-1'}})
14+
cves = tables.TemplateColumn('{% with count=record.cves.count %}{% if count != 0 %}<a href="{% url \'security:cve_list\' %}?erratum_id={{ record.id }}">{{ count }}</a>{% else %}{% endif %}{% endwith %}', orderable=False, verbose_name='CVEs', attrs={'th': {'class': 'col-sm-1'}, 'td': {'class': 'col-sm-1'}})
15+
references = tables.TemplateColumn('{% with count=record.references.count %}{% if count != 0 %}<a href="{% url \'security:reference_list\' %}?erratum_id={{ record.id }}">{{ count }}</a>{% else %}{% endif %}{% endwith %}', orderable=False, verbose_name='References', attrs={'th': {'class': 'col-sm-1'}, 'td': {'class': 'col-sm-1'}})
16+
17+
class Meta:
18+
model = Erratum
19+
template_name = 'django_tables2/bootstrap.html'
20+
attrs = {"class": "table table-striped table-bordered table-hover table-condensed table-responsive"}
21+
fields = ('name', 'e_type', 'issue_date', 'synopsis', 'packages_affected', 'packages_fixed', 'osreleases', 'cves', 'references')
Lines changed: 2 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,3 @@
11
{% load common %}
2-
<table class="table table-striped table-bordered table-hover table-condensed table-responsive">
3-
<thead>
4-
<tr>
5-
<th class="col-sm-2">ID</th>
6-
<th class="col-sm-1">Type</th>
7-
<th class="col-sm-1">Published Date</th>
8-
<th class="col-sm-4">Synopsis</th>
9-
<th class="col-sm-1">Packages Affected</th>
10-
<th class="col-sm-1">Packages Fixed</th>
11-
<th class="col-sm-1">OS Releases Affected</th>
12-
<th class="col-sm-1">CVEs</th>
13-
<th class="col-sm-1">References</th>
14-
</tr>
15-
</thead>
16-
<tbody>
17-
{% for erratum in object_list %}
18-
<tr>
19-
<td><a href="{{ erratum.get_absolute_url }}">{{ erratum.name }}</a></td>
20-
<td>{{ erratum.e_type }}</td>
21-
<td>{{ erratum.issue_date|date|default_if_none:'' }}</td>
22-
<td>{{ erratum.synopsis }}</td>
23-
<td>{% with count=erratum.affected_packages.count %}{% if count != 0 %}<a href="{% url 'packages:package_list' %}?erratum_id={{ erratum.id }}&type=affected">{{ count }}</a>{% else %}&nbsp;{% endif %}{% endwith %}</td>
24-
<td>{% with count=erratum.fixed_packages.count %}{% if count != 0 %}<a href="{% url 'packages:package_list' %}?erratum_id={{ erratum.id }}&type=fixed">{{ count }}</a>{% else %}&nbsp;{% endif %}{% endwith %}</td>
25-
<td>{% with count=erratum.osreleases.count %}{% if count != 0 %}<a href="{% url 'operatingsystems:osrelease_list' %}?erratum_id={{ erratum.id }}">{{ count }}</a>{% else %}&nbsp;{% endif %}{% endwith %}</td>
26-
<td>{% with count=erratum.cves.count %}{% if count != 0 %}<a href="{% url 'security:cve_list' %}?erratum_id={{ erratum.id }}">{{ count }}</a>{% else %}&nbsp;{% endif %}{% endwith %}</td>
27-
<td>{% with count=erratum.references.count %}{% if count != 0 %}<a href="{% url 'security:reference_list' %}?erratum_id={{ erratum.id }}">{{ count }}</a>{% else %}&nbsp;{% endif %}{% endwith %}</td>
28-
</tr>
29-
{% endfor %}
30-
</tbody>
31-
</table>
2+
{% load django_tables2 %}
3+
{% render_table table %}

hosts/tables.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import django_tables2 as tables
2+
3+
from hosts.models import Host
4+
5+
6+
class HostTable(tables.Table):
7+
hostname = tables.TemplateColumn('<a href="{{ record.get_absolute_url }}">{{ record.hostname }}</a>', order_by='hostname', verbose_name='Hostname', attrs={'th': {'class': 'col-sm-3'}, 'td': {'class': 'col-sm-3'}})
8+
sec_updates = tables.TemplateColumn('{% with count=record.get_num_security_updates %}{% if count != 0 %}<span style="color:red">{{ count }}</span>{% else %}{% endif %}{% endwith %}', orderable=False, verbose_name='Security Updates', attrs={'th': {'class': 'col-sm-1'}, 'td': {'class': 'col-sm-1 centered'}})
9+
bug_updates = tables.TemplateColumn('{% with count=record.get_num_bugfix_updates %}{% if count != 0 %}<span style="color:orange">{{ count }}</span>{% else %}{% endif %}{% endwith %}', orderable=False, verbose_name='Bugfix Updates', attrs={'th': {'class': 'col-sm-1'}, 'td': {'class': 'col-sm-1 centered'}})
10+
affected_errata = tables.TemplateColumn('{% with count=record.errata.count %}{% if count != 0 %}<a href="{% url \'errata:erratum_list\' %}?host={{ record.hostname }}">{{ count }}</a>{% else %}{% endif %}{% endwith %}', orderable=False, verbose_name='Affected by Errata', attrs={'th': {'class': 'col-sm-1'}, 'td': {'class': 'col-sm-1 centered'}})
11+
kernel = tables.Column(verbose_name='Running Kernel', attrs={'th': {'class': 'col-sm-2'}, 'td': {'class': 'col-sm-2'}})
12+
osvariant = tables.TemplateColumn('{% if record.osvariant %}<a href="{{ record.osvariant.get_absolute_url }}">{{ record.osvariant }}</a>{% endif %}', order_by='osvariant__name', verbose_name='OS Variant', attrs={'th': {'class': 'col-sm-2'}, 'td': {'class': 'col-sm-2'}})
13+
lastreport = tables.Column(order_by='lastreport', verbose_name='Last Report', attrs={'th': {'class': 'col-sm-2'}, 'td': {'class': 'col-sm-2'}})
14+
reboot_required = tables.TemplateColumn('{% load common %}{% no_yes_img record.reboot_required %}', orderable=False, verbose_name='Reboot Status', attrs={'th': {'class': 'col-sm-1'}, 'td': {'class': 'col-sm-1 centered'}})
15+
16+
class Meta:
17+
model = Host
18+
template_name = 'django_tables2/bootstrap.html'
19+
attrs = {"class": "table table-striped table-bordered table-hover table-condensed table-responsive"}
20+
fields = ('hostname', 'sec_updates', 'bug_updates', 'affected_errata', 'kernel', 'osvariant', 'lastreport', 'reboot_required')
Lines changed: 2 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,3 @@
11
{% load common report_alert %}
2-
<table class="table table-striped table-bordered table-hover table-condensed table-responsive">
3-
<thead>
4-
<tr>
5-
<th class="col-sm-3">Hostname</th>
6-
<th class="col-sm-1" colspan="2">Updates</th>
7-
<th class="col-sm-1">Affected by Errata</th>
8-
<th class="col-sm-2">Running Kernel</th>
9-
<th class="col-sm-2">OS Variant</th>
10-
<th class="col-sm-2">Last Report</th>
11-
<th class="col-sm-1">Reboot Status</th>
12-
</tr>
13-
</thead>
14-
<tbody>
15-
{% for host in object_list %}
16-
<tr>
17-
<td><a href="{{ host.get_absolute_url }}">{{ host }}</a></td>
18-
<td class="centered" style="color:red">{% with count=host.get_num_security_updates %}{% if count != 0 %}{{ count }}{% else %}&nbsp;{% endif %}{% endwith %}</td>
19-
<td class="centered" style="color:orange">{% with count=host.get_num_bugfix_updates %}{% if count != 0 %}{{ count }}{% else %}&nbsp;{% endif %}{% endwith %}</td>
20-
<td class="centered">{% with count=host.errata.count %}{% if count != 0 %}<a href="{% url 'errata:erratum_list' %}?host={{ host.hostname }}">{{ count }}{% else %}&nbsp;{% endif %}{% endwith %}<a/></td>
21-
<td>{{ host.kernel }}</td>
22-
<td><a href="{{ host.osvariant.get_absolute_url }}">{{ host.osvariant }}</a></td>
23-
<td>{{ host.lastreport }}{% report_alert host.lastreport %}</td>
24-
<td class="centered">{% no_yes_img host.reboot_required %}</td>
25-
</tr>
26-
{% endfor %}
27-
</tbody>
28-
</table>
2+
{% load django_tables2 %}
3+
{% render_table table %}

modules/tables.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import django_tables2 as tables
2+
3+
from modules.models import Module
4+
5+
6+
class ModuleTable(tables.Table):
7+
name = tables.TemplateColumn('<a href="{{ record.get_absolute_url }}">{{ record.name }}</a>', order_by='name', verbose_name='Name', attrs={'th': {'class': 'col-sm-auto'}, 'td': {'class': 'col-sm-auto'}})
8+
stream = tables.Column(verbose_name='Stream', attrs={'th': {'class': 'col-sm-auto'}, 'td': {'class': 'col-sm-auto'}})
9+
version = tables.Column(verbose_name='Version', attrs={'th': {'class': 'col-sm-auto'}, 'td': {'class': 'col-sm-auto'}})
10+
context = tables.Column(verbose_name='Context', attrs={'th': {'class': 'col-sm-auto'}, 'td': {'class': 'col-sm-auto'}})
11+
repo = tables.TemplateColumn('<a href="{{ record.repo.get_absolute_url }}">{{ record.repo }}</a>', verbose_name='Repo', orderable=False, attrs={'th': {'class': 'col-sm-auto'}, 'td': {'class': 'col-sm-auto'}})
12+
packages = tables.TemplateColumn('<a href="{% url \'packages:package_list\' %}?module_id={{ record.id }}">{{ record.packages.count }}</a>', verbose_name='Packages', orderable=False, attrs={'th': {'class': 'col-sm-auto'}, 'td': {'class': 'col-sm-auto'}})
13+
enabled_on_hosts = tables.TemplateColumn('{{ record.host_set.count }}', verbose_name='Enabled on Hosts', orderable=False, attrs={'th': {'class': 'col-md-auto'}, 'td': {'class': 'col-md-auto'}})
14+
15+
class Meta:
16+
model = Module
17+
template_name = 'django_tables2/bootstrap.html'
18+
attrs = {"class": "table table-striped table-bordered table-hover table-condensed table-responsive"}
19+
fields = ('name', 'stream', 'version', 'context', 'repo', 'packages', 'enabled_on_hosts')
Lines changed: 2 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,3 @@
11
{% load common %}
2-
<table class="table table-striped table-bordered table-hover table-condensed table-responsive">
3-
<thead>
4-
<tr>
5-
<th class="col-sm-auto">Name</th>
6-
<th class="col-sm-auto">Stream</th>
7-
<th class="col-sm-auto">Version</th>
8-
<th class="col-sm-auto">Context</th>
9-
<th class="col-sm-auto">Repo</th>
10-
<th class="col-sm-auto">Packages</th>
11-
<th class="col-md-auto">Enabled on Hosts</th>
12-
</tr>
13-
</thead>
14-
<tbody>
15-
{% for module in object_list %}
16-
<tr>
17-
<td><a href="{{ module.get_absolute_url }}">{{ module.name }}</a></td>
18-
<td>{{ module.stream }}</td>
19-
<td>{{ module.version }}</td>
20-
<td>{{ module.context }}</td>
21-
<td><a href="{{ module.repo.get_absolute_url }}">{{ module.repo }}</a></td>
22-
<td><a href="{% url 'packages:package_list' %}?module_id={{ module.id }}">{{ module.packages.count }}</a></td>
23-
<td>{{ module.host_set.count }}</td>
24-
</tr>
25-
{% endfor %}
26-
</tbody>
27-
</table>
2+
{% load django_tables2 %}
3+
{% render_table table %}

operatingsystems/tables.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import django_tables2 as tables
2+
3+
from operatingsystems.models import OSRelease, OSVariant
4+
5+
6+
class OSReleaseTable(tables.Table):
7+
name = tables.TemplateColumn('<a href="{{ record.get_absolute_url }}">{{ record.name }}</a>', order_by='name', verbose_name='OS Release', attrs={'th': {'class': 'col-sm-3'}, 'td': {'class': 'col-sm-3'}})
8+
cpe_name = tables.Column(verbose_name='CPE Name', attrs={'th': {'class': 'col-sm-2'}, 'td': {'class': 'col-sm-2'}})
9+
codename = tables.Column(verbose_name='Codename', attrs={'th': {'class': 'col-sm-1'}, 'td': {'class': 'col-sm-1'}})
10+
repos = tables.TemplateColumn('<a href="{% url \'repos:repo_list\' %}?osrelease_id={{ record.id }}">{{ record.repos.count }}</a>', verbose_name='Repos', orderable=False, attrs={'th': {'class': 'col-sm-1'}, 'td': {'class': 'col-sm-1'}})
11+
osvariants = tables.TemplateColumn('<a href="{% url \'operatingsystems:osvariant_list\' %}?osrelease_id={{ record.id }}">{{ record.osvariant_set.count }}</a>', verbose_name='OS Variants', orderable=False, attrs={'th': {'class': 'col-sm-1'}, 'td': {'class': 'col-sm-1'}})
12+
hosts = tables.TemplateColumn('{% load common %}<a href="{% url \'hosts:host_list\' %}?osrelease_id={{ record.id }}">{% host_count record %}</a>', verbose_name='Hosts', orderable=False, attrs={'th': {'class': 'col-sm-1'}, 'td': {'class': 'col-sm-1'}})
13+
errata = tables.TemplateColumn('<a href="{% url \'errata:erratum_list\' %}?osrelease_id={{ record.id }}">{{ record.erratum_set.count }}</a>', verbose_name='Errata', orderable=False, attrs={'th': {'class': 'col-sm-1'}, 'td': {'class': 'col-sm-1'}})
14+
15+
class Meta:
16+
model = OSRelease
17+
template_name = 'django_tables2/bootstrap.html'
18+
attrs = {"class": "table table-striped table-bordered table-hover table-condensed table-responsive"}
19+
fields = ('name', 'cpe_name', 'codename', 'repos', 'osvariants', 'hosts', 'errata')
20+
21+
22+
class OSVariantTable(tables.Table):
23+
name = tables.TemplateColumn('<a href="{{ record.get_absolute_url }}">{{ record }}</a>', order_by='name', verbose_name='Name', attrs={'th': {'class': 'col-sm-4'}, 'td': {'class': 'col-sm-4'}})
24+
arch = tables.Column(accessor='arch__name', verbose_name='Architecture', attrs={'th': {'class': 'col-sm-1'}, 'td': {'class': 'col-sm-1'}})
25+
codename = tables.TemplateColumn('{% if record.codename %}{{ record.codename }}{% else %}{% if record.osrelease %}{{ record.osrelease.codename }}{% endif %}{% endif %}', order_by='codename', verbose_name='Codename', attrs={'th': {'class': 'col-sm-1'}, 'td': {'class': 'col-sm-1'}})
26+
hosts = tables.TemplateColumn('<a href="{% url \'hosts:host_list\' %}?osvariant_id={{ record.id }}">{{ record.host_set.count }}</a>', verbose_name='Hosts', orderable=False, attrs={'th': {'class': 'col-sm-1'}, 'td': {'class': 'col-sm-1'}})
27+
osrelease = tables.TemplateColumn('{% if record.osrelease %}<a href="{{ record.osrelease.get_absolute_url }}">{{ record.osrelease }}</a>{% endif %}', order_by='osrelease__name', verbose_name='OS Release', attrs={'th': {'class': 'col-sm-4'}, 'td': {'class': 'col-sm-4'}})
28+
repos_osrelease = tables.TemplateColumn('{% if record.osrelease.repos.count != None %}{{ record.osrelease.repos.count }}{% else %}0{% endif %}', verbose_name='Repos (OS Release)', orderable=False, attrs={'th': {'class': 'col-sm-1'}, 'td': {'class': 'col-sm-1'}})
29+
30+
class Meta:
31+
model = OSVariant
32+
template_name = 'django_tables2/bootstrap.html'
33+
attrs = {"class": "table table-striped table-bordered table-hover table-condensed table-responsive"}
34+
fields = ('name', 'arch', 'codename', 'hosts', 'osrelease', 'repos_osrelease')
Lines changed: 2 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,3 @@
11
{% load common %}
2-
<table class="table table-striped table-bordered table-hover table-condensed table-responsive">
3-
<thead>
4-
<tr>
5-
<th class="col-sm-3">OS Release</th>
6-
<th class="col-sm-2">CPE Name</th>
7-
<th class="col-sm-1">Codename</th>
8-
<th class="col-sm-1">Repos</th>
9-
<th class="col-sm-1">OS Variants</th>
10-
<th class="col-sm-1">Hosts</th>
11-
<th class="col-sm-1">Errata</th>
12-
</tr>
13-
</thead>
14-
<tbody>
15-
{% for osrelease in object_list %}
16-
<tr>
17-
<td><a href="{{ osrelease.get_absolute_url }}">{{ osrelease.name }}</a></td>
18-
<td>{% if osrelease.cpe_name %}{{ osrelease.cpe_name }}{% endif %}</td>
19-
<td>{% if osrelease.codename %}{{ osrelease.codename }}{% endif %}</td>
20-
<td><a href="{% url 'repos:repo_list' %}?osrelease_id={{ osrelease.id }}">{{ osrelease.repos.count }}</a></td>
21-
<td><a href="{% url 'operatingsystems:osvariant_list' %}?osrelease_id={{ osrelease.id }}">{{ osrelease.osvariant_set.count }}</a></td>
22-
<td><a href="{% url 'hosts:host_list' %}?osrelease_id={{ osrelease.id }}">{% host_count osrelease %}</a></td>
23-
<td><a href="{% url 'errata:erratum_list' %}?osrelease_id={{ osrelease.id }}">{{ osrelease.erratum_set.count }}</a></td>
24-
</tr>
25-
{% endfor %}
26-
</tbody>
27-
</table>
2+
{% load django_tables2 %}
3+
{% render_table table %}
Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,3 @@
11
{% load common %}
2-
<table class="table table-striped table-bordered table-hover table-condensed table-responsive">
3-
<thead>
4-
<tr>
5-
<th class="col-sm-4">Name</th>
6-
<th class="col-sm-1">Architecture</th>
7-
<th class="col-sm-1">Codename</th>
8-
<th class="col-sm-1">Hosts</th>
9-
<th class="col-sm-4">OS Release</th>
10-
<th class="col-sm-1">Repos (OS Release)</th>
11-
</tr>
12-
</thead>
13-
<tbody>
14-
{% for osvariant in object_list %}
15-
<tr>
16-
<td><a href="{{ osvariant.get_absolute_url }}">{{ osvariant }}</a></td>
17-
<td>{{ osvariant.arch }}</td>
18-
<td>{% if osvariant.codename %}{{ osvariant.codename }}{% else %}{% if osvariant.osrelease %}{{ osvariant.osrelease.codename }}{% endif %}{% endif %}</td>
19-
<td><a href="{% url 'hosts:host_list' %}?osvariant_id={{ osvariant.id }}">{{ osvariant.host_set.count }}</a></td>
20-
<td>{% if osvariant.osrelease %}<a href="{{ osvariant.osrelease.get_absolute_url }}">{{ osvariant.osrelease }}</a>{% endif %}</td>
21-
<td>{% if osvariant.osrelease.repos.count != None %}{{ osvariant.osrelease.repos.count }}{% else %}0{% endif %}</td>
22-
</tr>
23-
{% endfor %}
24-
</tbody>
25-
</table>
2+
{% load django_tables2 %}
3+
{% render_table table %}

0 commit comments

Comments
 (0)