def test_validate_linkable_entities_allowed(self): user = self.login(is_superuser=False) create_contact = partial(FakeContact.objects.create, user=self.other_user) a = create_contact(last_name='Doe', first_name='A') b = create_contact(last_name='Doe', first_name='B') self._set_user_credentials(user, EntityCredentials.LINK, SetCredentials.ESET_ALL) with self.assertNoException(): validators.validate_linkable_entities([a, b], user)
def test_validate_linkable_entities_owner(self): user = self.login(is_superuser=False) a = FakeContact.objects.create(last_name='Doe', first_name='A', user=user) b = FakeContact.objects.create(last_name='Doe', first_name='B', user=user) self._set_user_credentials(user, EntityCredentials.LINK, SetCredentials.ESET_OWN) with self.assertNoException(): validators.validate_linkable_entities([a, b], user)
def test_validate_linkable_entities_notallowed_all(self): user = self.login(is_superuser=False) create_contact = partial(FakeContact.objects.create, user=self.other_user) a = create_contact(last_name='Doe', first_name='John') b = create_contact(last_name='Doe', first_name='B') self._set_user_credentials(user, EntityCredentials.VIEW, SetCredentials.ESET_ALL) with self.assertRaises(ValidationError) as e: validators.validate_linkable_entities([a, b], user) self.assertEqual(e.exception.code, 'linknotallowed')
def test_validate_linkable_entities_anonymous(self): other_user = CremeUser.objects.create(username='******') create_contact = partial(FakeContact.objects.create, user=other_user) a = create_contact(last_name='Doe', first_name='John') b = create_contact(last_name='Doe', first_name='B') user = get_user(self.client) self.assertTrue(user.is_anonymous) with self.assertRaises(ValidationError) as e: validators.validate_linkable_entities([a, b], user) self.assertEqual( e.exception.message, _('Not authenticated user is not allowed to link entities')) self.assertEqual(e.exception.code, 'linknotallowed')
def clean_participating_users(self): users = set() for user in self.cleaned_data['participating_users']: if not user.is_team: users.add(user) else: users.update(user.teammates.values()) return validators.validate_linkable_entities(Contact.objects.filter(is_user__in=users), self.user, )
def clean(self, value): user = self.user assert user is not None users = set() for part_user in super().clean(value=value): if not part_user.is_team: users.add(part_user) else: users.update(part_user.teammates.values()) return validators.validate_linkable_entities( get_contact_model().objects.filter(is_user__in=users).select_related('is_user'), self.user, )
def clean_participating_users(self): users = self.cleaned_data['participating_users'] self.user_participants.extend( validate_linkable_entities( Contact.objects.filter(is_user__in=users), self.user)) return users