def send_reject_notification(task_pk, sent_back): raise NotImplementedError() from teams.models import Task from videos.models import Action from messages.models import Message try: task = Task.objects.select_related( "team_video__video", "team_video", "assignee", "subtitle_version").get( pk=task_pk) except Task.DoesNotExist: return False if task.new_review_base_version: user = task.new_review_base_version.author else: user = version.author if not user.is_active: return False version = task.get_subtitle_version() subject = ugettext(u"Your subtitles were not accepted") task_language = get_language_label(task.language) reviewer = task.assignee video = task.team_video.video subs_url = "%s%s" % (get_url_base(), reverse("videos:translation_history", kwargs={ 'video_id': video.video_id, 'lang': task.language, 'lang_id': version.subtitle_language.pk, })) reviewer_message_url = "%s%s?user=%s" % ( get_url_base(), reverse("messages:new"), reviewer.username) context = { "team":task.team, "title": version.subtitle_language.get_title(), "user":user, "task_language": task_language, "url_base":get_url_base(), "task":task, "reviewer":reviewer, "note":task.body, "sent_back": sent_back, "subs_url": subs_url, "reviewer_message_url": reviewer_message_url, } msg = None if user.notify_by_message: template_name = "messages/team-task-rejected.txt" msg = Message() msg.message_type = 'S' msg.subject = subject msg.content = render_to_string(template_name,context) msg.user = user msg.object = task.team msg.save() template_name = "messages/email/team-task-rejected.html" email_res = send_templated_email(user, subject, template_name, context) Action.create_rejected_video_handler(version, reviewer) return msg, email_res
def setUp(self): self.user = UserFactory() self.client = APIClient() self.client.force_authenticate(user=self.user) self.list_url = reverse('api:activity-list') # create a bunch of action objects of various types self.team = TeamFactory() self.team_member = TeamMemberFactory(user=self.user, team=self.team) self.video = VideoFactory() TeamVideoFactory(video=self.video, team=self.team) self.user2 = UserFactory() Action.create_video_handler(self.video, self.user) self.video.title = 'new-title' self.video.save() Action.change_title_handler(self.video, self.user) # creating comment will automatically create the action object Comment(content_object=self.video, user=self.user, content="Test Comment").save() v = pipeline.add_subtitles(self.video, 'en', None, author=self.user) Action.create_caption_handler(v, datetime.now()) Action.create_approved_video_handler(v, self.user2) Action.create_rejected_video_handler(v, self.user2) Action.create_new_member_handler(self.team_member) Action.create_member_left_handler(self.team, self.user) self.action_qs = Action.objects.for_user(self.user)
def _reviewed_notification(task_pk, status): from teams.models import Task from videos.models import Action from messages.models import Message try: task = Task.objects.select_related( "team_video__video", "team_video", "assignee").get( pk=task_pk) except Task.DoesNotExist: return False notification_setting_name = { REVIEWED_AND_PUBLISHED: 'block_reviewed_and_published_message', REVIEWED_AND_PENDING_APPROVAL: 'block_reviewed_and_pending_approval_message', REVIEWED_AND_SENT_BACK: 'block_reviewed_and_sent_back_message', }[status] version = task.get_subtitle_version() if task.new_review_base_version: user = task.new_review_base_version.author else: user = version.author if not team_sends_notification(task.team, notification_setting_name) or not user.is_active: return False subject = ugettext(u"Your subtitles have been reviewed") if status == REVIEWED_AND_PUBLISHED: subject += ugettext(" and published") task_language = get_language_label(task.language) reviewer = task.assignee video = task.team_video.video subs_url = "%s%s" % (get_url_base(), reverse("videos:translation_history", kwargs={ 'video_id': video.video_id, 'lang': task.language, 'lang_id': version.subtitle_language.pk, })) reviewer_message_url = "%s%s?user=%s" % ( get_url_base(), reverse("messages:new"), reviewer.username) reviewer_profile_url = "%s%s" % (get_url_base(), reverse("profiles:profile", kwargs={'user_id': reviewer.id})) perform_task_url = "%s%s" % (get_url_base(), reverse("teams:perform_task", kwargs={ 'slug': task.team.slug, 'task_pk': task_pk })) context = { "team":task.team, "title": version.subtitle_language.get_title(), "user":user, "task_language": task_language, "url_base":get_url_base(), "task":task, "reviewer":reviewer, "note":task.body, "reviewed_and_pending_approval": status == REVIEWED_AND_PENDING_APPROVAL, "sent_back": status == REVIEWED_AND_SENT_BACK, "reviewed_and_published": status == REVIEWED_AND_PUBLISHED, "subs_url": subs_url, "reviewer_message_url": reviewer_message_url, "reviewer_profile_url": reviewer_profile_url, "perform_task_url": perform_task_url, } msg = None if user.notify_by_message: template_name = "messages/team-task-reviewed.txt" msg = Message() msg.message_type = 'S' msg.subject = subject msg.content = render_to_string(template_name,context) msg.user = user msg.object = task.team msg.save() template_name = "messages/email/team-task-reviewed.html" email_res = send_templated_email(user, subject, template_name, context) if status == REVIEWED_AND_SENT_BACK: if task.type == Task.TYPE_IDS['Review']: Action.create_declined_video_handler(version, reviewer) else: Action.create_rejected_video_handler(version, reviewer) elif status == REVIEWED_AND_PUBLISHED: Action.create_approved_video_handler(version, reviewer) elif status == REVIEWED_AND_PENDING_APPROVAL: Action.create_accepted_video_handler(version, reviewer) return msg, email_res