Beispiel #1
0
    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)
Beispiel #3
0
    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')
Beispiel #4
0
    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,
                                                    )
Beispiel #6
0
    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,
        )
Beispiel #7
0
 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