def test_migrate_user_avoid_duplicate_m2ms(self): user = self.user new = User.objects.create( username='******', email='*****@*****.**' ) other = User.objects.create(username='******') event = Event.objects.get(title='Test event') discussion = Discussion.objects.create(event=event) discussion.moderators.add(user) discussion.moderators.add(new) discussion.moderators.add(other) suggested_event = SuggestedEvent.objects.create( user=user, title='Something', ) sug_discussion = SuggestedDiscussion.objects.create( event=suggested_event ) sug_discussion.moderators.add(user) sug_discussion.moderators.add(new) sug_discussion.moderators.add(other) assert sug_discussion.moderators.all().count() == 3 assignment = EventAssignment.objects.create( event=event ) assignment.users.add(user) assignment.users.add(new) assignment.users.add(other) # MOMENT OF TRUTH! things = merge_user(user, new) assert things ok_(new in discussion.moderators.all()) ok_(user not in discussion.moderators.all()) assert discussion.moderators.all().count() == 2 ok_(new in sug_discussion.moderators.all()) ok_(user not in sug_discussion.moderators.all()) assert sug_discussion.moderators.all().count() == 2 ok_(new in assignment.users.all()) ok_(user not in assignment.users.all()) assert assignment.users.all().count() == 2
def test_migrate_user_avoid_duplicate_m2ms(self): user = self.user new = User.objects.create(username='******', email='*****@*****.**') other = User.objects.create(username='******') event = Event.objects.get(title='Test event') discussion = Discussion.objects.create(event=event) discussion.moderators.add(user) discussion.moderators.add(new) discussion.moderators.add(other) suggested_event = SuggestedEvent.objects.create( user=user, title='Something', ) sug_discussion = SuggestedDiscussion.objects.create( event=suggested_event) sug_discussion.moderators.add(user) sug_discussion.moderators.add(new) sug_discussion.moderators.add(other) assert sug_discussion.moderators.all().count() == 3 assignment = EventAssignment.objects.create(event=event) assignment.users.add(user) assignment.users.add(new) assignment.users.add(other) # MOMENT OF TRUTH! things = merge_user(user, new) assert things ok_(new in discussion.moderators.all()) ok_(user not in discussion.moderators.all()) assert discussion.moderators.all().count() == 2 ok_(new in sug_discussion.moderators.all()) ok_(user not in sug_discussion.moderators.all()) assert sug_discussion.moderators.all().count() == 2 ok_(new in assignment.users.all()) ok_(user not in assignment.users.all()) assert assignment.users.all().count() == 2
def test_migrate_user_permissions(self): user = self.user new = User.objects.create( username='******', email='*****@*****.**', is_staff=True, is_superuser=True, ) # One group only 'user' has producers = Group.objects.create(name='Producers') user.groups.add(producers) # One group they both have humans = Group.objects.create(name='Humans') user.groups.add(humans) new.groups.add(humans) things = merge_user(user, new) ok_('transferred is_staff' in things) ok_('transferred is_superuser' in things) ok_('Producers group membership transferred' in things) assert len(things) == 3
def test_migrate_user(self): user = self.user event = Event.objects.get(title='Test event') event.creator = user event.save() Event.objects.create( title='Different', creator=User.objects.create(username='******'), modified_user=user, start_time=event.start_time, ) EventEmail.objects.create( event=event, user=user, to='*****@*****.**', ) EventRevision.objects.create(event=event, user=user, title='title') EventTweet.objects.create( event=event, text='Hi', creator=user, ) Approval.objects.create( event=event, user=user, ) assignment = EventAssignment.objects.create(event=event) assignment.users.add(user) suggested_event = SuggestedEvent.objects.create( user=user, title='Something', ) SuggestedEventComment.objects.create( suggested_event=suggested_event, comment='hi', user=user, ) Comment.objects.create( event=event, comment='Hi!', user=user, ) with open(self.main_image) as fp: Picture.objects.create( event=event, file=File(fp), modified_user=user, ) Chapter.objects.create( event=event, timestamp=1, user=user, ) LoggedSearch.objects.create( term='foo', user=user, ) SavedSearch.objects.create(user=user, filters={'key': 'value'}) StarredEvent.objects.create( event=event, user=user, ) survey = Survey.objects.create(name='name') question = Question.objects.create( survey=survey, question={'key': 'value'}, ) Answer.objects.create(user=user, question=question, answer={'foo': 'bar'}) Upload.objects.create( user=user, url='https://', size=1234, ) discussion = Discussion.objects.create(event=event) discussion.moderators.add(user) assert user in discussion.moderators.all() Unsubscription.objects.create( user=user, discussion=discussion, ) sug_discussion = SuggestedDiscussion.objects.create( event=suggested_event) sug_discussion.moderators.add(user) assert user in sug_discussion.moderators.all() ClosedCaptions.objects.create( event=event, created_user=user, ) RevOrder.objects.create( event=event, created_user=user, input=RevInput.objects.create(url='https://'), output_file_formats=['dfxp'], ) new = User.objects.create(username='******', email='*****@*****.**') # MOMENT OF TRUTH! things = merge_user(user, new) assert things # Events ok_(not Event.objects.filter(creator=user)) ok_(Event.objects.filter(creator=new)) ok_(not Event.objects.filter(modified_user=user)) ok_(Event.objects.filter(modified_user=new)) # EventEmail ok_(not EventEmail.objects.filter(user=user)) ok_(EventEmail.objects.filter(user=new)) # Suggested events ok_(not SuggestedEvent.objects.filter(user=user)) ok_(SuggestedEvent.objects.filter(user=new)) # Comments ok_(not Comment.objects.filter(user=user)) ok_(Comment.objects.filter(user=new)) # Discussion moderators ok_(new in discussion.moderators.all()) ok_(user not in discussion.moderators.all()) # Suggested Discussion moderators ok_(new in sug_discussion.moderators.all()) ok_(user not in sug_discussion.moderators.all()) # Unsubscriptions ok_(not Unsubscription.objects.filter(user=user)) ok_(Unsubscription.objects.filter(user=new)) # Suggested event ok_(not SuggestedEvent.objects.filter(user=user)) ok_(SuggestedEvent.objects.filter(user=new)) # Closed captions ok_(not ClosedCaptions.objects.filter(created_user=user)) ok_(ClosedCaptions.objects.filter(created_user=new)) # Rev orders ok_(not RevOrder.objects.filter(created_user=user)) ok_(RevOrder.objects.filter(created_user=new)) # Event revisions ok_(not EventRevision.objects.filter(user=user)) ok_(EventRevision.objects.filter(user=new)) # Event assignments ok_(new in assignment.users.all()) ok_(user not in assignment.users.all()) # Suggested event comments ok_(not SuggestedEventComment.objects.filter(user=user)) ok_(SuggestedEventComment.objects.filter(user=new)) # Event tweets ok_(not EventTweet.objects.filter(creator=user)) ok_(EventTweet.objects.filter(creator=new)) # Approvals ok_(not Approval.objects.filter(user=user)) ok_(Approval.objects.filter(user=new)) # Pictures ok_(not Picture.objects.filter(modified_user=user)) ok_(Picture.objects.filter(modified_user=new)) # Chapters ok_(not Chapter.objects.filter(user=user)) ok_(Chapter.objects.filter(user=new)) # Logged search ok_(not LoggedSearch.objects.filter(user=user)) ok_(LoggedSearch.objects.filter(user=new)) # Saved search ok_(not SavedSearch.objects.filter(user=user)) ok_(SavedSearch.objects.filter(user=new)) # Starred event ok_(not StarredEvent.objects.filter(user=user)) ok_(StarredEvent.objects.filter(user=new)) # (survey) Answers ok_(not Answer.objects.filter(user=user)) ok_(Answer.objects.filter(user=new)) # Uploads ok_(not Upload.objects.filter(user=user)) ok_(Upload.objects.filter(user=new))
def test_migrate_user(self): user = self.user event = Event.objects.get(title='Test event') event.creator = user event.save() Event.objects.create( title='Different', creator=User.objects.create(username='******'), modified_user=user, start_time=event.start_time, ) EventEmail.objects.create( event=event, user=user, to='*****@*****.**', ) EventRevision.objects.create( event=event, user=user, title='title' ) EventTweet.objects.create( event=event, text='Hi', creator=user, ) Approval.objects.create( event=event, user=user, ) assignment = EventAssignment.objects.create( event=event ) assignment.users.add(user) suggested_event = SuggestedEvent.objects.create( user=user, title='Something', ) SuggestedEventComment.objects.create( suggested_event=suggested_event, comment='hi', user=user, ) Comment.objects.create( event=event, comment='Hi!', user=user, ) with open(self.main_image) as fp: Picture.objects.create( event=event, file=File(fp), modified_user=user, ) Chapter.objects.create( event=event, timestamp=1, user=user, ) LoggedSearch.objects.create( term='foo', user=user, ) SavedSearch.objects.create( user=user, filters={'key': 'value'} ) StarredEvent.objects.create( event=event, user=user, ) survey = Survey.objects.create( name='name' ) question = Question.objects.create( survey=survey, question={'key': 'value'}, ) Answer.objects.create( user=user, question=question, answer={'foo': 'bar'} ) Upload.objects.create( user=user, url='https://', size=1234, ) discussion = Discussion.objects.create(event=event) discussion.moderators.add(user) assert user in discussion.moderators.all() Unsubscription.objects.create( user=user, discussion=discussion, ) sug_discussion = SuggestedDiscussion.objects.create( event=suggested_event ) sug_discussion.moderators.add(user) assert user in sug_discussion.moderators.all() ClosedCaptions.objects.create( event=event, created_user=user, ) RevOrder.objects.create( event=event, created_user=user, input=RevInput.objects.create(url='https://'), output_file_formats=['dfxp'], ) new = User.objects.create( username='******', email='*****@*****.**' ) # MOMENT OF TRUTH! things = merge_user(user, new) assert things # Events ok_(not Event.objects.filter(creator=user)) ok_(Event.objects.filter(creator=new)) ok_(not Event.objects.filter(modified_user=user)) ok_(Event.objects.filter(modified_user=new)) # EventEmail ok_(not EventEmail.objects.filter(user=user)) ok_(EventEmail.objects.filter(user=new)) # Suggested events ok_(not SuggestedEvent.objects.filter(user=user)) ok_(SuggestedEvent.objects.filter(user=new)) # Comments ok_(not Comment.objects.filter(user=user)) ok_(Comment.objects.filter(user=new)) # Discussion moderators ok_(new in discussion.moderators.all()) ok_(user not in discussion.moderators.all()) # Suggested Discussion moderators ok_(new in sug_discussion.moderators.all()) ok_(user not in sug_discussion.moderators.all()) # Unsubscriptions ok_(not Unsubscription.objects.filter(user=user)) ok_(Unsubscription.objects.filter(user=new)) # Suggested event ok_(not SuggestedEvent.objects.filter(user=user)) ok_(SuggestedEvent.objects.filter(user=new)) # Closed captions ok_(not ClosedCaptions.objects.filter(created_user=user)) ok_(ClosedCaptions.objects.filter(created_user=new)) # Rev orders ok_(not RevOrder.objects.filter(created_user=user)) ok_(RevOrder.objects.filter(created_user=new)) # Event revisions ok_(not EventRevision.objects.filter(user=user)) ok_(EventRevision.objects.filter(user=new)) # Event assignments ok_(new in assignment.users.all()) ok_(user not in assignment.users.all()) # Suggested event comments ok_(not SuggestedEventComment.objects.filter(user=user)) ok_(SuggestedEventComment.objects.filter(user=new)) # Event tweets ok_(not EventTweet.objects.filter(creator=user)) ok_(EventTweet.objects.filter(creator=new)) # Approvals ok_(not Approval.objects.filter(user=user)) ok_(Approval.objects.filter(user=new)) # Pictures ok_(not Picture.objects.filter(modified_user=user)) ok_(Picture.objects.filter(modified_user=new)) # Chapters ok_(not Chapter.objects.filter(user=user)) ok_(Chapter.objects.filter(user=new)) # Logged search ok_(not LoggedSearch.objects.filter(user=user)) ok_(LoggedSearch.objects.filter(user=new)) # Saved search ok_(not SavedSearch.objects.filter(user=user)) ok_(SavedSearch.objects.filter(user=new)) # Starred event ok_(not StarredEvent.objects.filter(user=user)) ok_(StarredEvent.objects.filter(user=new)) # (survey) Answers ok_(not Answer.objects.filter(user=user)) ok_(Answer.objects.filter(user=new)) # Uploads ok_(not Upload.objects.filter(user=user)) ok_(Upload.objects.filter(user=new))