From 182dae28a8eac4f1d8a625ccf4988216cbcdeb9d Mon Sep 17 00:00:00 2001 From: Valery Smyslov Date: Mon, 18 Nov 2019 08:48:15 +0000 Subject: [PATCH] Fixes issue #2612. Commit ready for merge. - Legacy-Id: 17044 --- ietf/doc/views_doc.py | 4 ++-- ietf/group/utils.py | 3 +++ ietf/group/views.py | 8 +++++--- ietf/meeting/utils.py | 5 ++++- ietf/meeting/views.py | 6 +++--- ietf/templates/group/meetings-row.html | 2 +- ietf/templates/group/meetings.html | 9 ++++++--- 7 files changed, 24 insertions(+), 13 deletions(-) diff --git a/ietf/doc/views_doc.py b/ietf/doc/views_doc.py index 603c1650a..dc44e43f5 100644 --- a/ietf/doc/views_doc.py +++ b/ietf/doc/views_doc.py @@ -1349,12 +1349,12 @@ def all_presentations(request, name): sessions = doc.session_set.filter(status__in=['sched','schedw','appr','canceled'], type__in=['session','plenary','other']) - future, in_progress, past = group_sessions(sessions) + future, in_progress, recent, past = group_sessions(sessions) return render(request, 'doc/material/all_presentations.html', { 'user': request.user, 'doc': doc, 'future': future, 'in_progress': in_progress, - 'past' : past, + 'past' : past+recent, }) diff --git a/ietf/group/utils.py b/ietf/group/utils.py index e6660cccf..b08418ac7 100644 --- a/ietf/group/utils.py +++ b/ietf/group/utils.py @@ -135,6 +135,9 @@ def milestone_reviewer_for_group_type(group_type): def can_manage_materials(user, group): return has_role(user, 'Secretariat') or group.has_role(user, group.features.matman_roles) +def can_manage_session_materials(user, group, session): + return has_role(user, 'Secretariat') or (group.has_role(user, group.features.matman_roles) and not session.is_material_submission_cutoff()) + def can_provide_status_update(user, group): if not group.features.acts_like_wg: return False diff --git a/ietf/group/views.py b/ietf/group/views.py index e757709f1..adaf9ff01 100644 --- a/ietf/group/views.py +++ b/ietf/group/views.py @@ -112,7 +112,6 @@ from ietf.review.utils import (can_manage_review_requests_for_team, from ietf.doc.models import LastCallDocEvent - from ietf.name.models import ReviewAssignmentStateName from ietf.utils.mail import send_mail_text, parse_preformatted, get_payload @@ -754,17 +753,20 @@ def meetings(request, acronym=None, group_type=None): meeting__date__gt=four_years_ago, type__in=['session','plenary','other']) - future, in_progress, past = group_sessions(sessions) + future, in_progress, recent, past = group_sessions(sessions) - can_edit = has_role(request.user,["Secretariat","Area Director"]) or group.has_role(request.user,["Chair","Secretary"]) + can_edit = group.has_role(request.user,["Chair","Secretary"]) + can_always_edit = has_role(request.user,["Secretariat","Area Director"]) return render(request,'group/meetings.html', construct_group_menu_context(request, group, "meetings", group_type, { 'group':group, 'future':future, 'in_progress':in_progress, + 'recent':recent, 'past':past, 'can_edit':can_edit, + 'can_always_edit':can_always_edit, })) def chair_photos(request, group_type=None): diff --git a/ietf/meeting/utils.py b/ietf/meeting/utils.py index 528ad6924..240b59547 100644 --- a/ietf/meeting/utils.py +++ b/ietf/meeting/utils.py @@ -39,12 +39,15 @@ def group_sessions(sessions): today = datetime.date.today() future = [] in_progress = [] + recent = [] past = [] for s in sessions: if s.meeting.date > today: future.append(s) elif s.meeting.end_date() >= today: in_progress.append(s) + elif not s.is_material_submission_cutoff(): + recent.append(s) else: past.append(s) @@ -52,7 +55,7 @@ def group_sessions(sessions): # meetings with descending time past.reverse() - return future, in_progress, past + return future, in_progress, recent, past def get_upcoming_manageable_sessions(user): """ Find all the sessions for meetings that haven't ended that the user could affect """ diff --git a/ietf/meeting/views.py b/ietf/meeting/views.py index 26a2d65f6..0586ceadd 100644 --- a/ietf/meeting/views.py +++ b/ietf/meeting/views.py @@ -48,7 +48,7 @@ from django.views.generic import RedirectView from ietf.doc.fields import SearchableDocumentsField from ietf.doc.models import Document, State, DocEvent, NewRevisionDocEvent, DocAlias from ietf.group.models import Group -from ietf.group.utils import can_manage_materials +from ietf.group.utils import can_manage_session_materials from ietf.ietfauth.utils import role_required, has_role from ietf.mailtrigger.utils import gather_address_lists from ietf.meeting.models import Meeting, Session, Schedule, FloorPlan, SessionPresentation, TimeSlot, SlideSubmission @@ -1116,8 +1116,8 @@ def session_details(request, num, acronym ): session.type_counter.update([p.document.type.slug for p in qs]) # we somewhat arbitrarily use the group of the last session wet get from - # get_sessions() above when checking can_manage_materials() - can_manage = can_manage_materials(request.user, session.group) + # get_sessions() above when checking can_manage_session_materials() + can_manage = can_manage_session_materials(request.user, session.group, session) scheduled_sessions=[s for s in sessions if s.status_id=='sched'] unscheduled_sessions = [s for s in sessions if s.status_id!='sched'] diff --git a/ietf/templates/group/meetings-row.html b/ietf/templates/group/meetings-row.html index a6bfdbc46..d6ec43214 100644 --- a/ietf/templates/group/meetings-row.html +++ b/ietf/templates/group/meetings-row.html @@ -50,7 +50,7 @@ {% if s.minutes %}Minutes{% endif %} - {% if can_edit %}Edit {% endif %}Materials + {% if can_always_edit or can_edit_materials %}Edit {% endif %}Materials {% endfor %} diff --git a/ietf/templates/group/meetings.html b/ietf/templates/group/meetings.html index 95ac7eb59..84d6f6a78 100644 --- a/ietf/templates/group/meetings.html +++ b/ietf/templates/group/meetings.html @@ -23,7 +23,7 @@ Meetings in progress
- {% with sessions=in_progress show_request=True show_ical=True %} + {% with sessions=in_progress show_request=True show_ical=True can_edit_materials=can_edit %} {% include "group/meetings-row.html" %} {% endwith %}
@@ -37,7 +37,7 @@
- {% with sessions=future show_request=True show_ical=True %} + {% with sessions=future show_request=True show_ical=True can_edit_materials=can_edit %} {% include "group/meetings-row.html" %} {% endwith %}
@@ -50,7 +50,10 @@ Past Meetings
- {% with past as sessions %} + {% with sessions=recent can_edit_materials=can_edit %} + {% include "group/meetings-row.html" %} + {% endwith %} + {% with sessions=past can_edit_materials=False %} {% include "group/meetings-row.html" %} {% endwith %}