summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--packages/urls.py1
-rw-r--r--packages/views.py37
-rw-r--r--templates/packages/flag.html28
-rw-r--r--templates/packages/flag_confirmed.html19
-rw-r--r--templates/packages/outofdate.txt8
5 files changed, 64 insertions, 29 deletions
diff --git a/packages/urls.py b/packages/urls.py
index bfe9f76..e0362fa 100644
--- a/packages/urls.py
+++ b/packages/urls.py
@@ -5,6 +5,7 @@ package_patterns = patterns('packages.views',
(r'^files/$', 'files'),
(r'^maintainer/$', 'getmaintainer'),
(r'^flag/$', 'flag'),
+ (r'^flag/done/$', 'flag_confirmed', {}, 'package-flag-confirmed'),
(r'^unflag/$', 'unflag'),
(r'^unflag/all/$', 'unflag_all'),
(r'^download/$', 'download'),
diff --git a/packages/views.py b/packages/views.py
index 73692d3..bcb6641 100644
--- a/packages/views.py
+++ b/packages/views.py
@@ -367,17 +367,20 @@ class FlagForm(forms.Form):
def flag(request, name, repo, arch):
pkg = get_object_or_404(Package,
pkgname=name, repo__name__iexact=repo, arch__name=arch)
- context = {'pkg': pkg}
if pkg.flag_date is not None:
# already flagged. do nothing.
return direct_to_template(request, 'packages/flagged.html', context)
+ # find all packages from (hopefully) the same PKGBUILD
+ pkgs = Package.objects.select_related('arch', 'repo').filter(
+ pkgbase=pkg.pkgbase, flag_date__isnull=True,
+ repo__testing=pkg.repo.testing).order_by(
+ 'pkgname', 'repo__name', 'arch__name')
if request.POST:
form = FlagForm(request.POST)
if form.is_valid() and form.cleaned_data['website'] == '':
- # find all packages from (hopefully) the same PKGBUILD
- pkgs = Package.objects.filter(
- pkgbase=pkg.pkgbase, repo__testing=pkg.repo.testing)
+ # save the package list for later use
+ flagged_pkgs = list(pkgs)
pkgs.update(flag_date=datetime.utcnow())
maints = pkg.maintainers
@@ -394,13 +397,13 @@ def flag(request, name, repo, arch):
toemail.append(maint.email)
if toemail:
- # send notification email to the maintainer
+ # send notification email to the maintainers
t = loader.get_template('packages/outofdate.txt')
c = Context({
'email': form.cleaned_data['email'],
'message': form.cleaned_data['usermessage'],
'pkg': pkg,
- 'weburl': pkg.get_full_url(),
+ 'packages': flagged_pkgs,
})
send_mail(subject,
t.render(c),
@@ -408,14 +411,30 @@ def flag(request, name, repo, arch):
toemail,
fail_silently=True)
- context['confirmed'] = True
+ return redirect('package-flag-confirmed', name=name, repo=repo,
+ arch=arch)
else:
form = FlagForm()
- context['form'] = form
-
+ context = {
+ 'package': pkg,
+ 'packages': pkgs,
+ 'form': form
+ }
return direct_to_template(request, 'packages/flag.html', context)
+def flag_confirmed(request, name, repo, arch):
+ pkg = get_object_or_404(Package,
+ pkgname=name, repo__name__iexact=repo, arch__name=arch)
+ pkgs = Package.objects.select_related('arch', 'repo').filter(
+ pkgbase=pkg.pkgbase, flag_date=pkg.flag_date,
+ repo__testing=pkg.repo.testing).order_by(
+ 'pkgname', 'repo__name', 'arch__name')
+
+ context = {'package': pkg, 'packages': pkgs}
+
+ return direct_to_template(request, 'packages/flag_confirmed.html', context)
+
def download(request, name, repo, arch):
pkg = get_object_or_404(Package,
pkgname=name, repo__name__iexact=repo, arch__name=arch)
diff --git a/templates/packages/flag.html b/templates/packages/flag.html
index 35198df..4a3c696 100644
--- a/templates/packages/flag.html
+++ b/templates/packages/flag.html
@@ -1,23 +1,22 @@
{% extends "base.html" %}
-{% block title %}Arch Linux - Flag Package - {{ pkg.pkgname }}{% endblock %}
+{% block title %}Arch Linux - Flag Package - {{ package.pkgname }}{% endblock %}
{% block navbarclass %}anb-packages{% endblock %}
{% block content %}
<div id="pkg-flag" class="box">
-{% if confirmed %}
- <h2>Package Flagged</h2>
-
- <p>Thank you, the maintainers have been notified about <strong>{{ pkg.pkgname }}</strong>.</p>
-
- <p>You can return to the package details page for
- <a href="{{ pkg.get_absolute_url }}" title="Package details for {{pkg.pkgname}}">{{pkg.pkgname}}</a>.</p>
-{% else %}
- <h2>Flag Package: {{ pkg.pkgname }}</h2>
+ <h2>Flag Package: {{ package.pkgname }}</h2>
<p>If you notice a package is out-of-date (i.e., there is a newer
<strong>stable</strong> release available), then please notify us using
the form below.</p>
+ <p>Note that all of the following packages will be marked out of date:</p>
+ <ul>
+ {% for pkg in packages %}
+ <li>{{ pkg.pkgname }} {{ pkg.full_version }} [{{ pkg.repo.name|lower }}] ({{ pkg.arch.name }})</li>
+ {% endfor %}
+ </ul>
+
<p>The message box portion of the flag utility is optional, and meant
for short messages only. If you need more than 200 characters for your
message, then file a bug report, email the maintainer directly, or send
@@ -26,17 +25,16 @@
with your additional text.</p>
<p><strong>Note:</strong> Please do <em>not</em> use this facility if the
- package is broken! Use the <a href="https://bugs.archlinux.org"
- title="Arch Linux Bugtracker">bug tracker</a> instead.</p>
+ package is broken! Please <a href="https://bugs.archlinux.org/"
+ title="Arch Linux Bugtracker">file a bug</a> instead.</p>
- <p>Please confirm your flag request for {{pkg.pkgname}}:</p>
+ <p>Please confirm your flag request for {{package.pkgname}}:</p>
<form id="flag-pkg-form" method="post">{% csrf_token %}
<fieldset>
{{ form.as_p }}
</fieldset>
- <p><label></label> <input title="Flag {{ pkg.pkgname }} as out-of-date" type="submit" value="Flag Package" /></p>
+ <p><label></label> <input title="Flag {{ package.pkgname }} as out-of-date" type="submit" value="Flag Package" /></p>
</form>
-{% endif %}
</div>
{% endblock %}
diff --git a/templates/packages/flag_confirmed.html b/templates/packages/flag_confirmed.html
new file mode 100644
index 0000000..02c24f7
--- /dev/null
+++ b/templates/packages/flag_confirmed.html
@@ -0,0 +1,19 @@
+{% extends "base.html" %}
+{% block title %}Arch Linux - Package Flagged - {{ package.pkgname }}{% endblock %}
+{% block navbarclass %}anb-packages{% endblock %}
+
+{% block content %}
+<div id="pkg-flag" class="box">
+ <h2>Package Flagged - {{ package.pkgname }}</h2>
+
+ <p>Thank you, the maintainers have been notified the following packages are out-of-date:</p>
+ <ul>
+ {% for pkg in packages %}
+ <li>{{ pkg.pkgname }} {{ pkg.full_version }} [{{ pkg.repo.name|lower }}] ({{ pkg.arch.name }})</li>
+ {% endfor %}
+ </ul>
+
+ <p>You can return to the package details page for
+ <a href="{{ package.get_absolute_url }}" title="Package details for {{package.pkgname}}">{{package.pkgname}}</a>.</p>
+</div>
+{% endblock %}
diff --git a/templates/packages/outofdate.txt b/templates/packages/outofdate.txt
index 93abea0..4876c31 100644
--- a/templates/packages/outofdate.txt
+++ b/templates/packages/outofdate.txt
@@ -1,9 +1,7 @@
-{% autoescape off %}{{ email }} wants to notify you that the following package may be out-of-date:
+{% autoescape off %}{{ email }} wants to notify you that the following packages may be out-of-date:
- Package Name: {{ pkg.pkgname }}
- Architecture: {{ pkg.arch.name }}
- Repository: {{ pkg.repo.name }}
- ({{ weburl }})
+{% for p in packages %}
+* {{ p.pkgname }} {{ p.full_version }} [{{ p.repo.name|lower }}] ({{ p.arch.name }}): {{ p.get_full_url }}{% endfor %}
{% if message %}
The user provided the following additional text: