コード例 #1
0
ファイル: test_forms.py プロジェクト: xiaogao6681/reviewboard
    def test_form_with_localsite(self):
        """Testing DefaultReviewerForm with a LocalSite"""
        test_site = LocalSite.objects.create(name='test')

        tool = Tool.objects.get(name='CVS')
        repo = Repository.objects.create(name='Test', path='path', tool=tool,
                                         local_site=test_site)
        user = User.objects.create_user(username='******', password='',
                                        email='*****@*****.**')
        test_site.users.add(user)

        group = Group.objects.create(name='test', display_name='Test',
                                     local_site=test_site)

        form = DefaultReviewerForm(data={
            'name': 'Test',
            'file_regex': '.*',
            'local_site': test_site.pk,
            'repository': [repo.pk],
            'people': [user.pk],
            'groups': [group.pk],
        }, local_site=test_site)
        self.assertTrue(form.is_valid())
        default_reviewer = form.save()

        self.assertEqual(default_reviewer.local_site, test_site)
        self.assertEqual(default_reviewer.repository.get(), repo)
        self.assertEqual(default_reviewer.people.get(), user)
        self.assertEqual(default_reviewer.groups.get(), group)
コード例 #2
0
ファイル: test_forms.py プロジェクト: reviewboard/reviewboard
    def test_form_with_localsite(self):
        """Testing DefaultReviewerForm with a LocalSite"""
        test_site = LocalSite.objects.create(name="test")

        tool = Tool.objects.get(name="CVS")
        repo = Repository.objects.create(name="Test", path="path", tool=tool, local_site=test_site)
        user = User.objects.create(username="******", password="")
        test_site.users.add(user)

        group = Group.objects.create(name="test", display_name="Test", local_site=test_site)

        form = DefaultReviewerForm(
            data={
                "name": "Test",
                "file_regex": ".*",
                "local_site": test_site.pk,
                "repository": [repo.pk],
                "people": [user.pk],
                "groups": [group.pk],
            },
            local_site=test_site,
        )
        self.assertTrue(form.is_valid())
        default_reviewer = form.save()

        self.assertEqual(default_reviewer.local_site, test_site)
        self.assertEqual(default_reviewer.repository.get(), repo)
        self.assertEqual(default_reviewer.people.get(), user)
        self.assertEqual(default_reviewer.groups.get(), group)
コード例 #3
0
ファイル: test_forms.py プロジェクト: reviewboard/reviewboard
    def test_form_with_positional_argument(self):
        """Testing DefaultReviewerForm when passing data as a positional
        argument
        """
        # This was a regression caused by the change to add the new related
        # user selector.
        form = DefaultReviewerForm({"name": "test", "file_regex": ".*"})

        self.assertTrue(form.is_valid())
コード例 #4
0
ファイル: test_forms.py プロジェクト: chipx86/reviewboard
    def test_with_localsite_in_data(self):
        """Testing DefaultReviewerForm with a LocalSite in form data"""
        # Make sure the initial state and querysets are what we expect on init.
        form = DefaultReviewerForm()

        self.assertIsNone(form.limited_to_local_site)
        self.assertIn('local_site', form.fields)
        self.assertEqual(list(form.fields['repository'].queryset),
                         [self.local_site_repo, self.global_site_repo])
        self.assertEqual(list(form.fields['people'].queryset),
                         [self.local_site_user, self.global_site_user])
        self.assertEqual(list(form.fields['groups'].queryset),
                         [self.local_site_group, self.global_site_group])
        self.assertIsNone(form.fields['people'].widget.local_site_name)

        # Now test what happens when it's been fed data and validated.
        form = DefaultReviewerForm(data={
            'name': 'Test',
            'file_regex': '.*',
            'local_site': self.local_site.pk,
            'repository': [self.local_site_repo.pk],
            'people': [self.local_site_user.pk],
            'groups': [self.local_site_group.pk],
        })

        self.assertIsNone(form.limited_to_local_site)
        self.assertIn('local_site', form.fields)
        self.assertEqual(list(form.fields['repository'].queryset),
                         [self.local_site_repo, self.global_site_repo])
        self.assertEqual(list(form.fields['people'].queryset),
                         [self.local_site_user, self.global_site_user])
        self.assertEqual(list(form.fields['groups'].queryset),
                         [self.local_site_group, self.global_site_group])
        self.assertIsNone(form.fields['people'].widget.local_site_name)

        self.assertTrue(form.is_valid())

        # Make sure any overridden querysets have been restored, so users can
        # still change entries.
        self.assertEqual(list(form.fields['repository'].queryset),
                         [self.local_site_repo, self.global_site_repo])
        self.assertEqual(list(form.fields['people'].queryset),
                         [self.local_site_user, self.global_site_user])
        self.assertEqual(list(form.fields['groups'].queryset),
                         [self.local_site_group, self.global_site_group])
        self.assertIsNone(form.fields['people'].widget.local_site_name)

        default_reviewer = form.save()

        self.assertEqual(default_reviewer.local_site, self.local_site)
        self.assertEqual(list(default_reviewer.repository.all()),
                         [self.local_site_repo])
        self.assertEqual(list(default_reviewer.people.all()),
                         [self.local_site_user])
        self.assertEqual(list(default_reviewer.groups.all()),
                         [self.local_site_group])
コード例 #5
0
ファイル: test_forms.py プロジェクト: reviewboard/reviewboard
    def test_form_with_localsite_and_bad_user(self):
        """Testing DefaultReviewerForm with a User not on the same LocalSite
        """
        test_site = LocalSite.objects.create(name="test")
        user = User.objects.create(username="******", password="")

        form = DefaultReviewerForm(
            data={"name": "Test", "file_regex": ".*", "local_site": test_site.pk, "people": [user.pk]}
        )
        self.assertFalse(form.is_valid())
コード例 #6
0
ファイル: test_forms.py プロジェクト: pds-support/reviewboard
 def test_form_with_positional_argument(self):
     """Testing DefaultReviewerForm when passing data as a positional
     argument
     """
     # This was a regression caused by the change to add the new related
     # user selector.
     form = DefaultReviewerForm({
         'name': 'test',
         'file_regex': '.*',
     })
     self.assertTrue(form.is_valid())
コード例 #7
0
ファイル: test_forms.py プロジェクト: chipx86/reviewboard
    def test_without_localsite_and_with_local_site_user(self):
        """Testing DefaultReviewerForm without a LocalSite and User on a
        LocalSite
        """
        form = DefaultReviewerForm(data={
            'name': 'Test',
            'file_regex': '.*',
            'people': [self.local_site_user.pk],
        })

        # Note that unlike others, this scenario is allowed.
        self.assertTrue(form.is_valid())
コード例 #8
0
ファイル: test_forms.py プロジェクト: pds-support/reviewboard
    def test_without_localsite_and_with_local_site_user(self):
        """Testing DefaultReviewerForm without a LocalSite and User on a
        LocalSite
        """
        form = DefaultReviewerForm(
            data={
                'name': 'Test',
                'file_regex': '.*',
                'people': [self.local_site_user.pk],
            })

        # Note that unlike others, this scenario is allowed.
        self.assertTrue(form.is_valid())
コード例 #9
0
ファイル: test_forms.py プロジェクト: pds-support/reviewboard
 def test_without_localsite_and_with_local_site_repo(self):
     """Testing DefaultReviewerForm without a LocalSite and Repository on a
     LocalSite
     """
     form = DefaultReviewerForm(
         data={
             'name': 'Test',
             'file_regex': '.*',
             'repository': [self.local_site_repo.pk],
         })
     self.assertFalse(form.is_valid())
     self.assertEqual(form.errors, {
         'repository': ['A repository with ID 1 was not found.'],
     })
コード例 #10
0
ファイル: test_forms.py プロジェクト: xiaogao6681/reviewboard
    def test_form_with_localsite_and_bad_user(self):
        """Testing DefaultReviewerForm with a User not on the same LocalSite
        """
        test_site = LocalSite.objects.create(name='test')
        user = User.objects.create_user(username='******', password='',
                                        email='*****@*****.**')

        form = DefaultReviewerForm(data={
            'name': 'Test',
            'file_regex': '.*',
            'local_site': test_site.pk,
            'people': [user.pk],
        })
        self.assertFalse(form.is_valid())
コード例 #11
0
ファイル: test_forms.py プロジェクト: pds-support/reviewboard
 def test_with_limited_localsite_and_invalid_repo(self):
     """Testing DefaultReviewerForm limited to a LocalSite with a
     Repository not on the LocalSite
     """
     form = DefaultReviewerForm(data={
         'name': 'Test',
         'file_regex': '.*',
         'repository': [self.global_site_repo.pk],
     },
                                limit_to_local_site=self.local_site)
     self.assertFalse(form.is_valid())
     self.assertEqual(form.errors, {
         'repository': ['A repository with ID 2 was not found.'],
     })
コード例 #12
0
ファイル: test_forms.py プロジェクト: pds-support/reviewboard
 def test_with_localsite_in_data_and_invalid_group(self):
     """Testing DefaultReviewerForm with a LocalSite in form data and Group
     not on the LocalSite
     """
     form = DefaultReviewerForm(
         data={
             'name': 'Test',
             'file_regex': '.*',
             'local_site': self.local_site.pk,
             'groups': [self.global_site_group.pk],
         })
     self.assertFalse(form.is_valid())
     self.assertEqual(form.errors, {
         'groups': ['A group with ID 2 was not found.'],
     })
コード例 #13
0
ファイル: test_forms.py プロジェクト: chipx86/reviewboard
 def test_without_localsite_and_with_local_site_repo(self):
     """Testing DefaultReviewerForm without a LocalSite and Repository on a
     LocalSite
     """
     form = DefaultReviewerForm(data={
         'name': 'Test',
         'file_regex': '.*',
         'repository': [self.local_site_repo.pk],
     })
     self.assertFalse(form.is_valid())
     self.assertEqual(
         form.errors,
         {
             'repository': ['A repository with ID 1 was not found.'],
         })
コード例 #14
0
ファイル: test_forms.py プロジェクト: chipx86/reviewboard
 def test_with_localsite_in_data_and_invalid_user(self):
     """Testing DefaultReviewerForm with a LocalSite in form data and User
     not on the LocalSite
     """
     form = DefaultReviewerForm(data={
         'name': 'Test',
         'file_regex': '.*',
         'local_site': self.local_site.pk,
         'people': [self.global_site_user.pk],
     })
     self.assertFalse(form.is_valid())
     self.assertEqual(
         form.errors,
         {
             'people': ['A user with ID 2 was not found.'],
         })
コード例 #15
0
ファイル: test_forms.py プロジェクト: reviewboard/reviewboard
    def test_form_with_localsite_and_bad_group(self):
        """Testing DefaultReviewerForm with a Group not on the same LocalSite
        """
        test_site = LocalSite.objects.create(name="test")
        group = Group.objects.create(name="test", display_name="Test")

        form = DefaultReviewerForm(
            data={"name": "Test", "file_regex": ".*", "local_site": test_site.pk, "groups": [group.pk]}
        )
        self.assertFalse(form.is_valid())

        group.local_site = test_site
        group.save()

        form = DefaultReviewerForm(data={"name": "Test", "file_regex": ".*", "groups": [group.pk]})
        self.assertFalse(form.is_valid())
コード例 #16
0
ファイル: test_forms.py プロジェクト: pds-support/reviewboard
    def test_without_localsite_and_instance(self):
        """Testing DefaultReviewerForm without a LocalSite and editing instance
        """
        default_reviewer = DefaultReviewer.objects.create(
            name='Test', file_regex='.*', local_site=self.local_site)

        form = DefaultReviewerForm(data={
            'name': 'Test',
            'file_regex': '.*',
        },
                                   instance=default_reviewer)
        self.assertTrue(form.is_valid())

        new_default_reviewer = form.save()
        self.assertEqual(default_reviewer.pk, new_default_reviewer.pk)
        self.assertIsNone(new_default_reviewer.local_site)
コード例 #17
0
ファイル: test_forms.py プロジェクト: chipx86/reviewboard
 def test_without_localsite_and_with_local_site_group(self):
     """Testing DefaultReviewerForm without a LocalSite and Group on a
     LocalSite
     """
     form = DefaultReviewerForm(data={
         'name': 'Test',
         'file_regex': '.*',
         'groups': [self.local_site_group.pk],
     })
     self.assertFalse(form.is_valid())
     self.assertEqual(
         form.errors,
         {
             'groups': ['Select a valid choice. 1 is not one of the '
                        'available choices.'],
         })
コード例 #18
0
ファイル: test_forms.py プロジェクト: chipx86/reviewboard
 def test_with_limited_localsite_and_invalid_repo(self):
     """Testing DefaultReviewerForm limited to a LocalSite with a
     Repository not on the LocalSite
     """
     form = DefaultReviewerForm(
         data={
             'name': 'Test',
             'file_regex': '.*',
             'repository': [self.global_site_repo.pk],
         },
         limit_to_local_site=self.local_site)
     self.assertFalse(form.is_valid())
     self.assertEqual(
         form.errors,
         {
             'repository': ['A repository with ID 2 was not found.'],
         })
コード例 #19
0
ファイル: test_forms.py プロジェクト: chipx86/reviewboard
 def test_with_localsite_in_data_and_invalid_group(self):
     """Testing DefaultReviewerForm with a LocalSite in form data and Group
     not on the LocalSite
     """
     form = DefaultReviewerForm(data={
         'name': 'Test',
         'file_regex': '.*',
         'local_site': self.local_site.pk,
         'groups': [self.global_site_group.pk],
     })
     self.assertFalse(form.is_valid())
     self.assertEqual(
         form.errors,
         {
             'groups': ['Select a valid choice. 2 is not one of the '
                        'available choices.'],
         })
コード例 #20
0
ファイル: test_forms.py プロジェクト: reviewboard/reviewboard
    def test_form_with_localsite_and_bad_repository(self):
        """Testing DefaultReviewerForm with a Repository not on the same
        LocalSite
        """
        test_site = LocalSite.objects.create(name="test")
        tool = Tool.objects.get(name="CVS")
        repo = Repository.objects.create(name="Test", path="path", tool=tool)

        form = DefaultReviewerForm(
            data={"name": "Test", "file_regex": ".*", "local_site": test_site.pk, "repository": [repo.pk]}
        )
        self.assertFalse(form.is_valid())

        repo.local_site = test_site
        repo.save()

        form = DefaultReviewerForm(data={"name": "Test", "file_regex": ".*", "repository": [repo.pk]})
        self.assertFalse(form.is_valid())
コード例 #21
0
ファイル: test_forms.py プロジェクト: ParikhKadam/reviewboard
 def test_without_localsite_and_with_local_site_group(self):
     """Testing DefaultReviewerForm without a LocalSite and Group on a
     LocalSite
     """
     form = DefaultReviewerForm(
         data={
             'name': 'Test',
             'file_regex': '.*',
             'groups': [self.local_site_group.pk],
         })
     self.assertFalse(form.is_valid())
     self.assertEqual(
         form.errors, {
             'groups': [
                 'Select a valid choice. 1 is not one of the '
                 'available choices.'
             ],
         })
コード例 #22
0
ファイル: test_forms.py プロジェクト: ParikhKadam/reviewboard
 def test_with_limited_localsite_and_invalid_group(self):
     """Testing DefaultReviewerForm limited to a LocalSite with a Group
     not on the LocalSite
     """
     form = DefaultReviewerForm(data={
         'name': 'Test',
         'file_regex': '.*',
         'groups': [self.global_site_group.pk],
     },
                                limit_to_local_site=self.local_site)
     self.assertFalse(form.is_valid())
     self.assertEqual(
         form.errors, {
             'groups': [
                 'Select a valid choice. 2 is not one of the '
                 'available choices.'
             ],
         })
コード例 #23
0
ファイル: test_forms.py プロジェクト: pds-support/reviewboard
    def test_with_localsite_in_data_and_instance(self):
        """Testing DefaultReviewerform with a LocalSite in form data and
        editing instance
        """
        default_reviewer = DefaultReviewer.objects.create(name='Test',
                                                          file_regex='.*')

        form = DefaultReviewerForm(data={
            'name': 'Test',
            'file_regex': '.*',
            'local_site': self.local_site.pk,
        },
                                   instance=default_reviewer)
        self.assertTrue(form.is_valid())

        new_default_reviewer = form.save()
        self.assertEqual(default_reviewer.pk, new_default_reviewer.pk)
        self.assertEqual(new_default_reviewer.local_site, self.local_site)
コード例 #24
0
ファイル: test_forms.py プロジェクト: pds-support/reviewboard
    def test_with_limited_localsite_and_changing_site(self):
        """Testing DefaultReviewerForm limited to a LocalSite and changing
        LocalSite
        """
        site2 = LocalSite.objects.create(name='test-site-2')

        form = DefaultReviewerForm(data={
            'name': 'Test',
            'file_regex': '.*',
            'local_site': site2,
        },
                                   limit_to_local_site=self.local_site)

        self.assertEqual(form.limited_to_local_site, self.local_site)
        self.assertTrue(form.is_valid())
        self.assertEqual(form.cleaned_data['local_site'], self.local_site)

        default_reviewer = form.save()
        self.assertEqual(default_reviewer.local_site, self.local_site)
コード例 #25
0
ファイル: test_forms.py プロジェクト: chipx86/reviewboard
    def test_without_localsite_and_instance(self):
        """Testing DefaultReviewerForm without a LocalSite and editing instance
        """
        default_reviewer = DefaultReviewer.objects.create(
            name='Test',
            file_regex='.*',
            local_site=self.local_site)

        form = DefaultReviewerForm(
            data={
                'name': 'Test',
                'file_regex': '.*',
            },
            instance=default_reviewer)
        self.assertTrue(form.is_valid())

        new_default_reviewer = form.save()
        self.assertEqual(default_reviewer.pk, new_default_reviewer.pk)
        self.assertIsNone(new_default_reviewer.local_site)
コード例 #26
0
ファイル: test_forms.py プロジェクト: pds-support/reviewboard
    def test_with_limited_localsite_and_compatible_instance(self):
        """Testing DefaultReviewerForm limited to a LocalSite and editing
        compatible instance
        """
        default_reviewer = DefaultReviewer.objects.create(
            name='Test', file_regex='.*', local_site=self.local_site)

        # This should just simply not raise an exception.
        DefaultReviewerForm(instance=default_reviewer,
                            limit_to_local_site=self.local_site)
コード例 #27
0
ファイル: test_forms.py プロジェクト: chipx86/reviewboard
    def test_with_limited_localsite_and_changing_site(self):
        """Testing DefaultReviewerForm limited to a LocalSite and changing
        LocalSite
        """
        site2 = LocalSite.objects.create(name='test-site-2')

        form = DefaultReviewerForm(
            data={
                'name': 'Test',
                'file_regex': '.*',
                'local_site': site2,
            },
            limit_to_local_site=self.local_site)

        self.assertEqual(form.limited_to_local_site, self.local_site)
        self.assertTrue(form.is_valid())
        self.assertEqual(form.cleaned_data['local_site'], self.local_site)

        default_reviewer = form.save()
        self.assertEqual(default_reviewer.local_site, self.local_site)
コード例 #28
0
ファイル: test_forms.py プロジェクト: chipx86/reviewboard
    def test_with_localsite_in_data_and_instance(self):
        """Testing DefaultReviewerform with a LocalSite in form data and
        editing instance
        """
        default_reviewer = DefaultReviewer.objects.create(
            name='Test',
            file_regex='.*')

        form = DefaultReviewerForm(
            data={
                'name': 'Test',
                'file_regex': '.*',
                'local_site': self.local_site.pk,
            },
            instance=default_reviewer)
        self.assertTrue(form.is_valid())

        new_default_reviewer = form.save()
        self.assertEqual(default_reviewer.pk, new_default_reviewer.pk)
        self.assertEqual(new_default_reviewer.local_site, self.local_site)
コード例 #29
0
ファイル: test_forms.py プロジェクト: xiaogao6681/reviewboard
    def test_form_with_localsite_and_bad_repository(self):
        """Testing DefaultReviewerForm with a Repository not on the same
        LocalSite
        """
        test_site = LocalSite.objects.create(name='test')
        tool = Tool.objects.get(name='CVS')
        repo = Repository.objects.create(name='Test', path='path', tool=tool)

        form = DefaultReviewerForm(data={
            'name': 'Test',
            'file_regex': '.*',
            'local_site': test_site.pk,
            'repository': [repo.pk],
        })
        self.assertFalse(form.is_valid())

        repo.local_site = test_site
        repo.save()

        form = DefaultReviewerForm(data={
            'name': 'Test',
            'file_regex': '.*',
            'repository': [repo.pk],
        })
        self.assertFalse(form.is_valid())
コード例 #30
0
ファイル: test_forms.py プロジェクト: pds-support/reviewboard
    def test_with_limited_localsite(self):
        """Testing DefaultReviewerForm limited to a LocalSite"""
        form = DefaultReviewerForm(limit_to_local_site=self.local_site)

        self.assertEqual(form.limited_to_local_site, self.local_site)
        self.assertNotIn('local_site', form.fields)
        self.assertEqual(list(form.fields['repository'].queryset),
                         [self.local_site_repo])
        self.assertEqual(list(form.fields['people'].queryset),
                         [self.local_site_user])
        self.assertEqual(list(form.fields['groups'].queryset),
                         [self.local_site_group])
        self.assertEqual(form.fields['people'].widget.local_site_name,
                         self.local_site.name)
コード例 #31
0
ファイル: test_forms.py プロジェクト: pds-support/reviewboard
    def test_with_limited_localsite_and_incompatible_instance(self):
        """Testing DefaultReviewerForm limited to a LocalSite and editing
        incompatible instance
        """
        default_reviewer = DefaultReviewer.objects.create(name='Test',
                                                          file_regex='.*')

        error_message = (
            'The provided instance is not associated with a LocalSite '
            'compatible with this form. Please contact support.')

        with self.assertRaisesMessage(ValueError, error_message):
            DefaultReviewerForm(instance=default_reviewer,
                                limit_to_local_site=self.local_site)
コード例 #32
0
ファイル: test_forms.py プロジェクト: pds-support/reviewboard
    def test_with_localsite_in_data(self):
        """Testing DefaultReviewerForm with a LocalSite in form data"""
        # Make sure the initial state and querysets are what we expect on init.
        form = DefaultReviewerForm()

        self.assertIsNone(form.limited_to_local_site)
        self.assertIn('local_site', form.fields)
        self.assertEqual(list(form.fields['repository'].queryset),
                         [self.local_site_repo, self.global_site_repo])
        self.assertEqual(list(form.fields['people'].queryset),
                         [self.local_site_user, self.global_site_user])
        self.assertEqual(list(form.fields['groups'].queryset),
                         [self.local_site_group, self.global_site_group])
        self.assertIsNone(form.fields['people'].widget.local_site_name)

        # Now test what happens when it's been fed data and validated.
        form = DefaultReviewerForm(
            data={
                'name': 'Test',
                'file_regex': '.*',
                'local_site': self.local_site.pk,
                'repository': [self.local_site_repo.pk],
                'people': [self.local_site_user.pk],
                'groups': [self.local_site_group.pk],
            })

        self.assertIsNone(form.limited_to_local_site)
        self.assertIn('local_site', form.fields)
        self.assertEqual(list(form.fields['repository'].queryset),
                         [self.local_site_repo, self.global_site_repo])
        self.assertEqual(list(form.fields['people'].queryset),
                         [self.local_site_user, self.global_site_user])
        self.assertEqual(list(form.fields['groups'].queryset),
                         [self.local_site_group, self.global_site_group])
        self.assertIsNone(form.fields['people'].widget.local_site_name)

        self.assertTrue(form.is_valid())

        # Make sure any overridden querysets have been restored, so users can
        # still change entries.
        self.assertEqual(list(form.fields['repository'].queryset),
                         [self.local_site_repo, self.global_site_repo])
        self.assertEqual(list(form.fields['people'].queryset),
                         [self.local_site_user, self.global_site_user])
        self.assertEqual(list(form.fields['groups'].queryset),
                         [self.local_site_group, self.global_site_group])
        self.assertIsNone(form.fields['people'].widget.local_site_name)

        default_reviewer = form.save()

        self.assertEqual(default_reviewer.local_site, self.local_site)
        self.assertEqual(list(default_reviewer.repository.all()),
                         [self.local_site_repo])
        self.assertEqual(list(default_reviewer.people.all()),
                         [self.local_site_user])
        self.assertEqual(list(default_reviewer.groups.all()),
                         [self.local_site_group])
コード例 #33
0
ファイル: test_forms.py プロジェクト: xiaogao6681/reviewboard
    def test_form_with_localsite_and_bad_group(self):
        """Testing DefaultReviewerForm with a Group not on the same LocalSite
        """
        test_site = LocalSite.objects.create(name='test')
        group = Group.objects.create(name='test', display_name='Test')

        form = DefaultReviewerForm(data={
            'name': 'Test',
            'file_regex': '.*',
            'local_site': test_site.pk,
            'groups': [group.pk],
        })
        self.assertFalse(form.is_valid())

        group.local_site = test_site
        group.save()

        form = DefaultReviewerForm(data={
            'name': 'Test',
            'file_regex': '.*',
            'groups': [group.pk],
        })
        self.assertFalse(form.is_valid())
コード例 #34
0
    def _create_or_update(self, local_site, default_reviewer=None, **kwargs):
        invalid_fields = {}
        form_data = {}

        if "groups" in kwargs:
            group_names = kwargs["groups"].split(",")
            group_ids = [
                group["pk"] for group in Group.objects.filter(name__in=group_names, local_site=local_site).values("pk")
            ]

            if len(group_ids) != len(group_names):
                invalid_fields["groups"] = ["One or more groups were not found"]

            form_data["groups"] = group_ids

        if "repositories" in kwargs:
            repo_ids = []

            try:
                repo_ids = [int(repo_id) for repo_id in kwargs["repositories"].split(",")]
            except ValueError:
                invalid_fields["repositories"] = ["One or more repository IDs were not in a valid format."]

            if repo_ids:
                found_count = Repository.objects.filter(pk__in=repo_ids, local_site=local_site).count()

                if len(repo_ids) != found_count:
                    invalid_fields["repositories"] = ["One or more repositories were not found"]

            form_data["repository"] = repo_ids

        if "users" in kwargs:
            usernames = kwargs["users"].split(",")

            user_ids = [user["pk"] for user in User.objects.filter(username__in=usernames).values("pk")]

            if len(user_ids) != len(usernames):
                invalid_fields["users"] = ["One or more users were not found"]

            form_data["people"] = user_ids

        if invalid_fields:
            return INVALID_FORM_DATA, {"fields": invalid_fields}

        for field in ("name", "file_regex"):
            if field in kwargs:
                form_data[field] = kwargs[field]

        if local_site:
            form_data["local_site"] = local_site.pk

        form = DefaultReviewerForm(form_data, instance=default_reviewer)

        if not form.is_valid():
            # The form uses "people" and "repository", but we expose these
            # as "users" and "repositories", so transmogrify the errors a bit.
            field_errors = self._get_form_errors(form)

            if "people" in field_errors:
                field_errors["users"] = field_errors.pop("people")

            if "repository" in field_errors:
                field_errors["repositories"] = field_errors.pop("repository")

            return INVALID_FORM_DATA, {"fields": field_errors}

        default_reviewer = form.save()

        return 200, {self.item_result_key: default_reviewer}
コード例 #35
0
    def _create_or_update(self, local_site, default_reviewer=None, **kwargs):
        invalid_fields = {}
        form_data = {}

        if 'groups' in kwargs:
            group_names = kwargs['groups'].split(',')
            group_ids = [
                group['pk']
                for group in Group.objects.filter(
                    name__in=group_names, local_site=local_site).values('pk')
            ]

            if len(group_ids) != len(group_names):
                invalid_fields['groups'] = [
                    'One or more groups were not found'
                ]

            form_data['groups'] = group_ids

        if 'repositories' in kwargs:
            repo_ids = []

            try:
                repo_ids = [
                    int(repo_id)
                    for repo_id in kwargs['repositories'].split(',')
                ]
            except ValueError:
                invalid_fields['repositories'] = [
                    'One or more repository IDs were not in a valid format.'
                ]

            if repo_ids:
                found_count = Repository.objects.filter(
                    pk__in=repo_ids, local_site=local_site).count()

                if len(repo_ids) != found_count:
                    invalid_fields['repositories'] = [
                        'One or more repositories were not found'
                    ]

            form_data['repository'] = repo_ids

        if 'users' in kwargs:
            usernames = kwargs['users'].split(',')

            user_ids = [
                user['pk']
                for user in User.objects.filter(
                    username__in=usernames).values('pk')
            ]

            if len(user_ids) != len(usernames):
                invalid_fields['users'] = [
                    'One or more users were not found'
                ]

            form_data['people'] = user_ids

        if invalid_fields:
            return INVALID_FORM_DATA, {
                'fields': invalid_fields
            }

        for field in ('name', 'file_regex'):
            if field in kwargs:
                form_data[field] = kwargs[field]

        if local_site:
            form_data['local_site'] = local_site.pk

        form = DefaultReviewerForm(form_data, instance=default_reviewer)

        if not form.is_valid():
            # The form uses "people" and "repository", but we expose these
            # as "users" and "repositories", so transmogrify the errors a bit.
            field_errors = self._get_form_errors(form)

            if 'people' in field_errors:
                field_errors['users'] = field_errors.pop('people')

            if 'repository' in field_errors:
                field_errors['repositories'] = field_errors.pop('repository')

            return INVALID_FORM_DATA, {
                'fields': field_errors,
            }

        default_reviewer = form.save()

        return 200, {
            self.item_result_key: default_reviewer,
        }
コード例 #36
0
    def _create_or_update(self, local_site, default_reviewer=None, **kwargs):
        invalid_fields = {}
        form_data = {}

        if 'groups' in kwargs:
            group_names = kwargs['groups'].split(',')
            group_ids = [
                group['pk'] for group in Group.objects.filter(
                    name__in=group_names, local_site=local_site).values('pk')
            ]

            if len(group_ids) != len(group_names):
                invalid_fields['groups'] = [
                    'One or more groups were not found'
                ]

            form_data['groups'] = group_ids

        if 'repositories' in kwargs:
            repo_ids = []

            try:
                repo_ids = [
                    int(repo_id)
                    for repo_id in kwargs['repositories'].split(',')
                ]
            except ValueError:
                invalid_fields['repositories'] = [
                    'One or more repository IDs were not in a valid format.'
                ]

            if repo_ids:
                found_count = Repository.objects.filter(
                    pk__in=repo_ids, local_site=local_site).count()

                if len(repo_ids) != found_count:
                    invalid_fields['repositories'] = [
                        'One or more repositories were not found'
                    ]

            form_data['repository'] = repo_ids

        if 'users' in kwargs:
            usernames = kwargs['users'].split(',')

            user_ids = [
                user['pk'] for user in User.objects.filter(
                    username__in=usernames).values('pk')
            ]

            if len(user_ids) != len(usernames):
                invalid_fields['users'] = ['One or more users were not found']

            form_data['people'] = user_ids

        if invalid_fields:
            return INVALID_FORM_DATA, {'fields': invalid_fields}

        for field in ('name', 'file_regex'):
            if field in kwargs:
                form_data[field] = kwargs[field]

        if local_site:
            form_data['local_site'] = local_site.pk

        form = DefaultReviewerForm(data=form_data,
                                   instance=default_reviewer,
                                   local_site=local_site)

        if not form.is_valid():
            # The form uses "people" and "repository", but we expose these
            # as "users" and "repositories", so transmogrify the errors a bit.
            field_errors = self._get_form_errors(form)

            if 'people' in field_errors:
                field_errors['users'] = field_errors.pop('people')

            if 'repository' in field_errors:
                field_errors['repositories'] = field_errors.pop('repository')

            return INVALID_FORM_DATA, {
                'fields': field_errors,
            }

        default_reviewer = form.save()

        return 200, {
            self.item_result_key: default_reviewer,
        }