def _create_user(self, data): username = self._find_available_username(data) first_name = data.get('first_name') last_name = data.get('last_name') facebook_uid = data.get('uid') img_url = data.get('pic_square') email = '%s@facebookuser.%s.com' % (first_name, settings.SITE_NAME) user = User(username=username, email=email, first_name=first_name, last_name=last_name) temp_password = User.objects.make_random_password(length=24) user.set_password(temp_password) user.save() if img_url: img = ContentFile(requests.get(img_url).content) name = img_url.split('/')[-1] user.picture.save(name, img, False) FacebookAccount.objects.create(uid=facebook_uid, user=user, avatar=img_url) return user
def setUp(self): self.video = make_video() users = User.objects.all() (self.u1, self.u2) = users[:2] self.anon = User.get_anonymous() v = self.video self.en1 = pipeline.add_subtitles(v, 'en', title="title 1", description="desc 1", subtitles=[(100, 200, "sub 1")], author=self.u1) self.en2 = pipeline.add_subtitles(v, 'en', title="title 2", description="desc 2", subtitles=[(100, 200, "sub 2")], author=self.u2) self.en3 = pipeline.add_subtitles(v, 'en', title="title 3", description="desc 3", subtitles=[(100, 200, "sub 3")], author=self.u1)
def test_author(self): def _get_tip_author(): sl = SubtitleLanguage.objects.get(video=self.video, language_code='en') return sl.get_tip(full=True).author def _add(*args, **kwargs): pipeline.add_subtitles(self.video, 'en', None, *args, **kwargs) # Not passing at all. _add() self.assertEqual(_get_tip_author(), self.anon) # Passing nil. _add(author=None) self.assertEqual(_get_tip_author(), self.anon) # Passing anonymous. _add(author=User.get_anonymous()) self.assertEqual(_get_tip_author(), self.anon) # Passing u1. _add(author=self.u1) self.assertEqual(_get_tip_author().id, self.u1.id) # Passing u2. _add(author=self.u2) self.assertEqual(_get_tip_author().id, self.u2.id) # Passing nonsense self.assertRaises(ValueError, lambda: _add(author='dogs')) self.assertRaises(ValueError, lambda: _add(author=-1234)) self.assertRaises(ValueError, lambda: _add(author=[self.u1]))
def _create_user(self, access_token, data): username = self._find_available_username(data) twitter_username = data.screen_name first_name, last_name = self._get_first_last_name(data) avatar = data.profile_image_url email = '%s@twitteruser.%s.com' % (twitter_username, settings.SITE_NAME) user = User(username=username, email=email, first_name=first_name, last_name=last_name) temp_password = User.objects.make_random_password(length=24) user.set_password(temp_password) user.save() TwitterAccount.objects.create(user=user, username=twitter_username, access_token=access_token.key, avatar=avatar) return user
def _create_followers(self, video, num_followers): for x in xrange(0,num_followers): u = User(username="******" %x, email="*****@*****.**" % x) u.save() video.followers.add(u)
def setUp(self): self.video = make_video() users = User.objects.all() (self.u1, self.u2) = users[:2] self.anon = User.get_anonymous()
def _create_followers(self, video, num_followers): for x in xrange(0, num_followers): u = User(username="******" % x, email="*****@*****.**" % x) u.save() video.followers.add(u)
def test_email_diff_subtitles(self): initial_count = len(mail.outbox) # set a user who can receive notification # make sure we have a different author, else he won't get notified author = User(username='******', email='*****@*****.**', notify_by_email=True, valid_email=True) author.save(send_email_confirmation=False) # bypass logic from hell author.valid_email = True author.save() # this is needed for the non_editor template check user2 = User(username='******', email='*****@*****.**', notify_by_email=True, valid_email=True) user2.save(send_email_confirmation=False) # bypass logic from hell user2.valid_email = True user2.save() # version is indentical to previous one video = Video.get_or_create_for_url( "http://wwww.example.com/video-diff.mp4")[0] video.followers.add(author) video.followers.add(user2) language = SubtitleLanguage(video=video, language_code='en') language.save() subs_data = [ [0, 1000, '1'], [1000, 2000, '2'], ] subtitles_1 = SubtitleSet.from_list('en', subs_data) old_version = language.add_version(subtitles=subtitles_1, author=author) # now we change the text on the second sub subs_data[1][2] = '2 changed' # add a regular sub subs_data.append([2000, 3000, 'new sub']) # add an unsyced subs_data.append([None, None, 'no sync']) subtitles_2 = SubtitleSet.from_list('en', subs_data) new_version = language.add_version(subtitles=subtitles_2) self.assertTrue(len(video.notification_list()) > 0) res = send_new_version_notification(new_version.pk) self.assertNotEqual(res, None) # we expect two emails, one is the new-edits-non-editor, and # the other for mail_notification.html self.assertEqual(len(mail.outbox), initial_count + 2) for email_number, email_msg in enumerate(mail.outbox): # make sure this is the right message self.assertIn("New edits to ", email_msg.subject) self.assertIn("video-diff.mp4", email_msg.subject) html = BeautifulSoup(email_msg.body) html_text = "".join(html.body(text=True)).replace("\n", "") if email_number == 0: # assert text and timing changes are correct self.assertIn('67% of the text', html_text) self.assertIn('33% of the timing was changed.', html_text) # find the listed text changes to make sure they match diff_table = html.findAll('table', attrs={'class': 'diffs'})[0] old_version_changes = [] new_version_changes = [] for i, node in enumerate(diff_table.findAll('td')): if i % 2 == 0: old_version_changes.append(node.text) else: new_version_changes.append(node.text) self.assertEqual(old_version_changes, [u'2', u'', u'']) self.assertEqual(new_version_changes, [ u'2 changed', u'new sub', u'no sync', ])