CC SDO manager if not submitter. Order organization list. See

- Legacy-Id: 2350
This commit is contained in:
Emilio A. Sánchez López 2010-07-20 12:19:22 +00:00
parent 0cf3a7f33b
commit 251b161eac
4 changed files with 35 additions and 10 deletions

View file

@ -21,7 +21,10 @@ def get_iab_executive_director():
def get_person_for_user(user):
return user.get_profile().person()
try:
return user.get_profile().person()
except:
return None
def is_areadirector(person):

View file

@ -81,7 +81,7 @@ class IncomingLiaisonForm(LiaisonForm):
self.fields['from_field'].widget.submitter = unicode(self.person)
def set_organization_field(self):
self.fields['organization'].choices = self.hm.get_all_entities()
self.fields['organization'].choices = self.hm.get_all_decorated_entities()
class OutgoingLiaisonForm(LiaisonForm):

View file

@ -82,7 +82,7 @@ class AreaEntityManager(IETFEntityManager):
self.queryset = Area.active_areas()
def get_managed_list(self):
return [(u'%s_%s' % (self.pk, i.pk), i.area_acronym.name) for i in self.queryset]
return [(u'%s_%s' % (self.pk, i.pk), i.area_acronym.name) for i in self.queryset.order_by('area_acronym__name')]
def get_entity(self, pk=None):
if not pk:
@ -102,7 +102,7 @@ class WGEntityManager(IETFEntityManager):
self.queryset = IETFWG.objects.filter(group_type=1, status=IETFWG.ACTIVE, areagroup__area__status=Area.ACTIVE)
def get_managed_list(self):
return [(u'%s_%s' % (self.pk, i.pk), i.group_acronym.name) for i in self.queryset]
return [(u'%s_%s' % (self.pk, i.pk), i.group_acronym.name) for i in self.queryset.order_by('group_acronym__name')]
def get_entity(self, pk=None):
if not pk:
@ -127,8 +127,8 @@ class IETFHierarchyManager(object):
poc=[FakePerson(**IABCHAIR),
FakePerson(**IABEXECUTIVEDIRECTOR)],
cc=FakePerson(**IAB)),
'area': AreaEntityManager(pk='area'),
'wg': WGEntityManager(pk='wg'),
'area': AreaEntityManager(pk='area', name=u'IETF Areas'),
'wg': WGEntityManager(pk='wg', name=u'IETF Working Groups'),
}
def get_entity_by_key(self, entity_id):
@ -146,3 +146,13 @@ class IETFHierarchyManager(object):
for manager in self.managers.values():
entities += manager.get_managed_list()
return entities
def get_all_decorated_entities(self):
entities = []
results = []
for key in ['ietf', 'iesg', 'iab']:
results += self.managers[key].get_managed_list()
entities.append(('Main IETF Entities', results))
entities.append(('IETF Areas', self.managers['area'].get_managed_list()))
entities.append(('IETF Working Groups', self.managers['wg'].get_managed_list()))
return entities

View file

@ -4,8 +4,10 @@ from django.http import HttpResponse
from django.template import RequestContext
from django.utils import simplejson
from ietf.liaisons.accounts import get_person_for_user
from ietf.liaisons.decorators import can_submit_liaison
from ietf.liaisons.forms import liaison_form_factory
from ietf.liaisons.models import SDOs
from ietf.liaisons.utils import IETFHierarchyManager
@ -38,13 +40,23 @@ def get_poc_for_incoming(request):
@can_submit_liaison
def get_cc_for_incoming(request):
entity_id = request.GET.get('to_entity_id', None)
if not entity_id:
result = {'cc': None, 'error': 'No entity id'}
else:
sdo_id = request.GET.get('sdo_id', None)
if not entity_id and not sdo_id:
result = {'cc': [], 'error': 'No entity id and no sdo id'}
if entity_id:
entity = IETFHierarchyManager().get_entity_by_key(entity_id)
if not entity:
result = {'cc': None, 'error': 'Invalid entity id'}
result = {'cc': [], 'error': 'Invalid entity id'}
else:
result = {'error': False, 'cc': [i.email() for i in entity.get_cc()]}
if sdo_id:
try:
sdo = SDOs.objects.get(pk=sdo_id)
manager = sdo.liaisonmanager()
person = get_person_for_user(request.user)
if manager and manager.person!=person:
result['cc'].append(manager.person.email())
except SDOs.DoesNotExist:
result['error']='Invalid sdo id'
json_result = simplejson.dumps(result)
return HttpResponse(json_result, mimetype='text/javascript')