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
This commit is contained in:
Henrik Levkowetz 2015-03-25 16:04:57 +00:00
parent f833518a03
commit edb7a5cb3a
3 changed files with 42 additions and 6 deletions

View file

@ -238,7 +238,7 @@ class DocumentInfo(models.Model):
or (self.session_set.exists() if isinstance(self, Document) else self.doc.session_set.exists()))
elif self.type_id in ("slides",):
return (self.name.split("-")[1] == "interim"
or (self.get_state('slides').slug in ("active", "sessonly","archived") ))
or (self.get_state('slides') and self.get_state('slides').slug in ("active", "sessonly","archived") ))
else:
return False

View file

@ -8,6 +8,7 @@ else:
import unittest
from pyquery import PyQuery
from tempfile import NamedTemporaryFile
from Cookie import SimpleCookie
from django.core.urlresolvers import reverse as urlreverse
from django.conf import settings
@ -15,12 +16,13 @@ from django.conf import settings
from ietf.doc.models import ( Document, DocAlias, DocRelationshipName, RelatedDocument, State,
DocEvent, BallotPositionDocEvent, LastCallDocEvent, WriteupDocEvent, save_document_in_history )
from ietf.group.models import Group
from ietf.meeting.models import Meeting, Session, SessionPresentation
from ietf.name.models import SessionStatusName
from ietf.person.models import Person
from ietf.utils.mail import outbox
from ietf.utils.test_data import make_test_data
from ietf.utils.test_utils import login_testing_unauthorized
from ietf.utils.test_utils import TestCase
from Cookie import SimpleCookie
class SearchTestCase(TestCase):
def test_search(self):
@ -488,6 +490,16 @@ class DocTestCase(TestCase):
doc.set_state(State.objects.get(type="slides", slug="active"))
DocAlias.objects.create(name=doc.name, document=doc)
session = Session.objects.create(
name = "session-42-mars-1",
meeting = Meeting.objects.get(number='42'),
group = Group.objects.get(acronym='mars'),
status = SessionStatusName.objects.create(slug='scheduled', name='Scheduled'),
modified = datetime.datetime.now(),
requested_by = Person.objects.get(user__username="marschairman"),
)
SessionPresentation.objects.create(session=session, document=doc, rev=doc.rev)
r = self.client.get(urlreverse("doc_view", kwargs=dict(name=doc.name)))
self.assertEqual(r.status_code, 200)

View file

@ -1,6 +1,8 @@
# Copyright The IETF Trust 2011, All Rights Reserved
import os, shutil
import os
import shutil
import datetime
from StringIO import StringIO
from pyquery import PyQuery
@ -9,25 +11,47 @@ from django.core.urlresolvers import reverse as urlreverse
from ietf.doc.models import Document, State, DocAlias
from ietf.group.models import Group
from ietf.meeting.models import Meeting, Session, SessionPresentation
from ietf.name.models import SessionStatusName
from ietf.person.models import Person
from ietf.utils.test_utils import TestCase, login_testing_unauthorized
from ietf.utils.test_data import make_test_data
class GroupMaterialTests(TestCase):
def setUp(self):
self.materials_dir = os.path.abspath("tmp-document-dir")
os.mkdir(self.materials_dir)
os.mkdir(os.path.join(self.materials_dir, "slides"))
if not os.path.exists(self.materials_dir):
os.makedirs(os.path.join(self.materials_dir, "slides"))
settings.DOCUMENT_PATH_PATTERN = self.materials_dir + "/{doc.type_id}/"
self.agenda_dir = os.path.abspath("tmp-agenda-dir")
if not os.path.exists(self.agenda_dir):
os.makedirs(os.path.join(self.agenda_dir, "42", "slides"))
settings.AGENDA_PATH = self.agenda_dir
def tearDown(self):
shutil.rmtree(self.materials_dir)
shutil.rmtree(self.agenda_dir)
def create_slides(self):
make_test_data()
group = Group.objects.create(type_id="team", acronym="testteam", name="Test Team", state_id="active")
doc = Document.objects.create(name="slides-testteam-test-file", rev="00", type_id="slides", group=group)
doc.set_state(State.objects.get(type="slides", slug="active"))
DocAlias.objects.create(name=doc.name, document=doc)
session = Session.objects.create(
name = "session-42-mars-1",
meeting = Meeting.objects.get(number='42'),
group = Group.objects.get(acronym='mars'),
status = SessionStatusName.objects.create(slug='scheduled', name='Scheduled'),
modified = datetime.datetime.now(),
requested_by = Person.objects.get(user__username="marschairman"),
)
SessionPresentation.objects.create(session=session, document=doc, rev=doc.rev)
return doc
def test_choose_material_type(self):
@ -135,6 +159,6 @@ class GroupMaterialTests(TestCase):
self.assertEqual(doc.title, "New title")
self.assertEqual(doc.get_state_slug(), "active")
with open(os.path.join(self.materials_dir, "slides", doc.name + "-" + doc.rev + ".txt")) as f:
with open(os.path.join(self.agenda_dir, "42", "slides", doc.name + "-" + doc.rev + ".txt")) as f:
self.assertEqual(f.read(), content)