fix: restore attendee dbtemplate for old meetings pending data correction (#6656)

* fix: restore attendee dbtemplate for old meetings pending data correction

* test: adjust attendees test to match workaround
This commit is contained in:
Robert Sparks 2023-11-17 10:01:09 -06:00 committed by GitHub
parent 1f47d0a159
commit c1627ed011
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 46 additions and 32 deletions

View file

@ -7856,7 +7856,7 @@ class ProceedingsTests(BaseMeetingTestCase):
""" """
make_meeting_test_data() make_meeting_test_data()
meeting = MeetingFactory(type_id='ietf', date=datetime.date(2016, 7, 14), number="97") meeting = MeetingFactory(type_id='ietf', date=datetime.date(2023, 11, 4), number="118")
person_a = PersonFactory(name='Person A') person_a = PersonFactory(name='Person A')
person_b = PersonFactory(name='Person B') person_b = PersonFactory(name='Person B')
person_c = PersonFactory(name='Person C') person_c = PersonFactory(name='Person C')
@ -7868,7 +7868,7 @@ class ProceedingsTests(BaseMeetingTestCase):
MeetingRegistrationFactory(meeting=meeting, person=person_c, reg_type='remote') MeetingRegistrationFactory(meeting=meeting, person=person_c, reg_type='remote')
AttendedFactory(session__meeting=meeting, session__type_id='plenary', person=person_c) AttendedFactory(session__meeting=meeting, session__type_id='plenary', person=person_c)
MeetingRegistrationFactory(meeting=meeting, person=person_d, reg_type='remote') MeetingRegistrationFactory(meeting=meeting, person=person_d, reg_type='remote')
url = urlreverse('ietf.meeting.views.proceedings_attendees',kwargs={'num': 97}) url = urlreverse('ietf.meeting.views.proceedings_attendees',kwargs={'num': 118})
response = self.client.get(url) response = self.client.get(url)
self.assertContains(response, 'Attendee list') self.assertContains(response, 'Attendee list')
q = PyQuery(response.content) q = PyQuery(response.content)
@ -8284,4 +8284,4 @@ class ProceedingsTests(BaseMeetingTestCase):
self.assertTrue(person_a.pk in checked_in) self.assertTrue(person_a.pk in checked_in)
self.assertTrue(person_b.pk not in checked_in) self.assertTrue(person_b.pk not in checked_in)
self.assertTrue(person_c.pk in attended) self.assertTrue(person_c.pk in attended)
self.assertTrue(person_d.pk not in attended) self.assertTrue(person_d.pk not in attended)

View file

@ -3861,18 +3861,29 @@ def proceedings_attendees(request, num=None):
if meeting.proceedings_format_version == 1: if meeting.proceedings_format_version == 1:
return HttpResponseRedirect(f'{settings.PROCEEDINGS_V1_BASE_URL.format(meeting=meeting)}/attendee.html') return HttpResponseRedirect(f'{settings.PROCEEDINGS_V1_BASE_URL.format(meeting=meeting)}/attendee.html')
checked_in, attended = participants_for_meeting(meeting) template = None
regs = list(MeetingRegistration.objects.filter(meeting__number=num, reg_type='onsite', checkedin=True)) meeting_registrations = None
for mr in MeetingRegistration.objects.filter(meeting__number=num, reg_type='remote').select_related('person'): if int(meeting.number) >= 118:
if mr.person.pk in attended and mr.person.pk not in checked_in: checked_in, attended = participants_for_meeting(meeting)
regs.append(mr) regs = list(MeetingRegistration.objects.filter(meeting__number=num, reg_type='onsite', checkedin=True))
meeting_registrations = sorted(regs, key=lambda x: (x.last_name, x.first_name)) for mr in MeetingRegistration.objects.filter(meeting__number=num, reg_type='remote').select_related('person'):
if mr.person.pk in attended and mr.person.pk not in checked_in:
regs.append(mr)
meeting_registrations = sorted(regs, key=lambda x: (x.last_name, x.first_name))
else:
overview_template = "/meeting/proceedings/%s/attendees.html" % meeting.number
try:
template = render_to_string(overview_template, {})
except TemplateDoesNotExist:
raise Http404
return render(request, "meeting/proceedings_attendees.html", { return render(request, "meeting/proceedings_attendees.html", {
'meeting': meeting, 'meeting': meeting,
'meeting_registrations': meeting_registrations, 'meeting_registrations': meeting_registrations,
'template': template,
}) })
def proceedings_overview(request, num=None): def proceedings_overview(request, num=None):

View file

@ -15,29 +15,32 @@
</h1> </h1>
<h2>Attendee list of IETF {{ meeting.number }} meeting</h2> <h2>Attendee list of IETF {{ meeting.number }} meeting</h2>
<table id="id_attendees" class="table table-sm table-striped tablesorter"> {% if template %}
<thead> {{template|safe}}
<tr> {% else %}
<th scope="col" data-sort="last">Last Name</th> <table id="id_attendees" class="table table-sm table-striped tablesorter">
<th scope="col" data-sort="first">First Name</th> <thead>
<th scope="col" data-sort="organization">Organization</th> <tr>
<th scope="col" data-sort="country">Country</th> <th scope="col" data-sort="last">Last Name</th>
<th scope="col" data-sort="type">Registration Type</th> <th scope="col" data-sort="first">First Name</th>
</tr> <th scope="col" data-sort="organization">Organization</th>
</thead> <th scope="col" data-sort="country">Country</th>
<tbody> <th scope="col" data-sort="type">Registration Type</th>
{% for reg in meeting_registrations %} </tr>
<tr> </thead>
<td>{{ reg.last_name }}</td> <tbody>
<td>{{ reg.first_name }}</td> {% for reg in meeting_registrations %}
<td>{{ reg.affiliation }}</td> <tr>
<td>{{ reg.country_code }}</td> <td>{{ reg.last_name }}</td>
<td>{{ reg.reg_type }}</td> <td>{{ reg.first_name }}</td>
</tr> <td>{{ reg.affiliation }}</td>
{% endfor %} <td>{{ reg.country_code }}</td>
</tbody> <td>{{ reg.reg_type }}</td>
</table> </tr>
{% endfor %}
</tbody>
</table>
{% endif %}
{% endblock %} {% endblock %}
{% block js %} {% block js %}
<script src="{% static "ietf/js/list.js" %}"></script> <script src="{% static "ietf/js/list.js" %}"></script>