diff --git a/ietf/meeting/factories.py b/ietf/meeting/factories.py
index 927ed68d2..9fb2b31c5 100644
--- a/ietf/meeting/factories.py
+++ b/ietf/meeting/factories.py
@@ -7,9 +7,11 @@ import random
import datetime
from django.core.files.base import ContentFile
+from django.db.models import Q
-from ietf.meeting.models import Meeting, Session, SchedulingEvent, Schedule, TimeSlot, SessionPresentation, FloorPlan, Room, SlideSubmission
-from ietf.name.models import ConstraintName, SessionStatusName
+from ietf.meeting.models import ( Meeting, Session, SchedulingEvent, Schedule,
+ TimeSlot, SessionPresentation, FloorPlan, Room, SlideSubmission, Constraint)
+from ietf.name.models import ConstraintName, SessionStatusName, TimerangeName
from ietf.group.factories import GroupFactory
from ietf.person.factories import PersonFactory
@@ -100,6 +102,7 @@ class SessionFactory(factory.django.DjangoModelFactory):
meeting = factory.SubFactory(MeetingFactory)
type_id='regular'
group = factory.SubFactory(GroupFactory)
+ requested_duration = datetime.timedelta(hours=1)
@factory.post_generation
def status_id(obj, create, extracted, **kwargs):
@@ -220,3 +223,28 @@ class SlideSubmissionFactory(factory.django.DjangoModelFactory):
make_file = factory.PostGeneration(
lambda obj, create, extracted, **kwargs: open(obj.staged_filepath(),'a').close()
)
+
+class ConstraintFactory(factory.django.DjangoModelFactory):
+ class Meta:
+ model = Constraint
+
+ meeting = factory.SubFactory(MeetingFactory)
+ source = factory.SubFactory(GroupFactory)
+ target = factory.SubFactory(GroupFactory)
+ person = factory.SubFactory(PersonFactory)
+ time_relation = factory.Iterator(Constraint.TIME_RELATION_CHOICES)
+
+ @factory.lazy_attribute
+ def name(obj):
+ constraint_list = list(ConstraintName.objects.filter(
+ Q(slug__in=['bethere','timerange','time_relation','wg_adjacent'])
+ | Q(meeting=obj.meeting)
+ ))
+ return random.choice(constraint_list)
+
+ @factory.post_generation
+ def timeranges(self, create, extracted, **kwargs):
+ if create:
+ if extracted:
+ for tr in TimerangeName.objects.filter(slug__in=extracted):
+ self.timeranges.add(tr)
diff --git a/ietf/meeting/tests_views.py b/ietf/meeting/tests_views.py
index fb72eb5d4..d5deaeda6 100644
--- a/ietf/meeting/tests_views.py
+++ b/ietf/meeting/tests_views.py
@@ -51,7 +51,7 @@ from ietf.utils.text import xslugify
from ietf.person.factories import PersonFactory
from ietf.group.factories import GroupFactory, GroupEventFactory, RoleFactory
from ietf.meeting.factories import ( SessionFactory, SessionPresentationFactory, ScheduleFactory,
- MeetingFactory, FloorPlanFactory, TimeSlotFactory, SlideSubmissionFactory, RoomFactory )
+ MeetingFactory, FloorPlanFactory, TimeSlotFactory, SlideSubmissionFactory, RoomFactory, ConstraintFactory )
from ietf.doc.factories import DocumentFactory, WgDraftFactory
from ietf.submit.tests import submission_file
from ietf.utils.test_utils import assert_ical_response_is_valid
@@ -4450,11 +4450,15 @@ class SessionTests(TestCase):
meeting = MeetingFactory(type_id='ietf')
area = GroupFactory(type_id='area')
requested_session = SessionFactory(meeting=meeting,group__parent=area,status_id='schedw',add_to_schedule=False)
+ conflicting_session = SessionFactory(meeting=meeting,group__parent=area,status_id='schedw',add_to_schedule=False)
+ ConstraintFactory(name_id='key_participant',meeting=meeting,source=requested_session.group,target=conflicting_session.group)
not_meeting = SessionFactory(meeting=meeting,group__parent=area,status_id='notmeet',add_to_schedule=False)
url = urlreverse('ietf.meeting.views.meeting_requests',kwargs={'num':meeting.number})
r = self.client.get(url)
self.assertContains(r, requested_session.group.acronym)
self.assertContains(r, not_meeting.group.acronym)
+ self.assertContains(r, requested_session.constraints().first().name)
+ self.assertContains(r, conflicting_session.group.acronym)
def test_request_minutes(self):
meeting = MeetingFactory(type_id='ietf')
diff --git a/ietf/templates/meeting/requests.html b/ietf/templates/meeting/requests.html
index 6ec1854fb..54687cdbf 100644
--- a/ietf/templates/meeting/requests.html
+++ b/ietf/templates/meeting/requests.html
@@ -92,7 +92,7 @@
{% if not forloop.first %}
{% ifchanged grouped_constraint.grouper %}
{% endifchanged %}
{% endif %}
- {{ forloop.counter }})
+ {{ grouped_constraint.grouper.name }}:
{% for constraint in grouped_constraint.list %}
{% with constraint.target.parent.id as constraint_target_parent_id %}
{% with constraint.source.parent.id as constraint_source_parent_id %}