Skip to content

Commit 86868b9

Browse files
committed
Merged in [10779] from rjsparks@nostrum.com:
Added the ability to associate documents with sessions from the document main page. Integrated the group meetings tab with the secretariat meeting request and meeting materials pages. Made better use of bootstrap styling for the meetings tab and session details view. - Legacy-Id: 10784 Note: SVN reference [10779] has been migrated to Git commit 776b951
2 parents 174cfea + 776b951 commit 86868b9

12 files changed

Lines changed: 143 additions & 60 deletions

File tree

ietf/doc/views_doc.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,8 @@ def document_main(request, name, rev=None):
307307
status_changes = [ rel.document for rel in status_change_docs if rel.document.get_state_slug() in ('appr-sent','appr-pend')]
308308
proposed_status_changes = [ rel.document for rel in status_change_docs if rel.document.get_state_slug() in ('needshep','adrev','iesgeval','defer','appr-pr')]
309309

310+
presentations = doc.future_presentations()
311+
310312
# remaining actions
311313
actions = []
312314

@@ -417,6 +419,7 @@ def document_main(request, name, rev=None):
417419
search_archive=search_archive,
418420
actions=actions,
419421
tracking_document=tracking_document,
422+
presentations=presentations,
420423
),
421424
context_instance=RequestContext(request))
422425

@@ -526,13 +529,8 @@ def document_main(request, name, rev=None):
526529
# created and content is made available on disk
527530
if doc.type_id in ("slides", "agenda", "minutes"):
528531
can_manage_material = can_manage_materials(request.user, doc.group)
529-
presentations = None
530-
if doc.type_id=='slides' and doc.get_state_slug('slides')=='active' :
531-
presentations = doc.future_presentations()
532+
presentations = doc.future_presentations()
532533
if doc.meeting_related():
533-
# disallow editing meeting-related stuff through this
534-
# interface for the time being
535-
can_manage_material = False
536534
basename = doc.canonical_name() # meeting materials are unversioned at the moment
537535
if doc.external_url:
538536
# we need to remove the extension for the globbing below to work

ietf/doc/views_material.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -250,11 +250,10 @@ def time_sort_key(session):
250250
def edit_material_presentations(request, name, acronym=None, date=None, seq=None, week_day=None):
251251

252252
doc = get_object_or_404(Document, name=name)
253-
if not (doc.type_id=='slides' and doc.get_state('slides').slug=='active'):
254-
raise Http404
255253

256254
group = doc.group
257-
if not (group.features.has_materials and can_manage_materials(request.user,group)):
255+
256+
if not can_manage_materials(request.user,group):
258257
raise Http404
259258

260259
sorted_sessions = get_upcoming_manageable_sessions(request.user, doc, acronym, date, seq, week_day)
@@ -301,11 +300,11 @@ def edit_material_presentations(request, name, acronym=None, date=None, seq=None
301300
def material_presentations(request, name, acronym=None, date=None, seq=None, week_day=None):
302301

303302
doc = get_object_or_404(Document, name=name)
304-
if not (doc.type_id=='slides' and doc.get_state('slides').slug=='active'):
305-
raise Http404
303+
306304

307305
group = doc.group
308-
if not (group.features.has_materials and can_manage_materials(request.user,group)):
306+
307+
if not can_manage_materials(request.user,group):
309308
raise Http404
310309

311310
sorted_sessions = get_upcoming_manageable_sessions(request.user, doc, acronym, date, seq, week_day)

ietf/group/info.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
from ietf.utils.pipe import pipe
6060
from ietf.settings import MAILING_LIST_INFO_URL
6161
from ietf.mailtrigger.utils import gather_relevant_expansions
62+
from ietf.ietfauth.utils import has_role
6263

6364
def roles(group, role_name):
6465
return Role.objects.filter(group=group, name=role_name).select_related("email", "person")
@@ -732,7 +733,9 @@ def meetings(request, acronym=None, group_type=None):
732733

733734
four_years_ago = datetime.datetime.now()-datetime.timedelta(days=4*365)
734735

735-
sessions = group.session_set.filter(status__in=['sched','schedw','appr','canceled'],meeting__date__gt=four_years_ago)
736+
sessions = group.session_set.filter(status__in=['sched','schedw','appr','canceled'],
737+
meeting__date__gt=four_years_ago,
738+
type__in=['session','plenary','other'])
736739

737740
def sort_key(session):
738741
if session.meeting.type.slug=='ietf':
@@ -764,10 +767,13 @@ def sort_key(session):
764767
else:
765768
past.append(s)
766769

770+
can_edit = has_role(request.user,["Secretariat","Area Director"]) or group.has_role(request.user,["Chair","Secretary"])
771+
767772
return render(request,'group/meetings.html',
768773
construct_group_menu_context(request, group, "meetings", group_type, {
769774
'group':group,
770775
'future':future,
771776
'in_progress':in_progress,
772777
'past':past,
778+
'can_edit':can_edit,
773779
}))

ietf/meeting/models.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -954,6 +954,9 @@ def recordings(self):
954954
def slides(self):
955955
return list(self.get_material("slides", only_one=False))
956956

957+
def drafts(self):
958+
return list(self.materials.filter(type='draft'))
959+
957960
def __unicode__(self):
958961
if self.meeting.type_id == "interim":
959962
return self.meeting.number

ietf/meeting/views.py

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import tarfile
77
import urllib
88
from tempfile import mkstemp
9-
from collections import OrderedDict
9+
from collections import OrderedDict, Counter
1010
import csv
1111
import json
1212

@@ -25,6 +25,7 @@
2525

2626
from ietf.doc.models import Document, State
2727
from ietf.group.models import Group
28+
from ietf.group.utils import can_manage_materials
2829
from ietf.ietfauth.utils import role_required, has_role
2930
from ietf.meeting.models import Meeting, Session, Schedule, Room
3031
from ietf.meeting.helpers import get_areas, get_person_by_email, get_schedule_by_name
@@ -830,7 +831,7 @@ def session_details(request, num, acronym ):
830831
sessions = Session.objects.filter(meeting=meeting,group__acronym=acronym,type__in=['session','plenary','other'])
831832

832833
if not sessions:
833-
sessions = Session.objects.filter(meeting=meeting,short=acronym)
834+
sessions = Session.objects.filter(meeting=meeting,short=acronym,type__in=['session','plenary','other'])
834835

835836
def sort_key(session):
836837
official_sessions = session.timeslotassignments.filter(schedule=session.meeting.agenda)
@@ -844,21 +845,32 @@ def sort_key(session):
844845
if not sessions:
845846
raise Http404
846847

848+
type_counter = Counter()
849+
847850
for session in sessions:
848851

849852
ss = session.timeslotassignments.filter(schedule=meeting.agenda).order_by('timeslot__time')
850853
if ss:
851854
session.time = ', '.join(x.timeslot.time.strftime("%A %b-%d-%Y %H%M") for x in ss)
855+
if session.status.slug == 'canceled':
856+
session.time += " CANCELLED"
852857
elif session.meeting.type_id=='interim':
853858
session.time = session.meeting.date.strftime("%A %b-%d-%Y")
859+
if session.status.slug == 'canceled':
860+
session.time += " CANCELLED"
854861
else:
855-
session.time = 'Not yet scheduled'
862+
session.time = session.status.name
856863

857864
# TODO FIXME Deleted materials shouldn't be in the sessionpresentation_set
858865
session.filtered_sessionpresentation_set = [p for p in session.sessionpresentation_set.all() if p.document.get_state_slug(p.document.type_id)!='deleted']
866+
type_counter.update([p.document.type.slug for p in session.filtered_sessionpresentation_set])
867+
868+
can_manage = can_manage_materials(request.user, Group.objects.get(acronym=acronym))
859869

860870
return render(request, "meeting/session_details.html",
861871
{ 'sessions':sessions ,
862872
'meeting' :meeting ,
863873
'acronym' :acronym,
874+
'can_manage_materials' : can_manage,
875+
'type_counter': type_counter,
864876
})

ietf/templates/doc/document_draft.html

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,26 @@
244244
</tr>
245245
{% endif %}
246246

247+
{% if presentations or can_edit_stream_info %}
248+
<tr>
249+
<th></th>
250+
<th>On Agenda</th>
251+
<td class="edit">
252+
{% if not snapshot and can_edit_stream_info %}
253+
{% doc_edit_button "material_presentations" name=doc.name %}
254+
{% endif %}
255+
</td>
256+
257+
<td>
258+
{% if presentations %}
259+
{% for pres in presentations %}{{ pres.session.short_name }} at {{ pres.session.meeting }} {% if pres.rev != doc.rev %}(version -{{ pres.rev }}){% endif %}{% if not forloop.last %}, {% endif %}{% endfor %}
260+
{% else %}
261+
None
262+
{% endif %}
263+
</td>
264+
</tr>
265+
{% endif %}
266+
247267
<tr>
248268
<th></th>
249269
<th>Document shepherd</th>

ietf/templates/doc/document_material.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@
3232

3333
<tbody class="meta">
3434
<tr>
35-
<th>{% if doc.meeting_related %}Meeting{% endif %} {{ doc.type.name }}</th>
36-
<td class="edit"></td>
37-
<td>
35+
<th class="col-md-1">{% if doc.meeting_related %}Meeting{% endif %} {{ doc.type.name }}</th>
36+
<td class="edit col-md-1"></td>
37+
<td class="col-md-10">
3838
{{ doc.group.name }}
3939
<a href="{{ doc.group.about_url }}">({{ doc.group.acronym }})</a> {{ doc.group.type.name }}
4040

ietf/templates/group/meetings-row.html

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,22 @@
1313
<tr>
1414
<td>{% ifchanged s.meeting %}{% if s.meeting.type.slug == 'ietf' %}IETF{% endif %}{{s.meeting.number}}{% endifchanged %}</td>
1515
<td>
16+
{% if s.name %}{{ s.name }}<br>{% endif %}
1617
{% if s.status.slug == "sched" %}
1718
{% if s.meeting.type.slug == 'ietf' %}{{s.time|date:"D M d, Y Hi"}}{% else %}{{s.time|date:"D M d, Y"}}{% endif %}
1819
{% else %}
1920
{{s.status}}
2021
{% endif %}
22+
{% if show_request and s.meeting.type.slug == 'ietf' %}
23+
{% if can_edit %}
24+
<br>
25+
<a class="btn btn-default btn-xs" href="{% url 'sessions_view' num=s.meeting.number acronym=s.group.acronym %}">Edit Session Request</a>
26+
{% endif %}
27+
{% endif %}
2128
</td>
22-
<td>{% if s.minutes %}<a href="{{ s.minutes.get_absolute_url }}">Minutes</a>{% endif %}</td>
23-
<td>{% if s.agenda %}<a href="{{ s.agenda.get_absolute_url }}">Agenda</a>{% endif %}</td>
24-
<td><a href="{% url 'ietf.meeting.views.session_details' num=s.meeting.number acronym=s.group.acronym %}">Materials</a></td>
29+
<td>{% if s.agenda %}<a class="btn btn-default btn-xs" href="{{ s.agenda.get_absolute_url }}">Agenda</a>{% endif %}</td>
30+
<td>{% if s.minutes %}<a class="btn btn-default btn-xs" href="{{ s.minutes.get_absolute_url }}">Minutes</a>{% endif %}</td>
31+
<td><a class="btn btn-default btn-xs" href="{% url 'ietf.meeting.views.session_details' num=s.meeting.number acronym=s.group.acronym %}">Materials</a></td>
2532
{% endfor %}
2633
</tbody>
2734
</table>

ietf/templates/group/meetings.html

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,21 @@
66

77
{% block group_content %}
88
{% origin %}
9+
10+
<div class="buttonlist">
11+
<a class="btn btn-default" href="{% url 'ietf.meeting.views.meeting_requests' %}">Session requests</a>
12+
{% if can_edit %}
13+
<a class="btn btn-default" href="{% url 'ietf.secr.sreq.views.main' %}">Request a session</a>
14+
{% endif %}
15+
</div>
16+
917
{% if in_progress %}
1018
<div class="panel panel-default" id="inprogressmeets">
1119
<div class="panel-heading">
1220
Meetings in progress
1321
</div>
1422
<div class="panel-body">
15-
{% with in_progress as sessions %}
23+
{% with sessions=in_progress show_request=True %}
1624
{% include "group/meetings-row.html" %}
1725
{% endwith %}
1826
</div>
@@ -25,7 +33,7 @@
2533
Future Meetings
2634
</div>
2735
<div class="panel-body">
28-
{% with future as sessions %}
36+
{% with sessions=future show_request=True %}
2937
{% include "group/meetings-row.html" %}
3038
{% endwith %}
3139
</div>

ietf/templates/meeting/group_materials.html

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,15 @@
4848
{% endfor %}
4949
{% endwith %}
5050
</td>
51+
<td>
52+
{% with session.drafts as drafts %}
53+
{% for draft in drafts %}
54+
<a href="{% url "doc_view" name=draft.canonical_name %}">{{ draft.canonical_name }}</a><br>
55+
{% empty %}
56+
<span class="label label-warning">No drafts</span>
57+
{% endfor %}
58+
{% endwith %}
59+
</td>
5160
{% endif %}
5261
</tr>
5362

0 commit comments

Comments
 (0)