change main menu meeting->upcoming, add navigation tabs

- Legacy-Id: 11127
This commit is contained in:
Ryan Cross 2016-04-22 18:07:27 +00:00
parent bd96d89c85
commit f46fdcfa14
6 changed files with 95 additions and 5 deletions

View file

@ -341,6 +341,36 @@ class EditTests(TestCase):
# -------------------------------------------------
class InterimTests(TestCase):
def check_interim_tabs(self, url):
'''Helper function to check interim meeting list tabs'''
# no logged in - no tabs
r = self.client.get(url)
q = PyQuery(r.content)
self.assertEqual(len(q("ul.nav-tabs")),0)
# plain user - no tabs
username = "plain"
self.client.login(username=username, password= username + "+password")
r = self.client.get(url)
q = PyQuery(r.content)
self.assertEqual(len(q("ul.nav-tabs")),0)
self.client.logout()
# privileged user
username = "ad"
self.client.login(username=username, password= username + "+password")
r = self.client.get(url)
q = PyQuery(r.content)
self.assertEqual(len(q("a:contains('Pending')")),1)
self.assertEqual(len(q("a:contains('Announce')")),0)
self.client.logout()
# secretariat
username = "ad"
self.client.login(username=username, password= username + "+password")
r = self.client.get(url)
q = PyQuery(r.content)
self.assertEqual(len(q("a:contains('Pending')")),1)
self.assertEqual(len(q("a:contains('Announce')")),1)
self.client.logout()
def test_interim_announce(self):
make_meeting_test_data()
url = urlreverse("ietf.meeting.views.interim_announce")
@ -373,7 +403,8 @@ class InterimTests(TestCase):
def test_upcoming(self):
make_meeting_test_data()
r = self.client.get("/meeting/upcoming/")
url = urlreverse("ietf.meeting.views.upcoming")
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
today = datetime.date.today()
mars_interim = Meeting.objects.filter(date__gt=today,type='interim',session__group__acronym='mars',session__status='sched').first()
@ -383,6 +414,7 @@ class InterimTests(TestCase):
# cancelled session
q = PyQuery(r.content)
self.assertTrue('CANCELLED' in q('[id*="-ames"]').text())
self.check_interim_tabs(url)
def test_upcoming_ics(self):
make_meeting_test_data()
@ -598,6 +630,7 @@ class InterimTests(TestCase):
self.assertEqual(len(q("#pending-interim-meetings-table tr"))-1, count)
self.client.logout()
def test_can_approve_interim_request(self):
make_meeting_test_data()
# unprivileged user

View file

@ -46,6 +46,16 @@ from ietf.utils.pdf import pdf_pages
from .forms import InterimRequestForm, InterimSessionForm
def get_menu_entries(request):
'''Setup menu entries for interim meeting view tabs'''
entries = []
if has_role(request.user, ('Area Director','Secretariat','IRTF Chair','WG Chair', 'RG Chair')):
entries.append(("Upcoming", reverse("ietf.meeting.views.upcoming")))
entries.append(("Pending", reverse("ietf.meeting.views.interim_pending")))
if has_role(request.user, "Secretariat"):
entries.append(("Announce", reverse("ietf.meeting.views.interim_announce")))
return entries
# -------------------------------------------------
# View Functions
# -------------------------------------------------
@ -908,8 +918,13 @@ def ajax_get_utc(request):
def interim_announce(request):
'''View which shows interim meeting requests awaiting announcement'''
meetings = Meeting.objects.filter(type='interim',session__status='scheda')
menu_entries = get_menu_entries(request)
selected_menu_entry = 'announce'
return render(request, "meeting/interim_announce.html", {"meetings":meetings})
return render(request, "meeting/interim_announce.html", {
'menu_entries': menu_entries,
'selected_menu_entry': selected_menu_entry,
'meetings' :meetings})
@role_required('Secretariat',)
def interim_send_announcement(request,number):
@ -922,13 +937,19 @@ def interim_send_announcement(request,number):
def interim_pending(request):
'''View which shows interim meeting requests pending approval'''
meetings = Meeting.objects.filter(type='interim',session__status='apprw')
menu_entries = get_menu_entries(request)
selected_menu_entry = 'pending'
meetings = [ m for m in meetings if can_view_interim_request(m,request.user)]
for meeting in meetings:
if can_approve_interim_request(meeting,request.user):
meeting.can_approve = True
return render(request, "meeting/interim_pending.html", {"meetings":meetings})
return render(request, "meeting/interim_pending.html", {
'menu_entries': menu_entries,
'selected_menu_entry':selected_menu_entry,
'meetings': meetings})
@role_required('Area Director','Secretariat','IRTF Chair','WG Chair', 'RG Chair')
def interim_request(request):
@ -1004,7 +1025,7 @@ def upcoming(request):
today = datetime.datetime.today()
meetings = Meeting.objects.filter(date__gte=today,session__status__in=('sched','canceled')).order_by('date')
# extract groups hierarchy
# extract groups hierarchy for display filter
seen = set()
groups = [ m.session_set.first().group for m in meetings.filter(type='interim') ]
group_parents = []
@ -1023,6 +1044,10 @@ def upcoming(request):
p.group_list.sort(key=lambda g: g.acronym)
# add menu entries
menu_entries = get_menu_entries(request)
selected_menu_entry = 'upcoming'
# add menu actions
actions = []
if can_request_interim_meeting(request.user):
@ -1031,5 +1056,7 @@ def upcoming(request):
return render(request, "meeting/upcoming.html",
{ 'meetings':meetings,
'menu_actions': actions,
'menu_entries': menu_entries,
'selected_menu_entry':selected_menu_entry,
'group_parents':group_parents,
})

View file

@ -85,7 +85,7 @@
<li><a href="/meeting/agenda/">Agenda</a></li>
<li><a href="/meeting/">Materials</a></li>
<li><a href="https://www.ietf.org/meeting/proceedings.html">Past proceedings</a></li>
<li><a href="https://www.ietf.org/meeting/upcoming.html">Upcoming</a></li>
<li><a href="/meeting/upcoming">Upcoming</a></li>
<li><a href="/secr/sreq/">Request a session</a></li>
<li><a href="/meeting/requests">Session requests</a></li>
{% if flavor == "top" %}</ul>{% endif %}

View file

@ -14,6 +14,16 @@
{% origin %}
<h1>Announce Interim Meeting</h1>
{% if menu_entries %}
<ul class="nav nav-tabs" role="tablist">
{% for name, url in menu_entries %}
<li {% if selected_menu_entry == name.lower %}class="active"{% endif %}>
<a href="{{ url }}">{{ name }}</a>
</li>
{% endfor %}
</ul>
{% endif %}
{% if meetings %}
<table id="announce-interim-meetings-table" class="table table-condensed table-striped">
<thead>

View file

@ -14,6 +14,15 @@
{% origin %}
<h1>Pending Interim Meetings</h1>
{% if menu_entries %}
<ul class="nav nav-tabs" role="tablist">
{% for name, url in menu_entries %}
<li {% if selected_menu_entry == name.lower %}class="active"{% endif %}>
<a href="{{ url }}">{{ name }}</a>
</li>
{% endfor %}
</ul>
{% endif %}
{% if meetings %}
<table id="pending-interim-meetings-table" class="table table-condensed table-striped">

View file

@ -19,6 +19,7 @@
<h1>IETF Upcoming Meetings</h1>
<p>See also <a href="https://www.ietf.org/meeting/upcoming.html">here</a></p>
<div class="panel-group" id="accordion">
<div class="panel panel-default">
<div class="panel-heading">
@ -81,6 +82,16 @@
</div> <!-- panel -->
</div> <!-- panel-group -->
{% if menu_entries %}
<ul class="nav nav-tabs" role="tablist">
{% for name, url in menu_entries %}
<li {% if selected_menu_entry == name.lower %}class="active"{% endif %}>
<a href="{{ url }}">{{ name }}</a>
</li>
{% endfor %}
</ul>
{% endif %}
{% if menu_actions %}
<div class="buttonlist">
{% for name, url in menu_actions %}