pdf v2

parent 2f9a1f16
......@@ -18,8 +18,6 @@ from django.views.decorators.csrf import csrf_exempt
from GeoInt_SIDT.settings import BASE_URL
from catalog.models import Purchase
from reportlab.pdfgen.canvas import Canvas
from reportlab.lib.pagesizes import letter
from reportlab.lib.styles import getSampleStyleSheet
......@@ -30,6 +28,7 @@ from reportlab.graphics.charts.barcharts import VerticalBarChart
from reportlab.graphics.shapes import Drawing, String
from reportlab.graphics.charts.textlabels import Label, LabelOffset
from reportlab.graphics.charts.legends import Legend
# -------------------------------------------------------------------------------
########### lee archivo de configuración ################
......@@ -47,12 +46,11 @@ def report_L2ASCL(request, purchase_id):
template = "sclData.html"
reporteDir = 'mask'
folders = ""
purchase = Purchase.objects.values('user__email','is_public').filter(pk=purchase_id)
purchase = Purchase.objects.values('user__email', 'is_public').filter(pk=purchase_id)
email = purchase[0]['user__email']
path = USERS_PATH + email + '/' + purchase_id + '/'
scl_data_path = USERS_PATH + email + "/" + purchase_id + "/scl_data.json"
with open(USERS_PATH + email + "/" + purchase_id + "/findProducts.json") as p:
dataProduct = json.load(p)
startDate = str(dataProduct['startDate'])[:4] + '-' + str(dataProduct['startDate'])[4:6] + '-' + str(
......@@ -60,29 +58,31 @@ def report_L2ASCL(request, purchase_id):
endDate = str(dataProduct['endDate'])[:4] + '-' + str(dataProduct['endDate'])[4:6] + '-' + str(
dataProduct['endDate'])[6:8]
graphData, label, defaultLabel, defaultDataset,datasets = ProcessChartData(scl_data_path)
graphData, label, defaultLabel, defaultDataset, datasets = ProcessChartData(scl_data_path)
image_path = email + "/" + purchase_id + "/" + "out/" + reporteDir + "/TCI/thumbnails/"
SCL_path = email + "/" + purchase_id + "/" + "out/" + reporteDir + "/SCL/"
PDFGenerator(request, path, reporteDir,datasets)
if os.path.exists(path + reporteDir + ".pdf"):
print ("si existe")
else:
PDFGenerator(request, path, reporteDir, datasets)
return render(request, template, {"graphData": json.dumps(graphData),
"report_name": "SCL Image Classification Data(Km²)",
"startDate": startDate, "endDate": endDate,
"clouds": dataProduct['clouds'], "platform": dataProduct['platform'],
"productLevel": dataProduct['productLevel'], "IMAGE_PATH": image_path,
"SCL_PATH": SCL_path, 'dafaultLabel': defaultLabel,
'defaultDataSet': defaultDataset, "folders": folders,
"zone": reporteDir, "purchaseID": purchase_id,
"labels": graphData['data']['labels'],
"polygon": dataProduct['wkt'],"email": email})
"report_name": "SCL Image Classification Data(Km²)",
"startDate": startDate, "endDate": endDate,
"clouds": dataProduct['clouds'], "platform": dataProduct['platform'],
"productLevel": dataProduct['productLevel'], "IMAGE_PATH": image_path,
"SCL_PATH": SCL_path, 'dafaultLabel': defaultLabel,
'defaultDataSet': defaultDataset, "folders": folders,
"zone": reporteDir, "purchaseID": purchase_id,
"labels": graphData['data']['labels'],
"polygon": dataProduct['wkt'], "email": email})
# -------------------------------------------------------------------------------def Reports(request):
def Reports(request):
progress = 0
productList = []
......@@ -90,7 +90,8 @@ def Reports(request):
folders = []
zip = ""
product_list = Purchase.objects.values('id', 'productList', 'aggreg_date', 'search__clouds', 'search__startDate',
'search__endDate', 'search__process_id__name', 'search__search_name', 'is_public').filter(
'search__endDate', 'search__process_id__name', 'search__search_name',
'is_public').filter(
user_id=request.user.id, purchased=1)
for producto in product_list:
log_info = USERS_PATH + request.user.email + "/" + str(producto['id']) + "/L2ASCL_AreaProcessing.log"
......@@ -133,22 +134,19 @@ def Reports(request):
print("folder out noes not exists")
else:
for files in os.listdir(absolute_path):
if files=='scl_data.json':
#print(files)
if files == 'scl_data.json':
# print(files)
initial_folder = files[:8]
break
elif files.endswith('_sclData.json'):
initial_folder = files[:14]
#if len(folders) == 0:
# initial_folder = "../#"
#else:
# initial_folder = folders.pop(0) + "_sclData"
# if len(folders) == 0:
# initial_folder = "../#"
# else:
# initial_folder = folders.pop(0) + "_sclData"
print(initial_folder)
zip_path = USERS_PATH + request.user.email + "/" + str(producto['id'])
# print(zip_path)
......@@ -193,7 +191,7 @@ def wsProcessProgress(request):
if request.is_ajax():
progress = 0
productList2 = []
product_list = Purchase.objects.values('id','user__email', 'productList', 'aggreg_date', 'search__clouds',
product_list = Purchase.objects.values('id', 'user__email', 'productList', 'aggreg_date', 'search__clouds',
'search__startDate', 'search__endDate',
'search__process_id__name', 'progress').filter(user_id=request.user.id,
purchased=1)
......@@ -240,6 +238,7 @@ def wsProcessProgress(request):
else:
raise Http404
# tiles
def tiles(request, purchase_id, report, layer_type, date, z, x, y):
purchase = Purchase.objects.values('user__email', 'is_public').filter(pk=purchase_id)
......@@ -271,8 +270,6 @@ def tileinfo(request):
purchase = Purchase.objects.values('user__email').filter(pk=int(req['purchase_id'][0]))
email = purchase[0]['user__email']
resource_path = "{}{}/{}/out/{}/TCI/tiles/{}_TCI_10m/tilemapresource.xml".format(
USERS_PATH, email, req['purchase_id'][0], req['report'][0],
req['date'][0]
......@@ -281,7 +278,6 @@ def tileinfo(request):
if not os.path.exists(resource_path):
raise Http404
tree = ET.parse(resource_path)
bounding_box = tree.find('BoundingBox')
sets = [int(set.get('order')) for set in tree.findall('TileSets/TileSet')]
......@@ -305,7 +301,6 @@ def tileinfo(request):
raise Http404
# ------------------------------------------------------------------------
# take the data and make ready for paragraph
def dataToParagraph(name, data):
......@@ -322,42 +317,37 @@ def dataToParagraph(name, data):
# take the data and convert to list of strings ready for table
def dataToTable(name, data):
data = [str(x) for x in data]
data.insert(0, name)
data.insert(0, name)
return data
# create the table for our document
def myTable(path1,path2,basefile):
def myTable(path1, path2, basefile):
image1 = Image(path1, height=300, width=200, mask='auto')
path, dirs, files = next(os.walk(path2))
for file in files:
if file.startswith(basefile[:8]):
if file.endswith('.tif') and not file.endswith('0.tif'):
#image2 = Image(path2 + file, height=300, width=200, mask='auto')
# image2 = Image(path2 + file, height=300, width=200, mask='auto')
image2 = image1
data = [['TCI', 'SCL'], [image1, image2]]
t = Table(data)
GRID_STYLE = TableStyle(
[
('ALIGN',(0,0),(-1,-1),'CENTER'),
('VALIGN',(0,0),(-1,-1),'TOP'),
],
[
('ALIGN', (0, 0), (-1, -1), 'CENTER'),
('VALIGN', (0, 0), (-1, -1), 'TOP'),
],
)
t.setStyle(GRID_STYLE)
return t
# create a bar chart and specify positions, sizes, and colors
def myBarChart(data,maxi,fecha):
def myBarChart(data, maxi, fecha):
drawing = Drawing(600, 200)
bc = VerticalBarChart()
......@@ -378,7 +368,7 @@ def myBarChart(data,maxi,fecha):
bc.categoryAxis.labels.boxAnchor = 'ne'
bc.categoryAxis.labels.dx = 8
bc.categoryAxis.labels.dy = -2
catNames = fecha[6:8]+"/"+fecha[4:6]+"/"+fecha[0:4]
catNames = fecha[6:8] + "/" + fecha[4:6] + "/" + fecha[0:4]
catNames = catNames.split()
bc.categoryAxis.categoryNames = catNames
......@@ -390,7 +380,7 @@ def myBarChart(data,maxi,fecha):
bc.bars[4].fillColor = colors.darkgray
bc.bars[5].fillColor = colors.green
bc.bars[6].fillColor = colors.yellow
#bc.bars[7].fillColor = colors.black
# bc.bars[7].fillColor = colors.black
bc.barSpacing = 1
bc.categoryAxis.labels.dx = 8
......@@ -425,8 +415,8 @@ def myBarLegend(drawing, labels):
(colors.lightblue, labels[3]),
(colors.darkgray, labels[4]),
(colors.green, labels[5]),
(colors.yellow, labels[6]+"km2"),
#(colors.black, labels[7]),
(colors.yellow, labels[6] + "km2"),
# (colors.black, labels[7]),
]
swatches.colorNamePairs = items
......@@ -436,7 +426,6 @@ def myBarLegend(drawing, labels):
def PDFGenerator(request, ruta, reporteDir, datasets):
thumbs = ruta + 'out/' + reporteDir + '/TCI/thumbnails/'
SCL = ruta + 'out/' + reporteDir + '/SCL/split/'
story = []
......@@ -445,26 +434,29 @@ def PDFGenerator(request, ruta, reporteDir, datasets):
styleN = styles['Normal']
# Header
im = Image(USERS_PATH + 'header.png',width=300, height=70)
im = Image(USERS_PATH + 'header.png', width=300, height=70)
im.hAlign = 'CENTER'
story.append(im)
story.append(PageBreak())
path, dirs, files = next(os.walk(thumbs))
print (len(files))
for index, file in enumerate(files):
values=[]
labels =[]
values = []
labels = []
maxi = 0
for data in datasets:
#for data in datasets:
for data in datasets[:len(datasets) - 1]:
if maxi > data['data'][index]:
maxi = maxi
else:
maxi = data['data'][index]
#print (maxi)
values.append([data['data'][index]])
labels.append(data['label'])
path1 = thumbs+file
path1 = thumbs + file
# Header
im = Image(USERS_PATH + 'header.png', width=300, height=70)
im.hAlign = 'CENTER'
......@@ -473,41 +465,38 @@ def PDFGenerator(request, ruta, reporteDir, datasets):
story.append(Spacer(1, .5 * inch))
# add the title
#story.append(Paragraph("<strong>Results for Vizard Experiment</strong>", styleN))
#story.append(Spacer(1, .25 * inch))
# story.append(Paragraph("<strong>Results for Vizard Experiment</strong>", styleN))
# story.append(Spacer(1, .25 * inch))
# convert data to paragraph form and then add paragraphs
#story.append(Paragraph(dataToParagraph(subject1, results1), styleN))
#story.append(Spacer(1, .25 * inch))
#story.append(Paragraph(dataToParagraph(subject2, results2), styleN))
#story.append(Spacer(1, .5 * inch))
# story.append(Paragraph(dataToParagraph(subject1, results1), styleN))
# story.append(Spacer(1, .25 * inch))
# story.append(Paragraph(dataToParagraph(subject2, results2), styleN))
# story.append(Spacer(1, .5 * inch))
# table with images
story.append(myTable(path1,SCL,file))
story.append(myTable(path1, SCL, file))
story.append(Spacer(1, .5 * inch))
# add barchart and legend
drawing = myBarChart(values[:len(values)-1], maxi,file)
drawing = myBarLegend(drawing, labels[:len(labels)-1])
#drawing = myBarChart(values[:len(values) - 1], maxi, file)
drawing = myBarChart(values, maxi, file)
#drawing = myBarLegend(drawing, labels[:len(labels) - 1])
drawing = myBarLegend(drawing, labels)
drawing.hAlign = 'CENTER'
story.append(drawing)
story.append(PageBreak())
# build our document with the list of flowables we put together
doc = SimpleDocTemplate(ruta + reporteDir + ".pdf", pagesize=letter, topMargin=0)
doc.build(story)
pass
print ("hecho")
pass
#-----------------------------------------------------------------------------------------------------------------
# -----------------------------------------------------------------------------------------------------------------
def ProcessChartData(path):
with open(path) as f:
json_data = OrderedDict(json.load(f))
......@@ -553,18 +542,19 @@ def ProcessChartData(path):
label = graphData['data']['labels'][0]
defaultLabel = graphData['data']['labels'][0]
defaultDataset = label[0:4] + "/" + label[4:6] + "/" + label[6:]
return graphData,label,defaultLabel,defaultDataset,data['datasets']
return graphData, label, defaultLabel, defaultDataset, data['datasets']
#---------------------------------------------------------------------------------
# ---------------------------------------------------------------------------------
def wsIs_Public(request):
if request.is_ajax():
status = request.GET.get("status")
path = "/reports/"+request.GET.get("purchase_id")+"/scl_data"
path = "/reports/" + request.GET.get("purchase_id") + "/scl_data"
purchase = Purchase.objects.get(pk=request.GET.get("purchase_id"))
purchase.is_public = request.GET.get("status")
purchase.save()
#print (purchase.aggreg_date)
# print (purchase.aggreg_date)
return HttpResponse("hola")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment