Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 1 addition & 15 deletions ietf/liaisons/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
from ietf.liaisons.fields import SearchableLiaisonStatementsField
from ietf.liaisons.models import (LiaisonStatement,
LiaisonStatementEvent, LiaisonStatementAttachment, LiaisonStatementPurposeName)
from ietf.liaisons.utils import get_person_for_user, is_authorized_individual, OUTGOING_LIAISON_ROLES, \
from ietf.liaisons.utils import get_person_for_user, OUTGOING_LIAISON_ROLES, \
INCOMING_LIAISON_ROLES
from ietf.liaisons.widgets import ButtonWidget, ShowAttachmentsWidget
from ietf.name.models import DocRelationshipName
Expand Down Expand Up @@ -466,25 +466,11 @@ def set_to_fields(self):
assert NotImplemented

class IncomingLiaisonForm(LiaisonModelForm):
def clean(self):
if 'send' in list(self.data.keys()) and self.get_post_only():
raise forms.ValidationError('As an IETF Liaison Manager you can not send incoming liaison statements, you only can post them')
return super(IncomingLiaisonForm, self).clean()

def is_approved(self):
'''Incoming Liaison Statements do not required approval'''
return True

def get_post_only(self):
from_groups = self.cleaned_data.get("from_groups")
if (
has_role(self.user, "Secretariat")
or has_role(self.user, "Liaison Coordinator")
or is_authorized_individual(self.user, from_groups)
):
return False
return True

def set_from_fields(self):
"""Configure from "From" fields based on user roles"""
qs = external_groups_for_person(self.person)
Expand Down
33 changes: 0 additions & 33 deletions ietf/liaisons/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,6 @@ def test_ajax(self):
self.assertEqual(r.status_code, 200)
data = r.json()
self.assertEqual(data["error"], False)
self.assertEqual(data["post_only"], False)
self.assertTrue('cc' in data)
self.assertTrue('needs_approval' in data)
self.assertTrue('to_contacts' in data)
Expand Down Expand Up @@ -871,38 +870,6 @@ def test_add_outgoing_liaison(self):
self.assertTrue("Liaison Statement" in outbox[-1]["Subject"])
self.assertTrue('aread@' in outbox[-1]['To'])
self.assertTrue(submitter.email_address(), outbox[-1]['Cc'])


def test_add_outgoing_liaison_unapproved_post_only(self):
RoleFactory(name_id='liaiman',group__type_id='sdo', person__user__username='ulm-liaiman')
mars = RoleFactory(name_id='chair',person__user__username='marschairman',group__acronym='mars').group
RoleFactory(name_id='ad',group=mars)

url = urlreverse('ietf.liaisons.views.liaison_add', kwargs={'type':'outgoing'})
login_testing_unauthorized(self, "secretary", url)

# add new
mailbox_before = len(outbox)
from_group = Group.objects.get(acronym="mars")
to_group = Group.objects.filter(type="sdo")[0]
submitter = Person.objects.get(user__username="marschairman")
today = date_today(datetime.UTC)
r = self.client.post(url,
dict(from_groups=str(from_group.pk),
from_contact=submitter.email_address(),
to_groups=str(to_group.pk),
to_contacts='to_contacts@example.com',
approved="",
purpose="info",
title="title",
submitted_date=today.strftime("%Y-%m-%d"),
body="body",
post_only="1",
))
self.assertEqual(r.status_code, 302)
l = LiaisonStatement.objects.all().order_by("-id")[0]
self.assertEqual(l.state.slug,'pending')
self.assertEqual(len(outbox), mailbox_before + 1)

def test_liaison_add_attachment(self):
liaison = LiaisonStatementFactory(deadline=date_today(DEADLINE_TZINFO)+datetime.timedelta(days=1))
Expand Down
36 changes: 10 additions & 26 deletions ietf/liaisons/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -118,23 +118,6 @@ def normalize_sort(request):

return sort, order_by

def post_only(group,person):
'''Returns true if the user is restricted to post_only (vs. post_and_send) for this
group. This is for incoming liaison statements.
- Secretariat have full access.
- Authorized Individuals have full access for the group they are associated with
- Liaison Managers can post only
'''
if group.type_id == "sdo" and (
not (
has_role(person.user, "Secretariat")
or has_role(person.user, "Liaison Coordinator")
or group.role_set.filter(name="auth", person=person)
)
):
return True
else:
return False

# -------------------------------------------------
# Ajax Functions
Expand All @@ -159,15 +142,13 @@ def ajax_get_liaison_info(request):

cc = []
does_need_approval = []
can_post_only = []
to_contacts = []
response_contacts = []
result = {'response_contacts':[],'to_contacts': [], 'cc': [], 'needs_approval': False, 'post_only': False, 'full_list': []}
result = {'response_contacts':[],'to_contacts': [], 'cc': [], 'needs_approval': False, 'full_list': []}

for group in from_groups:
cc.extend(get_contacts_for_liaison_messages_for_group_primary(group))
does_need_approval.append(needs_approval(group,person))
can_post_only.append(post_only(group,person))
response_contacts.append(get_contacts_for_liaison_messages_for_group_secondary(group))

for group in to_groups:
Expand All @@ -183,12 +164,15 @@ def ajax_get_liaison_info(request):
else:
does_need_approval = True

result.update({'error': False,
'cc': list(set(cc)),
'response_contacts':list(set(response_contacts)),
'to_contacts': list(set(to_contacts)),
'needs_approval': does_need_approval,
'post_only': any(can_post_only)})
result.update(
{
"error": False,
"cc": list(set(cc)),
"response_contacts": list(set(response_contacts)),
"to_contacts": list(set(to_contacts)),
"needs_approval": does_need_approval,
}
)

json_result = json.dumps(result)
return HttpResponse(json_result, content_type='application/json')
Expand Down
13 changes: 1 addition & 12 deletions ietf/static/js/liaisons.js
Original file line number Diff line number Diff line change
Expand Up @@ -197,16 +197,6 @@ var liaisonForm = {
}
},

checkPostOnly: function (post_only) {
if (post_only) {
$("button[name=send]")
.hide();
} else {
$("button[name=send]")
.show();
}
},

updateInfo: function (first_time, sender) {
// don't overwrite fields when editing existing liaison
if (liaisonForm.is_edit_form) {
Expand Down Expand Up @@ -239,7 +229,6 @@ var liaisonForm = {
liaisonForm.toggleApproval(response.needs_approval);
liaisonForm.response_contacts.val(response.response_contacts);
}
liaisonForm.checkPostOnly(response.post_only);
}
}
});
Expand Down Expand Up @@ -326,4 +315,4 @@ $(document)
.each(liaisonForm.init);
$('#liaison_search_form')
.each(searchForm.init);
});
});
Loading