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):
class CartProduct(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
add_date = models.DateTimeField(auto_now=True)
prod_uuid = models.CharField(max_length=50)
prod_num = models.IntegerField()
prod_l1c = models.ForeignKey(Product_l1c, on_delete=models.CASCADE, null=True)
purchased = models.NullBooleanField()
class Purchase(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
pur_date = models.DateTimeField(auto_now=True) ## transaction date
prod_list = models.ManyToManyField(Product_l1c)
user = models.ForeignKey(User, on_delete=models.CASCADE)
aggreg_date = models.DateTimeField(auto_now=True) ## date of product aggregation
uuid = models.CharField(max_length=50)
info = models.TextField(null=True)
purchased = models.NullBooleanField()
# class Purchase(models.Model):
# user = models.ForeignKey(User, on_delete=models.CASCADE)
# pur_date = models.DateTimeField(auto_now=True) ## transaction date
# prod_list = models.ManyToManyField(Product_l1c)
......@@ -330,9 +330,14 @@ div .menu-info h4 {
/*padding-left: 58%;*/
/*}*/
div #product-list-globe,
div #product-list-globe {
max-height: 773px;
overflow: auto;
}
div #product-list-cart-items {
max-height: 500px;
max-height: 700px;
max-width: 207px;
overflow: auto;
}
......
This diff is collapsed.
......@@ -212,7 +212,8 @@ OpenStreetMapsClass.prototype.formatCoords = function(coords)
OpenStreetMapsClass.prototype.showCoords = function(geometry)
{
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 @@
osmap.geolocation();
osmap.addInteraction();
var req_url = "{% url 'search-submit' %}"; // url for requesting polygon 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 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 req_url = "{% url 'search-submit' %}"; // url for requesting polygon 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 prod_cart_url = "{% url 'cart-rqst' %}" // url for requesting product saving in cart
var prod_from_cartDB_url = "{% url 'from-cart-rqst' %}" // url for requesting product from cart table in DB
</script>
{% endblock %}
......@@ -26,7 +26,7 @@
<a href="javascript:void(0)">
<i class="menu-icon glyphicon glyphicon-bookmark bg-red"></i>
<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>
<input type="checkbox" name="product_selected" value="" checked>
</div>
......
......@@ -10,6 +10,6 @@ urlpatterns = [
url(r'^searchsubmit/$', views.SearchSubmitView.as_view(), name='search-submit'),
url(r'^imgrequest/$', views.requestToImage, name='img-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 @@
from __future__ import unicode_literals
from django.shortcuts import render
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.urls import reverse
from django.views.generic.base import View
......@@ -11,11 +11,10 @@ from django.contrib.auth.models import User
from django.core import management
from urllib import urlencode
from collections import OrderedDict
import requests, json, unicodedata, sys
import base64
import requests, json, unicodedata, sys, base64
sys.path.append('../')
from geosentinel import APISentinel
from geosentinel import APISentinel, polygonToBox
sentinel = APISentinel.APISentinel('emmhp', 'geoemm29')
......@@ -71,13 +70,17 @@ def productList(request):
# if cloud_percentage.strip():
# 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
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 = []
for p in products:
# img_link = products[p]['link_icon']
......@@ -89,11 +92,12 @@ def productList(request):
'end_date' : end_date,
'cloud_percentage' : cloud_percentage,
'product' : products[p],
'id' : products[p]['uuid'],
'uuid' : products[p]['uuid'],
'img' : img_preview
})
return JsonResponse({'catalog': catalog});
# return HttpResponse(status=204)
#-------------------------------------------------------------------------------
class SearchSubmitView(View):
......@@ -151,83 +155,107 @@ def regionSearched(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]
product = json.loads(request.POST['product'])
product_num = int(request.POST['product_num'])
# print json.dumps(product, indent=3, sort_keys=True)
cartProd = CartProduct(
user = user,
prod_uuid = product['uuid'],
prod_num = product_num,
purchased = False
)
cartProd.save()
user = User.objects.get(id=request.user.id)
product_list = json.loads(request.POST['cart_product_list'])
for product in product_list:
p_uuid = product['uuid']
p_info = product['info']
PRODUCT_EXISTS = CartProduct.objects.filter(uuid=p_uuid, user=user).exists()
if not PRODUCT_EXISTS:
cartProd = CartProduct(
user = user,
uuid = p_uuid,
info = json.dumps(p_info, indent=3, sort_keys=True, ensure_ascii=True),
purchased = False
)
cartProd.save()
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:
products_to_download['uuid'].append(p_uuid)
products_to_download['id'].append(p_identifier)
user = User.objects.get(id=request.user.id)
prod_uuid_list = request.POST['product_uuid_list'].split(",")
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 ##
management.call_command('populate_products_l1c', file_path=prod_dir, products_list=products_to_download['id'])
# ## 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'])
## Register of user purchase ##
purch = Purchase(user=user)
purch.save()
# ## Register of user purchase ##
# purch = Purchase(user=user)
# purch.save()
for p_uuid in products_to_download['uuid']:
prod_l1c = Product_l1c.objects.get(uuid=p_uuid)
purch.prod_list.add(prod_l1c)
# for p_uuid in products_to_download['uuid']:
# prod_l1c = Product_l1c.objects.get(uuid=p_uuid)
# purch.prod_list.add(prod_l1c)
### TODO: Download products somewhere .. ###
# sentinel.downloadProducts(products, prod_dir)
# ### TODO: Download products somewhere .. ###
# # sentinel.downloadProducts(products, prod_dir)
### After that the code below is executed ###
# purch = Purchase(user=user)
# purch.save()
# ### After that the code below is executed ###
# # purch = Purchase(user=user)
# # purch.save()
# # for prod_uuid in prod_purchased:
# for prod_id in prod_purchased:
# # prod_l1c = Product_l1c.objects.get(uuid=prod_uuid)
# prod_l1c = Product_l1c.objects.get(identifier=prod_id)
# print prod_l1c
# purch.prod_list.add(prod_l1c)
# # # for prod_uuid in prod_purchased:
# # for prod_id in prod_purchased:
# # # prod_l1c = Product_l1c.objects.get(uuid=prod_uuid)
# # prod_l1c = Product_l1c.objects.get(identifier=prod_id)
# # print 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