8000 fix: approve slides link for all pending submissions by jennifer-richards · Pull Request #8692 · ietf-tools/datatracker · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

fix: approve slides link for all pending submissions #8692

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
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
80 changes: 80 additions & 0 deletions ietf/meeting/tests_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -4523,6 +4523,7 @@ def test_persistent_enabled_timeslot_types(self):


class SessionDetailsTests(TestCase):
settings_temp_path_overrides = TestCase.settings_temp_path_overrides + ['SLIDE_STAGING_PATH']

def test_session_details(self):

Expand Down Expand Up @@ -4655,6 +4656,85 @@ def test_add_session_drafts(self):
q = PyQuery(r.content)
self.assertEqual(1,len(q(".alert-warning:contains('may affect published proceedings')")))

def test_proposed_slides_for_approval(self):
# This test overlaps somewhat with MaterialsTests of proposed slides handling. The focus
# here is on the display of slides, not the approval action.
group = GroupFactory()
meeting = MeetingFactory(
type_id="ietf", date=date_today() + datetime.timedelta(days=10)
)
sessions = SessionFactory.create_batch(
2,
group=group,
meeting=meeting,
)

# slides submission _not_ in the `pending` state
do_not_show = [
SlideSubmissionFactory(
session=sessions[0],
title="already approved",
status_id="approved",
),
SlideSubmissionFactory(
session=sessions[1],
title="already rejected",
status_id="rejected",
),
]

# pending submissions
first_session_pending = SlideSubmissionFactory(
session=sessions[0], title="first session title"
)
second_session_pending = SlideSubmissionFactory(
session=sessions[1], title="second session title"
)

# and their approval URLs
def _approval_url(slidesub):
return urlreverse(
"ietf.meeting.views.approve_proposed_slides",
kwargs={"slidesubmission_id": slidesub.pk, "num": meeting.number},
)

first_approval_url = _approval_url(first_session_pending)
second_approval_url = _approval_url(second_session_pending)
do_not_show_urls = [_approval_url(ss) for ss in do_not_show]

# Retrieve the URL as a group chair
url = urlreverse(
"ietf.meeting.views.session_details",
kwargs={
"num": meeting.number,
"acronym": group.acronym,
},
)
chair = RoleFactory(group=group, name_id="chair").person
self.client.login(
username=chair.user.username, password=f"{chair.user.username}+password"
)
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
pq = PyQuery(r.content)
self.assertEqual(
len(pq(f'a[href="{first_approval_url}"]')),
1,
"first session proposed slides should be linked for approval",
)
self.assertEqual(
len(pq(f'a[href="{second_approval_url}"]')),
1,
"second session proposed slides should be linked for approval",
)
for no_show_url in do_not_show_urls:
self.assertEqual(
len(pq(f'a[href="{no_show_url}"]')),
0,
"second session proposed slides should be linked for approval",
)


class EditScheduleListTests(TestCase):
def setUp(self):
super().setUp()
Expand Down
14 changes: 8 additions & 6 deletions ietf/meeting/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -2509,12 +2509,14 @@ def session_details(request, num, acronym):
scheduled_sessions = [s for s in sessions if s.current_status == 'sched']
unscheduled_sessions = [s for s in sessions if s.current_status != 'sched']

pending_suggestions = None
if request.user.is_authenticated:
if can_manage:
pending_suggestions = session.slidesubmission_set.filter(status__slug='pending')
else:
pending_suggestions = session.slidesubmission_set.filter(status__slug='pending', submitter=request.user.person)
# Start with all the pending suggestions for all the group's sessions
pending_suggestions = SlideSubmission.objects.filter(session__in=sessions, status__slug='pending')
if can_manage:
pass # keep the full set
elif hasattr(request.user, "person"):
pending_suggestions = pending_suggestions.filter(submitter=request.user.person)
else:
pending_suggestions = SlideSubmission.objects.none()

return render(request, "meeting/session_details.html",
{ 'scheduled_sessions':scheduled_sessions ,
Expand Down
34 changes: 16 additions & 18 deletions ietf/templates/meeting/session_details.html
Original file line number Diff line number Diff line change
Expand Up @@ -31,30 +31,28 @@ <h2 class="mt-3">Scheduled Sessions</h2>
{% include 'meeting/session_details_panel.html' with sessions=scheduled_sessions %}
<h2 class="mt-3">Unscheduled Sessions</h2>
{% include 'meeting/session_details_panel.html' with sessions=unscheduled_sessions %}
{% if pending_suggestions %}
<h2 class="mt-3">
{% for s in pending_suggestions %}
{% if forloop.first %}<h2 class="mt-3">
{% if can_manage_materials %}
Proposed slides awaiting your approval
{% else %}
Your proposed slides awaiting chair approval
{% endif %}
</h2>
<div class="proposedslidelist">
{% for s in pending_suggestions %}
{% if can_manage_materials %}
<p>
<a href="{% url "ietf.meeting.views.approve_proposed_slides" slidesubmission_id=s.pk num=s.session.meeting.number %}">
{{ s.submitter }} - {{ s.title }} ({{ s.time }})
</a>
</p>
{% else %}
<p>
{{ s.title }} ({{ s.time }})
</p>
{% endif %}
{% endfor %}
</div>
{% endif %}
<div class="proposedslidelist">{% endif %}
{% if can_manage_materials %}
<p>
<a href="{% url "ietf.meeting.views.approve_proposed_slides" slidesubmission_id=s.pk num=s.session.meeting.number %}">
{{ s.submitter }} - {{ s.title }} ({{ s.time }})
</a>
</p>
{% else %}
<p>
{{ s.title }} ({{ s.time }})
</p>
{% endif %}
{% if forloop.last %}</div>{% endif %}
{% endfor %}
{% endblock %}
{% block js %}
<script src="{% static 'ietf/js/list.js' %}"></script>
Expand Down
Loading
0