def create_reports(self): (other, teammate, contact, captain, super_admin, team, classroom) = self.create() classReport1 = Report.create( team_id=team.uid, classroom_id=classroom.uid, filename='foo.pdf', gcs_path='/mybucket/upload/12345.pdf', size=1000000, content_type='application/pdf', preview=False, ) classReport2 = Report.create( team_id=team.uid, classroom_id=classroom.uid, filename='bar.pdf', gcs_path='/mybucket/upload/23456.pdf', size=1000000, content_type='application/pdf', preview=False, ) teamReport = Report.create( team_id=team.uid, classroom_id=None, filename='team.pdf', gcs_path='/mybucket/upload/34567.pdf', size=1000000, content_type='application/pdf', preview=False, ) Report.put_multi((classReport1, classReport2, teamReport)) return (other, teammate, contact, captain, super_admin, team, classroom, classReport1, classReport2, teamReport)
def create_dataset_reports(self): (other, teammate, contact, captain, super_admin, team, classroom) = self.create() classReport1 = Report.create( team_id=team.uid, classroom_id=classroom.uid, filename='foo.html', dataset_id='Dataset_class1', template='class_template', content_type='text/html', preview=False, ) classReport2 = Report.create( team_id=team.uid, classroom_id=classroom.uid, filename='bar.html', dataset_id='Dataset_class2', template='class_template', content_type='text/html', preview=False, ) teamReport = Report.create( team_id=team.uid, classroom_id=None, filename='team.html', dataset_id='Dataset_team', template='team_template', content_type='text/html', preview=False, ) Report.put_multi((classReport1, classReport2, teamReport)) return (other, teammate, contact, captain, super_admin, team, classroom, classReport1, classReport2, teamReport)
def test_rserve_skips_existing(self): program = Program.create( name="The Engagement Project", label="ep19", preview_url='foo.com', ) week = util.datelike_to_iso_string(datetime.date.today()) org = Organization.create(name="Organization", captain_id="User_cap", program_id=program.uid) org_to_skip = Organization.create(name="Organization", captain_id="User_cap", program_id=program.uid) Organization.put_multi([org, org_to_skip]) team = Team.create(name="Team", captain_id="User_cap", program_id=program.uid) team_to_skip = Team.create(name="Team", captain_id="User_cap", program_id=program.uid) Team.put_multi([team, team_to_skip]) cl = Classroom.create(name="Classroom", team_id=team.uid, code="foo", contact_id="User_contact") cl_to_skip = Classroom.create(name="Classroom", team_id=team.uid, code="foo", contact_id="User_contact") Classroom.put_multi([cl, cl_to_skip]) Report.put_multi([ Report.create(parent_id=org_to_skip.uid, filename="foo", issue_date=week), Report.create(parent_id=team_to_skip.uid, filename="foo", issue_date=week), Report.create(parent_id=cl_to_skip.uid, filename="foo", issue_date=week), ]) # Skips all the parents who have reports already this week. orgs, teams, classes = cron_rserve.get_report_parents( program, week, False) self.assertEqual(len(orgs), 1) self.assertEqual(len(teams), 1) self.assertEqual(len(classes), 1) # ...unless you force it, then they're all there. orgs, teams, classes = cron_rserve.get_report_parents( program, week, True) self.assertEqual(len(orgs), 2) self.assertEqual(len(teams), 2) self.assertEqual(len(classes), 2)
def test_list_preview(self): """Preview reports only visible to super admins.""" (other, teammate, contact, captain, super_admin, team, classroom) = self.create() classReport1 = Report.create( team_id=team.uid, classroom_id=classroom.uid, filename='foo.pdf', gcs_path='/mybucket/upload/12345.pdf', size=1000000, content_type='application/pdf', preview=True, ) teamReport = Report.create( team_id=team.uid, classroom_id=None, filename='team.pdf', gcs_path='/mybucket/upload/34567.pdf', size=1000000, content_type='application/pdf', preview=True, ) Report.put_multi((classReport1, teamReport)) # Contact and captain see an empty list. for user in (contact, captain): response = self.testapp.get( '/api/teams/{}/reports'.format(team.uid), headers=self.login_headers(user), ) self.assertEqual(response.body, '[]') # Super sees preview reports. response = self.testapp.get( '/api/teams/{}/reports'.format(team.uid), headers=self.login_headers(super_admin), ) self.assertEqual( set(d['uid'] for d in json.loads(response.body)), {teamReport.uid, classReport1.uid}, )