Show the constraint names on the meeting session requests page. Fixes #3082. Commit ready for merge.
- Legacy-Id: 19305
This commit is contained in:
parent
05390ebb7a
commit
6a7ebfdb7a
|
@ -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)
|
||||
|
|
|
@ -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')
|
||||
|
|
|
@ -92,7 +92,7 @@
|
|||
{% if not forloop.first %}
|
||||
{% ifchanged grouped_constraint.grouper %}<br>{% endifchanged %}
|
||||
{% endif %}
|
||||
<b>{{ forloop.counter }})</b>
|
||||
<b>{{ grouped_constraint.grouper.name }}:</b>
|
||||
{% 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 %}
|
||||
|
|
Loading…
Reference in a new issue