Moved shepherd management into wgchairs application. See #563
- Legacy-Id: 2708
This commit is contained in:
parent
34f9cec92a
commit
ebaf7ae436
|
@ -1,68 +0,0 @@
|
|||
from django.conf import settings
|
||||
from django import forms
|
||||
from idtracker.models import PersonOrOrgInfo
|
||||
from django.db.models import Q
|
||||
from django.template.loader import render_to_string
|
||||
from django.core.mail import EmailMessage
|
||||
|
||||
|
||||
class ManagingShepherdForm(forms.Form):
|
||||
email = forms.EmailField(required=False)
|
||||
is_assign_current = forms.BooleanField(required=False)
|
||||
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
if kwargs.has_key('current_person'):
|
||||
self.current_person = kwargs.pop('current_person')
|
||||
return super(ManagingShepherdForm, self).__init__(*args, **kwargs)
|
||||
|
||||
def clean_email(self):
|
||||
email = self.cleaned_data.get('email')
|
||||
if not email:
|
||||
return None
|
||||
|
||||
try:
|
||||
PersonOrOrgInfo.objects. \
|
||||
filter(emailaddress__type__in=[ "INET", "Prim",],
|
||||
emailaddress__address=email) \
|
||||
[:1].get()
|
||||
except PersonOrOrgInfo.DoesNotExist:
|
||||
if self.cleaned_data.get('is_assign_current'):
|
||||
self._send_email(email)
|
||||
raise forms.ValidationError("Person with such email does not exist")
|
||||
return email
|
||||
|
||||
def clean(self):
|
||||
print self.cleaned_data.get('email') and self.cleaned_data.get('is_assign_current')
|
||||
if self.cleaned_data.get('email') and \
|
||||
self.cleaned_data.get('is_assign_current'):
|
||||
raise forms.ValidationError("You should choose to assign to current \
|
||||
person or input the email. Not both at te same time. ")
|
||||
|
||||
return self.cleaned_data
|
||||
|
||||
def change_shepherd(self, document, save=True):
|
||||
email = self.cleaned_data.get('email')
|
||||
if email:
|
||||
person = PersonOrOrgInfo.objects. \
|
||||
filter(emailaddress__type__in=[ "INET", "Prim",],
|
||||
emailaddress__address=email) \
|
||||
[:1].get()
|
||||
else:
|
||||
person = self.current_person
|
||||
document.shepherd = person
|
||||
if save:
|
||||
document.save()
|
||||
return document
|
||||
|
||||
def _send_email(self, email,
|
||||
template='idrfc/edit_management_shepherd_email.txt'):
|
||||
subject = 'WG Delegate needs system credentials'
|
||||
body = render_to_string(template,
|
||||
{'email': email,
|
||||
})
|
||||
mail = EmailMessage(subject=subject,
|
||||
body=body,
|
||||
to=[email, settings.DEFAULT_FROM_EMAIL, ],
|
||||
from_email=settings.DEFAULT_FROM_EMAIL)
|
||||
mail.send()
|
|
@ -51,8 +51,6 @@ urlpatterns = patterns('',
|
|||
url(r'^(?P<name>[^/]+)/edit/requestresurrect/$', views_edit.request_resurrect, name='doc_request_resurrect'),
|
||||
url(r'^(?P<name>[^/]+)/edit/resurrect/$', views_edit.resurrect, name='doc_resurrect'),
|
||||
url(r'^(?P<name>[^/]+)/edit/addcomment/$', views_edit.add_comment, name='doc_add_comment'),
|
||||
url(r'^(?P<name>[^/]+)/edit/managing-shepherd/$', views_edit.managing_shepherd, name='doc_managing_shepherd'),
|
||||
|
||||
url(r'^(?P<name>[^/]+)/edit/position/$', views_ballot.edit_position, name='doc_edit_position'),
|
||||
url(r'^(?P<name>[^/]+)/edit/deferballot/$', views_ballot.defer_ballot, name='doc_defer_ballot'),
|
||||
url(r'^(?P<name>[^/]+)/edit/undeferballot/$', views_ballot.undefer_ballot, name='doc_undefer_ballot'),
|
||||
|
|
|
@ -20,7 +20,6 @@ from ietf.idtracker.models import *
|
|||
from ietf.iesg.models import *
|
||||
from ietf.idrfc.mails import *
|
||||
from ietf.idrfc.utils import *
|
||||
from ietf.idrfc.forms import ManagingShepherdForm
|
||||
|
||||
|
||||
class ChangeStateForm(forms.Form):
|
||||
|
@ -381,22 +380,3 @@ def add_comment(request, name):
|
|||
dict(doc=doc,
|
||||
form=form),
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
def managing_shepherd(request, name):
|
||||
"""
|
||||
View for managing the assigned shepherd of a document.
|
||||
"""
|
||||
doc = get_object_or_404(InternetDraft, filename=name)
|
||||
login = IESGLogin.objects.get(login_name=request.user.username)
|
||||
form = ManagingShepherdForm()
|
||||
if request.method == "POST":
|
||||
form = ManagingShepherdForm(request.POST, current_person=login.person)
|
||||
if form.is_valid():
|
||||
form.change_shepherd(doc)
|
||||
|
||||
return render_to_response('idrfc/edit_management_shepherd.html',
|
||||
dict(doc=doc,
|
||||
form=form,
|
||||
user=request.user,
|
||||
login=login),
|
||||
context_instance=RequestContext(request))
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
from django import forms
|
||||
from django.db.models import Q
|
||||
from django.conf import settings
|
||||
from django.core.mail import EmailMessage
|
||||
from django.template.loader import render_to_string
|
||||
|
@ -181,3 +182,65 @@ def add_form_factory(request, wg, user):
|
|||
return AddDelegateForm(wg=wg, user=user, data=request.POST.copy())
|
||||
|
||||
return AddDelegateForm(wg=wg, user=user)
|
||||
|
||||
|
||||
class ManagingShepherdForm(forms.Form):
|
||||
email = forms.EmailField(required=False)
|
||||
is_assign_current = forms.BooleanField(required=False)
|
||||
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
if kwargs.has_key('current_person'):
|
||||
self.current_person = kwargs.pop('current_person')
|
||||
return super(ManagingShepherdForm, self).__init__(*args, **kwargs)
|
||||
|
||||
def clean_email(self):
|
||||
email = self.cleaned_data.get('email')
|
||||
if not email:
|
||||
return None
|
||||
|
||||
try:
|
||||
PersonOrOrgInfo.objects. \
|
||||
filter(emailaddress__type__in=[ "INET", "Prim",],
|
||||
emailaddress__address=email) \
|
||||
[:1].get()
|
||||
except PersonOrOrgInfo.DoesNotExist:
|
||||
if self.cleaned_data.get('is_assign_current'):
|
||||
self._send_email(email)
|
||||
raise forms.ValidationError("Person with such email does not exist")
|
||||
return email
|
||||
|
||||
def clean(self):
|
||||
print self.cleaned_data.get('email') and self.cleaned_data.get('is_assign_current')
|
||||
if self.cleaned_data.get('email') and \
|
||||
self.cleaned_data.get('is_assign_current'):
|
||||
raise forms.ValidationError("You should choose to assign to current \
|
||||
person or input the email. Not both at te same time. ")
|
||||
|
||||
return self.cleaned_data
|
||||
|
||||
def change_shepherd(self, document, save=True):
|
||||
email = self.cleaned_data.get('email')
|
||||
if email:
|
||||
person = PersonOrOrgInfo.objects. \
|
||||
filter(emailaddress__type__in=[ "INET", "Prim",],
|
||||
emailaddress__address=email) \
|
||||
[:1].get()
|
||||
else:
|
||||
person = self.current_person
|
||||
document.shepherd = person
|
||||
if save:
|
||||
document.save()
|
||||
return document
|
||||
|
||||
def _send_email(self, email,
|
||||
template='wgchairs/edit_management_shepherd_email.txt'):
|
||||
subject = 'WG Delegate needs system credentials'
|
||||
body = render_to_string(template,
|
||||
{'email': email,
|
||||
})
|
||||
mail = EmailMessage(subject=subject,
|
||||
body=body,
|
||||
to=[email, settings.DEFAULT_FROM_EMAIL, ],
|
||||
from_email=settings.DEFAULT_FROM_EMAIL)
|
||||
mail.send()
|
||||
|
|
|
@ -5,4 +5,5 @@ from django.conf.urls.defaults import patterns, url
|
|||
urlpatterns = patterns('ietf.wgchairs.views',
|
||||
url(r'^workflows/$', 'manage_workflow', name='manage_workflow'),
|
||||
url(r'^delegates/$', 'manage_delegates', name='manage_delegates'),
|
||||
url(r'shepherds/(?P<name>[^/]+)/$', 'managing_shepherd', name='doc_managing_shepherd'),
|
||||
)
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
from ietf.idtracker.models import IETFWG
|
||||
from ietf.idtracker.models import IETFWG, InternetDraft, IESGLogin
|
||||
from django.shortcuts import get_object_or_404, render_to_response
|
||||
from django.template import RequestContext
|
||||
from django.http import HttpResponseForbidden
|
||||
|
||||
from ietf.wgchairs.forms import RemoveDelegateForm, add_form_factory
|
||||
from ietf.wgchairs.forms import (RemoveDelegateForm, add_form_factory,
|
||||
ManagingShepherdForm)
|
||||
from ietf.wgchairs.accounts import can_manage_delegates_in_group
|
||||
from ietf.ietfworkflows.utils import get_workflow_for_wg
|
||||
|
||||
|
@ -39,3 +40,23 @@ def manage_workflow(request, acronym):
|
|||
{'wg': wg,
|
||||
'workflow': workflow,
|
||||
}, RequestContext(request))
|
||||
|
||||
|
||||
def managing_shepherd(request, acronym, name):
|
||||
"""
|
||||
View for managing the assigned shepherd of a document.
|
||||
"""
|
||||
doc = get_object_or_404(InternetDraft, filename=name)
|
||||
login = IESGLogin.objects.get(login_name=request.user.username)
|
||||
form = ManagingShepherdForm()
|
||||
if request.method == "POST":
|
||||
form = ManagingShepherdForm(request.POST, current_person=login.person)
|
||||
if form.is_valid():
|
||||
form.change_shepherd(doc)
|
||||
|
||||
return render_to_response('wgchairs/edit_management_shepherd.html',
|
||||
dict(doc=doc,
|
||||
form=form,
|
||||
user=request.user,
|
||||
login=login),
|
||||
context_instance=RequestContext(request))
|
||||
|
|
|
@ -38,7 +38,7 @@ from django.template import RequestContext, loader
|
|||
from django.http import HttpResponse
|
||||
from ietf.idrfc.views_search import SearchForm, search_query
|
||||
from ietf.idrfc.idrfc_wrapper import IdRfcWrapper
|
||||
from idtracker.models import InternetDraft, PersonOrOrgInfo, IESGLogin
|
||||
from ietf.idtracker.models import InternetDraft, PersonOrOrgInfo, IESGLogin
|
||||
from django.db.models import Q
|
||||
|
||||
def wg_summary_acronym(request):
|
||||
|
|
Loading…
Reference in a new issue