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
e65877fe
Commit
e65877fe
authored
Feb 19, 2019
by
Ulises Morales Ramírez
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'admin' into 'dev'
Admin See merge request
!13
parents
9b18475d
242257f4
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
516 additions
and
41 deletions
+516
-41
urls.py
GeoInt_SIDT/urls.py
+1
-0
middleware.py
catalog/middleware.py
+1
-3
base_top.html
catalog/templates/base_top.html
+6
-0
map.html
catalog/templates/map.html
+3
-0
urls.py
catalog/urls.py
+1
-0
views.py
catalog/views.py
+53
-34
mail_notification2.html
mail/templates/mail_notification2.html
+344
-0
views.py
mail/views.py
+17
-2
login.html
templates/registration/login.html
+90
-2
No files found.
GeoInt_SIDT/urls.py
View file @
e65877fe
...
...
@@ -27,6 +27,7 @@ urlpatterns = [
url
(
r'^reports/'
,
include
(
'reports.urls'
)),
url
(
r'^$'
,
RedirectView
.
as_view
(
url
=
'/catalog/'
,
permanent
=
True
)),
url
(
r'^accounts/'
,
include
(
'django.contrib.auth.urls'
)),
#url(r'^accounts/', include('registration')),
url
(
r'^mail/'
,
include
(
'mail.urls'
)),
]
# + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
catalog/middleware.py
View file @
e65877fe
...
...
@@ -12,8 +12,6 @@ class AuthRequiredMiddleware(object):
# Code to be executed for each request before
# the view (and later middleware) are called.
response
=
self
.
get_response
(
request
)
print
(
request
.
path_info
)
print
(
reverse
(
'login'
))
# if request.path_info == reverse('ws-news-list2'):
# return response
...
...
@@ -23,5 +21,5 @@ class AuthRequiredMiddleware(object):
# Code to be executed for each request/response after
# the view is called.
return
response
catalog/templates/base_top.html
View file @
e65877fe
...
...
@@ -45,6 +45,12 @@
</a>
<div
class=
"navbar-custom-menu"
>
<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-->
<!-- <li class="dropdown messages-menu"> -->
{#% block messages %#}{#% endblock %#}
...
...
catalog/templates/map.html
View file @
e65877fe
...
...
@@ -214,6 +214,9 @@
{% block user %}
{% include "user_button.html" %}
{% endblock %}
{% block user2 %}
{% include "user_button.html" %}
{% endblock %}
{% block content %}
<div
id=
"map"
class=
"map"
tabindex=
"0"
></div>
...
...
catalog/urls.py
View file @
e65877fe
...
...
@@ -16,4 +16,5 @@ urlpatterns = [
url
(
r'^cart/$'
,
views
.
showCart
,
name
=
'show-cart'
),
url
(
r'^pay/$'
,
views
.
Pay
,
name
=
'pay'
),
url
(
r'^ipn/$'
,
views
.
IPN
,
name
=
'ipn'
),
url
(
r'^register/$'
,
views
.
Registration
,
name
=
'register'
),
]
catalog/views.py
View file @
e65877fe
...
...
@@ -13,6 +13,8 @@ from django.contrib.auth.models import User
import
requests
,
json
,
unicodedata
,
sys
,
base64
import
os
from
geosentinel
import
APISentinel
,
polygonToBox
from
mail.views
import
wsMail
,
wsMail2
dirname
=
os
.
path
.
dirname
(
__file__
)
configfile
=
os
.
path
.
join
(
dirname
,
'../config/config.json'
)
...
...
@@ -233,7 +235,8 @@ def getFromCart(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__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
:
product
=
json
.
loads
(
products
[
'productList'
])
...
...
@@ -492,8 +495,8 @@ def Pay(request):
user
=
User
.
objects
.
get
(
id
=
request
.
user
.
id
)
product_list
=
[]
product_list
=
Purchase
.
objects
.
values
(
'id'
,
'search__area'
,
'user'
,
'user__username'
,
'user__email'
,
'search_id'
,
'search__clouds'
,
'search__startDate'
,
'search__endDate'
)
.
filter
(
user
=
user
,
purchased
=
0
)
'search__clouds'
,
'search__startDate'
,
'search__endDate'
)
.
filter
(
user
=
user
,
purchased
=
0
)
for
product
in
product_list
:
...
...
@@ -543,7 +546,8 @@ def Pay(request):
fidProductsFile
.
write
(
json_data
)
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):
# -----------------------------------------------------------------
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()
#-----------------------------------------------------------------------
# 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'
...
...
@@ -642,3 +646,18 @@ def IPN(request):
# else:
# pass
# 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'
})
mail/templates/mail_notification2.html
0 → 100644
View file @
e65877fe
<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
mail/views.py
View file @
e65877fe
...
...
@@ -3,7 +3,7 @@ from django.shortcuts import render, redirect
# Create your views here.
# -*- coding: utf-8 -*-
from
django.core.mail
import
EmailMultiAlternatives
from
django.core.mail
import
EmailMultiAlternatives
,
send_mail
from
django.http
import
HttpResponse
from
django.template.loader
import
render_to_string
from
django.utils.html
import
strip_tags
...
...
@@ -23,4 +23,19 @@ def wsMail(request):
msg
=
EmailMultiAlternatives
(
subject
,
text_content
,
email_from
,
recipient_list
)
msg
.
attach_alternative
(
html_content
,
"text/html"
)
msg
.
send
()
return
redirect
(
'../catalog'
)
\ No newline at end of file
return
redirect
(
'../catalog'
)
#-------------------------------
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
templates/registration/login.html
View file @
e65877fe
...
...
@@ -3,6 +3,7 @@
{% block headMedia %}
<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 %}
{% block budy %}
...
...
@@ -19,7 +20,7 @@
<div
class=
"login-box"
>
<!-- /.login-logo -->
<div
class=
"login-box-body"
>
<div
class=
"login-box-body"
id=
"login"
>
<div
class=
"login-logo"
>
<img
src=
"{% static 'catalog/images/geoint_med.png' %}"
width=
"256px"
/>
<br>
...
...
@@ -55,6 +56,7 @@
id=
"{{ form.password.auto_id }}"
autofocus
>
<span
class=
"glyphicon glyphicon-lock form-control-feedback"
></span>
</div>
<p>
{{ message }}
</p>
<div
class=
"row"
>
<!-- /.col -->
...
...
@@ -68,10 +70,75 @@
<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>
<!-- /.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>
<!-- /.login-box -->
...
...
@@ -111,6 +178,27 @@
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>
{% endblock %}
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