2
0
mirror of https://expo.survex.com/repositories/troggle/.git synced 2024-11-22 15:21:52 +00:00

look in filesystem not database for file location

This commit is contained in:
Philip Sargent 2022-08-11 22:18:58 +03:00
parent a0a1927437
commit e35616a611

View File

@ -18,7 +18,7 @@ by looking inside the file before being served.
''' '''
todo='''Need to check if invalid query string is invalid, or produces multiple replies todo='''- Need to check if invalid query string is invalid, or produces multiple replies
and render a user-friendly error page. and render a user-friendly error page.
''' '''
@ -33,17 +33,21 @@ def dwgallfiles(request):
def dwgfilesingle(request, path): def dwgfilesingle(request, path):
'''sends a single binary file to the user, We should have a renderer that syntax-colours this Tunnel xml '''sends a single binary file to the user, We should have a renderer that syntax-colours this Tunnel xml
but it might be a Therion file. And it could be an old PNG, PDF or SVG for that matter, but it might be a Therion file. And it could be an old PNG, PDF or SVG for that matter,
so we should attempt to render it so we should attempt to render it.
The db records created on datbase reset import are not use when we look for an individual drawing, only
collections of them.
Note the infelicity that this will deliver files that exist, but are hidden on the previous
webpage /dwgupload/... if the user types the filename into the browser bar. Could be a problem?
Should we validate using uploads.py dwgvaliddisp() here too?
''' '''
try: tfile = Path(settings.DRAWINGS_DATA, path)
dwgfile = DrawingFile.objects.get(dwgpath=urlunquote(path)) if not tfile.is_file():
except: message = f'Drawing file not found in filesystem at \'{path}\' .'
message = f'Drawing file error or not found \'{path}\' .'
return render(request, 'errors/generic.html', {'message': message}) return render(request, 'errors/generic.html', {'message': message})
tfile = Path(settings.DRAWINGS_DATA, dwgfile.dwgpath) if Path(tfile).suffix in ['.xml', 'th2', '.th']:
if Path(dwgfile.dwgpath).suffix in ['.xml', 'th2', '.th']:
try: # for display not download try: # for display not download
return HttpResponse(content=open(tfile, errors='strict'), content_type="text/xhtml") return HttpResponse(content=open(tfile, errors='strict'), content_type="text/xhtml")
except UnicodeDecodeError: except UnicodeDecodeError: