Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
GeoInt_SIDT
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Mario Chirinos Colunga
GeoInt_SIDT
Commits
1e85c92c
Commit
1e85c92c
authored
Aug 23, 2018
by
Renán Sosa Guillen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
GeoInt_SIDT
parent
17d13bec
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
316 additions
and
170 deletions
+316
-170
models.py
catalog/models.py
+11
-12
body.css
catalog/static/css/body.css
+7
-2
dataRetrieval.js
catalog/static/js/dataRetrieval.js
+198
-85
openLayers4.js
catalog/static/js/openLayers4.js
+2
-1
map.html
catalog/templates/map.html
+5
-5
templates.html
catalog/templates/templates.html
+1
-1
urls.py
catalog/urls.py
+1
-1
views.py
catalog/views.py
+91
-63
No files found.
catalog/models.py
View file @
1e85c92c
...
@@ -47,14 +47,13 @@ class Product_l2a(models.Model):
...
@@ -47,14 +47,13 @@ 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)
catalog/static/css/body.css
View file @
1e85c92c
...
@@ -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
;
}
}
...
...
catalog/static/js/dataRetrieval.js
View file @
1e85c92c
...
@@ -4,9 +4,10 @@
...
@@ -4,9 +4,10 @@
var
OPT_LIST_IS_HIDDEN
=
true
;
var
OPT_LIST_IS_HIDDEN
=
true
;
var
INPUT_ON_FOCUS
=
false
;
var
INPUT_ON_FOCUS
=
false
;
var
polygonList
;
var
product_list
=
[];
var
product_list
=
[];
var
PRODUCT_COUNTER
=
0
;
var
PRODUCT_COUNTER
=
0
;
var
IS_PRODUCT_CONTAINER
=
false
;
var
polygonList
;
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();
list_globe
[
i
].
style
.
textDecoration
=
'underline'
;
prevfeature
=
osmap
.
addfootprint
(
data
.
product
.
footprint
,
prevfeature
);
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
);
}
}
...
@@ -151,7 +168,8 @@ $(document).ready(function () {
...
@@ -151,7 +168,8 @@ $(document).ready(function () {
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
.
uu
id
;
temp
.
content
.
querySelector
(
'h4'
).
id
=
data
.
id
+
"-h4"
;
temp
.
content
.
querySelector
(
'h4'
).
id
=
data
.
uu
id
+
"-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
.
uu
id
;
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
;
...
@@ -261,70 +279,165 @@ $(document).ready(function () {
...
@@ -261,70 +279,165 @@ $(document).ready(function () {
// agrega producto al carrito
// $('#product-to-cart-form').submit(function (event) {
// var submit_data = $('#product-to-cart-form').serialize();
// event.preventDefault();
// // erase_product_list_globe();
// console.log("Submitted data:", typeof(submit_data));
// console.log("Submitted data:", submit_data);
// var submit_data_array = submit_data.split("&product_selected=");
// 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);
// // 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
// 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();
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_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
);
// var div_top = 148;
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
.
uu
id
)
>
-
1
)
{
console
.
log
(
"DATA sí esta: "
,
data
.
id
);
console
.
log
(
"DATA sí esta: "
,
data
.
uu
id
);
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
,
'tileid'
:
data
.
product
.
tileid
,
'beginposition'
:
data
.
product
.
beginposition
,
'img'
:
data
.
img
,
'identifier'
:
data
.
product
.
identifier
,
'size'
:
data
.
product
.
size
,
'instrumentname'
:
data
.
product
.
instrumentname
}
});
productUUIDListCart
.
push
(
data
.
uuid
);
erase_product_list_globe_by_id
(
data
.
uuid
);
}
});
// 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
// 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'
);
var
temp_2
=
document
.
querySelector
(
'#product_cart_2'
);
// filling template
// filling template
temp_2
.
content
.
querySelector
(
'li'
).
id
=
data
.
id
;
temp_2
.
content
.
querySelector
(
'li'
).
id
=
product
.
uu
id
;
temp_2
.
content
.
querySelector
(
'h4'
).
id
=
data
.
id
+
"-h4"
;
temp_2
.
content
.
querySelector
(
'h4'
).
id
=
product
.
uu
id
+
"-h4"
;
temp_2
.
content
.
querySelector
(
'h4'
).
textContent
=
data
.
product
.
producttype
+
"_"
+
data
.
product
.
tileid
;
temp_2
.
content
.
querySelector
(
'h4'
).
textContent
=
product
.
info
.
producttype
+
"_"
+
product
.
info
.
tileid
;
temp_2
.
content
.
querySelector
(
'p'
).
textContent
=
data
.
product
.
beginposition
;
temp_2
.
content
.
querySelector
(
'p'
).
textContent
=
product
.
info
.
beginposition
;
temp_2
.
content
.
querySelector
(
'img'
).
src
=
"data:image/jpeg;base64, "
+
data
.
img
;
temp_2
.
content
.
querySelector
(
'img'
).
src
=
"data:image/jpeg;base64, "
+
product
.
info
.
img
;
temp_2
.
content
.
querySelectorAll
(
'span'
)[
1
].
textContent
=
data
.
product
.
identifier
;
temp_2
.
content
.
querySelectorAll
(
'span'
)[
1
].
textContent
=
product
.
info
.
identifier
;
temp_2
.
content
.
querySelectorAll
(
'span'
)[
2
].
textContent
=
data
.
product
.
size
;
temp_2
.
content
.
querySelectorAll
(
'span'
)[
2
].
textContent
=
product
.
info
.
size
;
temp_2
.
content
.
querySelectorAll
(
'span'
)[
3
].
textContent
=
data
.
product
.
instrumentname
;
temp_2
.
content
.
querySelectorAll
(
'span'
)[
3
].
textContent
=
product
.
info
.
instrumentname
;
var
clone_2
=
document
.
importNode
(
temp_2
.
content
,
true
);
var
clone_2
=
document
.
importNode
(
temp_2
.
content
,
true
);
document
.
querySelector
(
'#'
+
prod_id
).
appendChild
(
clone_2
);
document
.
querySelector
(
'#product-list-cart-items'
).
appendChild
(
clone_2
);
// 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'
// });
}
}
});
});
});
});
...
@@ -332,22 +445,22 @@ $(document).ready(function () {
...
@@ -332,22 +445,22 @@ $(document).ready(function () {
// genera la compra del producto
// genera la compra del producto
$
(
'#purchased-product-form'
).
submit
(
function
(
event
)
{
//
$('#purchased-product-form').submit(function (event) {
var
submit_data
=
$
(
'#purchased-product-form'
).
serialize
();
//
var submit_data = $('#purchased-product-form').serialize();
event
.
preventDefault
();
//
event.preventDefault();
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);
$
.
ajax
({
//
$.ajax({
type
:
'POST'
,
//
type : 'POST',
url
:
purch_prod_url
,
//
url : purch_prod_url,
data
:
{
//
data : {
'csrfmiddlewaretoken'
:
document
.
getElementsByName
(
'csrfmiddlewaretoken'
)[
0
].
value
,
//
'csrfmiddlewaretoken' : document.getElementsByName('csrfmiddlewaretoken')[0].value,
'product_list'
:
JSON
.
stringify
(
productListCart
)
//
'product_list' : JSON.stringify(productListCart)
},
//
},
dataType
:
'json'
//
dataType : 'json'
});
//
});
});
//
});
});
});
catalog/static/js/openLayers4.js
View file @
1e85c92c
...
@@ -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
;
}
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
/**
/**
...
...
catalog/templates/map.html
View file @
1e85c92c
...
@@ -254,6 +254,6 @@
...
@@ -254,6 +254,6 @@
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
p
urch_prod_url
=
"{% url 'purch-rqst' %}"
// url for requesting product purschase
var
p
rod_from_cartDB_url
=
"{% url 'from-cart-rqst' %}"
// url for requesting product from cart table in DB
</script>
</script>
{% endblock %}
{% endblock %}
catalog/templates/templates.html
View file @
1e85c92c
...
@@ -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>
...
...
catalog/urls.py
View file @
1e85c92c
...
@@ -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'
)
]
]
catalog/views.py
View file @
1e85c92c
...
@@ -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'
)
...
@@ -72,12 +71,16 @@ def productList(request):
...
@@ -72,12 +71,16 @@ def productList(request):
# params['cloudcoverpercentage'] = cloud_percentage
# params['cloudcoverpercentage'] = cloud_percentage
params
[
'cloudcoverpercentage'
]
=
cloud_percentage
params
[
'cloudcoverpercentage'
]
=
cloud_percentage
products
=
sentinel
.
getProducts
(
area
,
date
,
params
)
## getting the bounding box of the polygon
pol_bbox
=
polygonToBox
.
getWKTPolygonBoundingBox
(
area
,
True
)
## 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,18 +155,22 @@ def regionSearched(request):
...
@@ -151,18 +155,22 @@ 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'
]
p_info
=
product
[
'info'
]
PRODUCT_EXISTS
=
CartProduct
.
objects
.
filter
(
uuid
=
p_uuid
,
user
=
user
)
.
exists
()
if
not
PRODUCT_EXISTS
:
cartProd
=
CartProduct
(
cartProd
=
CartProduct
(
user
=
user
,
user
=
user
,
prod_uuid
=
product
[
'uuid'
]
,
uuid
=
p_uuid
,
prod_num
=
product_num
,
info
=
json
.
dumps
(
p_info
,
indent
=
3
,
sort_keys
=
True
,
ensure_ascii
=
True
)
,
purchased
=
False
purchased
=
False
)
)
...
@@ -172,62 +180,82 @@ def saveInCart(request):
...
@@ -172,62 +180,82 @@ def saveInCart(request):
return
HttpResponse
(
status
=
204
)
return
HttpResponse
(
status
=
204
)
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
def
purchaseProduc
t
(
request
):
def
getFromCar
t
(
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
]
user
=
User
.
objects
.
get
(
id
=
request
.
user
.
id
)
prod_
purchased
=
json
.
loads
(
request
.
POST
[
'product_list'
]
)
prod_
uuid_list
=
request
.
POST
[
'product_uuid_list'
]
.
split
(
","
)
# prod_purchased = ['S2B_MSIL1C_20171226T162659_N0206_R040_T16QBJ_20171226T212212', 'S2B_MSIL1C_20180326T161909_N0206_R040_T15QZD_20180326T195757'
]
prod_list
=
[
]
for
p
in
prod_purchased
:
for
prod_uuid
in
prod_uuid_list
:
p_uuid
=
p
[
'uuid'
]
product
=
CartProduct
.
objects
.
filter
(
uuid
=
prod_uuid
,
user
=
user
)
.
first
()
p_identifier
=
p
[
'identifier'
]
prod_list
.
append
({
PRODUCT_EXISTS
=
Product_l1c
.
objects
.
filter
(
uuid
=
p_uuid
)
.
exists
()
'uuid'
:
product
.
uuid
,
'info'
:
json
.
loads
(
product
.
info
)
})
if
not
PRODUCT_EXISTS
:
return
JsonResponse
({
'product_list'
:
prod_list
})
products_to_download
[
'uuid'
]
.
append
(
p_uuid
)
products_to_download
[
'id'
]
.
append
(
p_identifier
)
# print json.dumps(p, indent=3, sort_keys=True)
#-------------------------------------------------------------------------------
# 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' : []
# }
## Saves data to DB using populate_products_l1c command ##
# user = User.objects.get(id=request.user.id)
management
.
call_command
(
'populate_products_l1c'
,
file_path
=
prod_dir
,
products_list
=
products_to_download
[
'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']
## Register of user purchase ##
# for p in prod_purchased:
purch
=
Purchase
(
user
=
user
)
# p_uuid = p['uuid']
purch
.
save
()
# p_identifier = p['identifier']
# PRODUCT_EXISTS = Product_l1c.objects.filter(uuid=p_uuid).exists()
for
p_uuid
in
products_to_download
[
'uuid'
]
:
# if not PRODUCT_EXISTS
:
prod_l1c
=
Product_l1c
.
objects
.
get
(
uuid
=
p_uuid
)
# products_to_download['uuid'].append(
p_uuid)
purch
.
prod_list
.
add
(
prod_l1c
)
# products_to_download['id'].append(p_identifier
)
# # 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'])
# ## 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)
### TODO: Download products somewhere .. ###
# sentinel.downloadProducts(products, prod_dir)
### 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)
# ### TODO: Download products somewhere .. ###
# # sentinel.downloadProducts(products, prod_dir)
# ### 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)
# return HttpResponse(status=204)
return
HttpResponse
(
status
=
204
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment