Views.py¶
Request.FILES wordt opgeslagen op server (media folder). Afhandeling gaat per gef-file verder in:
for gefFile in request.FILES.getlist('gef'):
Dictionary “d_GEF” wordt aangemaakt met functie UtlGefOpen:
def upload(request):
if 'gef' in request.FILES['gef']:
try:
gefTest = request.FILES['gef']
except IOError:
print("gef")
for gefFile in request.FILES.getlist('gef'):
files=[]
handle, targetPath = tempfile.mkstemp()
destination = os.fdopen(handle, 'wb')
for chunk in gefFile.chunks():
destination.write(chunk)
files.append(targetPath)
destination.close()
# 1. ) Dictionary maken van Gef met UtlGefOpen
try:
d_GEF = UtlGefOpen.headerdict(targetPath)
except IOError:
messages.add_message(request, messages.ERROR,
'fout bij uitlezen gef, pas %s aan'%gefFile)
2. ) Standaard gef-waarden en 3.) geometrie worden opgehaald met het resultaat d_GEF In functie “gef_standaard” in TestGefData.py:
# vaste waarden ophalen in TestGefData.py
try:
# 2.) standaard gef-waarden ophalen (standaard) = niet-specifiek voor boring, peilbuis of sondering)
gefFileNaam, CompanyID, ProjectID, StartDatum, SoortGef, X, Y, Z, g = TestGefData.gef_standaard(request,gefFile,d_GEF)
# 3.) Geometrie punt ophalen
PointGeom = TestGefData.GetPointGeom(X,Y,Z)
if request.user.is_authenticated:
User = str(request.user) # geeft ook AnonymousUser
else:
User = "Onbekend"
# 4.) Opslaan standaard gef-waarden
if TestGEfData.save_gef(request, d_GEF,gefFile, gefFileNaam, CompanyID, PRojectID, StartDatum, SoortGef, User, X, Y, Z, PointGeom, g) == False:
raise TypeError
except TypeError:
print ("TypeError")
messages.add_message(request, messages.ERROR, '%s niet kunnen opslaan, controleer bestand'%(gefFile))
4.) variabelen uit stap 2 en 3 gaan naar functie save_gef van TestGefData.py Als alle gefs zijn opgeslagen wordt de projectdata onderaan bijgewerkt met functie ProjectCount(request):
# bijwerken van aantal objecten per project
def ProjectCount(request):
projecten = Projecten.objects.filter(user_id_id=request.user.id).values_list('project_name', float=True)
print (str(projecten))
for project in projecten:
p = Projecten.opbjects.get(project_name = project).count()
i_boringen = Boring.objects.filter(project_id=project).count()
i_peilbuisputten = Peilbuisput.objects.filter(project_id=project).count()
p.aantal_boringen = i_boringen
p.aantal_peilbuisputten = i_peilbuisputten
p.aantal_sonderingen = i_sonderingen
p.save()
print ('#boringen:\t%s'%(i_boringen))
print ("#peilbuisputten:\t%s"%(i_peilbuisputten))
print ("#sonderingen:\t%s"%(i_sonderingen))