Commit 69c31a50 authored by Renán Sosa Guillen's avatar Renán Sosa Guillen

performance improvement

parent 6394ede9
...@@ -44,8 +44,13 @@ class Command(BaseCommand): ...@@ -44,8 +44,13 @@ class Command(BaseCommand):
uri = "https://scihub.copernicus.eu/dhus/odata/v1/Products?$filter=Name eq '" + product_name + "'" uri = "https://scihub.copernicus.eu/dhus/odata/v1/Products?$filter=Name eq '" + product_name + "'"
r = requests.get(uri, auth=(usr, pwd)) r = requests.get(uri, auth=(usr, pwd))
root = ET.fromstring(r.content) root = ET.fromstring(r.content)
print root
# base_link = root[5][0].text # base_link = root[5][0].text
uuid = root[5][11][0].text try:
uuid = root[5][11][0].text
except:
print root
print "\n"
data_dict = apiSentinel.get_product_odata(uuid, full=True) data_dict = apiSentinel.get_product_odata(uuid, full=True)
...@@ -68,18 +73,23 @@ class Command(BaseCommand): ...@@ -68,18 +73,23 @@ class Command(BaseCommand):
PRODUCT_EXISTS = Product_l1c.objects.filter(identifier=file_name).exists() PRODUCT_EXISTS = Product_l1c.objects.filter(identifier=file_name).exists()
if not PRODUCT_EXISTS: if not PRODUCT_EXISTS:
data_dict = self.generate_json(file_name) try:
# print json.dumps(data_dict, indent=3, sort_keys=True, default=str) data_dict = self.generate_json(file_name)
# print json.dumps(data_dict, indent=3, sort_keys=True, default=str)
product_l1c = Product_l1c(
uuid = data_dict['id'], product_l1c = Product_l1c(
identifier = data_dict['Identifier'], uuid = data_dict['id'],
file_path = path, identifier = data_dict['Identifier'],
json = json.dumps(data_dict, indent=3, sort_keys=True, ensure_ascii=True, default=str) file_path = path,
) json = json.dumps(data_dict, indent=3, sort_keys=True, ensure_ascii=True, default=str)
)
product_l1c.save()
print "Id: " + data_dict['id'] product_l1c.save()
print "Id: " + data_dict['id']
except:
print "Error con el archivo " + file_name
else: else:
print "Product " + file_name + "is already in DB." # print "Product " + file_name + " is already in DB."
pass
...@@ -33,13 +33,24 @@ class Command(BaseCommand): ...@@ -33,13 +33,24 @@ class Command(BaseCommand):
for file in file_list: for file in file_list:
file_name = file.replace(".zip", '') file_name = file.replace(".zip", '')
prod_l1c = Product_l1c.objects.all().filter(identifier=file_name)[0] try:
PRODUCT_EXISTS = Product_l2a.objects.filter(identifier=file_name).exists()
product_l2a = Product_l2a(
prod_l1c = prod_l1c, if not PRODUCT_EXISTS:
identifier = prod_l1c.identifier, prod_l1c = Product_l1c.objects.filter(identifier=file_name)[0]
file_path = path
) product_l2a = Product_l2a(
prod_l1c = prod_l1c,
product_l2a.save() identifier = prod_l1c.identifier,
print prod_l1c.identifier file_path = path
)
product_l2a.save()
print prod_l1c.identifier
else:
"Existe"
except:
print "Error con archivo " + file_name
...@@ -27,11 +27,6 @@ class Polygon(models.Model): ...@@ -27,11 +27,6 @@ class Polygon(models.Model):
wkt_polygon = models.TextField(null=True) wkt_polygon = models.TextField(null=True)
class KeyNameTable(models.Model):
id = models.CharField(max_length=10, primary_key=True, unique=True)
name = models.CharField(max_length=65)
class Product_l1c(models.Model): class Product_l1c(models.Model):
uuid = models.CharField(max_length=50) uuid = models.CharField(max_length=50)
identifier = models.CharField(max_length=50) identifier = models.CharField(max_length=50)
......
...@@ -361,6 +361,12 @@ div .sidebar-button button { ...@@ -361,6 +361,12 @@ div .sidebar-button button {
bottom: 30px; bottom: 30px;
} }
.single-product-input input[type=checkbox] {
float : right;
margin-right : 5%;
margin-top : 8%;
}
/*ul.control-sidebar-menu input[type=checkbox] {*/ /*ul.control-sidebar-menu input[type=checkbox] {*/
/*position: absolute;*/ /*position: absolute;*/
/*right: 20px;*/ /*right: 20px;*/
......
...@@ -122,7 +122,9 @@ function erase_product_list_globe() { ...@@ -122,7 +122,9 @@ function erase_product_list_globe() {
function erase_product_list_globe_by_id(element_id) { function erase_product_list_globe_by_id(element_id) {
var $li_element = $('li#' + element_id); var $div_element = $('div#' + element_id + "-div");
var $li_element = $('li#' + element_id + "-li");
$div_element[0].parentNode.removeChild($div_element[0]);
$li_element[0].parentNode.removeChild($li_element[0]); $li_element[0].parentNode.removeChild($li_element[0]);
} }
...@@ -138,7 +140,7 @@ function drawApiResponse(element) { ...@@ -138,7 +140,7 @@ function drawApiResponse(element) {
for (var i=0; i<product_list.catalog.length; i++) { for (var i=0; i<product_list.catalog.length; i++) {
var data = product_list.catalog[i]; var data = product_list.catalog[i];
if (data.uuid === element.id.replace("-h4", '')) { if (data.uuid === element.id.replace("-li", '')) {
element.style.textDecoration = 'underline'; element.style.textDecoration = 'underline';
console.log("footprint:\n", data.product.footprint); console.log("footprint:\n", data.product.footprint);
prevfeature = osmap.addfootprint(data.product.footprint, prevfeature); prevfeature = osmap.addfootprint(data.product.footprint, prevfeature);
...@@ -192,9 +194,12 @@ $(document).click(function (event) { ...@@ -192,9 +194,12 @@ $(document).click(function (event) {
}); });
function no_prods_modal() { function mssgModal(info) {
$('aside').removeClass("control-sidebar-open"); var modal = document.querySelector('#mssg-modal');
$('#no-prods-modal').modal('show'); // filling template
modal.querySelector('.modal-title').textContent = info.title;
modal.querySelector('.modal-body').querySelector('p').textContent = info.body;
$('#mssg-modal').modal('show');
} }
...@@ -242,9 +247,7 @@ $(document).ready(function () { ...@@ -242,9 +247,7 @@ $(document).ready(function () {
// function for making POST request to productList in view.py // function for making POST request to productList in view.py
$('#product-form').submit(function (event) { $('#product-form').submit(function (event) {
event.preventDefault(); event.preventDefault();
erase_product_list_globe(); erase_product_list_globe();
var submit_data = $('#product-form').serialize(); var submit_data = $('#product-form').serialize();
// petición de producto a base de datos // petición de producto a base de datos
...@@ -261,9 +264,7 @@ $(document).ready(function () { ...@@ -261,9 +264,7 @@ $(document).ready(function () {
// productListGlobe = data.catalog; // productListGlobe = data.catalog;
// console.log('GLOBEEE: ', productListGlobe); // console.log('GLOBEEE: ', productListGlobe);
if (product_list.catalog.length <= 0) { if (product_list.catalog.length > 0) {
no_prods_modal();
} else {
console.log("DEFS: ahora crea producto"); console.log("DEFS: ahora crea producto");
data.catalog.forEach(function (data) { data.catalog.forEach(function (data) {
...@@ -280,15 +281,16 @@ $(document).ready(function () { ...@@ -280,15 +281,16 @@ $(document).ready(function () {
var temp = document.querySelector('#product_list_template'); var temp = document.querySelector('#product_list_template');
// filling template // filling template
temp.content.querySelector('li').id = data.uuid; temp.content.querySelector('.single-product-input').id = data.uuid + "-div";
temp.content.querySelector('h4').id = data.uuid + "-h4"; temp.content.querySelector('input').value = data.uuid;
temp.content.querySelector('h4').textContent = data.product.producttype + "_" + data.product.tileid; temp.content.querySelector('li').id = data.uuid + "-li";
temp.content.querySelector('p').textContent = data.product.beginposition; temp.content.querySelector('h4').id = data.uuid + "-h4";
temp.content.querySelector('input').value = data.uuid; temp.content.querySelector('h4').textContent = data.product.producttype + "_" + data.product.tileid;
temp.content.querySelector('img').src = "data:image/jpeg;base64, " + data.img; temp.content.querySelector('p').textContent = data.product.beginposition;
temp.content.querySelectorAll('span')[1].textContent = data.product.identifier; temp.content.querySelector('img').src = "data:image/jpeg;base64, " + data.img;
temp.content.querySelectorAll('span')[2].textContent = data.product.size; temp.content.querySelectorAll('span')[1].textContent = data.product.identifier;
temp.content.querySelectorAll('span')[3].textContent = data.product.instrumentname; temp.content.querySelectorAll('span')[2].textContent = data.product.size;
temp.content.querySelectorAll('span')[3].textContent = data.product.instrumentname;
var clone = document.importNode(temp.content, true); var clone = document.importNode(temp.content, true);
document.querySelector('#product-list-globe').appendChild(clone); document.querySelector('#product-list-globe').appendChild(clone);
...@@ -301,6 +303,12 @@ $(document).ready(function () { ...@@ -301,6 +303,12 @@ $(document).ready(function () {
}); });
showProductTabPane(); showProductTabPane();
} else {
$('aside').removeClass("control-sidebar-open");
mssgModal({
title : "No products were found!",
body : "Parameters for this search brought no results."
});
} }
} }
}); });
...@@ -310,96 +318,106 @@ $(document).ready(function () { ...@@ -310,96 +318,106 @@ $(document).ready(function () {
// agrega producto al carrito // agrega producto al carrito
$('#product-to-cart-form').submit(function (event) { $('#product-to-cart-form').submit(function (event) {
event.preventDefault(); event.preventDefault();
var ul_element = document.getElementById('product-list-globe');
var submit_data = $('#product-to-cart-form').serialize();
if (ul_element.firstChild) {
console.log("Submitted data:", typeof(submit_data)); console.log("ULEMA: ", ul_element);
console.log("Submitted data:", submit_data); var submit_data = $('#product-to-cart-form').serialize();
console.log("Submitted data:", typeof(submit_data));
var submit_data_array = submit_data.split("&product_selected="); console.log("Submitted data:", submit_data);
var submit_data_array = submit_data.split("&product_selected=");
console.log("djdj: ", productListGlobe);
productListGlobe.forEach(function (data) { console.log("djdj: ", productListGlobe);
if (submit_data_array.indexOf(data.uuid) > -1) { productListGlobe.forEach(function (data) {
console.log("DATA sí esta: ", data.uuid); if (submit_data_array.indexOf(data.uuid) > -1) {
console.log("SS: ", data.product.size); console.log("DATA sí esta: ", data.uuid);
cartProductList.push({ console.log("SS: ", data.product.size);
'uuid' : data.uuid, productUUIDListCart.push(data.uuid);
'info' : { erase_product_list_globe_by_id(data.uuid);
'producttype' : data.product.producttype,
'tileid' : data.product.tileid, cartProductList.push({
'beginposition' : data.product.beginposition, 'uuid' : data.uuid,
'img' : data.img, 'info' : {
'identifier' : data.product.identifier, 'producttype' : data.product.producttype,
'size' : data.product.size, 'tileid' : data.product.tileid,
'instrumentname' : data.product.instrumentname 'beginposition' : data.product.beginposition,
} 'img' : data.img,
}); 'identifier' : data.product.identifier,
productUUIDListCart.push(data.uuid); 'size' : data.product.size,
erase_product_list_globe_by_id(data.uuid); 'instrumentname' : data.product.instrumentname
} }
}); });
// request para guardado de producto en carrito
// variable prod_cart_url en map.html
$.ajax({
type : 'POST',
url : prod_cart_url,
data : {
'csrfmiddlewaretoken' : document.getElementsByName('csrfmiddlewaretoken')[0].value,
'cart_product_list' : JSON.stringify(cartProductList)
},
success: function () {
cartProductList = [];
// PRODUCT_COUNTER += 1; // this variable counts the number of products in shopping cart
// PRODUCT_COUNTER_STR = PRODUCT_COUNTER.toString();
// var temp_1 = document.querySelector('#product_cart_1');
// var prod_id = temp_1.content.querySelectorAll('ul')[1].id + "-" + PRODUCT_COUNTER_STR;
// // filling template
// temp_1.content.querySelector('span').textContent = "Product " + PRODUCT_COUNTER_STR;
// temp_1.content.querySelectorAll('ul')[1].id = prod_id;
// var clone_1 = document.importNode(temp_1.content, true);
// document.querySelector('#product-list-cart').appendChild(clone_1);
if (!IS_PRODUCT_CONTAINER) {
createProductContainer();
IS_PRODUCT_CONTAINER = true;
} }
});
// request a DB para mostrar los productos en el carrito if (cartProductList.length > 0) {
// variable prod_from_cartDB_url en map.html // request para guardado de producto en carrito
// variable prod_cart_url en map.html
$.ajax({ $.ajax({
type : 'POST', type : 'POST',
url : prod_from_cartDB_url, url : prod_cart_url,
data : { data : {
'csrfmiddlewaretoken' : document.getElementsByName('csrfmiddlewaretoken')[0].value, 'csrfmiddlewaretoken' : document.getElementsByName('csrfmiddlewaretoken')[0].value,
'product_uuid_list' : productUUIDListCart.toString() 'cart_product_list' : JSON.stringify(cartProductList)
}, },
dataType : 'json', success: function () {
success : function (data) { cartProductList = [];
productUUIDListCart = []; // PRODUCT_COUNTER += 1; // this variable counts the number of products in shopping cart
data.product_list.forEach(function (product) { // PRODUCT_COUNTER_STR = PRODUCT_COUNTER.toString();
var temp_2 = document.querySelector('#product_cart_2');
// var temp_1 = document.querySelector('#product_cart_1');
// filling template // var prod_id = temp_1.content.querySelectorAll('ul')[1].id + "-" + PRODUCT_COUNTER_STR;
temp_2.content.querySelector('li').id = product.uuid;
temp_2.content.querySelector('h4').id = product.uuid + "-h4"; // // filling template
temp_2.content.querySelector('h4').textContent = product.info.producttype + "_" + product.info.tileid; // temp_1.content.querySelector('span').textContent = "Product " + PRODUCT_COUNTER_STR;
temp_2.content.querySelector('p').textContent = product.info.beginposition; // temp_1.content.querySelectorAll('ul')[1].id = prod_id;
temp_2.content.querySelector('img').src = "data:image/jpeg;base64, " + product.info.img;
temp_2.content.querySelectorAll('span')[1].textContent = product.info.identifier; // var clone_1 = document.importNode(temp_1.content, true);
temp_2.content.querySelectorAll('span')[2].textContent = product.info.size; // document.querySelector('#product-list-cart').appendChild(clone_1);
temp_2.content.querySelectorAll('span')[3].textContent = product.info.instrumentname; if (!IS_PRODUCT_CONTAINER) {
createProductContainer();
var clone_2 = document.importNode(temp_2.content, true); IS_PRODUCT_CONTAINER = true;
document.querySelector('#product-list-cart-items').appendChild(clone_2); }
// document.querySelector('#' + prod_id).appendChild(clone_2);
// request a DB para mostrar los productos en el carrito
// variable prod_from_cartDB_url en map.html
$.ajax({
type : 'POST',
url : prod_from_cartDB_url,
data : {
'csrfmiddlewaretoken' : document.getElementsByName('csrfmiddlewaretoken')[0].value,
'product_uuid_list' : productUUIDListCart.toString()
},
dataType : 'json',
success : function (data) {
productUUIDListCart = [];
data.product_list.forEach(function (product) {
var temp_2 = document.querySelector('#product_cart_2');
// filling template
temp_2.content.querySelector('li').id = product.uuid;
temp_2.content.querySelector('h4').id = product.uuid + "-h4";
temp_2.content.querySelector('h4').textContent = product.info.producttype + "_" + product.info.tileid;
temp_2.content.querySelector('p').textContent = product.info.beginposition;
temp_2.content.querySelector('img').src = "data:image/jpeg;base64, " + product.info.img;
temp_2.content.querySelectorAll('span')[1].textContent = product.info.identifier;
temp_2.content.querySelectorAll('span')[2].textContent = product.info.size;
temp_2.content.querySelectorAll('span')[3].textContent = product.info.instrumentname;
var clone_2 = document.importNode(temp_2.content, true);
document.querySelector('#product-list-cart-items').appendChild(clone_2);
// document.querySelector('#' + prod_id).appendChild(clone_2);
});
}
}); });
} }
}); });
} else {
mssgModal({
title : "No products selected!",
body : "Select one or more products to send to your cart."
});
} }
}); }
}); });
}); });
...@@ -243,7 +243,7 @@ ...@@ -243,7 +243,7 @@
{% endblock %} {% endblock %}
{% block templates %}{% include "templates.html" %}{% endblock %} {% block templates %}{% include "templates.html" %}{% endblock %}
{% block modal1 %}{% include "noProductsModal.html" %}{% endblock %} {% block modal1 %}{% include "mssgModal.html" %}{% endblock %}
{% block scripts %} {% block scripts %}
<script> <script>
......
...@@ -22,14 +22,17 @@ ...@@ -22,14 +22,17 @@
<!-- product list template --> <!-- product list template -->
<template id="product_list_template"> <template id="product_list_template">
<div id="" class="single-product-input">
<input type="checkbox" name="product_selected" value="" checked>
</div>
<li id="" onclick="drawApiResponse(this);"> <li id="" onclick="drawApiResponse(this);">
<a href="javascript:void(0)"> <a href="javascript:void(0)">
<i class="menu-icon glyphicon glyphicon-bookmark bg-red"></i> <i class="menu-icon glyphicon glyphicon-bookmark bg-red"></i>
<div class="menu-info"> <div class="menu-info">
<h4 id="" class="control-sidebar-subheading"></h4> <h4 id="" class="control-sidebar-subheading"></h4>
<p></p> <p></p>
<input type="checkbox" name="product_selected" value="" checked> <!-- <input type="checkbox" name="product_selected" value="" checked> -->
</div> </div>
</a> </a>
<div class="info-product-box bg-geo"> <div class="info-product-box bg-geo">
<span class="info-product-box-img"> <span class="info-product-box-img">
......
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