Skip to content

Commit edb7a5c

Browse files
committed
Fixed a problem in Document.meeting_related(), and fixed a number of tests which broke when slide objects started to return True to meeting_related() without being related to a session.
- Legacy-Id: 9329
1 parent f833518 commit edb7a5c

3 files changed

Lines changed: 42 additions & 6 deletions

File tree

ietf/doc/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ def meeting_related(self):
238238
or (self.session_set.exists() if isinstance(self, Document) else self.doc.session_set.exists()))
239239
elif self.type_id in ("slides",):
240240
return (self.name.split("-")[1] == "interim"
241-
or (self.get_state('slides').slug in ("active", "sessonly","archived") ))
241+
or (self.get_state('slides') and self.get_state('slides').slug in ("active", "sessonly","archived") ))
242242
else:
243243
return False
244244

ietf/doc/tests.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,21 @@
88
import unittest
99
from pyquery import PyQuery
1010
from tempfile import NamedTemporaryFile
11+
from Cookie import SimpleCookie
1112

1213
from django.core.urlresolvers import reverse as urlreverse
1314
from django.conf import settings
1415

1516
from ietf.doc.models import ( Document, DocAlias, DocRelationshipName, RelatedDocument, State,
1617
DocEvent, BallotPositionDocEvent, LastCallDocEvent, WriteupDocEvent, save_document_in_history )
1718
from ietf.group.models import Group
19+
from ietf.meeting.models import Meeting, Session, SessionPresentation
20+
from ietf.name.models import SessionStatusName
1821
from ietf.person.models import Person
1922
from ietf.utils.mail import outbox
2023
from ietf.utils.test_data import make_test_data
2124
from ietf.utils.test_utils import login_testing_unauthorized
2225
from ietf.utils.test_utils import TestCase
23-
from Cookie import SimpleCookie
2426

2527
class SearchTestCase(TestCase):
2628
def test_search(self):
@@ -488,6 +490,16 @@ def test_document_material(self):
488490
doc.set_state(State.objects.get(type="slides", slug="active"))
489491
DocAlias.objects.create(name=doc.name, document=doc)
490492

493+
session = Session.objects.create(
494+
name = "session-42-mars-1",
495+
meeting = Meeting.objects.get(number='42'),
496+
group = Group.objects.get(acronym='mars'),
497+
status = SessionStatusName.objects.create(slug='scheduled', name='Scheduled'),
498+
modified = datetime.datetime.now(),
499+
requested_by = Person.objects.get(user__username="marschairman"),
500+
)
501+
SessionPresentation.objects.create(session=session, document=doc, rev=doc.rev)
502+
491503
r = self.client.get(urlreverse("doc_view", kwargs=dict(name=doc.name)))
492504
self.assertEqual(r.status_code, 200)
493505

ietf/doc/tests_material.py

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# Copyright The IETF Trust 2011, All Rights Reserved
22

3-
import os, shutil
3+
import os
4+
import shutil
5+
import datetime
46
from StringIO import StringIO
57
from pyquery import PyQuery
68

@@ -9,25 +11,47 @@
911

1012
from ietf.doc.models import Document, State, DocAlias
1113
from ietf.group.models import Group
14+
from ietf.meeting.models import Meeting, Session, SessionPresentation
15+
from ietf.name.models import SessionStatusName
16+
from ietf.person.models import Person
1217
from ietf.utils.test_utils import TestCase, login_testing_unauthorized
18+
from ietf.utils.test_data import make_test_data
1319

1420
class GroupMaterialTests(TestCase):
1521
def setUp(self):
1622
self.materials_dir = os.path.abspath("tmp-document-dir")
17-
os.mkdir(self.materials_dir)
18-
os.mkdir(os.path.join(self.materials_dir, "slides"))
23+
if not os.path.exists(self.materials_dir):
24+
os.makedirs(os.path.join(self.materials_dir, "slides"))
1925
settings.DOCUMENT_PATH_PATTERN = self.materials_dir + "/{doc.type_id}/"
2026

27+
self.agenda_dir = os.path.abspath("tmp-agenda-dir")
28+
if not os.path.exists(self.agenda_dir):
29+
os.makedirs(os.path.join(self.agenda_dir, "42", "slides"))
30+
settings.AGENDA_PATH = self.agenda_dir
31+
2132
def tearDown(self):
2233
shutil.rmtree(self.materials_dir)
34+
shutil.rmtree(self.agenda_dir)
2335

2436
def create_slides(self):
37+
make_test_data()
38+
2539
group = Group.objects.create(type_id="team", acronym="testteam", name="Test Team", state_id="active")
2640

2741
doc = Document.objects.create(name="slides-testteam-test-file", rev="00", type_id="slides", group=group)
2842
doc.set_state(State.objects.get(type="slides", slug="active"))
2943
DocAlias.objects.create(name=doc.name, document=doc)
3044

45+
session = Session.objects.create(
46+
name = "session-42-mars-1",
47+
meeting = Meeting.objects.get(number='42'),
48+
group = Group.objects.get(acronym='mars'),
49+
status = SessionStatusName.objects.create(slug='scheduled', name='Scheduled'),
50+
modified = datetime.datetime.now(),
51+
requested_by = Person.objects.get(user__username="marschairman"),
52+
)
53+
SessionPresentation.objects.create(session=session, document=doc, rev=doc.rev)
54+
3155
return doc
3256

3357
def test_choose_material_type(self):
@@ -135,6 +159,6 @@ def test_revise(self):
135159
self.assertEqual(doc.title, "New title")
136160
self.assertEqual(doc.get_state_slug(), "active")
137161

138-
with open(os.path.join(self.materials_dir, "slides", doc.name + "-" + doc.rev + ".txt")) as f:
162+
with open(os.path.join(self.agenda_dir, "42", "slides", doc.name + "-" + doc.rev + ".txt")) as f:
139163
self.assertEqual(f.read(), content)
140164

0 commit comments

Comments
 (0)