Marthee commited on
Commit
be9ee6a
·
verified ·
1 Parent(s): 78e5766

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +62 -23
app.py CHANGED
@@ -1,19 +1,20 @@
1
  from __future__ import print_function
2
- from flask import Flask, render_template,request,flash , json, url_for,g , redirect , jsonify
3
  import os
4
  import json
5
  import fitz
6
  from PIL import Image
7
  import cv2
8
- import numpy as np
9
- import pilecaps_adr
10
  import base64
11
- from db import dropbox_connect
12
  import db
13
  import cv2
14
  import pandas as pd
15
  import time
16
- from io import BytesIO
 
17
  from flask import Flask, Response
18
  from werkzeug.wsgi import wrap_file
19
  import tameem3_2
@@ -28,12 +29,13 @@ import MC_Templates_API
28
  import tsadropboxretrieval
29
  import doc_search
30
  import google_sheet_Legend
 
31
  import google_sheet_to_xml
32
  from threading import Thread
33
- # import mainDBAlaa
34
  import datetime
35
 
36
-
37
  app = Flask(__name__)
38
 
39
 
@@ -134,17 +136,19 @@ def hexRGB(color):
134
  #_________________________________________________________________________________________________________________________
135
  @app.route('/savebase64Img/',methods=["POST"])
136
  def stringToRGB():
137
- name = request.get_json()
138
- vv=name.get('allvalues')
139
- dataDoc = plan2img( str(vv[0]) )[1]
140
- # vv[0] ->proj name, vv[1] (0/220),vv[2] ->colors , vv[3]->ratio1 , vv[4]->ratio2 , vv[5] -> pdfpath , vv[6] ->imgDrawnOn
 
 
 
 
141
  if vv[1]==220:
142
  imgdata = base64.b64decode(vv[6])
143
  img=Image.open(io.BytesIO(imgdata))
144
  opencv_img= cv2.cvtColor(np.array(img), cv2.COLOR_RGB2BGR)
145
- else:
146
- # vv[0] ->proj name, vv[1] (0/220),vv[2] ->colors , vv[3]->ratio1 , vv[4]->ratio2 , vv[5] -> pdfpath
147
- opencv_img = plan2img( str(vv[0]) )[0]
148
  arr=measureproject(vv,dataDoc,opencv_img)
149
  return jsonify(arr)
150
 
@@ -156,7 +160,7 @@ def measure2_1():
156
  return arr
157
  #MAIN FUNCTION -- calls python code to measure the chosen plan from the interface
158
  # @app.route('/projecttomeasure/<jsdata>',methods=["GET","POST"])
159
- def measureproject(result,dataDoc,img=0):
160
  colorarr=[]
161
  # result = json.loads(jsdata)
162
  pdfpath='/'
@@ -172,14 +176,24 @@ def measureproject(result,dataDoc,img=0):
172
  c=hexRGB(item)
173
  colorarr.append(c)
174
  print('RATIOS=',result[3], result[4])
 
175
  imgPerimeter1,image_new1,SimilarAreaDictionary , colorsUsed,spreadsheet_url, spreadsheetId,list1, pdflink, areas_Perimeters, namepathArr =pilecaps_adr.drawAllContours(dataDoc,img,result[1],colorarr, result[3], result[4], result[0],pdfpath)
176
  _, buffer = cv2.imencode('.png', image_new1)
177
  arr=[base64.b64encode(buffer).decode('utf-8'),SimilarAreaDictionary.to_dict(),spreadsheet_url , spreadsheetId,colorsUsed,list1.to_dict(), pdflink, areas_Perimeters, namepathArr]
178
  ################################# -3.2- #################################
179
  elif result[5][2].startswith('3.2'): #section value - 3.2 floor finishes
180
- outputimg, df_merged , dropboxpdflink , spreadsheetId, spreadsheet_url , list1 = tameem3_2.mainFunction(str(result[0]),result[3], result[4] , pdfpath) #pass arearatio,perimratio
181
- _, buffer = cv2.imencode('.png', outputimg)
182
- arr=[ base64.b64encode(buffer).decode('utf-8') , df_merged.to_dict() , dropboxpdflink , spreadsheetId, spreadsheet_url , list1.to_dict()]
 
 
 
 
 
 
 
 
 
183
  ################################# -2.2- #################################
184
  # elif result[5][2].startswith('2.2'): #section value - 2.2 rc slabs
185
  #add here python code
@@ -307,6 +321,26 @@ def modifyingcalcRefDynamic(img):
307
  #_________________________________________________________________________________________________________________________
308
  #_________________________________________________________________________________________________________________________
309
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
310
  #PIXEL CONVERSION METHOD -- SAVES DOC ON DROPBOX TO BE MEASURED BY USER
311
  @app.route("/pixelimg/<jsdata>",methods=["GET", "POST"])
312
  def getimg(jsdata):
@@ -315,15 +349,21 @@ def getimg(jsdata):
315
  pdfpath,pdflink=tsadropboxretrieval.getPathtoPDF_File(nameofPDF=jsdata[3])
316
  dbxTeam= tsadropboxretrieval.ADR_Access_DropboxTeam('user')
317
  md, res =dbxTeam.files_download(path=pdfpath)
318
- print(pdfpath)
319
  data = res.content
320
- doc=pixelconversion.drawisrotated(data) # .openDrawPDF(data)
 
 
 
 
321
  dbPath='/TSA JOBS/ADR Test/'+jsdata[0]+'/'+jsdata[1]+'/'+jsdata[2]+'/'+'Scale Document' +'/'
322
  dburl=tsadropboxretrieval.uploadanyFile(doc=doc,pdfname=str(jsdata[3]) ,path=dbPath)
323
- areaPixel,perimeterPixel= pixelconversion.getAreaPerimeter(dbPath, str(jsdata[3]))
324
 
325
  outputs=[areaPixel,perimeterPixel , dburl]
326
- return jsonify(outputs)
 
 
 
327
 
328
  #_________________________________________________________________________________________________________________________
329
  #_________________________________________________________________________________________________________________________
@@ -595,7 +635,6 @@ def cvtSummarytoXML(jsdata):
595
 
596
  #_________________________________________________________________________________________________________________________
597
  #_________________________________________________________________________________________________________________________
598
-
599
  def runn():
600
  # app.run(host="127.0.0.1")
601
  from gevent.pywsgi import WSGIServer
 
1
  from __future__ import print_function
2
+ from flask import Flask, render_template,request,flash , json, url_for,g , redirect , jsonify , send_file
3
  import os
4
  import json
5
  import fitz
6
  from PIL import Image
7
  import cv2
8
+ import numpy as np
9
+ import pilecaps_adr
10
  import base64
11
+ from db import dropbox_connect
12
  import db
13
  import cv2
14
  import pandas as pd
15
  import time
16
+ from io import BytesIO, StringIO
17
+ import tempfile
18
  from flask import Flask, Response
19
  from werkzeug.wsgi import wrap_file
20
  import tameem3_2
 
29
  import tsadropboxretrieval
30
  import doc_search
31
  import google_sheet_Legend
32
+ import dxf__omar3_2
33
  import google_sheet_to_xml
34
  from threading import Thread
35
+ import mainDBAlaa
36
  import datetime
37
 
38
+ import ezdxf
39
  app = Flask(__name__)
40
 
41
 
 
136
  #_________________________________________________________________________________________________________________________
137
  @app.route('/savebase64Img/',methods=["POST"])
138
  def stringToRGB():
139
+ vv = eval(request.form.get('answers'))
140
+ opencv_img,dataDoc = plan2img( str(vv[0]) )
141
+ if 'file' not in request.files:
142
+ print('error, No file part in the request')
143
+ else:
144
+ file = request.files['file']
145
+ arr=measureproject(vv,dataDoc,opencv_img,file)
146
+ return jsonify(arr)
147
  if vv[1]==220:
148
  imgdata = base64.b64decode(vv[6])
149
  img=Image.open(io.BytesIO(imgdata))
150
  opencv_img= cv2.cvtColor(np.array(img), cv2.COLOR_RGB2BGR)
151
+
 
 
152
  arr=measureproject(vv,dataDoc,opencv_img)
153
  return jsonify(arr)
154
 
 
160
  return arr
161
  #MAIN FUNCTION -- calls python code to measure the chosen plan from the interface
162
  # @app.route('/projecttomeasure/<jsdata>',methods=["GET","POST"])
163
+ def measureproject(result,dataDoc,img=0,dxffile=0):
164
  colorarr=[]
165
  # result = json.loads(jsdata)
166
  pdfpath='/'
 
176
  c=hexRGB(item)
177
  colorarr.append(c)
178
  print('RATIOS=',result[3], result[4])
179
+ # cv2.imwrite(img,'imgg.png')
180
  imgPerimeter1,image_new1,SimilarAreaDictionary , colorsUsed,spreadsheet_url, spreadsheetId,list1, pdflink, areas_Perimeters, namepathArr =pilecaps_adr.drawAllContours(dataDoc,img,result[1],colorarr, result[3], result[4], result[0],pdfpath)
181
  _, buffer = cv2.imencode('.png', image_new1)
182
  arr=[base64.b64encode(buffer).decode('utf-8'),SimilarAreaDictionary.to_dict(),spreadsheet_url , spreadsheetId,colorsUsed,list1.to_dict(), pdflink, areas_Perimeters, namepathArr]
183
  ################################# -3.2- #################################
184
  elif result[5][2].startswith('3.2'): #section value - 3.2 floor finishes
185
+ print('IN HEREEEE 3.2')
186
+ dxfpath=dxffile.read()
187
+ with tempfile.NamedTemporaryFile(suffix='.dxf', delete=False) as temp_file:
188
+ temp_file.write(dxfpath)
189
+ temp_filename = temp_file.name
190
+ print(temp_filename)
191
+ doc,outputimg, SimilarAreaDictionary ,spreadsheetId, spreadsheet_url , namepathArr=dxf__omar3_2.mainFunctionDrawImgPdf(dataDoc,temp_filename,result[4] , pdfpath,result[0])
192
+ dbPath='/TSA JOBS/ADR Test'+pdfpath+'Measured Plan/'
193
+ pdflink= tsadropboxretrieval.uploadanyFile(doc=doc,path=dbPath,pdfname=result[0]) #doc=doc,pdfname=path,pdfpath=pdfpath+'Measured Plan/'
194
+
195
+ _, buffer = cv2.imencode('.png', outputimg)
196
+ arr=[ base64.b64encode(buffer).decode('utf-8'),SimilarAreaDictionary.to_dict(), spreadsheet_url,spreadsheetId,[],[],pdflink,[],namepathArr]# , spreadsheetId, spreadsheet_url , list1.to_dict()]
197
  ################################# -2.2- #################################
198
  # elif result[5][2].startswith('2.2'): #section value - 2.2 rc slabs
199
  #add here python code
 
321
  #_________________________________________________________________________________________________________________________
322
  #_________________________________________________________________________________________________________________________
323
 
324
+ @app.route('/get-pdf/<jsdata>')
325
+ def get_pdf(jsdata):
326
+ # Download PDF from Dropbox
327
+ pdfpath,pdflink=tsadropboxretrieval.getPathtoPDF_File(nameofPDF=jsdata)
328
+ dbxTeam= tsadropboxretrieval.ADR_Access_DropboxTeam('user')
329
+ md, res =dbxTeam.files_download(path=pdfpath)
330
+ # Convert res.content to a BytesIO object
331
+ pdf_stream = io.BytesIO(res.content)
332
+ # Attempt to seek to the beginning of the BytesIO stream
333
+ pdf_stream.seek(0)
334
+ # Send file
335
+ response = send_file(
336
+ pdf_stream,
337
+ as_attachment=True,
338
+ mimetype='application/pdf',
339
+ download_name='downloaded_file.pdf'
340
+ )
341
+ return response
342
+
343
+
344
  #PIXEL CONVERSION METHOD -- SAVES DOC ON DROPBOX TO BE MEASURED BY USER
345
  @app.route("/pixelimg/<jsdata>",methods=["GET", "POST"])
346
  def getimg(jsdata):
 
349
  pdfpath,pdflink=tsadropboxretrieval.getPathtoPDF_File(nameofPDF=jsdata[3])
350
  dbxTeam= tsadropboxretrieval.ADR_Access_DropboxTeam('user')
351
  md, res =dbxTeam.files_download(path=pdfpath)
 
352
  data = res.content
353
+ print('jsdata',jsdata)
354
+ if str(jsdata[2]).startswith('1.0'):
355
+ doc,areaPixel,perimeterPixel=pixelconversion.drawisrotated(data,300) # .openDrawPDF(data)
356
+ else:
357
+ doc,areaPixel,perimeterPixel,pdfdata=pixelconversion.drawisrotated(data) # .openDrawPDF(data)
358
  dbPath='/TSA JOBS/ADR Test/'+jsdata[0]+'/'+jsdata[1]+'/'+jsdata[2]+'/'+'Scale Document' +'/'
359
  dburl=tsadropboxretrieval.uploadanyFile(doc=doc,pdfname=str(jsdata[3]) ,path=dbPath)
360
+ # areaPixel,perimeterPixel= pixelconversion.getAreaPerimeter(dbPath, str(jsdata[3]))
361
 
362
  outputs=[areaPixel,perimeterPixel , dburl]
363
+ # pdf_data = io.BytesIO(res.content)
364
+ # pdf_data.seek(0)
365
+
366
+ return jsonify(outputs) #, send_file(pdf_data, as_attachment=True, mimetype='application/pdf', download_name='downloaded_file.pdf')
367
 
368
  #_________________________________________________________________________________________________________________________
369
  #_________________________________________________________________________________________________________________________
 
635
 
636
  #_________________________________________________________________________________________________________________________
637
  #_________________________________________________________________________________________________________________________
 
638
  def runn():
639
  # app.run(host="127.0.0.1")
640
  from gevent.pywsgi import WSGIServer