示例#1
0
def project_delete(request, project_slug):
    """Project delete confirmation view

    Make a project as deleted on POST, otherwise show a form asking for
    confirmation of delete.
    """
    project = get_object_or_404(Project.objects.for_admin_user(request.user),
                                slug=project_slug)

    if request.method == 'POST':
        # Support hacky "broadcast" with MULTIPLE_APP_SERVERS setting,
        # otherwise put in normal celery queue
        for server in getattr(settings, "MULTIPLE_APP_SERVERS", ['celery']):
            log.info('Removing files on %s' % server)
            remove_dir.apply_async(
                args=[project.doc_path],
                queue=server,
            )

        # Delete the project and everything related to it
        project.delete()
        messages.success(request, _('Project deleted'))
        project_dashboard = reverse('projects_dashboard')
        return HttpResponseRedirect(project_dashboard)

    return render_to_response('projects/project_delete.html',
                              {'project': project},
                              context_instance=RequestContext(request))
示例#2
0
def wipe_version(request, project_slug, version_slug):
    version = get_object_or_404(Version, project__slug=project_slug,
                                slug=version_slug)
    if request.user not in version.project.users.all():
        raise Http404("You must own this project to wipe it.")

    if request.method == 'POST':
        del_dirs = [
            os.path.join(version.project.doc_path, 'checkouts', version.slug),
            os.path.join(version.project.doc_path, 'envs', version.slug),
            os.path.join(version.project.doc_path, 'conda', version.slug),
        ]
        for del_dir in del_dirs:
            # Support hacky "broadcast" with MULTIPLE_BUILD_SERVERS setting,
            # otherwise put in normal celery queue
            for server in getattr(settings, "MULTIPLE_BUILD_SERVERS", ['celery']):
                log.info('Removing files on %s' % server)
                remove_dir.apply_async(
                    args=[del_dir],
                    queue=server,
                )
        return redirect('project_version_list', project_slug)
    else:
        return render_to_response('wipe_version.html',
                                  context_instance=RequestContext(request))
示例#3
0
def wipe_version(request, project_slug, version_slug):
    version = get_object_or_404(Version,
                                project__slug=project_slug,
                                slug=version_slug)
    if request.user not in version.project.users.all():
        raise Http404("You must own this project to wipe it.")

    if request.method == 'POST':
        del_dirs = [
            version.project.checkout_path(version.slug),
            version.project.venv_path(version.slug)
        ]
        for del_dir in del_dirs:
            # Support hacky "broadcast" with MULTIPLE_BUILD_SERVERS setting,
            # otherwise put in normal celery queue
            for server in getattr(settings, "MULTIPLE_BUILD_SERVERS",
                                  ['celery']):
                log.info('Removing files on %s' % server)
                remove_dir.apply_async(
                    args=[del_dir],
                    queue=server,
                )
        return redirect('project_version_list', project_slug)
    else:
        return render_to_response('wipe_version.html',
                                  context_instance=RequestContext(request))
示例#4
0
def project_delete(request, project_slug):
    """Project delete confirmation view

    Make a project as deleted on POST, otherwise show a form asking for
    confirmation of delete.
    """
    project = get_object_or_404(Project.objects.for_admin_user(request.user),
                                slug=project_slug)

    if request.method == 'POST':
        # Support hacky "broadcast" with MULTIPLE_APP_SERVERS setting,
        # otherwise put in normal celery queue
        for server in getattr(settings, "MULTIPLE_APP_SERVERS", ['celery']):
            log.info('Removing files on %s' % server)
            remove_dir.apply_async(
                args=[project.doc_path],
                queue=server,
            )

        # Delete the project and everything related to it
        project.delete()
        messages.success(request, _('Project deleted'))
        project_dashboard = reverse('projects_dashboard')
        return HttpResponseRedirect(project_dashboard)

    return render_to_response(
        'projects/project_delete.html',
        {'project': project},
        context_instance=RequestContext(request)
    )