Merged in [19339] [19340] from jennifer@painless-security.com:
Refactor get_related_meeting to simplify / correctly handle recording doctype - Legacy-Id: 19343 Note: SVN reference [19339] has been migrated to Git commit05870adeeb
Note: SVN reference [19340] has been migrated to Git commitc0b076258b
This commit is contained in:
commit
74b14b6de5
|
@ -68,6 +68,10 @@ ietfdb (7.37.0) ietf; urgency=medium
|
|||
Adjusted proceedings and materials templates to show fewer unnecessary
|
||||
duplicates. Fixes #2981 and #3387.
|
||||
|
||||
* Merged in [19339] [19340] from jennifer@painless-security.com:
|
||||
Refactor get_related_meeting to simplify / correctly handle
|
||||
recording doctype.
|
||||
|
||||
-- Robert Sparks <rjsparks@nostrum.com> 04 Sep 2021 15:37:50 +0000
|
||||
|
||||
|
||||
|
|
|
@ -447,19 +447,9 @@ class DocumentInfo(models.Model):
|
|||
"""Get the meeting this document relates to"""
|
||||
if not self.meeting_related():
|
||||
return None # no related meeting if not meeting_related!
|
||||
elif self.type_id in ("agenda", "minutes", "slides", "bluesheets",):
|
||||
# session-related
|
||||
session = self.get_related_session()
|
||||
if session is not None:
|
||||
return session.meeting
|
||||
elif self.type_id == "procmaterials":
|
||||
# proceedings-related
|
||||
material = self.get_related_proceedings_material()
|
||||
if material is not None:
|
||||
return material.meeting
|
||||
else:
|
||||
log.unreachable('2021-08-29') # if meeting_related, there must be a way to retrieve the meeting!
|
||||
return None
|
||||
# get an item that links this doc to a meeting
|
||||
item = self.get_related_session() or self.get_related_proceedings_material()
|
||||
return getattr(item, 'meeting', None)
|
||||
|
||||
def relations_that(self, relationship):
|
||||
"""Return the related-document objects that describe a given relationship targeting self."""
|
||||
|
|
|
@ -41,9 +41,10 @@ from ietf.group.models import Group
|
|||
from ietf.group.factories import GroupFactory, RoleFactory
|
||||
from ietf.ipr.factories import HolderIprDisclosureFactory
|
||||
from ietf.meeting.models import Meeting, Session, SessionPresentation, SchedulingEvent
|
||||
from ietf.meeting.factories import MeetingFactory, SessionFactory, SessionPresentationFactory
|
||||
from ietf.meeting.factories import ( MeetingFactory, SessionFactory, SessionPresentationFactory,
|
||||
ProceedingsMaterialFactory )
|
||||
|
||||
from ietf.name.models import SessionStatusName, BallotPositionName
|
||||
from ietf.name.models import SessionStatusName, BallotPositionName, DocTypeName
|
||||
from ietf.person.models import Person
|
||||
from ietf.person.factories import PersonFactory, EmailFactory
|
||||
from ietf.utils.mail import outbox
|
||||
|
@ -2246,6 +2247,35 @@ class DocumentMeetingTests(TestCase):
|
|||
self.assertEqual(response.status_code,302)
|
||||
self.assertEqual(2,doc.docevent_set.count())
|
||||
|
||||
def test_get_related_meeting(self):
|
||||
"""Should be able to retrieve related meeting"""
|
||||
meeting = MeetingFactory(type_id='ietf')
|
||||
session = SessionFactory(meeting=meeting)
|
||||
procmat = ProceedingsMaterialFactory(meeting=meeting)
|
||||
for doctype in DocTypeName.objects.filter(used=True):
|
||||
doc = DocumentFactory(type=doctype)
|
||||
self.assertIsNone(doc.get_related_meeting(), 'Doc does not yet have a connection to the meeting')
|
||||
# test through a session
|
||||
doc.session_set.add(session)
|
||||
doc = Document.objects.get(pk=doc.pk)
|
||||
if doc.meeting_related():
|
||||
self.assertEqual(doc.get_related_meeting(), meeting, f'{doc.type.slug} should be related to meeting')
|
||||
else:
|
||||
self.assertIsNone(doc.get_related_meeting(), f'{doc.type.slug} should not be related to meeting')
|
||||
# test with both session and procmat
|
||||
doc.proceedingsmaterial_set.add(procmat)
|
||||
doc = Document.objects.get(pk=doc.pk)
|
||||
if doc.meeting_related():
|
||||
self.assertEqual(doc.get_related_meeting(), meeting, f'{doc.type.slug} should be related to meeting')
|
||||
else:
|
||||
self.assertIsNone(doc.get_related_meeting(), f'{doc.type.slug} should not be related to meeting')
|
||||
# and test with only procmat
|
||||
doc.session_set.remove(session)
|
||||
doc = Document.objects.get(pk=doc.pk)
|
||||
if doc.meeting_related():
|
||||
self.assertEqual(doc.get_related_meeting(), meeting, f'{doc.type.slug} should be related to meeting')
|
||||
else:
|
||||
self.assertIsNone(doc.get_related_meeting(), f'{doc.type.slug} should not be related to meeting')
|
||||
|
||||
class ChartTests(ResourceTestCaseMixin, TestCase):
|
||||
def test_search_chart_conf(self):
|
||||
|
|
Loading…
Reference in a new issue