99from django .conf import settings
1010from django .core .urlresolvers import reverse as urlreverse
1111
12- from ietf .doc .models import Document , State , DocAlias
12+ from ietf .doc .models import Document , State , DocAlias , NewRevisionDocEvent
13+ from ietf .doc .views_material import material_presentations , edit_material_presentations
1314from ietf .group .models import Group
1415from ietf .meeting .models import Meeting , Session , SessionPresentation
1516from ietf .name .models import SessionStatusName
1617from ietf .person .models import Person
1718from ietf .utils .test_utils import TestCase , login_testing_unauthorized
1819from ietf .utils .test_data import make_test_data
1920
21+ from ietf .meeting .test_data import make_meeting_test_data
22+
2023class GroupMaterialTests (TestCase ):
2124 def setUp (self ):
2225 self .materials_dir = os .path .abspath ("tmp-document-dir" )
@@ -38,19 +41,11 @@ def create_slides(self):
3841
3942 group = Group .objects .create (type_id = "team" , acronym = "testteam" , name = "Test Team" , state_id = "active" )
4043
41- doc = Document .objects .create (name = "slides-testteam-test-file" , rev = "00 " , type_id = "slides" , group = group )
44+ doc = Document .objects .create (name = "slides-testteam-test-file" , rev = "01 " , type_id = "slides" , group = group )
4245 doc .set_state (State .objects .get (type = "slides" , slug = "active" ))
4346 DocAlias .objects .create (name = doc .name , document = doc )
44-
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 )
47+ NewRevisionDocEvent .objects .create (doc = doc ,by = Person .objects .get (name = "(System)" ),rev = '00' ,type = 'new_revision' ,desc = 'New revision available' )
48+ NewRevisionDocEvent .objects .create (doc = doc ,by = Person .objects .get (name = "(System)" ),rev = '01' ,type = 'new_revision' ,desc = 'New revision available' )
5449
5550 return doc
5651
@@ -65,6 +60,10 @@ def test_choose_material_type(self):
6560 self .assertEqual (r .status_code , 200 )
6661 self .assertTrue ("Slides" in r .content )
6762
63+ url = urlreverse ('ietf.doc.views_material.choose_material_type' , kwargs = dict (acronym = 'mars' ))
64+ r = self .client .get (url )
65+ self .assertEqual (r .status_code , 404 )
66+
6867 def test_upload_slides (self ):
6968 group = Group .objects .create (type_id = "team" , acronym = "testteam" , name = "Test Team" , state_id = "active" )
7069
@@ -141,6 +140,16 @@ def test_edit_title(self):
141140 def test_revise (self ):
142141 doc = self .create_slides ()
143142
143+ session = Session .objects .create (
144+ name = "session-42-mars-1" ,
145+ meeting = Meeting .objects .get (number = '42' ),
146+ group = Group .objects .get (acronym = 'mars' ),
147+ status = SessionStatusName .objects .create (slug = 'scheduled' , name = 'Scheduled' ),
148+ modified = datetime .datetime .now (),
149+ requested_by = Person .objects .get (user__username = "marschairman" ),
150+ )
151+ SessionPresentation .objects .create (session = session , document = doc , rev = doc .rev )
152+
144153 url = urlreverse ('material_edit' , kwargs = dict (name = doc .name , action = "revise" ))
145154 login_testing_unauthorized (self , "secretary" , url )
146155
@@ -155,10 +164,74 @@ def test_revise(self):
155164 material = test_file ))
156165 self .assertEqual (r .status_code , 302 )
157166 doc = Document .objects .get (name = doc .name )
158- self .assertEqual (doc .rev , "01 " )
167+ self .assertEqual (doc .rev , "02 " )
159168 self .assertEqual (doc .title , "New title" )
160169 self .assertEqual (doc .get_state_slug (), "active" )
161170
162171 with open (os .path .join (self .agenda_dir , "42" , "slides" , doc .name + "-" + doc .rev + ".txt" )) as f :
163172 self .assertEqual (f .read (), content )
164173
174+ def test_material_presentations (self ):
175+ doc = self .create_slides ()
176+ meeting = make_meeting_test_data ()
177+ meeting .session_set .filter (group__acronym = 'mars' ).update (group = doc .group )
178+
179+ url = urlreverse (material_presentations ,kwargs = dict (name = doc .name ))
180+ login_testing_unauthorized (self , "secretary" , url )
181+
182+ r = self .client .get (url )
183+ self .assertEqual (r .status_code , 200 )
184+
185+ url = urlreverse (material_presentations ,kwargs = dict (name = doc .name ,seq = 1 ))
186+ r = self .client .get (url )
187+ self .assertEqual (r .status_code , 200 )
188+
189+ when = meeting .agenda .scheduledsession_set .filter (session__group__acronym = 'testteam' ).first ().timeslot .time
190+ mdw = when .date ().isoformat ()
191+ dow = ['mon' ,'tue' ,'wed' ,'thu' ,'fri' ,'sat' ,'sun' ][when .weekday ()]
192+
193+ for kw in [ dict (),
194+ dict (seq = 1 ),
195+ dict (week_day = dow ),
196+ dict (week_day = dow ,seq = 1 ),
197+ dict (date = mdw ),
198+ dict (date = mdw ,seq = 1 ),
199+ dict (date = mdw + '-0930' ),
200+ dict (date = mdw + '-0930' ,seq = 1 ),
201+ ]:
202+ kw ['name' ] = doc .name
203+ kw ['acronym' ] = 'testteam'
204+ url = urlreverse (material_presentations ,kwargs = kw )
205+ r = self .client .get (url )
206+ self .assertEqual (r .status_code , 200 )
207+
208+ def test_edit_material_presentations (self ):
209+ doc = self .create_slides ()
210+ meeting = make_meeting_test_data ()
211+ meeting .session_set .filter (group__acronym = 'mars' ).update (group = doc .group )
212+
213+ session = meeting .agenda .scheduledsession_set .filter (session__group__acronym = 'testteam' ).first ().session
214+
215+ url = urlreverse (edit_material_presentations ,kwargs = dict (name = doc .name ,acronym = 'testteam' ,seq = 1 ))
216+ login_testing_unauthorized (self , "secretary" , url )
217+ r = self .client .get (url )
218+ self .assertEqual (r .status_code , 200 )
219+
220+ self .assertEqual (doc .sessionpresentation_set .count (),0 )
221+
222+ # add the materials to a session
223+ r = self .client .post (url , dict (action = "Save" ,version = "00" ))
224+ self .assertEqual (r .status_code , 302 )
225+ self .assertEqual (doc .sessionpresentation_set .first ().session , session )
226+
227+ # change the version
228+ r = self .client .post (url , dict (action = "Save" ,version = "01" ))
229+ self .assertEqual (r .status_code , 302 )
230+ self .assertEqual (doc .sessionpresentation_set .first ().session , session )
231+
232+ # take the slides back off that meeting
233+ r = self .client .post (url , dict (action = "Save" ,version = "notpresented" ))
234+ self .assertEqual (r .status_code , 302 )
235+ self .assertEqual (doc .sessionpresentation_set .count (),0 )
236+
237+
0 commit comments