def can_create_any_task_for_teamvideo(context, team_video, user): workflows = context.get('team_workflows') if can_create_task_subtitle(team_video, user, workflows): result = True elif can_create_task_translate(team_video, user, workflows): result = True else: result = False context['user_can_create_any_task'] = result return ''
def test_can_create_task_translate(self): team, user, outsider = self.team, self.user, self.outsider # When no subtitles exist yet, no translations can be created. self.assertEqual(can_create_task_translate(self.nonproject_video), []) # Add some sample subtitles. Now we can create translation tasks # (but not to that language, since it's already done). _set_subtitles(self.nonproject_video, 'en', True, True) langs = can_create_task_translate(self.nonproject_video) self.assertEqual(len(langs), TOTAL_LANGS - 1) self.assertTrue('en' not in langs) # Languages with translations finished can't have new translation tasks. _set_subtitles(self.nonproject_video, 'en', True, True, ['fr', 'de']) langs = can_create_task_translate(self.nonproject_video) self.assertEqual(len(langs), TOTAL_LANGS - 3) self.assertTrue('en' not in langs) self.assertTrue('fr' not in langs) # Test role restrictions. _set_subtitles(self.nonproject_video, 'en', True, True, ['fr']) # Any team member. team.task_assign_policy = Team.TASK_ASSIGN_IDS['Any team member'] team.save() for r in [ROLE_CONTRIBUTOR, ROLE_MANAGER, ROLE_ADMIN, ROLE_OWNER]: with self.role(r): langs = can_create_task_translate(self.nonproject_video, user) self.assertEqual(len(langs), TOTAL_LANGS - 2) self.assertTrue('en' not in langs) self.assertTrue('fr' not in langs) langs = can_create_task_translate(self.nonproject_video, outsider) self.assertEqual(langs, []) # Managers+ team.task_assign_policy = Team.TASK_ASSIGN_IDS['Managers and admins'] team.save() for r in [ROLE_MANAGER, ROLE_ADMIN, ROLE_OWNER]: with self.role(r): langs = can_create_task_translate(self.nonproject_video, user) self.assertEqual(len(langs), TOTAL_LANGS - 2) self.assertTrue('en' not in langs) self.assertTrue('fr' not in langs) for r in [ROLE_CONTRIBUTOR]: with self.role(r): langs = can_create_task_translate(self.nonproject_video, user) self.assertEqual(langs, []) for r in [ROLE_MANAGER, ROLE_ADMIN]: with self.role(r, self.test_project): langs = can_create_task_translate(self.nonproject_video, user) self.assertEqual(langs, []) langs = can_create_task_translate(self.nonproject_video, outsider) self.assertEqual(langs, []) # Admins+ team.task_assign_policy = Team.TASK_ASSIGN_IDS['Admins only'] team.save() for r in [ROLE_ADMIN, ROLE_OWNER]: with self.role(r): langs = can_create_task_translate(self.nonproject_video, user) self.assertEqual(len(langs), TOTAL_LANGS - 2) self.assertTrue('en' not in langs) self.assertTrue('fr' not in langs) for r in [ROLE_CONTRIBUTOR, ROLE_MANAGER]: with self.role(r): langs = can_create_task_translate(self.nonproject_video, user) self.assertEqual(langs, []) for r in [ROLE_ADMIN]: with self.role(r, self.test_project): langs = can_create_task_translate(self.nonproject_video, user) self.assertEqual(langs, []) langs = can_create_task_translate(self.nonproject_video, outsider) self.assertEqual(langs, [])