From 1c22bbc3f74f90a136b899c22bba327161c14763 Mon Sep 17 00:00:00 2001 From: Ismael Carnales Date: Sat, 31 Oct 2009 15:46:43 -0200 Subject: added missing packages views from archweb_pub --- packages/views.py | 65 ++++++++++++++++++++++++++++++++++++++++ templates/packages/flag.html | 31 +++++++++++++++++++ templates/packages/flagged.html | 7 +++++ templates/packages/flaghelp.html | 16 ++++++++++ templates/packages/outofdate.txt | 17 +++++++++++ urls.py | 8 +++++ 6 files changed, 144 insertions(+) create mode 100644 templates/packages/flag.html create mode 100644 templates/packages/flagged.html create mode 100644 templates/packages/flaghelp.html create mode 100644 templates/packages/outofdate.txt diff --git a/packages/views.py b/packages/views.py index a839ca6b..451b2bc5 100644 --- a/packages/views.py +++ b/packages/views.py @@ -56,6 +56,14 @@ def details(request, name='', repo='', arch=''): return HttpResponseRedirect("/packages/?arch=%s&repo=%s&q=%s" % ( arch.lower(), repo.title(), name)) +def getmaintainer(request, name, repo, arch): + "Returns the maintainer as a plaintext." + + pkg= get_object_or_404(Package, + pkgname=name, repo__name__iexact=repo, arch__name=arch) + + return HttpResponse(str(pkg.maintainer if pkg.maintainer_id else 'None')) + class PackageSearchForm(forms.Form): repo = forms.ChoiceField(required=False) arch = forms.ChoiceField(required=False) @@ -197,6 +205,63 @@ def signoff_package(request, arch, pkgname): return signoffs(request) +def flaghelp(request): + return render_to_response('packages/flaghelp.html') + +class FlagForm(forms.Form): + email = forms.EmailField(label='* E-mail Address') + usermessage = forms.CharField(label='Message To Dev', + widget=forms.Textarea, required=False) + # The field below is used to filter out bots that blindly fill out all input elements + website = forms.CharField(label='', + widget=forms.TextInput(attrs={'style': 'display:none;'}), + required=False) + +def flag(request, pkgid): + pkg = get_object_or_404(Package, id=pkgid) + context = {'pkg': pkg} + if pkg.needupdate == 1: + # already flagged. do nothing. + return render_to_response('packages/flagged.html', context) + + if request.POST: + form = FlagForm(request.POST) + if form.is_valid() and form.cleaned_data['website'] == '': + # flag all architectures + pkgs = Package.objects.filter( + pkgname=pkg.pkgname, repo=pkg.repo) + for package in pkgs: + package.needupdate = 1 + package.save() + + if pkg.maintainer_id == 0: + toemail = 'arch-notifications@archlinux.org' + subject = 'Orphan %s package [%s] marked out-of-date' % (pkg.repo.name, pkg.pkgname) + else: + toemail = pkg.maintainer.email + subject = '%s package [%s] marked out-of-date' % (pkg.repo.name, pkg.pkgname) + + # send notification email to the maintainer + t = loader.get_template('packages/outofdate.txt') + c = Context({ + 'email': form.cleaned_data['email'], + 'message': form.cleaned_data['usermessage'], + 'pkg': pkg, + 'weburl': 'http://www.archlinux.org'+ pkg.get_absolute_url() + }) + send_mail(subject, + t.render(c), + 'Arch Website Notification ', + [toemail], + fail_silently=True) + context['confirmed'] = True + else: + form = FlagForm() + + context['form'] = form + + return render_to_response('packages/flag.html', context) + # vim: set ts=4 sw=4 et: diff --git a/templates/packages/flag.html b/templates/packages/flag.html new file mode 100644 index 00000000..ffcfcbb4 --- /dev/null +++ b/templates/packages/flag.html @@ -0,0 +1,31 @@ +{% extends "base.html" %} +{% block title %}Arch Linux - Flag Package - {{ pkg.pkgname }}{% endblock %} +{% block content %} + {% if confirmed %} + Thank you. Maintainers have been notified. + {% else %} + + If you notice that one of Arch's packages is out of date (ie, there is a + newer stable release available), then please notify us using the + form below. +

+ 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 an email to the arch-general mailing list with your additional text. +

+ Note: Please do not use this facility if the package is + broken! Use the bug tracker instead. +
+

+

+ Please confirm your flag request for {{pkg.pkgname}}: +

+
+ + {{form}} +
+ +
+
+ {% endif %} +{% endblock %} + diff --git a/templates/packages/flagged.html b/templates/packages/flagged.html new file mode 100644 index 00000000..738b633f --- /dev/null +++ b/templates/packages/flagged.html @@ -0,0 +1,7 @@ +{% extends "base.html" %} +{% block title %}Arch Linux - Flag Package - {{ pkg.pkgname }}{% endblock %} +{% block content %} +

+ {{pkg.pkgname}} on {{pkg.arch}} has already been flagged out of date. +

+{% endblock %} diff --git a/templates/packages/flaghelp.html b/templates/packages/flaghelp.html new file mode 100644 index 00000000..aa03bf63 --- /dev/null +++ b/templates/packages/flaghelp.html @@ -0,0 +1,16 @@ + +Flagging Packages + + +If you notice that one of Arch's packages is out of date (ie, there is a newer +stable release available), then please notify us by using the Flag +button in the Package Details screen. This will notify the maintainer +responsible for that package so they can update it. +

+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 an email to the arch-general mailing list with your additional text. +

+Note: Please do not use this facility if the package is broken! +Use the bugtracker instead. +
+ + diff --git a/templates/packages/outofdate.txt b/templates/packages/outofdate.txt new file mode 100644 index 00000000..abe3a738 --- /dev/null +++ b/templates/packages/outofdate.txt @@ -0,0 +1,17 @@ + +* Note: this is an automated message + +{{ email }} wants to notify you that the following package may be out +of date: + + Package Name: {{ pkg.pkgname }} + Architecture: {{ pkg.arch.name }} + Repository: {{ pkg.repo.name }} + ({{ weburl }}) + +{% if message %} +The user provided the following additional text: + +{{ message }} +{% endif %} + diff --git a/urls.py b/urls.py index ccac4937..89def312 100644 --- a/urls.py +++ b/urls.py @@ -24,6 +24,8 @@ admin.autodiscover() urlpatterns = patterns('', + (r'^packages/flag/(\d+)/$', 'archweb.packages.views.flag'), + (r'^packages/flaghelp/$', 'archweb.packages.views.flaghelp'), (r'^packages/unflag/(\d+)/$', 'archweb.packages.views.unflag'), (r'^packages/files/(\d+)/$', 'archweb.packages.views.files'), (r'^packages/signoffs/$', 'archweb.packages.views.signoffs'), @@ -31,6 +33,10 @@ 'archweb.packages.views.signoff_package'), (r'^packages/update/$', 'archweb.packages.views.update'), + # Preference is for the packages/ url below, but search is kept + # because other projects link to it + (r'^packages/search/$', 'archweb.packages.views.search'), + (r'^packages/search/(?P\d+)/$', 'archweb.packages.views.search'), (r'^packages/$', 'archweb.packages.views.search'), (r'^packages/(?P\d+)/$', 'archweb.packages.views.search'), @@ -40,6 +46,8 @@ 'archweb.packages.views.details'), (r'^packages/(?P[A-z0-9\-]+)/(?P[A-z0-9]+)/(?P[A-z0-9\-+.]+)/$', 'archweb.packages.views.details'), + (r'^packages/(?P[A-z0-9\-]+)/(?P[A-z0-9]+)/(?P[A-z0-9\-+.]+)/maintainer/$', + 'archweb.packages.views.getmaintainer'), (r'^todo/(\d+)/$', 'archweb.todolists.views.view'), (r'^todo/add/$', 'archweb.todolists.views.add'), -- cgit v1.2.3-54-g00ecf