Пример #1
0
    def setup_users(self):
        # make a bunch of users to subtitle/review the work
        subtitlers = [
            test_factories.create_user(pay_rate_code='S%s' % i)
            for i in xrange(3)
        ]
        reviewers = [
            test_factories.create_user(pay_rate_code='R%s' % i)
            for i in xrange(2)
        ]
        for u in subtitlers:
            test_factories.create_team_member(user=u,
                                              team=self.team,
                                              role=ROLE_CONTRIBUTOR)
        for u in reviewers:
            test_factories.create_team_member(user=u,
                                              team=self.team,
                                              role=ROLE_MANAGER)
        self.subtitler_iter = itertools.cycle(subtitlers)
        self.reviewer_iter = itertools.cycle(reviewers)

        self.admin = test_factories.create_team_member(team=self.team,
                                                       role=ROLE_ADMIN).user
        self.users = dict((unicode(u), u) for u in subtitlers + reviewers)
        self.users[unicode(self.admin)] = self.admin
Пример #2
0
 def test_permissions(self):
     self.check_user_perm(test_factories.create_user(), False)
     self.check_user_perm(test_factories.create_user(is_staff=True), True)
     for role in (ROLE_ADMIN, ROLE_OWNER):
         user = test_factories.create_user()
         test_factories.create_team_member(self.team, user, role=role)
         self.check_user_perm(user, True)
     for role in (ROLE_CONTRIBUTOR, ROLE_MANAGER):
         user = test_factories.create_user()
         test_factories.create_team_member(self.team, user, role=role)
         self.check_user_perm(user, False)
Пример #3
0
 def test_permissions(self):
     # only team admins and staff members should be able to submit the form
     self.check_user_perm(test_factories.create_user(), False)
     self.check_user_perm(test_factories.create_user(is_staff=True), True)
     for role in (ROLE_ADMIN, ROLE_OWNER):
         user = test_factories.create_user()
         test_factories.create_team_member(self.team, user, role=role)
         self.check_user_perm(user, True)
     for role in (ROLE_CONTRIBUTOR, ROLE_MANAGER):
         user = test_factories.create_user()
         test_factories.create_team_member(self.team, user, role=role)
         self.check_user_perm(user, False)
Пример #4
0
 def setUp(self):
     self.team = test_factories.create_team(workflow_enabled=True)
     w = test_factories.create_workflow(self.team,
                                        autocreate_subtitle=True,
                                        autocreate_translate=True)
     self.admin = test_factories.create_team_member(
         self.team, role=TeamMember.ROLE_ADMIN)
Пример #5
0
 def setUp(self):
     self.team = test_factories.create_team(workflow_enabled=True)
     w = test_factories.create_workflow(self.team, autocreate_subtitle=True)
     self.admin = test_factories.create_team_member(
         self.team, role=TeamMember.ROLE_ADMIN)
     self.client.login(username=self.admin.user.username,
                       password='******')
Пример #6
0
    def test_language_number(self):
        date_maker = CreationDateMaker()
        user = test_factories.create_team_member(self.team).user

        video = test_factories.create_video(primary_audio_language_code='en')
        test_factories.create_team_video(self.team, user, video)
        self.add_subtitles(video, 'en', make_subtitle_lines(4),
                           created=date_maker.next_date(),
                           complete=True)
        self.add_subtitles(video, 'fr', make_subtitle_lines(4),
                           created=date_maker.next_date(),
                           complete=True)
        self.add_subtitles(video, 'de', make_subtitle_lines(4),
                           created=date_maker.next_date(),
                           complete=True)

        video2 = test_factories.create_video(primary_audio_language_code='en')
        test_factories.create_team_video(self.team, user, video2)
        # the english version was added before the date range of the report.
        # It should still bump the language number though.
        self.add_subtitles(video2, 'en', make_subtitle_lines(4),
                           created=date_maker.date_before_start(),
                           complete=True)
        self.add_subtitles(video2, 'fr', make_subtitle_lines(4),
                           created=date_maker.next_date(),
                           complete=True)

        data = self.get_report_data(self.team,
                                           date_maker.start_date(),
                                           date_maker.end_date())
        self.assertEquals(data['record count'], 4)
        self.assertEquals(data[video.video_id]['en']['Language number'], 1)
        self.assertEquals(data[video.video_id]['fr']['Language number'], 2)
        self.assertEquals(data[video.video_id]['de']['Language number'], 3)
        self.assertEquals(data[video2.video_id]['fr']['Language number'], 2)
Пример #7
0
 def setup_team(self):
     self.team = test_factories.create_team(workflow_enabled=True)
     workflow = self.team.get_workflow()
     workflow.review_allowed = workflow.REVIEW_IDS['Admin must review']
     workflow.approve_allowed = workflow.APPROVE_IDS['Admin must approve']
     workflow.save()
     self.user = test_factories.create_team_member(self.team).user
     self.team_video = test_factories.create_team_video(
         self.team, self.user, self.video)
Пример #8
0
 def setUp(self):
     self.team = test_factories.create_team(workflow_enabled=True)
     self.workflow = test_factories.create_workflow(
         self.team,
         review_allowed=DONT_REQUIRE_REVIEW,
         approve_allowed=DONT_REQUIRE_APPROVAL)
     self.admin = test_factories.create_team_member(
         self.team, role=TeamMember.ROLE_ADMIN)
     self.team_video = test_factories.create_team_video(
         self.team, self.admin.user)
     self.client = Client()
     self.login(self.admin.user)
Пример #9
0
 def setUp(self, mock_now):
     self.date_maker = DateMaker()
     mock_now.side_effect = self.date_maker.next_date
     self.team = test_factories.create_team(workflow_enabled=True)
     test_factories.create_workflow(
         self.team,
         review_allowed=0,  # no review
         approve_allowed=20,  # admin must approve
     )
     self.admin = test_factories.create_team_member(team=self.team,
                                                    role=ROLE_ADMIN).user
     self.video = test_factories.create_team_video(self.team).video
Пример #10
0
    def test_save_role(self):

        owner = self.owner

        member_account = test_factories.create_user(username='******',
                                                    password='******')
        member = test_factories.create_team_member(
            self.team, member_account, role=TeamMember.ROLE_CONTRIBUTOR)

        tv = self.project_video
        video_url = reverse("videos:video", args=(tv.video.video_id,))
        owner.user.set_password("hey")
        owner.user.save()

        self.team.is_visible = False
        self.team.save()

        resp = self.client.get(video_url, follow=True)
        self.assertNotEqual(resp.status_code, 200)

        self.team.video_policy = Team.VP_MEMBER
        self.task_assign_policy = 10
        self.team.save()
        self.assertTrue(can_add_video(self.team, member.user))

        self.assertTrue(can_add_video_somewhere(self.team, member.user))
        self.assertTrue(can_view_tasks_tab(self.team, member.user))
        self.assertTrue(can_create_and_edit_subtitles(member.user, tv))
        self.assertTrue(can_create_and_edit_translations(member.user, tv))
        self.assertFalse(can_view_settings_tab(self.team, member.user))
        save_role(self.team, member, ROLE_ADMIN, [], [], owner.user)
        member = TeamMember.objects.get(pk=member.pk)
        self.assertEqual(member.role, ROLE_ADMIN)

        self.assertTrue(can_add_video_somewhere(self.team, member.user))
        self.assertTrue(can_view_tasks_tab(self.team, member.user))
        self.assertTrue(can_create_and_edit_subtitles(member.user, tv))
        self.assertTrue(can_create_and_edit_translations(member.user, tv))
        self.assertTrue(can_view_settings_tab(self.team, member.user))

        save_role(self.team, member, ROLE_CONTRIBUTOR, [], [], owner.user)
        member = TeamMember.objects.get(pk=member.pk)

        self.assertEqual(member.role, ROLE_CONTRIBUTOR)
        self.assertFalse(can_view_settings_tab(self.team, member.user))
        self.assertTrue(can_add_video_somewhere(self.team, member.user))
        self.assertTrue(can_view_tasks_tab(self.team, member.user))
        self.assertTrue(can_create_and_edit_subtitles(member.user, tv))
        self.assertTrue(can_create_and_edit_translations(member.user, tv))

        self.client.login(username=member.user.username, password="******")
        resp = self.client.get(video_url, follow=True)
        self.assertEqual(resp.status_code, 200)
Пример #11
0
    def test_non_ascii_text(self):
        non_ascii_text = u'abcd\xe9'

        user = test_factories.create_user(username=non_ascii_text)
        test_factories.create_team_member(self.team, user)

        self.video.title = non_ascii_text
        self.video.save()

        sv = add_subtitles(self.video, 'en', make_subtitle_lines(4), 
                           title=non_ascii_text,
                           author=user,
                           description=non_ascii_text,
                           complete=True)
        video_changed_tasks(self.video.pk, sv.pk)

        report = BillingReport.objects.create(
            start_date=sv.created - timedelta(days=1),
            end_date=sv.created + timedelta(days=1),
            type=BillingReport.TYPE_NEW,
        )
        report.teams.add(self.team)
        self.process_report(report)
Пример #12
0
 def setUp(self):
     self.team = test_factories.create_team(workflow_enabled=True)
     self.workflow = test_factories.create_workflow(self.team)
     self.user = test_factories.create_user(is_staff=True)
     self.member = test_factories.create_team_member(self.team,
                                                     self.user,
                                                     role=ROLE_ADMIN)
     self.video = test_factories.create_video()
     self.team_video = test_factories.create_team_video(
         self.team, self.user, self.video)
     self.non_team_video = test_factories.create_video()
     # create a bunch of versions
     self.versions = [
         pipeline.add_subtitles(self.video, 'en', None) for i in xrange(5)
     ]
     self.language = self.video.get_primary_audio_subtitle_language()
Пример #13
0
    def test_video_feed_submit(self):
        team = test_factories.create_team()
        user = test_factories.create_team_member(team).user
        self.client.login(username=user.username, password='******')
        feed_url = u'http://example.com/feed'
        url = reverse('teams:add_videos', kwargs={'slug': team.slug})
        data = {
            'feed_url': feed_url,
        }

        response = self.client.post(url, data)

        self.assertEqual(team.videos.count(), 2)
        for video in team.videos.all():
            self.assertEquals(video.user, user)
            self.assertEquals(video.get_team_video().added_by, user)
Пример #14
0
    def test_missing_records(self):
        date_maker = DateMaker()
        user = test_factories.create_team_member(self.team).user

        video = test_factories.create_video(primary_audio_language_code='en')
        test_factories.create_team_video(self.team, user, video)
        # For en and de, we call pipeline.add_subtitles directly, so there's
        # no BillingRecord in the sytem.  This simulates the languages that
        # were completed before BillingRecords were around.
        add_subtitles(video,
                      'en',
                      make_subtitle_lines(4),
                      created=date_maker.next_date(),
                      complete=True)
        add_subtitles(video,
                      'de',
                      make_subtitle_lines(4),
                      created=date_maker.next_date(),
                      complete=True)
        # pt-br has a uncompleted subtitle language.  We should not list that
        # language in the report
        add_subtitles(video,
                      'pt-br',
                      make_subtitle_lines(4),
                      created=date_maker.next_date(),
                      complete=False)
        self.add_subtitles(video,
                           'fr',
                           make_subtitle_lines(4),
                           created=date_maker.next_date(),
                           complete=True)
        self.add_subtitles(video,
                           'es',
                           make_subtitle_lines(4),
                           created=date_maker.next_date(),
                           complete=True)
        data = self.get_report_data(self.team, date_maker.start_date(),
                                    date_maker.end_date())
        self.assertEquals(len(data), 4)
        self.assertEquals(data[video.video_id, 'en']['Language number'], 0)
        self.assertEquals(data[video.video_id, 'de']['Language number'], 0)
        self.assertEquals(data[video.video_id, 'fr']['Language number'], 1)
        self.assertEquals(data[video.video_id, 'es']['Language number'], 2)
        self.assertEquals(data[video.video_id, 'en']['Minutes'], 0)
        self.assertEquals(data[video.video_id, 'de']['Minutes'], 0)
Пример #15
0
    def test_create_team_videos_for_team_feed(self):
        api_teamvideo_new_handler = mock.Mock()
        api_teamvideo_new.connect(api_teamvideo_new_handler, weak=False)
        self.addCleanup(api_teamvideo_new.disconnect,
                        api_teamvideo_new_handler)

        team = test_factories.create_team()
        user = test_factories.create_team_member(team).user
        videos = [test_factories.create_video() for i in xrange(5)]
        feed = mock.Mock(team=team, user=user)
        feed_imported.send(sender=feed, new_videos=videos)
        for video in videos:
            self.assertNotEquals(video.get_team_video(), None)
            self.assertEquals(video.get_team_video().team, team)

        correct_api_calls = [
            mock.call(signal=api_teamvideo_new, sender=video.get_team_video())
            for video in videos
        ]

        api_teamvideo_new_handler.assert_has_calls(correct_api_calls,
                                                   any_order=True)
Пример #16
0
    def test_minutes(self):
        date_maker = DateMaker()
        user = test_factories.create_team_member(self.team).user

        video = test_factories.create_video(primary_audio_language_code='en')
        test_factories.create_team_video(self.team, user, video)
        self.add_subtitles(video,
                           'en',
                           make_subtitle_lines(100, 100),
                           created=date_maker.next_date(),
                           complete=True)
        self.add_subtitles(video,
                           'fr',
                           make_subtitle_lines(100, 80),
                           created=date_maker.next_date(),
                           complete=True)

        data = self.get_report_data(self.team, date_maker.start_date(),
                                    date_maker.end_date())
        self.assertEquals(len(data), 2)
        # For english the duration is 1:40, for french it's 1:20.  We should
        # always round up, so both should count as 2 minutes
        self.assertEquals(data[video.video_id, 'en']['Minutes'], 2)
        self.assertEquals(data[video.video_id, 'fr']['Minutes'], 2)
Пример #17
0
 def setUp(self):
     self.video = test_factories.create_video()
     self.team = test_factories.create_team()
     self.member = test_factories.create_team_member(self.team)
     self.team_video = test_factories.create_team_video(
         self.team, self.member.user, self.video)
Пример #18
0
 def setup_team(self):
     self.team = test_factories.create_team()
     self.owner = test_factories.create_team_member(
         self.team, self.owner_account, role=TeamMember.ROLE_OWNER)
     self.test_project = test_factories.create_project(self.team)
     self.default_project = self.team.default_project
Пример #19
0
 def setUp(self):
     self.team = test_factories.create_team()
     self.user = test_factories.create_team_member(self.team).user
Пример #20
0
 def create_member(self):
     return test_factories.create_team_member(
         self.team, role=TeamMember.ROLE_CONTRIBUTOR)