Ejemplo n.º 1
0
def upload(request, url=None):
    """
        Upload a new file.
    """
    url = utils.clean_path(url)
    path = os.path.join(utils.get_document_root(), url)

    if request.method == 'POST': 
        form = forms.UploadForm(path, data=request.POST, files=request.FILES) 

        if form.is_valid(): 
            file_path = os.path.join(path, form.cleaned_data['file'].name)
            destination = open(file_path, 'wb+')
            for chunk in form.cleaned_data['file'].chunks():
                destination.write(chunk) 

            obj_path = '/'+os.path.join(url, form.cleaned_data['file'].name)
            
            obj, created = models.File.objects.get_or_create(path=obj_path, type=models.File.S_IFREG) 
            
            utils.log_addition(request, obj)

            return redirect('admin_file_manager_list', url=url)
    else:
        form = forms.UploadForm(path)

    return render_to_response("admin/file_manager/upload.html", 
                              {'form': form, 'url': url,},
                              context_instance=template.RequestContext(request))
Ejemplo n.º 2
0
def mkdir(request, url=None):
    "Make a new directory at the current url."

    url = utils.clean_path(url)
    full_path = os.path.join(utils.get_document_root(), url)

    if request.method == 'POST': 
        form = forms.NameForm(full_path, None, request.POST) 

        if form.is_valid(): #Make the directory
            os.mkdir(os.path.join(full_path, form.cleaned_data['name']))

            obj_path = os.path.join(url, form.cleaned_data['name'])
            
            obj, created = models.File.objects.get_or_create(path=obj_path, type=models.File.S_IFDIR) 
            
            utils.log_addition(request, obj)

            return redirect('admin_file_manager_list', url=url)
    else:
        form = forms.NameForm(full_path, None) # An unbound form 

    return render_to_response("admin/file_manager/mkdir.html", 
                              {'form': form, 'url': url,},
                              context_instance=template.RequestContext(request))
Ejemplo n.º 3
0
def create(request, url=None):
    "Create a new text file at the url."

    # Create a new text file.
    url = utils.clean_path(url)
    parent = '/'.join(url.split('/')[:-1])
    full_path = os.path.join(utils.get_document_root(), url)

    if request.method == 'POST': 
        form = forms.CreateForm(full_path, None, request.POST) 

        if form.is_valid(): 
            file = codecs.open(os.path.join(full_path, form.cleaned_data['name']), encoding='utf-8', mode='w+')
            
            file.write(form.cleaned_data['content'].replace('\r\n', '\n'))
            file.close()

            obj_path = '/' + os.path.join(url, form.cleaned_data['name'])

            obj, created = models.File.objects.get_or_create(path=obj_path, type=models.File.S_IFREG)

            utils.log_addition(request, obj)

            return redirect('admin_file_manager_list', url=url)
    else:
        # Read the data from file
        form = forms.CreateForm(full_path, None) # An unbound form 

    return render_to_response("admin/file_manager/create.html", 
                              {'form': form, 'url': url,},
                              context_instance=template.RequestContext(request))
Ejemplo n.º 4
0
def mkln(request, url=None):
    "Make a new link at the current url."

    url = utils.clean_path(url)
    full_path = os.path.join(utils.get_document_root(), url)

    if request.method == 'POST': 
        form = forms.CreateLinkForm(full_path, None, full_path, request.POST) 

        if form.is_valid(): 
            src = os.path.join(full_path, form.cleaned_data['link'])
            dest = os.path.join(full_path, form.cleaned_data['name'])
            
            try:
                relative = os.path.relpath(src, full_path)
            except AttributeError:
                relative = utils.relpath(src, full_path)

            os.symlink(relative, dest)

            obj_path = os.path.join(url, form.cleaned_data['link'])
            
            obj, created = models.File.objects.get_or_create(path=obj_path, type=models.File.S_IFLNK) 
            
            utils.log_addition(request, obj)

            return redirect('admin_file_manager_list', url=url)
    else:
        form = forms.CreateLinkForm(full_path, None, full_path)

    return render_to_response("admin/file_manager/mkln.html", 
                              {'form': form, 'url': url,},
                              context_instance=template.RequestContext(request))
Ejemplo n.º 5
0
def upload(request, url=None):
    """
        Upload a new file.
    """
    url = utils.clean_path(url)
    path = os.path.join(utils.get_document_root(), url)

    if request.method == 'POST':
        form = forms.UploadForm(path, data=request.POST, files=request.FILES)

        if form.is_valid():
            file_path = os.path.join(path, form.cleaned_data['file'].name)
            destination = open(file_path, 'wb+')
            for chunk in form.cleaned_data['file'].chunks():
                destination.write(chunk)

            obj_path = '/' + os.path.join(url, form.cleaned_data['file'].name)

            obj, created = models.File.objects.get_or_create(
                path=obj_path, type=models.File.S_IFREG)

            utils.log_addition(request, obj)

            return redirect('admin_file_manager_list', url=url)
    else:
        form = forms.UploadForm(path)

    return render_to_response(
        "admin/file_manager/upload.html", {
            'form': form,
            'url': url,
        },
        context_instance=template.RequestContext(request))
Ejemplo n.º 6
0
def mkdir(request, url=None):
    "Make a new directory at the current url."

    url = utils.clean_path(url)
    full_path = os.path.join(utils.get_document_root(), url)

    if request.method == 'POST':
        form = forms.NameForm(full_path, None, request.POST)

        if form.is_valid():  #Make the directory
            os.mkdir(os.path.join(full_path, form.cleaned_data['name']))

            obj_path = os.path.join(url, form.cleaned_data['name'])

            obj, created = models.File.objects.get_or_create(
                path=obj_path, type=models.File.S_IFDIR)

            utils.log_addition(request, obj)

            return redirect('admin_file_manager_list', url=url)
    else:
        form = forms.NameForm(full_path, None)  # An unbound form

    return render_to_response(
        "admin/file_manager/mkdir.html", {
            'form': form,
            'url': url,
        },
        context_instance=template.RequestContext(request))
Ejemplo n.º 7
0
def copy(request, url=None):
    "Copy file/directory to a new location."

    # Not really happy about the l/rstrips.
    url = utils.clean_path(url)

    parent = '/'.join(url.split('/')[:-1])
    full_parent = os.path.join(utils.get_document_root(), parent).rstrip('/')
    full_path = os.path.join(utils.get_document_root(), url)
    directory = url.replace(parent, "", 1).lstrip('/')

    if request.method == 'POST':
        form = forms.CopyForm(full_path, '', directory, full_path,
                              request.POST)
        if form.is_valid():
            new_path = os.path.join(form.cleaned_data['parent'],
                                    form.cleaned_data['name'])

            if os.path.isdir(full_path):
                shutil.copytree(full_path, new_path)

                obj_path = os.path.join(url, form.cleaned_data['name'])
                file_type = models.File.S_IFDIR
            else:
                shutil.copy(full_path, new_path)

                # Log the copy.
                obj_path = os.path.join(url, form.cleaned_data['name'])
                file_type = models.File.S_IFREG

            obj, created = models.File.objects.get_or_create(path=obj_path,
                                                             type=file_type)

            utils.log_addition(request, obj)

            return redirect('admin_file_manager_list', url=parent)
    else:
        form = forms.CopyForm(full_path,
                              '',
                              directory,
                              full_path,
                              initial={
                                  'parent': full_parent,
                                  'name': directory
                              })

    return render_to_response(
        "admin/file_manager/copy.html", {
            'form': form,
            'url': url,
            'current': "/%s" % parent,
            'directory': os.path.isdir(full_path)
        },
        context_instance=template.RequestContext(request))
Ejemplo n.º 8
0
def copy(request, url=None):
    "Copy file/directory to a new location."

    # Not really happy about the l/rstrips.
    url = utils.clean_path(url)

    parent = '/'.join(url.split('/')[:-1])
    full_parent = os.path.join(utils.get_document_root(), parent).rstrip('/')
    full_path = os.path.join(utils.get_document_root(), url)
    directory = url.replace(parent, "", 1).lstrip('/')

    if request.method == 'POST': 
        form = forms.CopyForm(full_path, '', directory, full_path, request.POST) 
        if form.is_valid(): 
            new_path = os.path.join(form.cleaned_data['parent'],
                                    form.cleaned_data['name'])
            
            if os.path.isdir(full_path):
                shutil.copytree(full_path, new_path)

                obj_path = os.path.join(url, form.cleaned_data['name'])
                file_type = models.File.S_IFDIR
            else:
                shutil.copy(full_path, new_path) 
                
                # Log the copy.
                obj_path = os.path.join(url, form.cleaned_data['name'])
                file_type = models.File.S_IFREG 
                
            obj, created = models.File.objects.get_or_create(path=obj_path, type=file_type) 

            utils.log_addition(request, obj)

            return redirect('admin_file_manager_list', url=parent)
    else:
        form = forms.CopyForm(full_path, '', directory, full_path, initial={'parent':full_parent, 'name': directory}) 

    return render_to_response("admin/file_manager/copy.html", 
                              {'form': form, 'url': url,
                               'current': "/%s" % parent,
                               'directory': os.path.isdir(full_path)},
                              context_instance=template.RequestContext(request))
Ejemplo n.º 9
0
def create(request, url=None):
    "Create a new text file at the url."

    # Create a new text file.
    url = utils.clean_path(url)
    parent = '/'.join(url.split('/')[:-1])
    full_path = os.path.join(utils.get_document_root(), url)

    if request.method == 'POST':
        form = forms.CreateForm(full_path, None, request.POST)

        if form.is_valid():
            file = codecs.open(os.path.join(full_path,
                                            form.cleaned_data['name']),
                               encoding='utf-8',
                               mode='w+')

            file.write(form.cleaned_data['content'].replace('\r\n', '\n'))
            file.close()

            obj_path = '/' + os.path.join(url, form.cleaned_data['name'])

            obj, created = models.File.objects.get_or_create(
                path=obj_path, type=models.File.S_IFREG)

            utils.log_addition(request, obj)

            return redirect('admin_file_manager_list', url=url)
    else:
        # Read the data from file
        form = forms.CreateForm(full_path, None)  # An unbound form

    return render_to_response(
        "admin/file_manager/create.html", {
            'form': form,
            'url': url,
        },
        context_instance=template.RequestContext(request))
Ejemplo n.º 10
0
def mkln(request, url=None):
    "Make a new link at the current url."

    url = utils.clean_path(url)
    full_path = os.path.join(utils.get_document_root(), url)

    if request.method == 'POST':
        form = forms.CreateLinkForm(full_path, None, full_path, request.POST)

        if form.is_valid():
            src = os.path.join(full_path, form.cleaned_data['link'])
            dest = os.path.join(full_path, form.cleaned_data['name'])

            try:
                relative = os.path.relpath(src, full_path)
            except AttributeError:
                relative = utils.relpath(src, full_path)

            os.symlink(relative, dest)

            obj_path = os.path.join(url, form.cleaned_data['link'])

            obj, created = models.File.objects.get_or_create(
                path=obj_path, type=models.File.S_IFLNK)

            utils.log_addition(request, obj)

            return redirect('admin_file_manager_list', url=url)
    else:
        form = forms.CreateLinkForm(full_path, None, full_path)

    return render_to_response(
        "admin/file_manager/mkln.html", {
            'form': form,
            'url': url,
        },
        context_instance=template.RequestContext(request))