fix: omit session location when timeslot.show_location is False (#4712)
* fix: omit session location when timeslot.show_location is False * test: test that location is omitted when show_location is False
This commit is contained in:
parent
8cf309cd6a
commit
594c3f4316
|
@ -39,15 +39,15 @@ from ietf.doc.models import Document
|
|||
from ietf.group.models import Group, Role, GroupFeatures
|
||||
from ietf.group.utils import can_manage_group
|
||||
from ietf.person.models import Person
|
||||
from ietf.meeting.helpers import can_approve_interim_request, can_view_interim_request
|
||||
from ietf.meeting.helpers import send_interim_approval_request
|
||||
from ietf.meeting.helpers import can_approve_interim_request, can_view_interim_request, preprocess_assignments_for_agenda
|
||||
from ietf.meeting.helpers import send_interim_approval_request, AgendaKeywordTagger
|
||||
from ietf.meeting.helpers import send_interim_meeting_cancellation_notice, send_interim_session_cancellation_notice
|
||||
from ietf.meeting.helpers import send_interim_minutes_reminder, populate_important_dates, update_important_dates
|
||||
from ietf.meeting.models import Session, TimeSlot, Meeting, SchedTimeSessAssignment, Schedule, SessionPresentation, SlideSubmission, SchedulingEvent, Room, Constraint, ConstraintName
|
||||
from ietf.meeting.test_data import make_meeting_test_data, make_interim_meeting, make_interim_test_data
|
||||
from ietf.meeting.utils import finalize, condition_slide_order
|
||||
from ietf.meeting.utils import add_event_info_to_session_qs
|
||||
from ietf.meeting.views import session_draft_list, parse_agenda_filter_params, sessions_post_save
|
||||
from ietf.meeting.views import session_draft_list, parse_agenda_filter_params, sessions_post_save, agenda_extract_schedule
|
||||
from ietf.name.models import SessionStatusName, ImportantDateName, RoleName, ProceedingsMaterialTypeName
|
||||
from ietf.utils.decorators import skip_coverage
|
||||
from ietf.utils.mail import outbox, empty_outbox, get_payload_text
|
||||
|
@ -147,6 +147,31 @@ class BaseMeetingTestCase(TestCase):
|
|||
"This is a slideshow")
|
||||
|
||||
|
||||
class AgendaApiTests(TestCase):
|
||||
def test_agenda_extract_schedule_location(self):
|
||||
meeting = MeetingFactory(type_id='ietf')
|
||||
room = RoomFactory(meeting=meeting, floorplan=FloorPlanFactory(meeting=meeting))
|
||||
hidden_ts = TimeSlotFactory(meeting=meeting, location=room, show_location=False)
|
||||
shown_ts = TimeSlotFactory(meeting=meeting, location=room, show_location=True)
|
||||
hidden_sess = SessionFactory(meeting=meeting, add_to_schedule=False)
|
||||
shown_sess = SessionFactory(meeting=meeting, add_to_schedule=False)
|
||||
meeting.schedule.assignments.create(timeslot=hidden_ts, session=hidden_sess)
|
||||
meeting.schedule.assignments.create(timeslot=shown_ts, session=shown_sess)
|
||||
processed = preprocess_assignments_for_agenda(
|
||||
SchedTimeSessAssignment.objects.filter(session__in=[hidden_sess, shown_sess]),
|
||||
meeting
|
||||
)
|
||||
AgendaKeywordTagger(assignments=processed).apply()
|
||||
extracted = {item.pk: agenda_extract_schedule(item) for item in processed}
|
||||
|
||||
hidden = extracted[hidden_sess.pk]
|
||||
self.assertIsNone(hidden['room'])
|
||||
self.assertEqual(hidden['location'], {})
|
||||
|
||||
shown = extracted[shown_sess.pk]
|
||||
self.assertEqual(shown['room'], room.name)
|
||||
self.assertEqual(shown['location'], {'name': room.floorplan.name, 'short': room.floorplan.short})
|
||||
|
||||
|
||||
class MeetingTests(BaseMeetingTestCase):
|
||||
def test_meeting_agenda(self):
|
||||
|
|
|
@ -1701,11 +1701,11 @@ def agenda_extract_schedule (item):
|
|||
return {
|
||||
"id": item.id,
|
||||
"sessionId": item.session.id,
|
||||
"room": item.room_name,
|
||||
"room": item.room_name if item.timeslot.show_location else None,
|
||||
"location": {
|
||||
"short": item.timeslot.location.floorplan.short,
|
||||
"name": item.timeslot.location.floorplan.name,
|
||||
} if (item.timeslot.location and item.timeslot.location.floorplan) else {},
|
||||
} if (item.timeslot.show_location and item.timeslot.location and item.timeslot.location.floorplan) else {},
|
||||
"acronym": item.acronym,
|
||||
"duration": item.timeslot.duration.seconds,
|
||||
"name": item.timeslot.name,
|
||||
|
|
Loading…
Reference in a new issue