CC SDO manager if not submitter. Order organization list. See #345
- Legacy-Id: 2350
This commit is contained in:
parent
0cf3a7f33b
commit
251b161eac
ietf/liaisons
|
@ -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):
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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')
|
||||
|
|
Loading…
Reference in a new issue