141 lines
5.3 KiB
Python
141 lines
5.3 KiB
Python
#coding: utf-8
|
|
from django import template
|
|
from django.conf import settings
|
|
from django.contrib import admin
|
|
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 ietf.liaisons.models import (FromBodies, LiaisonDetail, LiaisonPurpose,
|
|
SDOs, LiaisonManagers, SDOAuthorizedIndividual)
|
|
from ietf.ietfauth.models import LegacyWgPassword, LegacyLiaisonUser
|
|
|
|
|
|
class FromBodiesAdmin(admin.ModelAdmin):
|
|
list_display = ['body_name', 'contact_link', 'other_sdo']
|
|
if not settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
|
admin.site.register(FromBodies, FromBodiesAdmin)
|
|
|
|
|
|
class LiaisonDetailAdmin(admin.ModelAdmin):
|
|
list_display = ['detail_id', 'title', 'legacy_from_body', 'to_body', 'submitted_date', 'purpose', 'related_to']
|
|
ordering = ('title', )
|
|
# fields = ('title', 'body','submitted_date', 'last_modified_date', 'to_email', 'cc1', 'cc2', 'to_poc',
|
|
# 'response_contact', 'technical_contact', 'purpose', 'purpose_text', 'deadline_date', 'action_taken',
|
|
# 'related_to')
|
|
raw_id_fields=['person', 'related_to']
|
|
if not settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
|
admin.site.register(LiaisonDetail, LiaisonDetailAdmin)
|
|
|
|
|
|
class LiaisonPurposeAdmin(admin.ModelAdmin):
|
|
ordering = ('purpose_text', )
|
|
if not settings.USE_DB_REDESIGN_PROXY_CLASSES:
|
|
admin.site.register(LiaisonPurpose, LiaisonPurposeAdmin)
|
|
|
|
|
|
class LiaisonManagersAdmin(admin.ModelAdmin):
|
|
list_display = ['id', '__unicode__', 'person_link', 'user_name', 'groups', 'sdo_link', ]
|
|
ordering = ('person__first_name', 'person__last_name' )
|
|
# fields = ('person', 'sdo')
|
|
raw_id_fields=['person']
|
|
admin.site.register(LiaisonManagers, LiaisonManagersAdmin)
|
|
|
|
|
|
class LiaisonManagersInline(admin.TabularInline):
|
|
model = LiaisonManagers
|
|
raw_id_fields=['person']
|
|
|
|
class SDOAuthorizedIndividualInline(admin.TabularInline):
|
|
model = SDOAuthorizedIndividual
|
|
raw_id_fields=['person']
|
|
|
|
class SDOsAdmin(admin.ModelAdmin):
|
|
list_display = ['sdo_id', 'sdo_name', 'liaisonmanager_link', 'sdo_contact_link']
|
|
inlines = [LiaisonManagersInline, SDOAuthorizedIndividualInline]
|
|
|
|
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(SDOsAdmin, 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/liaisons/sdos/send_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(SDOs, SDOsAdmin)
|
|
|
|
|
|
class SDOAuthorizedIndividualAdmin(admin.ModelAdmin):
|
|
list_display = ['id', 'person_link', 'user_name', 'groups', 'sdo_link']
|
|
raw_id_fields=['person']
|
|
admin.site.register(SDOAuthorizedIndividual, SDOAuthorizedIndividualAdmin)
|
|
|
|
|
|
class LegacyWgPasswordAdmin(admin.ModelAdmin):
|
|
list_display = ['pk', 'person_link', 'login_name', ]
|
|
admin.site.register(LegacyWgPassword, LegacyWgPasswordAdmin)
|
|
|
|
|
|
class LegacyLiaisonUserAdmin(admin.ModelAdmin):
|
|
list_display = ['pk', 'person_link', 'login_name', 'user_level', 'comment', ]
|
|
raw_id_fields = [ 'person', ]
|
|
admin.site.register(LegacyLiaisonUser, LegacyLiaisonUserAdmin)
|