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) )
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) )
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) )