Admin

parent 9b18475d
...@@ -27,6 +27,7 @@ urlpatterns = [ ...@@ -27,6 +27,7 @@ urlpatterns = [
url(r'^reports/', include('reports.urls')), url(r'^reports/', include('reports.urls')),
url(r'^$', RedirectView.as_view(url='/catalog/', permanent=True)), url(r'^$', RedirectView.as_view(url='/catalog/', permanent=True)),
url(r'^accounts/', include('django.contrib.auth.urls')), url(r'^accounts/', include('django.contrib.auth.urls')),
#url(r'^accounts/', include('registration')),
url(r'^mail/', include('mail.urls')), url(r'^mail/', include('mail.urls')),
] ]
# + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) # + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
...@@ -12,8 +12,6 @@ class AuthRequiredMiddleware(object): ...@@ -12,8 +12,6 @@ class AuthRequiredMiddleware(object):
# Code to be executed for each request before # Code to be executed for each request before
# the view (and later middleware) are called. # the view (and later middleware) are called.
response = self.get_response(request) response = self.get_response(request)
print(request.path_info)
print(reverse('login'))
# if request.path_info == reverse('ws-news-list2'): # if request.path_info == reverse('ws-news-list2'):
# return response # return response
...@@ -23,5 +21,5 @@ class AuthRequiredMiddleware(object): ...@@ -23,5 +21,5 @@ class AuthRequiredMiddleware(object):
# Code to be executed for each request/response after # Code to be executed for each request/response after
# the view is called. # the view is called.
return response return response
...@@ -45,6 +45,12 @@ ...@@ -45,6 +45,12 @@
</a> </a>
<div class="navbar-custom-menu"> <div class="navbar-custom-menu">
<ul class="nav navbar-nav"> <ul class="nav navbar-nav">
<li>
{% if request.user.is_superuser %}
<a id="product-list-toggle" href="#" title="super user"><i
class="fa fa-gears"></i></a>
{% endif %}
</li>
<!-- Messages: style can be found in dropdown.less--> <!-- Messages: style can be found in dropdown.less-->
<!-- <li class="dropdown messages-menu"> --> <!-- <li class="dropdown messages-menu"> -->
{#% block messages %#}{#% endblock %#} {#% block messages %#}{#% endblock %#}
......
...@@ -214,6 +214,9 @@ ...@@ -214,6 +214,9 @@
{% block user %} {% block user %}
{% include "user_button.html" %} {% include "user_button.html" %}
{% endblock %} {% endblock %}
{% block user2 %}
{% include "user_button.html" %}
{% endblock %}
{% block content %} {% block content %}
<div id="map" class="map" tabindex="0"></div> <div id="map" class="map" tabindex="0"></div>
......
...@@ -16,4 +16,5 @@ urlpatterns = [ ...@@ -16,4 +16,5 @@ urlpatterns = [
url(r'^cart/$', views.showCart, name='show-cart'), url(r'^cart/$', views.showCart, name='show-cart'),
url(r'^pay/$', views.Pay, name='pay'), url(r'^pay/$', views.Pay, name='pay'),
url(r'^ipn/$', views.IPN, name='ipn'), url(r'^ipn/$', views.IPN, name='ipn'),
url(r'^register/$', views.Registration, name='register'),
] ]
...@@ -13,6 +13,8 @@ from django.contrib.auth.models import User ...@@ -13,6 +13,8 @@ from django.contrib.auth.models import User
import requests, json, unicodedata, sys, base64 import requests, json, unicodedata, sys, base64
import os import os
from geosentinel import APISentinel, polygonToBox from geosentinel import APISentinel, polygonToBox
from mail.views import wsMail, wsMail2
dirname = os.path.dirname(__file__) dirname = os.path.dirname(__file__)
configfile = os.path.join(dirname, '../config/config.json') configfile = os.path.join(dirname, '../config/config.json')
...@@ -233,7 +235,8 @@ def getFromCart(request): ...@@ -233,7 +235,8 @@ def getFromCart(request):
user = User.objects.get(id=request.user.id) user = User.objects.get(id=request.user.id)
prod_list = [] prod_list = []
product_list = Purchase.objects.values('user', 'productList', 'purchased', 'price', 'aggreg_date', 'id', product_list = Purchase.objects.values('user', 'productList', 'purchased', 'price', 'aggreg_date', 'id',
'search__process__name', 'search__startDate', 'search__endDate').filter(user=user, purchased=0) 'search__process__name', 'search__startDate', 'search__endDate').filter(
user=user, purchased=0)
for products in product_list: for products in product_list:
product = json.loads(products['productList']) product = json.loads(products['productList'])
...@@ -492,8 +495,8 @@ def Pay(request): ...@@ -492,8 +495,8 @@ def Pay(request):
user = User.objects.get(id=request.user.id) user = User.objects.get(id=request.user.id)
product_list = [] product_list = []
product_list = Purchase.objects.values('id', 'search__area', 'user', 'user__username', 'user__email', 'search_id', product_list = Purchase.objects.values('id', 'search__area', 'user', 'user__username', 'user__email', 'search_id',
'search__clouds', 'search__startDate', 'search__endDate').filter(user=user, 'search__clouds', 'search__startDate', 'search__endDate').filter(user=user,
purchased=0) purchased=0)
for product in product_list: for product in product_list:
...@@ -543,7 +546,8 @@ def Pay(request): ...@@ -543,7 +546,8 @@ def Pay(request):
fidProductsFile.write(json_data) fidProductsFile.write(json_data)
fidProductsFile.close() fidProductsFile.close()
os.system(SENTINEL_PATH+"/tools/L2ASCL_AreaProcessing.sh " + purchase_dir + "/ 1 > " + purchase_dir + "/L2ASCL_AreaProcessing.log") ###ejecuta el proceso os.system(
SENTINEL_PATH + "/tools/L2ASCL_AreaProcessing.sh " + purchase_dir + "/ 1 > " + purchase_dir + "/L2ASCL_AreaProcessing.log") ###ejecuta el proceso
...@@ -572,43 +576,43 @@ def Pay(request): ...@@ -572,43 +576,43 @@ def Pay(request):
# ----------------------------------------------------------------- # -----------------------------------------------------------------
def IPN(request): def IPN(request):
print("content-type: text/html\r\n\r\n") print("content-type: text/html\r\n\r\n")
if request.POST['payment_status'] == 'Completed': if request.POST['payment_status'] == 'Completed':
Purchase.objects.filter(user_id=request.user.id, purchased=0).update(purchased=True) Purchase.objects.filter(user_id=request.user.id, purchased=0).update(purchased=True)
return redirect('../../reports') return redirect('../../reports')
else: else:
return redirect('../cart') return redirect('../cart')
#f.write(request.GET) # f.write(request.GET)
#f.close() # f.close()
# PAYPAL_URL = "https://sandbox.paypal.com/cgi-bin/webscr" # PAYPAL_URL = "https://sandbox.paypal.com/cgi-bin/webscr"
# #
# formData = "cmd=_notify-validate&" + parse.unquote(inputraw) # formData = "cmd=_notify-validate&" + parse.unquote(inputraw)
# #
# f.write(formData); # f.write(formData);
# f.write("\n") # write into file 1st data package from paypal # f.write("\n") # write into file 1st data package from paypal
# #
# req = urllib.request.Request(PAYPAL_URL, formData.encode()) # req = urllib.request.Request(PAYPAL_URL, formData.encode())
# req.add_header("Content-type", "application/x-www-form-urlencoded") # req.add_header("Content-type", "application/x-www-form-urlencoded")
# response = urllib.request.urlopen(req) # response = urllib.request.urlopen(req)
# status = str(response.read()) # status = str(response.read())
# #
# f.write(status) # write back into file what you received from paypal the 2nd time # f.write(status) # write back into file what you received from paypal the 2nd time
# f.write("\n") # f.write("\n")
# #
# if (not status == "b'VERIFIED'"): # if (not status == "b'VERIFIED'"):
# f.write("OH NO") # f.write("OH NO")
# # ERROR # # ERROR
# else: # else:
# # HERE WE WILL TRIGGER STUFF WITH THE DATA FROM PAYPAL # # HERE WE WILL TRIGGER STUFF WITH THE DATA FROM PAYPAL
# f.write("OH YES") # f.write("OH YES")
# #
# f.write("\n") # f.write("\n")
# f.close() # f.close()
#-----------------------------------------------------------------------
# -----------------------------------------------------------------------
# def Pay3(request): # def Pay3(request):
# VERIFY_URL_PROD = 'https://ipnpb.paypal.com/cgi-bin/webscr' # VERIFY_URL_PROD = 'https://ipnpb.paypal.com/cgi-bin/webscr'
# VERIFY_URL_TEST = 'https://ipnpb.sandbox.paypal.com/cgi-bin/webscr' # VERIFY_URL_TEST = 'https://ipnpb.sandbox.paypal.com/cgi-bin/webscr'
...@@ -642,3 +646,18 @@ def IPN(request): ...@@ -642,3 +646,18 @@ def IPN(request):
# else: # else:
# pass # pass
# return redirect("https://google.com.mx") # return redirect("https://google.com.mx")
# ------------------------------------------------------
def Registration(request):
#user = User.objects.filter(email=request.POST['email'])
if User.objects.filter(email=request.POST['email']):
print("ya existe")
return HttpResponse("el correo ya está registrado")
else:
print("agregado")
User.objects.create_user(username=request.POST['username'],
email=request.POST['email'],
password=request.POST['password'], is_active=False)
message = "procesando"
subject = "Registro RepSat"
wsMail2(request.POST['email'],request.POST['username'],message,subject)
return HttpResponse({'message': 'your registration is being processed'})
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min.js"></script>
<script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
<!------ Include the above in your HEAD tag ---------->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="viewport" content="width=device-width"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>RepSat Notification</title>
<style>
{
margin: 0
;
padding: 0
;
font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif
;
box-sizing: border-box
;
font-size: 14px
;
}
img {
max-width: 100%;
}
body {
-webkit-font-smoothing: antialiased;
-webkit-text-size-adjust: none;
width: 100% !important;
height: 100%;
line-height: 1.6;
}
table td {
vertical-align: top;
}
body {
background-color: #f6f6f6;
}
.body-wrap {
background-color: #f6f6f6;
width: 100%;
}
.container {
display: block !important;
max-width: 600px !important;
margin: 0 auto !important;
clear: both !important;
}
.content {
max-width: 600px;
margin: 0 auto;
display: block;
padding: 20px;
}
.main {
background: #fff;
border: 1px solid #e9e9e9;
border-radius: 3px;
}
.content-wrap {
padding: 20px;
}
.content-block {
padding: 0 0 20px;
}
.header {
width: 100%;
margin-bottom: 20px;
}
.footer {
width: 100%;
clear: both;
color: #999;
padding: 20px;
}
.footer a {
color: #999;
}
.footer p,
.footer a,
.footer unsubscribe,
.footer td {
font-size: 12px;
}
.column-left {
float: left;
width: 50%;
}
.column-right {
float: left;
width: 50%;
}
h1,
h2,
h3 {
font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
color: #000;
margin: 40px 0 0;
line-height: 1.2;
font-weight: 400;
}
h1 {
font-size: 32px;
font-weight: 500;
}
h2 {
font-size: 24px;
}
h3 {
font-size: 18px;
}
h4 {
font-size: 14px;
font-weight: 600;
}
p,
ul,
ol {
margin-bottom: 10px;
font-weight: normal;
}
p li,
ul li,
ol li {
margin-left: 5px;
list-style-position: inside;
}
a {
color: #348eda;
text-decoration: underline;
}
.btn-primary {
text-decoration: none;
color: #FFF;
background-color: #348eda;
border: solid #348eda;
border-width: 10px 20px;
line-height: 2;
font-weight: bold;
text-align: center;
cursor: pointer;
display: inline-block;
border-radius: 5px;
text-transform: capitalize;
}
.last {
margin-bottom: 0;
}
.first {
margin-top: 0;
}
.padding {
padding: 10px 0;
}
.aligncenter {
text-align: center;
}
.alignright {
text-align: right;
}
.alignleft {
text-align: left;
}
.clear {
clear: both;
}
.alert {
font-size: 16px;
color: #fff;
font-weight: 500;
padding: 20px;
text-align: center;
border-radius: 3px 3px 0 0;
}
.alert a {
color: #fff;
text-decoration: none;
font-weight: 500;
font-size: 16px;
}
.alert.alert-warning {
background: #ff9f00;
}
.alert.alert-bad {
background: #d0021b;
}
.alert.alert-good {
background: #68b90f;
}
.invoice {
margin: 40px auto;
text-align: left;
width: 80%;
}
.invoice td {
padding: 5px 0;
}
.invoice .invoice-items {
width: 100%;
}
.invoice .invoice-items td {
border-top: #eee 1px solid;
}
.invoice .invoice-items .total td {
border-top: 2px solid #333;
border-bottom: 2px solid #333;
font-weight: 700;
}
@media only screen and (max-width: 640px) {
h1, h2, h3, h4 {
font-weight: 600 !important;
margin: 20px 0 5px !important;
}
h1 {
font-size: 22px !important;
}
h2 {
font-size: 18px !important;
}
h3 {
font-size: 16px !important;
}
.container {
width: 100% !important;
}
.content,
.content-wrapper {
padding: 10px !important;
}
h3 {
font-size: 32px !important;
font-weight: bold !important;
margin-top: 0px !important;
}
.invoice {
width: 100% !important;
}
}
</style>
</head>
<body>
<table class="body-wrap">
<tr>
<td></td>
<td class="container" width="600">
<div class="content">
<table class="main" width="100%" cellpadding="0" cellspacing="0">
<tr>
<td class="content-wrap">
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td class="content-block" style="text-align:center;">
<img src="http://www.geoint.mx/images/logos/geoint2_geoint.png" width="300px">
<br>
<b style="color:#e16931; font-size: 3em;"><span
style="color:#6b3721;">Rep</span>Sat</b>
<h3>{{ message }}</h3>
</td>
</tr>
<tr style="text-align:center">
<td class="content-block">Click on the following link to redirect to the page</td>
</tr>
<tr style="text-align:center;">
<td class="content-block">
<a href="localhost:8000">Go to the page</a>
</td>
</tr>
<tr>
</tr>
</table>
</td>
</tr>
</table>
<div class="footer">
<table width="100%">
<tr>
<td class="aligncenter content-block">
© 2019 Copyright:<a href="http://geoint.mx/"> Centro de Investigación en Ciencias de
Información Geoespacial. </a>
</td>
</tr>
</table>
</div>
</div>
</td>
<td></td>
</tr>
</table>
</body>
</html>
\ No newline at end of file
...@@ -3,7 +3,7 @@ from django.shortcuts import render, redirect ...@@ -3,7 +3,7 @@ from django.shortcuts import render, redirect
# Create your views here. # Create your views here.
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.core.mail import EmailMultiAlternatives from django.core.mail import EmailMultiAlternatives, send_mail
from django.http import HttpResponse from django.http import HttpResponse
from django.template.loader import render_to_string from django.template.loader import render_to_string
from django.utils.html import strip_tags from django.utils.html import strip_tags
...@@ -23,4 +23,19 @@ def wsMail(request): ...@@ -23,4 +23,19 @@ def wsMail(request):
msg = EmailMultiAlternatives(subject, text_content, email_from, recipient_list) msg = EmailMultiAlternatives(subject, text_content, email_from, recipient_list)
msg.attach_alternative(html_content, "text/html") msg.attach_alternative(html_content, "text/html")
msg.send() msg.send()
return redirect('../catalog') return redirect('../catalog')
\ No newline at end of file
#-------------------------------
def wsMail2(mail,user,message,subject):
subject = subject
email_from = settings.EMAIL_HOST_USER
recipient_list = [mail]
html_content = render_to_string('mail_notification2.html', {'message': message}) # render with dynamic value
text_content = strip_tags(html_content) # Strip the html tag. So people can see the pure text at least.
# create the email, and attach the HTML version as well.
msg = EmailMultiAlternatives(subject, text_content, email_from, recipient_list)
msg.attach_alternative(html_content, "text/html")
print(msg.send())
return HttpResponse("enviado")
\ No newline at end of file
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
{% block headMedia %} {% block headMedia %}
<link rel="stylesheet" href="{% static 'catalog/css/login.css' %}" type="text/css"> <link rel="stylesheet" href="{% static 'catalog/css/login.css' %}" type="text/css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
{% endblock %} {% endblock %}
{% block budy %} {% block budy %}
...@@ -19,7 +20,7 @@ ...@@ -19,7 +20,7 @@
<div class="login-box"> <div class="login-box">
<!-- /.login-logo --> <!-- /.login-logo -->
<div class="login-box-body"> <div class="login-box-body" id="login">
<div class="login-logo"> <div class="login-logo">
<img src="{% static 'catalog/images/geoint_med.png' %}" width="256px"/> <img src="{% static 'catalog/images/geoint_med.png' %}" width="256px"/>
<br> <br>
...@@ -55,6 +56,7 @@ ...@@ -55,6 +56,7 @@
id="{{ form.password.auto_id }}" autofocus> id="{{ form.password.auto_id }}" autofocus>
<span class="glyphicon glyphicon-lock form-control-feedback"></span> <span class="glyphicon glyphicon-lock form-control-feedback"></span>
</div> </div>
<p>{{ message }}</p>
<div class="row"> <div class="row">
<!-- /.col --> <!-- /.col -->
...@@ -68,10 +70,75 @@ ...@@ -68,10 +70,75 @@
<br> <br>
<a href="#">I forgot my password</a><br> <a href="#">I forgot my password</a><br>
<a href="register.html" class="text-center">Register a new membership</a> <a href="#" onclick="show_hide('registration','login')" class="text-center">Register a new membership</a>
</div> </div>
<!-- /.login-box-body --> <!-- /.login-box-body -->
<!-- /.registration-logo -->
<div class="login-box-body hidden" id="registration">
<div class="login-logo">
<img src="{% static 'catalog/images/geoint_med.png' %}" width="256px"/>
<br>
<b><span>Rep</span>Sat</b>
</div>
<p class="login-box-msg">
{% if form.errors %}
<p>Your username and password didn't match. Please try again.</p>
{% endif %}
{% if next %}
{% if user.is_authenticated %}
<p>Your account doesn't have access to this page. To proceed, please login with an account that has
access.</p>
{% else %}
<p>Favor de firmarse para tener acceso.</p>
{% endif %}
{% endif %}
</p>
<form role="form" method="post" action="../../catalog/register/">
{% csrf_token %}
<div class="form-group has-feedback">
<input class="form-control" placeholder="nombre de usuario" name="username"
type="text" id="username" autofocus required>
<span class="glyphicon glyphicon-user form-control-feedback"></span>
</div>
<div class="form-group has-feedback">
<input class="form-control" placeholder="correo" name="email"
type="email" id="email" autofocus required>
<span class="glyphicon glyphicon-envelope form-control-feedback"></span>
</div>
<div class="form-group has-feedback">
<!-- <input type="password" class="form-control" placeholder="assword">-->
<input class="form-control" placeholder="contraseña" name="password" type="password"
id="password" autofocus required>
<span class="glyphicon glyphicon-lock form-control-feedback"></span>
</div>
<div class="form-group has-feedback">
<!-- <input type="password" class="form-control" placeholder="assword">-->
<input class="form-control" placeholder="repetir contraseña" type="password"
id="repeat_password" autofocus>
<span class="glyphicon glyphicon-lock form-control-feedback"></span>
</div>
<p id="validate-status"></p>
<div class="row">
<!-- /.col -->
<div class="col-xs-12">
<button id="submit-button" type="submit" class="btn btn-primary btn-block btn-flat btnGeo">Register</button>
</div>
<!-- /.col -->
</div>
</form>
<br>
<!--a href="#">I forgot my password</a><br-->
<a href="../../catalog/register" onclick="show_hide('login','registration')" class="text-center">Back</a>
</div>
<!-- /.registration-box-body -->
</div> </div>
<!-- /.login-box --> <!-- /.login-box -->
...@@ -111,6 +178,27 @@ ...@@ -111,6 +178,27 @@
vidFade(); vidFade();
}); });
function show_hide(show, hide) {
$('#' + show).removeClass("hidden");
$('#' + hide).addClass("hidden");
}
$(document).ready(function () {
$('#submit-button').prop('disabled', true);
$("#repeat_password").keyup(validate);
});
function validate() {
var password1 = $("#password").val();
var password2 = $("#repeat_password").val();
if (password1 == password2) {
$("#validate-status").text("Passwords Match!");
$('#submit-button').prop('disabled', false);
}
else {
$("#validate-status").text("Passwords Do Not Match!");
$('#submit-button').prop('disabled', true);
}
}
</script> </script>
{% endblock %} {% endblock %}
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