forked from expo/troggle
fixed serving expofiles from test server
This commit is contained in:
@@ -1,113 +1,56 @@
|
||||
import os, stat
|
||||
import re
|
||||
import urllib.request, urllib.parse, urllib.error
|
||||
from pathlib import Path
|
||||
from urllib.parse import urljoin, unquote as urlunquote
|
||||
from urllib.request import urlopen
|
||||
|
||||
from django.conf import settings
|
||||
from django.shortcuts import render_to_response
|
||||
from django.shortcuts import render
|
||||
from django.http import HttpResponse, Http404
|
||||
|
||||
from troggle.core.models_survex import ScansFolder, SingleScan, SurvexBlock, TunnelFile
|
||||
from troggle.flatpages import views as flatviews
|
||||
import parsers.surveys
|
||||
|
||||
|
||||
|
||||
def fa_readFile(*path):
|
||||
try:
|
||||
f = open(os.path.join(settings.FILES, *path))
|
||||
except:
|
||||
f = urllib.request.urlopen(settings.FILES+"download/")
|
||||
return f.read()
|
||||
|
||||
def upload(request, path):
|
||||
pass
|
||||
|
||||
def download(request, path):
|
||||
#try:
|
||||
|
||||
return HttpResponse(fa_readFile(path), content_type=flatviews.getmimetype(path))
|
||||
#except:
|
||||
# raise Http404
|
||||
|
||||
def UniqueFile(fname):
|
||||
while True:
|
||||
if not os.path.exists(fname):
|
||||
break
|
||||
mname = re.match("(.*?)(?:-(\d+))?\.(png|jpg|jpeg)$(?i)", fname)
|
||||
if mname:
|
||||
fname = "%s-%d.%s" % (mname.group(1), int(mname.group(2) or "0") + 1, mname.group(3))
|
||||
return fname
|
||||
|
||||
|
||||
# join it all up and then split them off for the directories that don't exist
|
||||
# anyway, this mkdir doesn't work
|
||||
def SaveImageInDir(name, imgdir, project, fdata, bbinary):
|
||||
print(("hihihihi", fdata, settings.SURVEYS))
|
||||
fimgdir = os.path.join(settings.SURVEYS, imgdir)
|
||||
if not os.path.isdir(fimgdir):
|
||||
print("*** Making directory", fimgdir)
|
||||
os.path.mkdir(fimgdir)
|
||||
fprojdir = os.path.join(fimgdir, project)
|
||||
if not os.path.isdir(fprojdir):
|
||||
print("*** Making directory", fprojdir)
|
||||
os.path.mkdir(fprojdir)
|
||||
print("hhh")
|
||||
|
||||
fname = os.path.join(fprojdir, name)
|
||||
print(fname, "fff")
|
||||
fname = UniqueFile(fname)
|
||||
|
||||
p2, p1 = os.path.split(fname)
|
||||
p3, p2 = os.path.split(p2)
|
||||
p4, p3 = os.path.split(p3)
|
||||
res = os.path.join(p3, p2, p1)
|
||||
|
||||
print("saving file", fname)
|
||||
fout = open(fname, (bbinary and "wb" or "w"))
|
||||
fout.write(fdata.read())
|
||||
fout.close()
|
||||
res = os.path.join(imgdir, name)
|
||||
return res.replace("\\", "/")
|
||||
'''Some of these views serve files as binary blobs, and simply set the mime type based on the file extension,
|
||||
as does the urls.py dispatcher which sends them here. Here they should actually have the filetype checked
|
||||
by looking inside the file before being served.
|
||||
'''
|
||||
|
||||
def surveyscansfolder(request, path):
|
||||
#print [ s.walletname for s in ScansFolder.objects.all() ]
|
||||
scansfolder = ScansFolder.objects.get(walletname=urllib.parse.unquote(path))
|
||||
return render_to_response('scansfolder.html', { 'scansfolder':scansfolder, 'settings': settings })
|
||||
scansfolder = ScansFolder.objects.get(walletname=urlunquote(path))
|
||||
return render(request, 'scansfolder.html', { 'scansfolder':scansfolder, 'settings': settings })
|
||||
|
||||
def surveyscansingle(request, path, file):
|
||||
scansfolder = ScansFolder.objects.get(walletname=urllib.parse.unquote(path))
|
||||
'''sends a single binary file to the user,
|
||||
'''
|
||||
scansfolder = ScansFolder.objects.get(walletname=urlunquote(path))
|
||||
singlescan = SingleScan.objects.get(scansfolder=scansfolder, name=file)
|
||||
print("SSS {} {} :{}:".format(path, file, flatviews.getmimetype(file)))
|
||||
return HttpResponse(content=open(singlescan.ffile,"rb"), content_type=flatviews.getmimetype(file))
|
||||
#return render_to_response('scansfolder.html', { 'scansfolder':scansfolder, 'settings': settings })
|
||||
# print(" - surveyscansingle {}:{}:{}:".format(path, file, flatviews.getmimetype(file)))
|
||||
return HttpResponse(content=open(singlescan.ffile,"rb"), content_type=flatviews.getmimetype(file)) # any type of image
|
||||
|
||||
def expofilessingle(request, filepath):
|
||||
# defaults to content_type="text/pain" needs fixing for PDFs
|
||||
fn=urllib.parse.unquote(filepath)
|
||||
return HttpResponse(content=open(settings.EXPOFILES+fn,"rb"))
|
||||
|
||||
def cssfilessingle(request, filepath):
|
||||
fn=urllib.parse.unquote(filepath)
|
||||
return HttpResponse(content=open(settings.MEDIA_ROOT+fn,"r"),content_type="text/css")
|
||||
|
||||
def surveyscansfolders(request):
|
||||
manyscansfolders = ScansFolder.objects.all()
|
||||
return render_to_response('manyscansfolders.html', { 'manyscansfolders':manyscansfolders, 'settings': settings })
|
||||
return render(request, 'manyscansfolders.html', { 'manyscansfolders':manyscansfolders, 'settings': settings })
|
||||
|
||||
|
||||
def tunneldata(request):
|
||||
tunnelfiles = TunnelFile.objects.all()
|
||||
return render_to_response('tunnelfiles.html', { 'tunnelfiles':tunnelfiles, 'settings': settings })
|
||||
return render(request, 'tunnelfiles.html', { 'tunnelfiles':tunnelfiles, 'settings': settings })
|
||||
|
||||
|
||||
def tunnelfile(request, path):
|
||||
tunnelfile = TunnelFile.objects.get(tunnelpath=urllib.parse.unquote(path))
|
||||
tfile = os.path.join(settings.TUNNEL_DATA, tunnelfile.tunnelpath)
|
||||
return HttpResponse(content=open(tfile), content_type="text/plain")
|
||||
def tunnelfilesingle(request, path):
|
||||
'''sends a single binary file to the user, We should have a renderer that syntax-colours this Tunnel xml
|
||||
'''
|
||||
tunnelfile = TunnelFile.objects.get(tunnelpath=urlunquote(path))
|
||||
tfile = Path(settings.TUNNEL_DATA, tunnelfile.tunnelpath)
|
||||
return HttpResponse(content=open(tfile), content_type="text/xhtml") # for display not download
|
||||
|
||||
def tunnelfileupload(request, path):
|
||||
tunnelfile = TunnelFile.objects.get(tunnelpath=urllib.parse.unquote(path))
|
||||
tfile = os.path.join(settings.TUNNEL_DATA, tunnelfile.tunnelpath)
|
||||
tunnelfile = TunnelFile.objects.get(tunnelpath=urlunquote(path))
|
||||
tfile = Path(settings.TUNNEL_DATA, tunnelfile.tunnelpath)
|
||||
|
||||
project, user, password, tunnelversion = request.POST["tunnelproject"], request.POST["tunneluser"], request.POST["tunnelpassword"], request.POST["tunnelversion"]
|
||||
print((project, user, tunnelversion))
|
||||
|
||||
Reference in New Issue
Block a user