Skip to content

Commit 6a7ebfd

Browse files
committed
Show the constraint names on the meeting session requests page. Fixes ietf-tools#3082. Commit ready for merge.
- Legacy-Id: 19305
1 parent 05390eb commit 6a7ebfd

3 files changed

Lines changed: 36 additions & 4 deletions

File tree

ietf/meeting/factories.py

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@
77
import datetime
88

99
from django.core.files.base import ContentFile
10+
from django.db.models import Q
1011

11-
from ietf.meeting.models import Meeting, Session, SchedulingEvent, Schedule, TimeSlot, SessionPresentation, FloorPlan, Room, SlideSubmission
12-
from ietf.name.models import ConstraintName, SessionStatusName
12+
from ietf.meeting.models import ( Meeting, Session, SchedulingEvent, Schedule,
13+
TimeSlot, SessionPresentation, FloorPlan, Room, SlideSubmission, Constraint)
14+
from ietf.name.models import ConstraintName, SessionStatusName, TimerangeName
1315
from ietf.group.factories import GroupFactory
1416
from ietf.person.factories import PersonFactory
1517

@@ -100,6 +102,7 @@ class Meta:
100102
meeting = factory.SubFactory(MeetingFactory)
101103
type_id='regular'
102104
group = factory.SubFactory(GroupFactory)
105+
requested_duration = datetime.timedelta(hours=1)
103106

104107
@factory.post_generation
105108
def status_id(obj, create, extracted, **kwargs):
@@ -220,3 +223,28 @@ class Meta:
220223
make_file = factory.PostGeneration(
221224
lambda obj, create, extracted, **kwargs: open(obj.staged_filepath(),'a').close()
222225
)
226+
227+
class ConstraintFactory(factory.django.DjangoModelFactory):
228+
class Meta:
229+
model = Constraint
230+
231+
meeting = factory.SubFactory(MeetingFactory)
232+
source = factory.SubFactory(GroupFactory)
233+
target = factory.SubFactory(GroupFactory)
234+
person = factory.SubFactory(PersonFactory)
235+
time_relation = factory.Iterator(Constraint.TIME_RELATION_CHOICES)
236+
237+
@factory.lazy_attribute
238+
def name(obj):
239+
constraint_list = list(ConstraintName.objects.filter(
240+
Q(slug__in=['bethere','timerange','time_relation','wg_adjacent'])
241+
| Q(meeting=obj.meeting)
242+
))
243+
return random.choice(constraint_list)
244+
245+
@factory.post_generation
246+
def timeranges(self, create, extracted, **kwargs):
247+
if create:
248+
if extracted:
249+
for tr in TimerangeName.objects.filter(slug__in=extracted):
250+
self.timeranges.add(tr)

ietf/meeting/tests_views.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
from ietf.person.factories import PersonFactory
5252
from ietf.group.factories import GroupFactory, GroupEventFactory, RoleFactory
5353
from ietf.meeting.factories import ( SessionFactory, SessionPresentationFactory, ScheduleFactory,
54-
MeetingFactory, FloorPlanFactory, TimeSlotFactory, SlideSubmissionFactory, RoomFactory )
54+
MeetingFactory, FloorPlanFactory, TimeSlotFactory, SlideSubmissionFactory, RoomFactory, ConstraintFactory )
5555
from ietf.doc.factories import DocumentFactory, WgDraftFactory
5656
from ietf.submit.tests import submission_file
5757
from ietf.utils.test_utils import assert_ical_response_is_valid
@@ -4450,11 +4450,15 @@ def test_meeting_requests(self):
44504450
meeting = MeetingFactory(type_id='ietf')
44514451
area = GroupFactory(type_id='area')
44524452
requested_session = SessionFactory(meeting=meeting,group__parent=area,status_id='schedw',add_to_schedule=False)
4453+
conflicting_session = SessionFactory(meeting=meeting,group__parent=area,status_id='schedw',add_to_schedule=False)
4454+
ConstraintFactory(name_id='key_participant',meeting=meeting,source=requested_session.group,target=conflicting_session.group)
44534455
not_meeting = SessionFactory(meeting=meeting,group__parent=area,status_id='notmeet',add_to_schedule=False)
44544456
url = urlreverse('ietf.meeting.views.meeting_requests',kwargs={'num':meeting.number})
44554457
r = self.client.get(url)
44564458
self.assertContains(r, requested_session.group.acronym)
44574459
self.assertContains(r, not_meeting.group.acronym)
4460+
self.assertContains(r, requested_session.constraints().first().name)
4461+
self.assertContains(r, conflicting_session.group.acronym)
44584462

44594463
def test_request_minutes(self):
44604464
meeting = MeetingFactory(type_id='ietf')

ietf/templates/meeting/requests.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ <h2 class="anchor-target" id="{{area.grouper.acronym}}">
9292
{% if not forloop.first %}
9393
{% ifchanged grouped_constraint.grouper %}<br>{% endifchanged %}
9494
{% endif %}
95-
<b>{{ forloop.counter }})</b>
95+
<b>{{ grouped_constraint.grouper.name }}:</b>
9696
{% for constraint in grouped_constraint.list %}
9797
{% with constraint.target.parent.id as constraint_target_parent_id %}
9898
{% with constraint.source.parent.id as constraint_source_parent_id %}

0 commit comments

Comments
 (0)