示例#1
0
    def test_wipe_version_via_slugs_same_version_slug_with_diff_proj(
            self, mock_broadcast):
        project_2 = get(Project)
        version_2 = get(Version, project=project_2, slug=self.version.slug)
        wipe_version_via_slugs(
            version_slug=version_2.slug,
            project_slug=project_2.slug,
        )

        expected_del_dirs = [
            os.path.join(version_2.project.doc_path, 'checkouts',
                         version_2.slug),
            os.path.join(version_2.project.doc_path, 'envs', version_2.slug),
            os.path.join(version_2.project.doc_path, 'conda', version_2.slug),
        ]

        mock_broadcast.assert_has_calls([
            call(type='build',
                 task=remove_dirs,
                 args=[(expected_del_dirs[0], )]),
            call(type='build',
                 task=remove_dirs,
                 args=[(expected_del_dirs[1], )]),
            call(type='build',
                 task=remove_dirs,
                 args=[(expected_del_dirs[2], )]),
        ],
                                        any_order=False)
def wipe_version(request, project_slug, version_slug):
    version = get_object_or_404(
        Version.internal.all(),
        project__slug=project_slug,
        slug=version_slug,
    )
    # We need to check by ``for_admin_user`` here to allow members of the
    # ``Admin`` team (which doesn't own the project) under the corporate site.
    if version.project not in Project.objects.for_admin_user(
            user=request.user):
        raise Http404('You must own this project to wipe it.')

    if request.method == 'POST':
        wipe_version_via_slugs(
            version_slug=version_slug,
            project_slug=project_slug,
        )
        return redirect('project_version_list', project_slug)
    return render(
        request,
        'wipe_version.html',
        {
            'version': version,
            'project': version.project
        },
    )
示例#3
0
 def wipe_selected_versions(self, request, queryset):
     """Wipes the selected versions."""
     for version in queryset:
         wipe_version_via_slugs(version_slug=version.slug,
                                project_slug=version.project.slug)
         self.message_user(request,
                           'Wiped {}.'.format(version.slug),
                           level=messages.SUCCESS)
示例#4
0
 def test_wipe_version_via_slug_wrong_param(self, mock_broadcast):
     self.assertFalse(Version.objects.filter(slug='wrong-slug').exists())
     with self.assertRaises(Http404):
         wipe_version_via_slugs(
             version_slug='wrong-slug',
             project_slug=self.version.project.slug
         )
     mock_broadcast.assert_not_called()
示例#5
0
 def wipe_selected_versions(self, request, queryset):
     """Wipes the selected versions."""
     for version in queryset:
         wipe_version_via_slugs(
             version_slug=version.slug,
             project_slug=version.project.slug
         )
         self.message_user(
             request,
             'Wiped {}.'.format(version.slug),
             level=messages.SUCCESS
         )
示例#6
0
    def test_wipe_version_via_slug(self, mock_broadcast):
        wipe_version_via_slugs(
            version_slug=self.version.slug,
            project_slug=self.version.project.slug
        )
        expected_del_dirs = [
            os.path.join(self.version.project.doc_path, 'checkouts', self.version.slug),
            os.path.join(self.version.project.doc_path, 'envs', self.version.slug),
            os.path.join(self.version.project.doc_path, 'conda', self.version.slug),
        ]

        mock_broadcast.assert_has_calls(
            [
                call(type='build', task=remove_dirs, args=[(expected_del_dirs[0],)]),
                call(type='build', task=remove_dirs, args=[(expected_del_dirs[1],)]),
                call(type='build', task=remove_dirs, args=[(expected_del_dirs[2],)]),
            ],
            any_order=False
        )
示例#7
0
def wipe_version(request, project_slug, version_slug):
    version = get_object_or_404(
        Version,
        project__slug=project_slug,
        slug=version_slug,
    )
    # We need to check by ``for_admin_user`` here to allow members of the
    # ``Admin`` team (which doesn't own the project) under the corporate site.
    if version.project not in Project.objects.for_admin_user(user=request.user):
        raise Http404('You must own this project to wipe it.')

    if request.method == 'POST':
        wipe_version_via_slugs(
            version_slug=version_slug,
            project_slug=project_slug
        )
        return redirect('project_version_list', project_slug)
    return render(
        request,
        'wipe_version.html',
        {'version': version, 'project': version.project},
    )
    def test_wipe_version_via_slugs_same_version_slug_with_diff_proj(self, mock_broadcast):
        project_2 = get(Project)
        version_2 = get(Version, project=project_2, slug=self.version.slug)
        wipe_version_via_slugs(
            version_slug=version_2.slug,
            project_slug=project_2.slug,
        )

        expected_del_dirs = [
            os.path.join(version_2.project.doc_path, 'checkouts', version_2.slug),
            os.path.join(version_2.project.doc_path, 'envs', version_2.slug),
            os.path.join(version_2.project.doc_path, 'conda', version_2.slug),
        ]

        mock_broadcast.assert_has_calls(
            [
                call(type='build', task=remove_dirs, args=[(expected_del_dirs[0],)]),
                call(type='build', task=remove_dirs, args=[(expected_del_dirs[1],)]),
                call(type='build', task=remove_dirs, args=[(expected_del_dirs[2],)]),
            ],
            any_order=False
        )