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 team_member_leave(team_pk, user_pk): if getattr(settings, "MESSAGES_DISABLED", False): return from messages.models import Message from teams.models import TeamMember, Team user = User.objects.get(pk=user_pk) team = Team.objects.get(pk=team_pk) if not team_sends_notification(team,'block_team_member_leave_message') or not user.is_active: return False from videos.models import Action # the feed item should appear on the timeline for all team members # as a team might have thousands of members, this one item has # to show up on all of them Action.create_member_left_handler(team, user) # notify admins and owners through messages notifiable = TeamMember.objects.filter(team=team, user__is_active=True, role__in=[TeamMember.ROLE_ADMIN, TeamMember.ROLE_OWNER]) subject = fmt( ugettext(u"%(user)s has left the %(team)s team"), user=user, team=team) for m in notifiable: context = { "parting_member": user, "team":team, "user":m.user, "url_base":get_url_base(), } body = render_to_string("messages/team-member-left.txt",context) if m.user.notify_by_message: msg = Message() msg.message_type = 'S' msg.subject = subject msg.content = body msg.user = m.user msg.object = team msg.save() send_templated_email(m.user, subject, "messages/email/team-member-left.html", context) context = { "team":team, "user":user, "url_base":get_url_base(), } subject = fmt(ugettext("You've left the %(team)s team!"), team=team) if user.notify_by_message: template_name = "messages/team-member-you-have-left.txt" msg = Message() msg.message_type = 'S' msg.subject = subject msg.content = render_to_string(template_name,context) msg.user = user msg.object = team msg.save() template_name = "messages/email/team-member-you-have-left.html" send_templated_email(user, subject, template_name, context)