Commit 3c7cba87 authored by Ulises Morales Ramírez's avatar Ulises Morales Ramírez

Merge branch 'ipn_paypal' into 'dev'

IPN

See merge request !8
parents da21ffcc 1304ce86
......@@ -14,7 +14,7 @@ import os
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
BASE_URL = "localhost:8000"
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.11/howto/deployment/checklist/
......
......@@ -201,10 +201,10 @@
</tbody>
<tfoot>
<tr>
<td>
<!--td>
<a href="../pay" class="btn btn-primary pull-right">Pay</a>
</td>
<td>
</td-->
<td class="text-center">
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_cart">
<input type="hidden" name="upload" value="1">
......@@ -222,9 +222,10 @@
{% endfor %}
<input type='hidden' name='cancel_return'
value='http://www.example.com/cancel.php'>
value='{{BASE_URL}}/reports'>
<input type='hidden' name='return'
value='http://www.example.com/success.php'>
value='{{BASE_URL}}/catalog/cart'>
<input type="hidden" name="notify_url" value="{{BASE_URL}}/catalog/ipn">
<input type="image"
src="https://www.sandbox.paypal.com/es_XC/MX/i/btn/btn_buynowCC_LG.gif"
border="0" name="submit"
......
......@@ -15,4 +15,5 @@ urlpatterns = [
url(r'^purchcartrqst/$', views.purchaseProduct, name='purch-prod-rqst'),
url(r'^cart/$', views.showCart, name='show-cart'),
url(r'^pay/$', views.Pay, name='pay'),
url(r'^ipn/$', views.IPN, name='ipn'),
]
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.shortcuts import render, redirect
from GeoInt_SIDT.settings import BASE_URL
from catalog.forms import ASFSearchForm
from catalog.models import Polygon, CartProduct, Product_l1c, Search, Purchase, Process
from django.http import HttpResponse, JsonResponse, HttpResponseRedirect
......@@ -8,28 +10,24 @@ 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, base64
import os
import sys
from geosentinel import APISentinel, polygonToBox
########### lee archivo de configuración ################
import cgi
import collections
import urllib
from urllib import parse ########### lee archivo de configuración ################
dirname = os.path.dirname(__file__)
configfile = os.path.join(dirname, '../config/config.json')
with open(configfile, 'r') as f:
config = json.load(f)
print(config['PATHS']['PATH_GEOSENTINEL'])
print(config['PATHS']['PATH_NAS'])
print(config['API_SENTINEL']['SENTINEL_USER'])
print(config['API_SENTINEL']['SENTINEL_PASS'])
NAS_PATH = config['PATHS']['PATH_NAS']
USERS_PATH = config['PATHS']['PATH_USERS']
SENTINEL_PATH = config['PATHS']['PATH_GEOSENTINEL']
......@@ -42,21 +40,23 @@ sentinel = APISentinel.APISentinel(API_SENTINEL_USER, API_SENTINEL_PASS)
# Create your views here.
#-------------------------------------------------------------------------------
# -------------------------------------------------------------------------------
def SCLJSON2():
return
return
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# -------------------------------------------------------------------------------
# -------------------------------------------------------------------------------
def login(request):
"""
View function for home page of site.
"""
# Render the HTML template index.html with the data in the context variable
return render(request,'login.html',{})
return render(request, 'login.html', {})
#-------------------------------------------------------------------------------
# -------------------------------------------------------------------------------
def map(request):
"""
View function for home page of site.
......@@ -64,18 +64,20 @@ def map(request):
form = ASFSearchForm(request.POST)
showcart = True
# Render the HTML template index.html with the data in the context variable
return render(request, 'map.html', { "searchForm": form,"showcart": showcart })
return render(request, 'map.html', {"searchForm": form, "showcart": showcart})
#-------------------------------------------------------------------------------
# -------------------------------------------------------------------------------
def requestToImage(request):
img_link = request.GET['value']
r = requests.get(img_link, auth=("emmhp", "geoemm29"), stream=True)
img_str = base64.b64encode(r.content)
r = requests.get(img_link, auth=("emmhp", "geoemm29"), stream=True)
img_str = base64.b64encode(r.content)
img_str = img_str.decode('utf-8')
return JsonResponse({'img': img_str})
#-------------------------------------------------------------------------------
# -------------------------------------------------------------------------------
def productList(request):
"""
View function for home page of site.
......@@ -83,18 +85,17 @@ def productList(request):
req = dict(request.POST)
req.pop('csrfmiddlewaretoken', None)
user = User.objects.get(id=request.user.id)
process = req['platform'][0]
area = req['polygon'][0]
init_date = req['start'][0][:10]
end_date = req['end'][0][:10]
clouds = req['cloudPercentage'][0]
user = User.objects.get(id=request.user.id)
process = req['platform'][0]
area = req['polygon'][0]
init_date = req['start'][0][:10]
end_date = req['end'][0][:10]
clouds = req['cloudPercentage'][0]
cloud_percentage = "[0 TO " + req['cloudPercentage'][0] + "]"
## ----- aqui llamada a api sentinel
## ----- antes consultar en DB si no se tiene ya el producto
date = ("".join(init_date.split('-')), "".join(end_date.split('-')))
date = ("".join(init_date.split('-')), "".join(end_date.split('-')))
params = {"platformname": "Sentinel-2"}
# if cloud_percentage.strip():
......@@ -106,9 +107,12 @@ def productList(request):
## requesting producto to sentinel api
##products = sentinel.getProducts(pol_bbox, date, params)
products = sentinel.getProducts(pol_bbox, date, {"platformname":"Sentinel-2", "cloudcoverpercentage":cloud_percentage}, "Contains") ##intenta obtener los productos que contienen el polígono
if len(products)<=0:
products = sentinel.getProducts(pol_bbox, date, {"platformname":"Sentinel-2", "cloudcoverpercentage":cloud_percentage}) ## si no hay que contengan el polígono busca los que lo intersecan
products = sentinel.getProducts(pol_bbox, date,
{"platformname": "Sentinel-2", "cloudcoverpercentage": cloud_percentage},
"Contains") ##intenta obtener los productos que contienen el polígono
if len(products) <= 0:
products = sentinel.getProducts(pol_bbox, date, {"platformname": "Sentinel-2",
"cloudcoverpercentage": cloud_percentage}) ## si no hay que contengan el polígono busca los que lo intersecan
## path from image preview storage location
img_preview = '/static/images/sat_preview/sat_test.jpg'
......@@ -124,44 +128,43 @@ def productList(request):
products[p]['tileid'] = titleid[5][1:]
catalog.append({
'process' : process,
'start_date' : init_date,
'end_date' : end_date,
'cloud_percentage' : cloud_percentage,
'product' : products[p],
'uuid' : products[p]['uuid'],
'img' : img_preview
'process': process,
'start_date': init_date,
'end_date': end_date,
'cloud_percentage': cloud_percentage,
'product': products[p],
'uuid': products[p]['uuid'],
'img': img_preview
})
#Se tiene que pasar a Search el objeto completo correspondiente al process
index = Process.objects.filter(platform_id = process)
proceso = index[0]
# Se tiene que pasar a Search el objeto completo correspondiente al process
index = Process.objects.filter(platform_id=process)
proceso = index[0]
if(len(catalog)!=0):
if (len(catalog) != 0):
listSearch = Search(
user = user,
startDate = init_date,
endDate = end_date,
process = proceso, #Aquí pasar el objeto completo de Process Desbloqueo cambio de Sergio
clouds = clouds,
area = area
user=user,
startDate=init_date,
endDate=end_date,
process=proceso, # Aquí pasar el objeto completo de Process Desbloqueo cambio de Sergio
clouds=clouds,
area=area
)
listSearch.save()
return JsonResponse({'catalog': catalog});
# return HttpResponse(status=204)
#-------------------------------------------------------------------------------
# -------------------------------------------------------------------------------
class SearchSubmitView(View):
template = 'map.html'
def strip_accents(self, s):
return ''.join((c for c in unicodedata.normalize('NFD', s) if unicodedata.category(c) != 'Mn'))
def post(self, request):
template = loader.get_template(self.template)
template = loader.get_template(self.template)
searchValue = request.POST.get('value', '')
searchValue = self.strip_accents(searchValue).lower()
......@@ -176,86 +179,92 @@ class SearchSubmitView(View):
polygonInfo = json.loads(polygon.json_info)
data_list.append({
'id' : str(polygon.id),
'city' : polygonInfo['properties']['NOMGEO'],
'state' : polygonInfo['properties']['ENT_NAME'],
'geojson' : polygonInfo,
'wkt_polygon' : polygon.wkt_polygon,
'description' : polygon.description,
'source' : polygon.source
'id': str(polygon.id),
'city': polygonInfo['properties']['NOMGEO'],
'state': polygonInfo['properties']['ENT_NAME'],
'geojson': polygonInfo,
'wkt_polygon': polygon.wkt_polygon,
'description': polygon.description,
'source': polygon.source
})
data = {
'polygonList' : data_list
'polygonList': data_list
}
return JsonResponse(data)
#-------------------------------------------------------------------------------
# -------------------------------------------------------------------------------
def regionSearched(request):
"""
View function for searching regions in DB
"""
city_name = request.POST['value']
cityList = Polygon.objects.filter(name=city_name).exclude(E_MUN__isnull=True)
cityList = Polygon.objects.filter(name=city_name).exclude(E_MUN__isnull=True)
if len(cityList) > 0:
print(cityList)
return HttpResponseRedirect(reverse('map'))
#-------------------------------------------------------------------------------
# -------------------------------------------------------------------------------
def saveInCart(request):
"""
Saves product in cart table in DB
"""
user = User.objects.get(id=request.user.id)
user = User.objects.get(id=request.user.id)
product_list = json.loads(request.POST['cart_product_list'])
search = Search.objects.filter(user=user).last()
search = Search.objects.filter(user=user).last()
if(len(product_list)!=0):
if (len(product_list) != 0):
cartProd = Purchase(
user = user,
search = search,
productList = json.dumps(product_list, indent=3, sort_keys=True, ensure_ascii=True),
purchased = False,
price = 5.0
user=user,
search=search,
productList=json.dumps(product_list, indent=3, sort_keys=True, ensure_ascii=True),
purchased=False,
price=5.0
)
cartProd.save()
return HttpResponse(status=204)
#-------------------------------------------------------------------------------
# -------------------------------------------------------------------------------
def getFromCart(request):
"""
Temporarily gets product from cart table based on uuid porperty to show in cart section
"""
user = User.objects.get(id=request.user.id)
prod_list = []
product_list = Purchase.objects.values('user', 'productList', 'purchased', 'price', 'aggreg_date','id').filter(user=user, purchased=0)
user = User.objects.get(id=request.user.id)
prod_list = []
product_list = Purchase.objects.values('user', 'productList', 'purchased', 'price', 'aggreg_date', 'id').filter(
user=user, purchased=0)
for products in product_list:
product = json.loads(products['productList'])
prod_list.append({
'purchased': products['purchased'],
'price' : products['price'],
'aggreg_date' : products['aggreg_date'],
'price': products['price'],
'aggreg_date': products['aggreg_date'],
'id': products['id'],
'catalog': product
})
return JsonResponse({'product_list': prod_list})
#-------------------------------------------------------------------------------
# -------------------------------------------------------------------------------
def delFromCart(request):
user = User.objects.get(id=request.user.id)
product_list = Purchase.objects.filter(user=user, id=request.POST['id']).delete()
return HttpResponse(status=204)
##-------------------------------------------------------------------------------
#def L2ASCL_data(request):
# def L2ASCL_data(request):
# with open("/home/mario/NAS_MarioCh/mario_repsat_test/T15QZD_sclData.json") as f:
# json_data = OrderedDict(json.load(f))
# graphData = dict()
......@@ -287,89 +296,91 @@ def delFromCart(request):
## graphData['options']['maintainAspectRatio']=False
# print( json.dumps(graphData).encode("utf-8"))
# return render(request, 'L2ASCL_data.html', {"graphData":json.dumps(graphData).encode("utf-8")})
#-------------------------------------------------------------------------------
# -------------------------------------------------------------------------------
def wsReportImages(request):
print(request.GET)
#-------------------------------------------------------------------------------
# -------------------------------------------------------------------------------
def purchaseProduct(request):
"""
For now to purchase a product consists in verifying whether L1C products in cart already exist in DB.
"""
# ------------- crear archivo findProducts.json
print("Comprar productos!!!!")
user = User.objects.get(id=request.user.id)
prod_list = []
product_list = Search.objects.values('user', 'area', 'startDate', 'endDate','clouds').filter(user=user, purchased=0)
user = User.objects.get(id=request.user.id)
prod_list = []
product_list = Search.objects.values('user', 'area', 'startDate', 'endDate', 'clouds').filter(user=user,
purchased=0)
data = {}
for products in product_list:
print(products)
#~ product = json.loads(products['productList'])
#~ prod_list.append({
#~ 'purchased': products['purchased'],
#~ 'price' : products['price'],
#~ 'aggreg_date' : products['aggreg_date'],
#~ 'catalog': product
#~ })
#~ return JsonResponse({'product_list': prod_list})
#~ print("Comprar productos!!!!")
#~ print(request)
#~ print("start date:")
#~ print(request.POST['wkt'])
#~ print(request.POST['startDate'])
#~ print(request.POST['endDate'])
#~ print(request.POST['clouds'])
#~ print(request.POST['usuario'])
#~ username = request.POST['usuario']
#~ fecha_inicio = request.POST['startDate']
#~ fecha_fin = request.POST['endDate']
#~ print(fecha_inicio.replace("-", ""))
#~ print(fecha_fin.replace("-", ""))
#~ userdir = NAS_PATH + "repsat_test_dev/"+username ##crea el directorio del usuario
#~ if not os.path.exists(userdir):
#~ os.makedirs(userdir)
#~ products_dir = NAS_PATH + "sentinelImages/L2A/"
#~ linksDir = userdir+"/L2A/"
#~ #obtiene los datos para el json
#~ data = {}
#~ data['wkt'] = request.POST['wkt']
#~ data['platform'] = 'Sentinel-2'
#~ data['productLevel'] = 'L2A'
#~ data['startDate'] = fecha_inicio.replace("-", "") #quita los guiones de la fecha
#~ data['endDate'] = fecha_fin.replace("-", "") #quita los guiones de la fecha
#~ # data['startDate'] = request.POST['startDate']
#~ # data['endDate'] = request.POST['endDate']
#~ data['clouds'] = request.POST['clouds']
#~ # data['productsDir'] = '/home/david/NAS/sentinelImages/L2A/'
#~ # data['linksDir'] = '/home/david/centroGEO/repsat/tests/L2A/'
#~ data['productsDir'] = products_dir
#~ data['linksDir'] = linksDir
#~ data['username'] = 'mario-chirinos'
#~ data['password'] = 'r4nc0r4u'
#~ #json_data = json.dumps(data, indent=4,sort_keys=True)
#~ #formatea el json
#~ json_data = json.dumps(data, indent=4)
#~ print(json_data)
#~ #escribe el json en el archivo
#~ fidProductsFile = open(userdir+"/findProducts.json", "w")
#~ fidProductsFile.write(json_data)
#~ fidProductsFile.close()
#-------------------------------------------------
# ~ product = json.loads(products['productList'])
# ~ prod_list.append({
# ~ 'purchased': products['purchased'],
# ~ 'price' : products['price'],
# ~ 'aggreg_date' : products['aggreg_date'],
# ~ 'catalog': product
# ~ })
# ~ return JsonResponse({'product_list': prod_list})
# ~ print("Comprar productos!!!!")
# ~ print(request)
# ~ print("start date:")
# ~ print(request.POST['wkt'])
# ~ print(request.POST['startDate'])
# ~ print(request.POST['endDate'])
# ~ print(request.POST['clouds'])
# ~ print(request.POST['usuario'])
# ~ username = request.POST['usuario']
# ~ fecha_inicio = request.POST['startDate']
# ~ fecha_fin = request.POST['endDate']
# ~ print(fecha_inicio.replace("-", ""))
# ~ print(fecha_fin.replace("-", ""))
# ~ userdir = NAS_PATH + "repsat_test_dev/"+username ##crea el directorio del usuario
# ~ if not os.path.exists(userdir):
# ~ os.makedirs(userdir)
# ~ products_dir = NAS_PATH + "sentinelImages/L2A/"
# ~ linksDir = userdir+"/L2A/"
# ~ #obtiene los datos para el json
# ~ data = {}
# ~ data['wkt'] = request.POST['wkt']
# ~ data['platform'] = 'Sentinel-2'
# ~ data['productLevel'] = 'L2A'
# ~ data['startDate'] = fecha_inicio.replace("-", "") #quita los guiones de la fecha
# ~ data['endDate'] = fecha_fin.replace("-", "") #quita los guiones de la fecha
# ~ # data['startDate'] = request.POST['startDate']
# ~ # data['endDate'] = request.POST['endDate']
# ~ data['clouds'] = request.POST['clouds']
# ~ # data['productsDir'] = '/home/david/NAS/sentinelImages/L2A/'
# ~ # data['linksDir'] = '/home/david/centroGEO/repsat/tests/L2A/'
# ~ data['productsDir'] = products_dir
# ~ data['linksDir'] = linksDir
# ~ data['username'] = 'mario-chirinos'
# ~ data['password'] = 'r4nc0r4u'
# ~ #json_data = json.dumps(data, indent=4,sort_keys=True)
# ~ #formatea el json
# ~ json_data = json.dumps(data, indent=4)
# ~ print(json_data)
# ~ #escribe el json en el archivo
# ~ fidProductsFile = open(userdir+"/findProducts.json", "w")
# ~ fidProductsFile.write(json_data)
# ~ fidProductsFile.close()
# -------------------------------------------------
products = json.loads(request.POST['product_objects'])
orderedProducts = OrderedDict()
......@@ -385,13 +396,14 @@ def purchaseProduct(request):
## TODO: Implement a webservice in server for downloading those non-existing L1C products. ##
## TODO: Add product L1C to Cart DB after product download. ##
#-------------------------------------------------------------------------------
# -------------------------------------------------------------------------------
# def L2ASCL_data(request):
# with open("/home/ulises/REPSAT_NAS/mario_repsat_test/T15QZD_sclData.json") as f:
# json_data = json.load(f)
# print(json_data)
# return render(request, 'L2ASCL_data.html', {"labels":",".join([k for k in json_data]), "vegetation":[v["4"] for k,v in json_data.items()] })
#-------------------------------------------------------------------------------
# -------------------------------------------------------------------------------
# def purchaseProduct(request):
# """
# For now to purchase a product consists in downloading L1C products and saving them in DB.
......@@ -452,12 +464,12 @@ def purchaseProduct(request):
# return HttpResponse(status=204)
#-------------------------------------------------------------------------------
# -------------------------------------------------------------------------------
def showCart(request):
user = User.objects.get(id=request.user.id)
prod_list = []
product_list = Purchase.objects.values('user', 'productList', 'purchased', 'price', 'aggreg_date','id','search__process_id__name').filter(user=user, purchased=0)
product_list = Purchase.objects.values('user', 'productList', 'purchased', 'price', 'aggreg_date', 'id',
'search__process_id__name').filter(user=user, purchased=0)
total_price = 0
total_products = 0
......@@ -474,90 +486,166 @@ def showCart(request):
total_price += products['price']
total_products += 1
return render(request, 'show_cart.html', {'product_list': prod_list, 'total_price': total_price, 'total_products': total_products})
return render(request, 'show_cart.html',
{'product_list': prod_list, 'total_price': total_price, 'total_products': total_products,'BASE_URL': BASE_URL})
#-------------------------------------
def Pay (request):
# -------------------------------------
#---------------test process----------------------
def Pay(request):
# ---------------test process----------------------
print("PAGAR!!!!")
user = User.objects.get(id=request.user.id)
query = []
query = Purchase.objects.values('id','search__area','user','user__username','user__email', 'search_id', 'search__clouds','search__startDate','search__endDate').filter(user=user, purchased=0)
user = User.objects.get(id=request.user.id)
query = []
query = Purchase.objects.values('id', 'search__area', 'user', 'user__username', 'user__email', 'search_id',
'search__clouds', 'search__startDate', 'search__endDate').filter(user=user,
purchased=0)
for values in query:
#print(values['user__username'])
#print(values['user__email'])
#print(values['search_id'])
#print(str(values['search__startDate'].date()).replace("-", ""))
#print(str(values['search__endDate'].date()).replace("-", ""))
#print(values['search__clouds'])
#print(values['search__area'])
# print(values['user__username'])
# print(values['user__email'])
# print(values['search_id'])
# print(str(values['search__startDate'].date()).replace("-", ""))
# print(str(values['search__endDate'].date()).replace("-", ""))
# print(values['search__clouds'])
# print(values['search__area'])
print(values['id'])
username = values['user__username']
useremail = values['user__email']
#userdir = NAS_PATH + "repsat_test_dev/"+useremail ##crea el directorio del usuario
# userdir = NAS_PATH + "repsat_test_dev/"+useremail ##crea el directorio del usuario
userdir = USERS_PATH + useremail
if not os.path.exists(userdir):
os.makedirs(userdir)
search_dir = userdir+"/"+str(values['search_id'])
search_dir = userdir + "/" + str(values['search_id'])
if not os.path.exists(search_dir):
os.makedirs(search_dir)
os.makedirs(search_dir)
products_dir = NAS_PATH + "sentinelImages/L2A/"
linksDir = search_dir+"/L2A/"
#obtiene los datos para el json
linksDir = search_dir + "/L2A/"
# obtiene los datos para el json
data = {}
data['wkt'] = values['search__area']
data['platform'] = 'Sentinel-2'
data['productLevel'] = 'L2A'
data['startDate'] = str(values['search__startDate'].date()).replace("-", "") #quita los guiones de la fecha
data['endDate'] = str(values['search__endDate'].date()).replace("-", "") #quita los guiones de la fecha
data['startDate'] = str(values['search__startDate'].date()).replace("-", "") # quita los guiones de la fecha
data['endDate'] = str(values['search__endDate'].date()).replace("-", "") # quita los guiones de la fecha
data['clouds'] = values['search__clouds']
data['productsDir'] = products_dir
data['linksDir'] = linksDir
data['linksDir'] = linksDir
data['username'] = API_SENTINEL_USER
data['password'] = API_SENTINEL_PASS
#json_data = json.dumps(data, indent=4,sort_keys=True)
#formatea el json
# json_data = json.dumps(data, indent=4,sort_keys=True)
# formatea el json
json_data = json.dumps(data, indent=4)
#print(json_data)
#escribe el json en el archivo
fidProductsFile = open(search_dir+"/findProducts.json", "w")
# print(json_data)
# escribe el json en el archivo
fidProductsFile = open(search_dir + "/findProducts.json", "w")
fidProductsFile.write(json_data)
fidProductsFile.close()
os.system("L2ASCL_AreaProcessing.sh "+search_dir+"/ 1 > "+search_dir+"/L2ASCL_AreaProcessing.log") ###ejecuta el proceso
#~ user = User.objects.get(id=request.user.id)
#~ prod_list = []
#~ product_list = Search.objects.values('user', 'area', 'startDate', 'endDate','clouds').filter(user=user)
#~ data = {}
#~ for products in product_list:
#~ print(products)
#~ product = json.loads(products['productList'])
#~ prod_list.append({
#~ 'purchased': products['purchased'],
#~ 'price' : products['price'],
#~ 'aggreg_date' : products['aggreg_date'],
#~ 'catalog': product
#~ })
#~ return JsonResponse({'product_list': prod_list})
#-------------------------------------
os.system(
"L2ASCL_AreaProcessing.sh " + search_dir + "/ 1 > " + search_dir + "/L2ASCL_AreaProcessing.log") ###ejecuta el proceso
# ~ user = User.objects.get(id=request.user.id)
# ~ prod_list = []
# ~ product_list = Search.objects.values('user', 'area', 'startDate', 'endDate','clouds').filter(user=user)
# ~ data = {}
# ~ for products in product_list:
# ~ print(products)
# ~ product = json.loads(products['productList'])
# ~ prod_list.append({
# ~ 'purchased': products['purchased'],
# ~ 'price' : products['price'],
# ~ 'aggreg_date' : products['aggreg_date'],
# ~ 'catalog': product
# ~ })
# ~ return JsonResponse({'product_list': prod_list})
# -------------------------------------
Purchase.objects.filter(user_id=request.user.id, purchased=0).update(purchased=True)
return redirect('../../reports')
# -----------------------------------------------------------------
def IPN(request):
print("content-type: text/html\r\n\r\n")
if request.POST['payment_status'] == 'Completed':
Purchase.objects.filter(user_id=request.user.id, purchased=0).update(purchased=True)
return redirect('../../reports')
else:
return redirect('../cart')
#f.write(request.GET)
#f.close()
# PAYPAL_URL = "https://sandbox.paypal.com/cgi-bin/webscr"
#
# formData = "cmd=_notify-validate&" + parse.unquote(inputraw)
#
# f.write(formData);
# f.write("\n") # write into file 1st data package from paypal
#
# req = urllib.request.Request(PAYPAL_URL, formData.encode())
# req.add_header("Content-type", "application/x-www-form-urlencoded")
# response = urllib.request.urlopen(req)
# status = str(response.read())
#
# f.write(status) # write back into file what you received from paypal the 2nd time
# f.write("\n")
#
# if (not status == "b'VERIFIED'"):
# f.write("OH NO")
# # ERROR
# else:
# # HERE WE WILL TRIGGER STUFF WITH THE DATA FROM PAYPAL
# f.write("OH YES")
#
# f.write("\n")
# f.close()
#-----------------------------------------------------------------------
# def Pay3(request):
# VERIFY_URL_PROD = 'https://ipnpb.paypal.com/cgi-bin/webscr'
# VERIFY_URL_TEST = 'https://ipnpb.sandbox.paypal.com/cgi-bin/webscr'
#
# # Switch as appropriate
# VERIFY_URL = VERIFY_URL_TEST
#
# # CGI preamble
# print('content-type: text/plain')
# print()
#
# # Read and parse query string
# param_str = sys.stdin.readline().strip()
# params = urllib.parse.parse_qsl(param_str)
#
# # Add '_notify-validate' parameter
# params.append(('cmd', '_notify-validate'))
#
# # Post back to PayPal for validation
#
# headers = {'content-type': 'application/x-www-form-urlencoded',
# 'user-agent': 'Python-IPN-Verification-Script'}
# r = requests.post(VERIFY_URL, params=params, headers=headers, verify=True)
# r.raise_for_status()
#
# # Check return message and take action as needed
# if r.text == 'VERIFIED':
# pass
# elif r.text == 'INVALID':
# pass
# else:
# pass
# return redirect("https://google.com.mx")
\ No newline at end of file
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