From 1cc908f1370816a2d58b3997f990a832c341ad7a Mon Sep 17 00:00:00 2001 From: Ole Laursen Date: Tue, 23 Aug 2011 18:34:58 +0000 Subject: [PATCH] Port send SDO reminder admin page to new schema - Legacy-Id: 3359 --- .../admin/group/group/change_form.html | 14 +++ .../admin/group/group/change_list.html | 16 ++++ .../admin/group/group/send_sdo_reminder.html | 47 ++++++++++ .../admin/group/sdos/change_form.html | 12 +++ .../admin/group/sdos/change_list.html | 16 ++++ .../admin/group/sdos/send_reminder.html | 47 ++++++++++ redesign/group/admin.py | 88 ++++++++++++++++++- redesign/group/models.py | 2 +- 8 files changed, 239 insertions(+), 3 deletions(-) create mode 100644 ietf/templates/admin/group/group/change_form.html create mode 100644 ietf/templates/admin/group/group/change_list.html create mode 100644 ietf/templates/admin/group/group/send_sdo_reminder.html create mode 100644 ietf/templates/admin/group/sdos/change_form.html create mode 100644 ietf/templates/admin/group/sdos/change_list.html create mode 100644 ietf/templates/admin/group/sdos/send_reminder.html diff --git a/ietf/templates/admin/group/group/change_form.html b/ietf/templates/admin/group/group/change_form.html new file mode 100644 index 000000000..25708b6d0 --- /dev/null +++ b/ietf/templates/admin/group/group/change_form.html @@ -0,0 +1,14 @@ +{% extends "admin/change_form.html" %} +{% load i18n %} + +{% block object-tools %} +{% if change %}{% if not is_popup %} + +{% endif %}{% endif %} +{% endblock %} diff --git a/ietf/templates/admin/group/group/change_list.html b/ietf/templates/admin/group/group/change_list.html new file mode 100644 index 000000000..91c6df92e --- /dev/null +++ b/ietf/templates/admin/group/group/change_list.html @@ -0,0 +1,16 @@ +{% extends "admin/change_list.html" %} +{% load i18n %} + + +{% block object-tools %} + {% if has_add_permission %} + + {% endif %} +{% endblock %} diff --git a/ietf/templates/admin/group/group/send_sdo_reminder.html b/ietf/templates/admin/group/group/send_sdo_reminder.html new file mode 100644 index 000000000..8ddf7406e --- /dev/null +++ b/ietf/templates/admin/group/group/send_sdo_reminder.html @@ -0,0 +1,47 @@ +{% extends "admin/base_site.html" %} + +{% load i18n admin_modify adminmedia %} + +{% block extrastyle %}{{ block.super }}{% endblock %} + +{% block bodyclass %}change-form{% endblock %} + +{% block breadcrumbs %}{% if not is_popup %} + +{% endif %}{% endblock %} + +{% block content %}
+
+

Send a reminder to each SDO Liaison Manager

+{% if output %} +

+Reminder sent successfully. See the output of the command: +

+
+{{ output }}
+
+{% else %} +{% if sdo %} +

+You can send a reminder to the {{ sdo }} SDO Liaison Manager to request an updated list of persons authorized to send liaison statements on behalf of {{ sdo }} +

+{% else %} +

+You can send a reminder to each SDO Liaison Manager to request an updated list of persons authorized to send liaison statements on behalf of his SDO +

+

+By clicking the 'Send' button you will send a request to all the SDO Liaison Managers. In order to send the request to one SDO Liaison Manager go to the SDO edit page. +

+{% endif %} +
+ +
+{% endif %} +
+
+{% endblock %} diff --git a/ietf/templates/admin/group/sdos/change_form.html b/ietf/templates/admin/group/sdos/change_form.html new file mode 100644 index 000000000..62dc3d52c --- /dev/null +++ b/ietf/templates/admin/group/sdos/change_form.html @@ -0,0 +1,12 @@ +{% extends "admin/change_form.html" %} +{% load i18n %} + +{% block object-tools %} +{% if change %}{% if not is_popup %} + +{% endif %}{% endif %} +{% endblock %} diff --git a/ietf/templates/admin/group/sdos/change_list.html b/ietf/templates/admin/group/sdos/change_list.html new file mode 100644 index 000000000..253752899 --- /dev/null +++ b/ietf/templates/admin/group/sdos/change_list.html @@ -0,0 +1,16 @@ +{% extends "admin/change_list.html" %} +{% load i18n %} + + +{% block object-tools %} + {% if has_add_permission %} + + {% endif %} +{% endblock %} diff --git a/ietf/templates/admin/group/sdos/send_reminder.html b/ietf/templates/admin/group/sdos/send_reminder.html new file mode 100644 index 000000000..8ddf7406e --- /dev/null +++ b/ietf/templates/admin/group/sdos/send_reminder.html @@ -0,0 +1,47 @@ +{% extends "admin/base_site.html" %} + +{% load i18n admin_modify adminmedia %} + +{% block extrastyle %}{{ block.super }}{% endblock %} + +{% block bodyclass %}change-form{% endblock %} + +{% block breadcrumbs %}{% if not is_popup %} + +{% endif %}{% endblock %} + +{% block content %}
+
+

Send a reminder to each SDO Liaison Manager

+{% if output %} +

+Reminder sent successfully. See the output of the command: +

+
+{{ output }}
+
+{% else %} +{% if sdo %} +

+You can send a reminder to the {{ sdo }} SDO Liaison Manager to request an updated list of persons authorized to send liaison statements on behalf of {{ sdo }} +

+{% else %} +

+You can send a reminder to each SDO Liaison Manager to request an updated list of persons authorized to send liaison statements on behalf of his SDO +

+

+By clicking the 'Send' button you will send a request to all the SDO Liaison Managers. In order to send the request to one SDO Liaison Manager go to the SDO edit page. +

+{% endif %} +
+ +
+{% endif %} +
+
+{% endblock %} diff --git a/redesign/group/admin.py b/redesign/group/admin.py index 46f324cd7..0a4308446 100644 --- a/redesign/group/admin.py +++ b/redesign/group/admin.py @@ -1,13 +1,97 @@ from django.contrib import admin +from django import template +from django.utils.functional import update_wrapper +from django.contrib.admin.util import unquote +from django.core.exceptions import PermissionDenied +from django.core.management import load_command_class +from django.http import Http404 +from django.shortcuts import render_to_response +from django.utils.encoding import force_unicode +from django.utils.functional import update_wrapper +from django.utils.html import escape +from django.utils.translation import ugettext as _ + from models import * class GroupAdmin(admin.ModelAdmin): list_display = ["acronym", "name", "type"] + list_display_links = ["acronym", "name"] + list_filter = ["type"] search_fields = ["name"] ordering = ["name"] - raw_id_fields = ["charter"] + raw_id_fields = ["charter", "parent", "ad"] + + def get_urls(self): + from django.conf.urls.defaults import patterns, url + + def wrap(view): + def wrapper(*args, **kwargs): + return self.admin_site.admin_view(view)(*args, **kwargs) + return update_wrapper(wrapper, view) + + info = self.model._meta.app_label, self.model._meta.module_name + + urls = patterns('', + url(r'^reminder/$', + wrap(self.send_reminder), + name='%s_%s_reminder' % info), + url(r'^(.+)/reminder/$', + wrap(self.send_one_reminder), + name='%s_%s_one_reminder' % info), + ) + urls += super(GroupAdmin, self).get_urls() + return urls + + def send_reminder(self, request, sdo=None): + opts = self.model._meta + app_label = opts.app_label + + output = None + sdo_pk = sdo and sdo.pk or None + if request.method == 'POST' and request.POST.get('send', False): + command = load_command_class('ietf.liaisons', 'remind_update_sdo_list') + output=command.handle(return_output=True, sdo_pk=sdo_pk) + output='\n'.join(output) + + context = { + 'opts': opts, + 'has_change_permission': self.has_change_permission(request), + 'app_label': app_label, + 'output': output, + 'sdo': sdo, + } + return render_to_response('admin/group/group/send_sdo_reminder.html', + context, + context_instance = template.RequestContext(request, current_app=self.admin_site.name), + ) + + def send_one_reminder(self, request, object_id): + model = self.model + opts = model._meta + + try: + obj = self.queryset(request).get(pk=unquote(object_id)) + except model.DoesNotExist: + obj = None + + if not self.has_change_permission(request, obj): + raise PermissionDenied + + if obj is None: + raise Http404(_('%(name)s object with primary key %(key)r does not exist.') % {'name': force_unicode(opts.verbose_name), 'key': escape(object_id)}) + + return self.send_reminder(request, sdo=obj) + admin.site.register(Group, GroupAdmin) admin.site.register(GroupHistory) -admin.site.register(Role) +class RoleAdmin(admin.ModelAdmin): + list_display = ["name", "email", "group"] + list_display_links = ["name"] + search_fields = ["name", "email"] + list_filter = ["name"] + ordering = ["id"] + raw_id_fields = ["email", "group"] + +admin.site.register(Role, RoleAdmin) diff --git a/redesign/group/models.py b/redesign/group/models.py index 2187e6ce7..bf249a460 100644 --- a/redesign/group/models.py +++ b/redesign/group/models.py @@ -87,7 +87,7 @@ class Role(models.Model): email = models.ForeignKey(Email, help_text="Email address used by person for this role") auth = models.CharField(max_length=255, blank=True) # unused? def __unicode__(self): - return u"%s is %s in %s" % (self.email.get_name(), self.name.name, self.group.acronym) + return u"%s is %s in %s" % (self.email.get_name(), self.name.name, self.group.acronym or self.group.name) class RoleHistory(models.Model):