Allow screening developer reports by maintainer

A simple link is added for each user, but the URLs are flexible enough
to screen by any maintainer if you know how they are constructed.

Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
Dan McGee 2011-05-15 11:25:17 -05:00
parent d20b20bd8a
commit f04de80528
4 changed files with 40 additions and 13 deletions

View File

@ -7,6 +7,7 @@
(r'^$', 'index'),
(r'^newuser/$', 'new_user_form'),
(r'^profile/$', 'change_profile'),
(r'^reports/(?P<report>.*)/(?P<username>.*)/$', 'report'),
(r'^reports/(?P<report>.*)/$', 'report'),
)

View File

@ -128,18 +128,21 @@ def change_profile(request):
{'form': form, 'profile_form': profile_form})
@login_required
def report(request, report):
def report(request, report, username=None):
title = 'Developer Report'
packages = Package.objects.select_related('arch', 'repo')
names = attrs = None
names = attrs = user = None
if report == 'old':
title = 'Packages last built more than two years ago'
cutoff = datetime.now() - timedelta(days=730)
packages = packages.filter(build_date__lt=cutoff).order_by('build_date')
packages = packages.filter(
build_date__lt=cutoff).order_by('build_date')
elif report == 'big':
title = 'Packages with compressed size > 50 MiB'
cutoff = 50 * 1024 * 1024
packages = packages.filter(compressed_size__gte=cutoff).order_by('-compressed_size')
packages = packages.filter(
compressed_size__gte=cutoff).order_by('-compressed_size')
names = [ 'Compressed Size', 'Installed Size' ]
attrs = [ 'compressed_size_pretty', 'installed_size_pretty' ]
# Format the compressed and installed sizes with MB/GB/etc suffixes
@ -175,8 +178,19 @@ def report(request, report):
else:
raise Http404
if username:
user = get_object_or_404(User, username=username, is_active=True)
maintained = PackageRelation.objects.filter(user=user,
type=PackageRelation.MAINTAINER).values('pkgbase')
packages = packages.filter(pkgbase__in=maintained)
maints = User.objects.filter(id__in=PackageRelation.objects.filter(
type=PackageRelation.MAINTAINER).values('user'))
context = {
'all_maintainers': maints,
'title': title,
'maintainer': user,
'packages': packages,
'column_names': names,
'column_attrs': attrs,

View File

@ -100,13 +100,21 @@ <h3>Package Todo Lists</h3>
<h3>Developer Reports</h3>
<ul>
<li><a href="reports/big/">Big</a>: All packages with compressed size &gt; 50 MiB</li>
<li><a href="reports/old/">Old</a>: Packages last built more than two years ago</li>
<li><a href="reports/uncompressed-man/">Uncompressed Manpages</a>: Self-explanatory</li>
<li><a href="reports/uncompressed-info/">Uncompressed Info Pages</a>: Self-explanatory</li>
<li><a href="reports/unneeded-orphans/">Unneeded Orphans</a>: Packages
that have no maintainer and are not required by any other package in
any repository</li>
<li><a href="reports/big/">Big</a>:
All packages with compressed size &gt; 50 MiB
(<a href="reports/big/{{ user.username }}/">yours only</a>)</li>
<li><a href="reports/old/">Old</a>:
Packages last built more than two years ago
(<a href="reports/old/{{ user.username }}/">yours only</a>)</li>
<li><a href="reports/uncompressed-man/">Uncompressed Manpages</a>:
Self-explanatory
(<a href="reports/uncompressed-man/{{ user.username }}/">yours only</a>)</li>
<li><a href="reports/uncompressed-info/">Uncompressed Info Pages</a>:
Self-explanatory
(<a href="reports/uncompressed-info/{{ user.username }}/">yours only</a>)</li>
<li><a href="reports/unneeded-orphans/">Unneeded Orphans</a>:
Packages that have no maintainer and are not required by any other
package in any repository</li>
</ul>
</div><!-- #dev-dashboard -->

View File

@ -5,8 +5,12 @@
{% block content %}
<div class="box">
<h2>{{ title }}</h2>
<p>{{ packages|length }} package{{ packages|pluralize }} found.</p>
<h2>{{ title }}{% if maintainer %},
maintained by {{ maintainer.get_full_name }}{% endif%}</h2>
<p>{{ packages|length }} package{{ packages|pluralize }} found.
{% if maintainer %}This report only includes packages maintained by
{{ maintainer.get_full_name }} ({{ maintainer.username }}).{% endif %}
</p>
<table class="results">
<thead>
<tr>