Example #1
0
def upload_file(request,data_id=None):
    """
    Display a form for uploading a data file and creating a DataFile
    """
    datafile = use_api.getDatafile(data_id)
    if request.method == 'POST': # If the form has been submitted...
        form = forms.DataFileForm(request.POST, request.FILES, instance=datafile) # A form bound to the POST data
        if form.is_valid(): # All validation rules pass
            uploaded_file=form.cleaned_data["file"]
            name=form.cleaned_data["name"]
            use_api.saveFile(user_id=request.user.id, name=name, file=uploaded_file, datafile=datafile)
            return HttpResponseRedirect(reverse('list_files')) # Redirect after POST
        else:
            if  datafile != None:
                post = reverse('replace_data',args=[datafile.id])
            else:
                post = reverse('upload_file')
    else:
        if  datafile != None:
            form = forms.DataFileForm(instance=datafile)
            post = reverse('replace_data',args=[datafile.id])
        else:
            form = forms.DataFileForm()
            post = reverse('upload_file')

    link = {
        'post'   : post,
        'cancel' : {
            'url'  : reverse('list_files'),
            'name' : "Cancel" if not datafile else "Back",
            }
    }
    if datafile != None:
        link.update(
            {
                'remove'   : reverse('delete_file',args=[datafile.id]),
                'download' : reverse('download',args=[datafile.id]),
                'map'      : reverse('map_data',args=[datafile.id]),
            }
        )
    page = { "title" : "File" }
    if not data_id:
        page.update( title = "Upload File" )

    return render_to_response(
        'UploadFile.html',
        {
          'page'     : page,
          'link'     : link,
          'form'     : form,
          'datafile' : datafile,
        },
        context_instance=RequestContext(request)
    )
Example #2
0
def view_file(request,data_id):
    '''
    Basic view for showing the first part of the "raw" results
    Includes a set of links for picking alternate views
    '''
    data = use_api.getDatafile(data_id)
    datafile = data.file
    datafile.open("r")
    lines = []
    for n in range(0,3):
        lines[n] = datafile.readline()
    datafile.close()
    return render_to_response(
        'UnderConstruction.html',
        {
            "message" : "First lines of file '%s'" % data.name,
            "list"    : lines,
        },
        context_instance=RequestContext(request)
    )
Example #3
0
def map_file(request,data_id):
    '''
    Display a file on a map
    Expand mapdata as necessary to include additional styling Javascript etc.
    Also want to trim the file data to a minimum and compute things like
    the geometry origin (mean of longitude and latitude); plus some way to
    pick the zoom level/extent.
    '''
    datafile = use_api.getDatafile(data_id)
    if not datafile:
        return HttpReverseRedirect(reverse('list_files'))
    if datafile.source=="result":
        # Data file is a job result; view it from there
        job = datafile.results.get(results=datafile) # there really should only be one
        if job:
            return HttpResponseRedirect(reverse('view_job',args=[job.id]))
        # But if there's no job, we'll just fall through to treat it as data

    name = datafile.name
        
    link = {
        'cancel'   : {
            'url'  : reverse('replace_data',args=[data_id]),
            'name' : "Back",
        },
        'download' : reverse('download',args=[data_id]),
        }

    return render_to_response(
        'DrawMap.html',
        {
            "link"    : link,
            "name"    : datafile.name,
            "mapdata" : reverse('jsonp',args=[data_id]),
        },
        context_instance=RequestContext(request)
    )