示例#1
0
    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)
示例#2
0
    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)
示例#3
0
    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)
示例#4
0
    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},
        )