Commit b77d7f55 authored by Renán Sosa Guillen's avatar Renán Sosa Guillen

cart management

parent 73cce675
......@@ -151,7 +151,7 @@ $(document).ready(function () {
var typingInterval = 800; //milliseconds
var productListPrev = [];
var productListGlobe = [];
var productListCart = {}; // this array represent DB where products will be stored
var productListCart = []; // this array represent DB where products will be stored
// On keyup, start the contdown
$('#ajax-input').on('input', function () {
......@@ -261,6 +261,7 @@ $(document).ready(function () {
// agrega producto al carrito
$('#product-to-cart-form').submit(function (event) {
var submit_data = $('#product-to-cart-form').serialize();
......@@ -274,12 +275,13 @@ $(document).ready(function () {
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.toString();
var prod_id = temp_1.content.querySelectorAll('ul')[1].id + "-" + PRODUCT_COUNTER_STR;
// filling template
temp_1.content.querySelector('span').textContent = "Product " + PRODUCT_COUNTER.toString();
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);
......@@ -292,6 +294,8 @@ $(document).ready(function () {
if (submit_data_array.indexOf(data.id) > -1) {
console.log("DATA sí esta: ", data.id);
console.log("SS: ", data.product.size);
productListCart.push(data.product);
// productListCart.push(data.id);
erase_product_list_globe_by_id(data.id);
var temp_2 = document.querySelector('#product_cart_2');
......@@ -308,7 +312,42 @@ $(document).ready(function () {
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);
$.ajax({
type : 'POST',
url : purch_prod_url,
data : {
'csrfmiddlewaretoken' : document.getElementsByName('csrfmiddlewaretoken')[0].value,
'product_list' : JSON.stringify(productListCart)
},
dataType : 'json'
});
});
});
......@@ -121,18 +121,21 @@
<!-- /.tab-pane -->
<!-- Settings tab content -->
<div class="tab-pane" id="control-sidebar-settings-tab">
<form id='purchased-product-form' role="form" method="post">
{% csrf_token %}
<div class="container">
<div class="sidebar-title">
<h3><b>My cart</b></h3>
</div>
<div class="sidebar-button">
<button type="button" name="search" id="add-cart" class="btn btn-primary">
Buy products
<button type="submit" name="search" id="purchase" class="btn btn-primary">
Purchase
</button>
</div>
</div>
<!-- this ul element is filled with data -->
<ul id="product-list-cart" class="sidebar-menu" data-widget="tree"></ul>
</form>
</div>
<!-- /.tab-pane -->
</div>
......
......@@ -253,5 +253,7 @@
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
</script>
{% endblock %}
......@@ -8,6 +8,8 @@ urlpatterns = [
url(r'^productlist/$', views.productList, name='productList'),
url(r'^regionsearched/$', views.regionSearched, name='regionSearched'),
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'^purchrequest/$', views.purchaseProduct, name='purch-rqst')
]
......@@ -2,12 +2,15 @@
from __future__ import unicode_literals
from django.shortcuts import render
from catalog.forms import ASFSearchForm
from catalog.models import Polygon
from catalog.models import Polygon, CartProduct, Product_l1c, Purchase
from django.http import HttpResponse, JsonResponse, HttpResponseRedirect
from django.urls import reverse
from django.views.generic.base import View
from django.template import loader, RequestContext
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
......@@ -144,3 +147,87 @@ def regionSearched(request):
print cityList
return HttpResponseRedirect(reverse('map'))
#-------------------------------------------------------------------------------
def saveInCart(request):
"""
Saves product in cart 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()
return HttpResponse(status=204)
#-------------------------------------------------------------------------------
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.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)
# 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)
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