Commit 1e85c92c authored by Renán Sosa Guillen's avatar Renán Sosa Guillen

GeoInt_SIDT

parent 17d13bec
...@@ -46,15 +46,14 @@ class Product_l2a(models.Model): ...@@ -46,15 +46,14 @@ class Product_l2a(models.Model):
class CartProduct(models.Model): class CartProduct(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE) user = models.ForeignKey(User, on_delete=models.CASCADE)
add_date = models.DateTimeField(auto_now=True) aggreg_date = models.DateTimeField(auto_now=True) ## date of product aggregation
prod_uuid = models.CharField(max_length=50) uuid = models.CharField(max_length=50)
prod_num = models.IntegerField() info = models.TextField(null=True)
prod_l1c = models.ForeignKey(Product_l1c, on_delete=models.CASCADE, null=True) purchased = models.NullBooleanField()
purchased = models.NullBooleanField()
# class Purchase(models.Model):
class Purchase(models.Model): # user = models.ForeignKey(User, on_delete=models.CASCADE)
user = models.ForeignKey(User, on_delete=models.CASCADE) # pur_date = models.DateTimeField(auto_now=True) ## transaction date
pur_date = models.DateTimeField(auto_now=True) ## transaction date # prod_list = models.ManyToManyField(Product_l1c)
prod_list = models.ManyToManyField(Product_l1c)
...@@ -330,9 +330,14 @@ div .menu-info h4 { ...@@ -330,9 +330,14 @@ div .menu-info h4 {
/*padding-left: 58%;*/ /*padding-left: 58%;*/
/*}*/ /*}*/
div #product-list-globe, div #product-list-globe {
max-height: 773px;
overflow: auto;
}
div #product-list-cart-items { div #product-list-cart-items {
max-height: 500px; max-height: 700px;
max-width: 207px;
overflow: auto; overflow: auto;
} }
......
...@@ -2,11 +2,12 @@ ...@@ -2,11 +2,12 @@
// Script for managing data with javascript // Script for managing data with javascript
// ------------------------------------------ // ------------------------------------------
var OPT_LIST_IS_HIDDEN = true; var OPT_LIST_IS_HIDDEN = true;
var INPUT_ON_FOCUS = false; var INPUT_ON_FOCUS = false;
var product_list = [];
var PRODUCT_COUNTER = 0;
var IS_PRODUCT_CONTAINER = false;
var polygonList; var polygonList;
var product_list = [];
var PRODUCT_COUNTER = 0;
var makeRequest = function (value) { var makeRequest = function (value) {
var pol_element = document.getElementById('polygon-list'); var pol_element = document.getElementById('polygon-list');
...@@ -60,16 +61,16 @@ function drawPolygon(element) { ...@@ -60,16 +61,16 @@ function drawPolygon(element) {
osmap.removePolygon(); osmap.removePolygon();
// draw wkt polygon // draw wkt polygon
osmap.addWKTPolygon(polygon.wkt_polygon) // osmap.addWKTPolygon(polygon.wkt_polygon);
// format coords to draw // format coords to draw
// var coords = osmap.formatCoords(polygon.geojson.geometry.coordinates); var coords = osmap.formatCoords(polygon.geojson.geometry.coordinates);
// get the biggest area // get the biggest area
// var biggest = osmap.getBiggestPolygon(coords); var biggest = osmap.getBiggestPolygon(coords);
// draw coordsR // draw coordsR
// osmap.addPolygon(biggest); osmap.addPolygon(biggest);
} }
}) })
} }
...@@ -83,7 +84,7 @@ $("#id_polygon").on('keyup', function (e) { ...@@ -83,7 +84,7 @@ $("#id_polygon").on('keyup', function (e) {
polygon = $('#id_polygon').val(); polygon = $('#id_polygon').val();
osmap.removePolygon(); osmap.removePolygon();
osmap.addWKTPolygon(polygon) osmap.addWKTPolygon(polygon);
} }
}); });
...@@ -101,12 +102,28 @@ function erase_product_list_globe_by_id(element_id) { ...@@ -101,12 +102,28 @@ function erase_product_list_globe_by_id(element_id) {
var prevfeature = null; var prevfeature = null;
function drawApiResponse(element) { function drawApiResponse(element) {
product_list.catalog.forEach(function (data) { var list_globe = document.getElementById('product-list-globe').children;
if (data.id === element.id.replace("-h4", '')) {
for(var i=0; i<product_list.catalog.length; i++) {
var data = product_list.catalog[i];
list_globe[i].style.textDecoration = 'none';
if (data.uuid === element.id.replace("-h4", '')) {
// osmap.removePolygon(); // osmap.removePolygon();
prevfeature = osmap.addfootprint(data.product.footprint, prevfeature); list_globe[i].style.textDecoration = 'underline';
prevfeature = osmap.addfootprint(data.product.footprint, prevfeature);
} }
}) }
}
function createProductContainer() {
var temp_1 = document.querySelector('#product_cart_1');
// filling template
temp_1.content.querySelector('span').textContent = "Product";
var clone_1 = document.importNode(temp_1.content, true);
document.querySelector('#product-list-cart').appendChild(clone_1);
} }
...@@ -148,10 +165,11 @@ $(document).ready(function () { ...@@ -148,10 +165,11 @@ $(document).ready(function () {
var pol_element = document.getElementById('polygon-list'); var pol_element = document.getElementById('polygon-list');
var typingTimer; var typingTimer;
var typingInterval = 800; //milliseconds var typingInterval = 800; //milliseconds
var productListPrev = []; var productListPrev = [];
var productListGlobe = []; var productListGlobe = [];
var productListCart = []; // this array represent DB where products will be stored var cartProductList = []; // this array represent DB where products will be stored
var productUUIDListCart = [];
// On keyup, start the contdown // On keyup, start the contdown
$('#ajax-input').on('input', function () { $('#ajax-input').on('input', function () {
...@@ -226,11 +244,11 @@ $(document).ready(function () { ...@@ -226,11 +244,11 @@ $(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.id; temp.content.querySelector('li').id = data.uuid;
temp.content.querySelector('h4').id = data.id + "-h4"; temp.content.querySelector('h4').id = data.uuid + "-h4";
temp.content.querySelector('h4').textContent = data.product.producttype + "_" + data.product.tileid; temp.content.querySelector('h4').textContent = data.product.producttype + "_" + data.product.tileid;
temp.content.querySelector('p').textContent = data.product.beginposition; temp.content.querySelector('p').textContent = data.product.beginposition;
temp.content.querySelector('input').value = data.id; temp.content.querySelector('input').value = data.uuid;
temp.content.querySelector('img').src = "data:image/jpeg;base64, " + data.img; temp.content.querySelector('img').src = "data:image/jpeg;base64, " + data.img;
temp.content.querySelectorAll('span')[1].textContent = data.product.identifier; temp.content.querySelectorAll('span')[1].textContent = data.product.identifier;
temp.content.querySelectorAll('span')[2].textContent = data.product.size; temp.content.querySelectorAll('span')[2].textContent = data.product.size;
...@@ -262,92 +280,187 @@ $(document).ready(function () { ...@@ -262,92 +280,187 @@ $(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) {
var submit_data = $('#product-to-cart-form').serialize(); // var submit_data = $('#product-to-cart-form').serialize();
event.preventDefault(); // event.preventDefault();
// erase_product_list_globe(); // // erase_product_list_globe();
console.log("Submitted data:", typeof(submit_data)); // console.log("Submitted data:", typeof(submit_data));
console.log("Submitted data:", submit_data); // console.log("Submitted data:", submit_data);
var submit_data_array = submit_data.split("&product_selected="); // var submit_data_array = submit_data.split("&product_selected=");
PRODUCT_COUNTER += 1; // this variable counts the number of products in shopping cart // PRODUCT_COUNTER += 1; // this variable counts the number of products in shopping cart
PRODUCT_COUNTER_STR = PRODUCT_COUNTER.toString(); // PRODUCT_COUNTER_STR = PRODUCT_COUNTER.toString();
var temp_1 = document.querySelector('#product_cart_1'); // var temp_1 = document.querySelector('#product_cart_1');
var prod_id = temp_1.content.querySelectorAll('ul')[1].id + "-" + PRODUCT_COUNTER_STR; // var prod_id = temp_1.content.querySelectorAll('ul')[1].id + "-" + PRODUCT_COUNTER_STR;
// filling template // // filling template
temp_1.content.querySelector('span').textContent = "Product " + PRODUCT_COUNTER_STR; // temp_1.content.querySelector('span').textContent = "Product " + PRODUCT_COUNTER_STR;
temp_1.content.querySelectorAll('ul')[1].id = prod_id; // 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);
// // var div_top = 148;
// console.log("djdj: ", productListGlobe);
// productListGlobe.forEach(function (data) {
// if (submit_data_array.indexOf(data.uuid) > -1) {
// console.log("DATA sí esta: ", data.uuid);
// console.log("SS: ", data.product.size);
// productListCart.push(data.product);
// // productListCart.push(data.id);
// erase_product_list_globe_by_id(data.uuid);
// var temp_2 = document.querySelector('#product_cart_2');
// // filling template
// temp_2.content.querySelector('li').id = data.uuid;
// temp_2.content.querySelector('h4').id = data.uuid + "-h4";
// temp_2.content.querySelector('h4').textContent = data.product.producttype + "_" + data.product.tileid;
// temp_2.content.querySelector('p').textContent = data.product.beginposition;
// temp_2.content.querySelector('img').src = "data:image/jpeg;base64, " + data.img;
// temp_2.content.querySelectorAll('span')[1].textContent = data.product.identifier;
// temp_2.content.querySelectorAll('span')[2].textContent = data.product.size;
// temp_2.content.querySelectorAll('span')[3].textContent = data.product.instrumentname;
// var clone_2 = document.importNode(temp_2.content, true);
// document.querySelector('#' + prod_id).appendChild(clone_2);
// // 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,
// // 'product' : JSON.stringify(data.product),
// // 'product_num' : PRODUCT_COUNTER_STR
// // },
// // dataType : 'json'
// // });
// }
// });
// });
// agrega producto al carrito
$('#product-to-cart-form').submit(function (event) {
var submit_data = $('#product-to-cart-form').serialize();
var clone_1 = document.importNode(temp_1.content, true); event.preventDefault();
document.querySelector('#product-list-cart').appendChild(clone_1);
// var div_top = 148; console.log("Submitted data:", typeof(submit_data));
console.log("Submitted data:", submit_data);
var submit_data_array = submit_data.split("&product_selected=");
console.log("djdj: ", productListGlobe); console.log("djdj: ", productListGlobe);
productListGlobe.forEach(function (data) { productListGlobe.forEach(function (data) {
if (submit_data_array.indexOf(data.id) > -1) { if (submit_data_array.indexOf(data.uuid) > -1) {
console.log("DATA sí esta: ", data.id); console.log("DATA sí esta: ", data.uuid);
console.log("SS: ", data.product.size); console.log("SS: ", data.product.size);
productListCart.push(data.product); cartProductList.push({
// productListCart.push(data.id); 'uuid' : data.uuid,
erase_product_list_globe_by_id(data.id); 'info' : {
'producttype' : data.product.producttype,
var temp_2 = document.querySelector('#product_cart_2'); 'tileid' : data.product.tileid,
'beginposition' : data.product.beginposition,
// filling template 'img' : data.img,
temp_2.content.querySelector('li').id = data.id; 'identifier' : data.product.identifier,
temp_2.content.querySelector('h4').id = data.id + "-h4"; 'size' : data.product.size,
temp_2.content.querySelector('h4').textContent = data.product.producttype + "_" + data.product.tileid; 'instrumentname' : data.product.instrumentname
temp_2.content.querySelector('p').textContent = data.product.beginposition; }
temp_2.content.querySelector('img').src = "data:image/jpeg;base64, " + data.img; });
temp_2.content.querySelectorAll('span')[1].textContent = data.product.identifier; productUUIDListCart.push(data.uuid);
temp_2.content.querySelectorAll('span')[2].textContent = data.product.size; erase_product_list_globe_by_id(data.uuid);
temp_2.content.querySelectorAll('span')[3].textContent = data.product.instrumentname;
var clone_2 = document.importNode(temp_2.content, true);
document.querySelector('#' + prod_id).appendChild(clone_2);
// 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,
// 'product' : JSON.stringify(data.product),
// 'product_num' : PRODUCT_COUNTER_STR
// },
// dataType : 'json'
// });
} }
}); });
});
// genera la compra del producto
$('#purchased-product-form').submit(function (event) {
var submit_data = $('#purchased-product-form').serialize();
event.preventDefault();
console.log("Submitted data:", typeof(submit_data));
console.log("Submitted data:", submit_data);
// request para guardado de producto en carrito
// variable prod_cart_url en map.html
$.ajax({ $.ajax({
type : 'POST', type : 'POST',
url : purch_prod_url, url : prod_cart_url,
data : { data : {
'csrfmiddlewaretoken' : document.getElementsByName('csrfmiddlewaretoken')[0].value, 'csrfmiddlewaretoken' : document.getElementsByName('csrfmiddlewaretoken')[0].value,
'product_list' : JSON.stringify(productListCart) 'cart_product_list' : JSON.stringify(cartProductList)
}, },
dataType : 'json' 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
// 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);
});
}
});
}
}); });
}); });
// genera la compra del producto
// $('#purchased-product-form').submit(function (event) {
// var submit_data = $('#purchased-product-form').serialize();
// event.preventDefault();
// console.log("Submitted data:", typeof(submit_data));
// console.log("Submitted data:", submit_data);
// $.ajax({
// type : 'POST',
// url : purch_prod_url,
// data : {
// 'csrfmiddlewaretoken' : document.getElementsByName('csrfmiddlewaretoken')[0].value,
// 'product_list' : JSON.stringify(productListCart)
// },
// dataType : 'json'
// });
// });
}); });
...@@ -212,7 +212,8 @@ OpenStreetMapsClass.prototype.formatCoords = function(coords) ...@@ -212,7 +212,8 @@ OpenStreetMapsClass.prototype.formatCoords = function(coords)
OpenStreetMapsClass.prototype.showCoords = function(geometry) OpenStreetMapsClass.prototype.showCoords = function(geometry)
{ {
var wkt = new ol.format.WKT(); var wkt = new ol.format.WKT();
document.getElementById("id_polygon").value = wkt.writeGeometry(geometry.clone().transform( 'EPSG:3857', 'EPSG:4326')); var wkt_polygon = wkt.writeGeometry(geometry.clone().transform( 'EPSG:3857', 'EPSG:4326'));
document.getElementById("id_polygon").value = wkt_polygon;
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
/** /**
......
...@@ -250,10 +250,10 @@ ...@@ -250,10 +250,10 @@
osmap.geolocation(); osmap.geolocation();
osmap.addInteraction(); osmap.addInteraction();
var req_url = "{% url 'search-submit' %}"; // url for requesting polygon data var req_url = "{% url 'search-submit' %}"; // url for requesting polygon data
var prod_req_url = "{% url 'productList' %}" // url for requesting product data var prod_req_url = "{% url 'productList' %}" // url for requesting product data
var img_req_url = "{% url 'img-rqst' %}" // url for requesting preview image var img_req_url = "{% url 'img-rqst' %}" // url for requesting preview image
var prod_cart_url = "{% url 'cart-rqst' %}" // url for requesting product saving in cart var prod_cart_url = "{% url 'cart-rqst' %}" // url for requesting product saving in cart
var purch_prod_url = "{% url 'purch-rqst' %}" // url for requesting product purschase var prod_from_cartDB_url = "{% url 'from-cart-rqst' %}" // url for requesting product from cart table in DB
</script> </script>
{% endblock %} {% endblock %}
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
<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" onclick="drawApiResponse(this)"></h4> <h4 id="" class="control-sidebar-subheading" onclick="drawApiResponse(this);"></h4>
<p></p> <p></p>
<input type="checkbox" name="product_selected" value="" checked> <input type="checkbox" name="product_selected" value="" checked>
</div> </div>
......
...@@ -10,6 +10,6 @@ urlpatterns = [ ...@@ -10,6 +10,6 @@ urlpatterns = [
url(r'^searchsubmit/$', views.SearchSubmitView.as_view(), name='search-submit'), url(r'^searchsubmit/$', views.SearchSubmitView.as_view(), name='search-submit'),
url(r'^imgrequest/$', views.requestToImage, name='img-rqst'), url(r'^imgrequest/$', views.requestToImage, name='img-rqst'),
url(r'^cartrequest/$', views.saveInCart, name='cart-rqst'), url(r'^cartrequest/$', views.saveInCart, name='cart-rqst'),
url(r'^purchrequest/$', views.purchaseProduct, name='purch-rqst') url(r'^fromcartrqst/$', views.getFromCart, name='from-cart-rqst')
] ]
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
from __future__ import unicode_literals from __future__ import unicode_literals
from django.shortcuts import render from django.shortcuts import render
from catalog.forms import ASFSearchForm from catalog.forms import ASFSearchForm
from catalog.models import Polygon, CartProduct, Product_l1c, Purchase from catalog.models import Polygon, CartProduct, Product_l1c
from django.http import HttpResponse, JsonResponse, HttpResponseRedirect from django.http import HttpResponse, JsonResponse, HttpResponseRedirect
from django.urls import reverse from django.urls import reverse
from django.views.generic.base import View from django.views.generic.base import View
...@@ -11,11 +11,10 @@ from django.contrib.auth.models import User ...@@ -11,11 +11,10 @@ from django.contrib.auth.models import User
from django.core import management from django.core import management
from urllib import urlencode from urllib import urlencode
from collections import OrderedDict from collections import OrderedDict
import requests, json, unicodedata, sys import requests, json, unicodedata, sys, base64
import base64
sys.path.append('../') sys.path.append('../')
from geosentinel import APISentinel from geosentinel import APISentinel, polygonToBox
sentinel = APISentinel.APISentinel('emmhp', 'geoemm29') sentinel = APISentinel.APISentinel('emmhp', 'geoemm29')
...@@ -71,13 +70,17 @@ def productList(request): ...@@ -71,13 +70,17 @@ def productList(request):
# if cloud_percentage.strip(): # if cloud_percentage.strip():
# params['cloudcoverpercentage'] = cloud_percentage # params['cloudcoverpercentage'] = cloud_percentage
params['cloudcoverpercentage'] = cloud_percentage params['cloudcoverpercentage'] = cloud_percentage
## getting the bounding box of the polygon
pol_bbox = polygonToBox.getWKTPolygonBoundingBox(area, True)
products = sentinel.getProducts(area, date, params) ## requesting producto to sentinel api
products = sentinel.getProducts(pol_bbox, date, params)
## path from image preview storage location ## path from image preview storage location
img_preview = '/static/images/sat_preview/sat_test.jpg' img_preview = '/static/images/sat_preview/sat_test.jpg'
# se crea una lista de objetos del catalogo ## se crea una lista de objetos del catalogo
catalog = [] catalog = []
for p in products: for p in products:
# img_link = products[p]['link_icon'] # img_link = products[p]['link_icon']
...@@ -89,11 +92,12 @@ def productList(request): ...@@ -89,11 +92,12 @@ def productList(request):
'end_date' : end_date, 'end_date' : end_date,
'cloud_percentage' : cloud_percentage, 'cloud_percentage' : cloud_percentage,
'product' : products[p], 'product' : products[p],
'id' : products[p]['uuid'], 'uuid' : products[p]['uuid'],
'img' : img_preview 'img' : img_preview
}) })
return JsonResponse({'catalog': catalog}); return JsonResponse({'catalog': catalog});
# return HttpResponse(status=204)
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
class SearchSubmitView(View): class SearchSubmitView(View):
...@@ -151,83 +155,107 @@ def regionSearched(request): ...@@ -151,83 +155,107 @@ def regionSearched(request):
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
def saveInCart(request): def saveInCart(request):
""" """
Saves product in cart DB Saves product in cart table in DB
""" """
user = User.objects.filter(id=request.user.id)[0] user = User.objects.get(id=request.user.id)
product = json.loads(request.POST['product']) product_list = json.loads(request.POST['cart_product_list'])
product_num = int(request.POST['product_num'])
# print json.dumps(product, indent=3, sort_keys=True) for product in product_list:
p_uuid = product['uuid']
cartProd = CartProduct( p_info = product['info']
user = user, PRODUCT_EXISTS = CartProduct.objects.filter(uuid=p_uuid, user=user).exists()
prod_uuid = product['uuid'],
prod_num = product_num, if not PRODUCT_EXISTS:
purchased = False cartProd = CartProduct(
) user = user,
uuid = p_uuid,
cartProd.save() info = json.dumps(p_info, indent=3, sort_keys=True, ensure_ascii=True),
purchased = False
)
cartProd.save()
return HttpResponse(status=204) return HttpResponse(status=204)
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
def purchaseProduct(request): def getFromCart(request):
""" """
For now to purchase a product consists in downloading L1C products and saving them in DB. Temporarily gets product from cart table based on uuid porperty to show in cart section
""" """
################# DEFINE PATH ##########################
prod_dir = 'my_path'
########################################################
products_to_download = {
'uuid' : [],
'id' : []
}
user = User.objects.filter(id=request.user.id)[0]
prod_purchased = json.loads(request.POST['product_list'])
# prod_purchased = ['S2B_MSIL1C_20171226T162659_N0206_R040_T16QBJ_20171226T212212', 'S2B_MSIL1C_20180326T161909_N0206_R040_T15QZD_20180326T195757']
for p in prod_purchased:
p_uuid = p['uuid']
p_identifier = p['identifier']
PRODUCT_EXISTS = Product_l1c.objects.filter(uuid=p_uuid).exists()
if not PRODUCT_EXISTS: user = User.objects.get(id=request.user.id)
products_to_download['uuid'].append(p_uuid) prod_uuid_list = request.POST['product_uuid_list'].split(",")
products_to_download['id'].append(p_identifier) prod_list = []
for prod_uuid in prod_uuid_list:
product = CartProduct.objects.filter(uuid=prod_uuid, user=user).first()
prod_list.append({
'uuid' : product.uuid,
'info' : json.loads(product.info)
})
return JsonResponse({'product_list': prod_list})
#-------------------------------------------------------------------------------
# def purchaseProduct(request):
# """
# For now to purchase a product consists in downloading L1C products and saving them in DB.
# """
# ################# DEFINE PATH ##########################
# prod_dir = 'my_path'
# ########################################################
# products_to_download = {
# 'uuid' : [],
# 'id' : []
# }
# user = User.objects.get(id=request.user.id)
# prod_purchased = json.loads(request.POST['product_list'])
# # prod_purchased = ['S2B_MSIL1C_20171226T162659_N0206_R040_T16QBJ_20171226T212212', 'S2B_MSIL1C_20180326T161909_N0206_R040_T15QZD_20180326T195757']
# for p in prod_purchased:
# p_uuid = p['uuid']
# p_identifier = p['identifier']
# PRODUCT_EXISTS = Product_l1c.objects.filter(uuid=p_uuid).exists()
# if not PRODUCT_EXISTS:
# products_to_download['uuid'].append(p_uuid)
# products_to_download['id'].append(p_identifier)
# print json.dumps(p, indent=3, sort_keys=True) # # print json.dumps(p, indent=3, sort_keys=True)
## Saves data to DB using populate_products_l1c command ## # ## Saves data to DB using populate_products_l1c command ##
management.call_command('populate_products_l1c', file_path=prod_dir, products_list=products_to_download['id']) # management.call_command('populate_products_l1c', file_path=prod_dir, products_list=products_to_download['id'])
## Register of user purchase ## # ## Register of user purchase ##
purch = Purchase(user=user) # purch = Purchase(user=user)
purch.save() # purch.save()
for p_uuid in products_to_download['uuid']: # for p_uuid in products_to_download['uuid']:
prod_l1c = Product_l1c.objects.get(uuid=p_uuid) # prod_l1c = Product_l1c.objects.get(uuid=p_uuid)
purch.prod_list.add(prod_l1c) # purch.prod_list.add(prod_l1c)
### TODO: Download products somewhere .. ### # ### TODO: Download products somewhere .. ###
# sentinel.downloadProducts(products, prod_dir) # # sentinel.downloadProducts(products, prod_dir)
### After that the code below is executed ### # ### After that the code below is executed ###
# purch = Purchase(user=user) # # purch = Purchase(user=user)
# purch.save() # # purch.save()
# # for prod_uuid in prod_purchased: # # # for prod_uuid in prod_purchased:
# for prod_id in prod_purchased: # # for prod_id in prod_purchased:
# # prod_l1c = Product_l1c.objects.get(uuid=prod_uuid) # # # prod_l1c = Product_l1c.objects.get(uuid=prod_uuid)
# prod_l1c = Product_l1c.objects.get(identifier=prod_id) # # prod_l1c = Product_l1c.objects.get(identifier=prod_id)
# print prod_l1c # # print prod_l1c
# purch.prod_list.add(prod_l1c) # # purch.prod_list.add(prod_l1c)
return HttpResponse(status=204) # return HttpResponse(status=204)
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