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
d54b9530
Commit
d54b9530
authored
Mar 08, 2019
by
Ulises Morales Ramírez
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
user profile
parent
60fb3c34
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
321 additions
and
250 deletions
+321
-250
User_profile.html
users/templates/User_profile.html
+90
-102
profile.html
users/templates/profile.html
+40
-48
urls.py
users/urls.py
+1
-0
views.py
users/views.py
+190
-100
No files found.
users/templates/User_profile.html
View file @
d54b9530
...
@@ -8,6 +8,7 @@
...
@@ -8,6 +8,7 @@
<script
src=
"{% static 'js/Chart.min.js' %}"
></script>
<script
src=
"{% static 'js/Chart.min.js' %}"
></script>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css"
/>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css"
/>
<script
type=
"text/javascript"
src=
"https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"
></script>
<script
type=
"text/javascript"
src=
"https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"
></script>
<link
rel=
"stylesheet"
href=
"https://use.fontawesome.com/releases/v5.7.2/css/all.css"
integrity=
"sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr"
crossorigin=
"anonymous"
>
{% endblock %}
{% endblock %}
{% block messages %}
{% block messages %}
...
@@ -127,7 +128,7 @@
...
@@ -127,7 +128,7 @@
</section>
</section>
<section
class=
"content"
>
<section
class=
"content"
>
<div
class=
"row
-fluid
"
>
<div
class=
"row"
>
{% block profile %}
{% block profile %}
{% include 'profile.html' %}
{% include 'profile.html' %}
{% endblock %}
{% endblock %}
...
@@ -136,9 +137,11 @@
...
@@ -136,9 +137,11 @@
<div
class=
"nav-tabs-custom"
>
<div
class=
"nav-tabs-custom"
>
<ul
class=
"nav nav-tabs"
>
<ul
class=
"nav nav-tabs"
>
<li
class=
"active"
><a
href=
"#timeline"
data-toggle=
"tab"
>
Most Recent
</a></li>
<li
class=
"active"
><a
href=
"#timeline"
data-toggle=
"tab"
>
Most Recent
</a></li>
<li><a
href=
"#settings"
data-toggle=
"tab"
>
Settings
</a></li>
<li><a
href=
"#stats"
data-toggle=
"tab"
>
Stats
</a></li>
<!--li><a href="#settings" data-toggle="tab">Settings</a></li-->
</ul>
</ul>
<div
class=
"tab-content"
style=
"height: 670px"
>
<div
class=
"tab-content"
style=
"min-height: 668px;"
>
<div
class=
" active tab-pane"
id=
"timeline"
style=
"overflow-y:auto; "
>
<div
class=
" active tab-pane"
id=
"timeline"
style=
"overflow-y:auto; "
>
<!-- The timeline -->
<!-- The timeline -->
<ul
class=
"timeline timeline-inverse"
>
<ul
class=
"timeline timeline-inverse"
>
...
@@ -157,7 +160,7 @@
...
@@ -157,7 +160,7 @@
<span
class=
"time"
>
<span
class=
"time"
>
{% if product.initial_folder != "." %}
{% if product.initial_folder != "." %}
Ready
Ready
{% else %}
{% else %}
In process
In process
{% endif %}
{% endif %}
</a>
</a>
...
@@ -180,6 +183,26 @@
...
@@ -180,6 +183,26 @@
</div>
</div>
<!-- /.tab-pane -->
<!-- /.tab-pane -->
<div
class=
"tab-pane"
id=
"stats"
>
<div
class=
"chart"
>
<strong>
Today {% now "jS F Y" %}
</strong>
<!-- Sales Chart Canvas -->
<div>
<canvas
id=
"salesChart"
style=
"height: 142px; width: 814px;"
width=
"814"
height=
"142"
></canvas>
</div>
</div>
<div>
<hr>
</div>
<div
class=
"container"
>
<h3
class=
"box-title"
id=
"purchases_in"
>
Purchases Per Month
</h3>
<div
id=
"mostrar"
>
</div>
</div>
</div>
<div
class=
"tab-pane"
id=
"settings"
>
<div
class=
"tab-pane"
id=
"settings"
>
<form
class=
"form-horizontal"
>
<form
class=
"form-horizontal"
>
<div
class=
"form-group"
>
<div
class=
"form-group"
>
...
@@ -249,39 +272,7 @@
...
@@ -249,39 +272,7 @@
<!-- /.content -->
<!-- /.content -->
<section>
<section>
<footer
class=
" page-footer font-small special-color-dark pt-5"
>
<footer
class=
" page-footer font-small special-color-dark pt-5"
>
<!-- Footer Elements -->
<div
class=
"container"
>
<!-- Social buttons
<ul class="list-unstyled list-inline text-center">
<li class="list-inline-item">
<a class="btn-floating btn-fb mx-1">
<i class="fa fa-faceboo"> </i>
</a>
</li>
<li class="list-inline-item">
<a class="btn-floating btn-tw mx-1">
<i class="fa fa-twitter"> </i>
</a>
</li>
<li class="list-inline-item">
<a class="btn-floating btn-gplus mx-1">
<i class="fa fa-google-plus"> </i>
</a>
</li>
<li class="list-inline-item">
<a class="btn-floating btn-li mx-1">
<i class="fa fa-linkedin"> </i>
</a>
</li>
<li class="list-inline-item">
<a class="btn-floating btn-dribbble mx-1">
<i class="fa fa-dribbble"> </i>
</a>
</li>
</ul>
<!-- Social buttons -->
</div>
<!-- Footer Elements -->
<!-- Copyright -->
<!-- Copyright -->
<div
class=
"footer-copyright text-center py-3"
>
© 2019 Copyright:
<div
class=
"footer-copyright text-center py-3"
>
© 2019 Copyright:
...
@@ -362,56 +353,6 @@
...
@@ -362,56 +353,6 @@
});
});
/*$(document).ready(function () {
var table = $('#example').DataTable
({
"ajax": data,
language:
{
"sProcessing": "Procesando...",
"sLengthMenu": "Mostrar _MENU_ registros",
"sZeroRecords": "No se encontraron resultados",
"sEmptyTable": "Ningún dato disponible en esta tabla",
"sInfo": "Mostrando registros del _START_ al _END_ de un total de _TOTAL_ registros",
"sInfoEmpty": "Mostrando registros del 0 al 0 de un total de 0 registros",
"sInfoFiltered": "(filtrado de un total de _MAX_ registros)",
"sInfoPostFix": "",
"sSearch": "Buscar:",
"sUrl": "",
"sInfoThousands": ",",
"sLoadingRecords": "Cargando...",
"oPaginate":
{
"sFirst": "Primero",
"sLast": "Último",
"sNext": "Siguiente",
"sPrevious": "Anterior"
},
"oAria":
{
"sSortAscending": ": Activar para ordenar la columna de manera ascendente",
"sSortDescending": ": Activar para ordenar la columna de manera descendente"
}
},
responsive:
{
details:
{
type: 'column',
target: 'tr'
}
},
columnDefs:
[{
className: 'control',
orderable: false,
targets: 0
}],
order: [1, 'asc']
});
});*/
// mostrar imagen al dar click en los puntos
// mostrar imagen al dar click en los puntos
document
.
getElementById
(
"salesChart"
).
onclick
=
function
(
evt
)
{
document
.
getElementById
(
"salesChart"
).
onclick
=
function
(
evt
)
{
// activePoints = myChart.getElementsAtEvent(evt);
// activePoints = myChart.getElementsAtEvent(evt);
...
@@ -426,44 +367,91 @@
...
@@ -426,44 +367,91 @@
$
.
ajax
({
$
.
ajax
({
type
:
'POST'
,
type
:
'POST'
,
dataType
:
"json"
,
dataType
:
"json"
,
data
:
{
'title'
:
label
},
data
:
{
'title'
:
label
,
"user_id"
:
$
(
'#user_id'
).
val
()
},
url
:
'../
administration
/ws/report_table'
,
url
:
'../
../users
/ws/report_table'
,
success
:
function
(
data
)
{
success
:
function
(
data
)
{
console
.
log
(
data
);
$
(
'#mostrar'
).
empty
();
$
(
'#mostrar'
).
empty
();
$
(
'#mostrar'
).
append
(
"<table class=
\"
table table-hover
\"
id=
\"
example
\"
>"
+
$
(
'#mostrar'
).
append
(
"<table class=
\"
table table-hover
\"
id=
\"
example
\"
>"
+
"<thead>"
+
"<thead>"
+
"<tr>"
+
"<tr>"
+
"<th class=
\"
text-center
\"
>User ID</th>"
+
"<th class=
\"
text-center
\"
>Zone</th>"
+
"<th class=
\"
text-center
\"
>User</th>"
+
"<th class=
\"
text-center
\"
>Process</th>"
+
"<th class=
\"
text-center
\"
>E-Mail</th>"
+
"<th class=
\"
text-center
\"
>Purchase Date</th>"
+
"<th class=
\"
text-center
\"
>Purchases</th>"
+
"<th class=
\"
text-center
\"
>Start Date</th>"
+
"<th class=
\"
text-center
\"
>Storage</th>"
+
"<th class=
\"
text-center
\"
>End Date</th>"
+
"<th class=
\"
text-center
\"
>Downloads in process</th>"
+
"</tr>"
+
"</tr>"
+
"</thead>"
+
"</thead>"
+
"<tbody id=
\"
tbody
\"
class=
\"
text-center
\"
>"
);
"<tbody id=
\"
tbody
\"
class=
\"
text-center
\"
>"
);
$
.
each
(
data
,
function
(
key
,
val
)
{
$
.
each
(
data
,
function
(
key
,
val
)
{
$
(
"#tbody"
).
append
(
"<tr>"
+
$
(
"#tbody"
).
append
(
"<tr>"
+
"<td>"
+
val
[
'user_id'
]
+
"</td>"
+
"<td>"
+
val
[
'search_name'
]
+
"</td>"
+
"<td>"
+
val
[
'username'
]
+
"</td>"
+
"<td>"
+
val
[
'process'
]
+
"</td>"
+
"<td>"
+
val
[
'email'
]
+
"</td>"
+
"<td>"
+
val
[
'purchase_date'
]
+
"</td>"
+
"<td>"
+
val
[
'purchases'
]
+
"</td>"
+
"<td>"
+
val
[
'startDate'
]
+
"</td>"
+
"<td>"
+
val
[
'storage'
]
+
"</td>"
+
"<td>"
+
val
[
'endDate'
]
+
"</td>"
+
"<td>"
+
val
[
'in_process'
]
+
"</td>"
+
"</tr>"
"</tr>"
);
);
});
});
$
(
'#mostrar'
).
append
(
"</tbody>"
+
$
(
'#mostrar'
).
append
(
"</tbody>"
+
"</table>"
);
"</table>"
);
$
(
'#example'
).
DataTable
({});
$
(
'#example'
).
DataTable
({
"pageLength"
:
5
});
}
}
});
});
};
};
var
ctx
=
document
.
getElementById
(
"salesChart"
).
getContext
(
'2d'
);
var
myChart
=
new
Chart
(
ctx
,
{
type
:
'line'
,
data
:
{
labels
:
[
{
%
for
dates
in
dates
%
}
"{{ dates.date }}"
,
{
%
endfor
%
}
],
datasets
:
[{
label
:
'Sales'
,
data
:
[
{
%
for
dates
in
dates
%
}
{{
dates
.
quantity
}},
{
%
endfor
%
}
],
backgroundColor
:
[
'rgba(255, 99, 132, 0.2)'
,
'rgba(54, 162, 235, 0.2)'
,
'rgba(255, 206, 86, 0.2)'
,
'rgba(75, 192, 192, 0.2)'
,
'rgba(153, 102, 255, 0.2)'
,
'rgba(255, 159, 64, 0.2)'
],
borderColor
:
[
'rgba(255,99,132,1)'
,
'rgba(54, 162, 235, 1)'
,
'rgba(255, 206, 86, 1)'
,
'rgba(75, 192, 192, 1)'
,
'rgba(153, 102, 255, 1)'
,
'rgba(255, 159, 64, 1)'
],
borderWidth
:
1
}]
},
options
:
{
scales
:
{
yAxes
:
[{
ticks
:
{
beginAtZero
:
true
}
}]
}
}
});
</script>
</script>
{% endblock %}
{% endblock %}
\ No newline at end of file
users/templates/profile.html
View file @
d54b9530
{% load staticfiles %}
{% load staticfiles %}
{% for data in user_data %}
<div
class=
"col-md-3"
>
<div
class=
"col-md-3"
>
{% for data in user_data %}
<!-- Profile Image -->
<!-- Profile Image -->
<div
class=
"box box-primary"
>
<div
class=
"box box-primary"
>
<div
class=
"box-body box-profile"
>
<div
class=
"box-body box-profile"
>
<br>
<img
class=
"profile-user-img img-responsive img-circle"
<img
class=
"profile-user-img img-responsive img-circle"
src=
"{% static 'users/images/user_default.png' %}"
src=
"{% static 'users/images/user_default.png' %}"
alt=
"User profile picture"
>
alt=
"User profile picture"
>
<h3
class=
"profile-username text-center"
>
{{ data.user_fullname }}
</h3>
<h3
class=
"profile-username text-center"
>
{{ data.user_fullname }}
</h3>
<input
type=
"hidden"
id=
"user_id"
value=
"{{ data.user_id }}"
>
<p
class=
"text-muted text-center"
>
Software Engineer
</p>
<p
class=
"text-muted text-center"
>
Software Engineer
</p>
<ul
class=
"list-group list-group-unbordered"
>
<ul
class=
"list-group list-group-unbordered"
>
<li
class=
"list-group-item"
>
<li
class=
"list-group-item"
>
<b>
Searches
</b>
<a
class=
"pull-right"
>
{{ data.searches }}
</a>
<i
class=
"fa fa-search margin-r-5"
></i>
<b>
Searches
</b>
<a
class=
"pull-right"
>
{{ data.searches }}
</a>
</li>
<li
class=
"list-group-item"
>
<i
class=
"fa fa-shopping-cart margin-r-5"
></i>
<b>
Purchases
</b>
<a
class=
"pull-right"
>
{{ data.purchases }}
</a>
</li>
</li>
<li
class=
"list-group-item"
>
<li
class=
"list-group-item"
>
<b>
Purchases
</b>
<a
class=
"pull-right"
>
{{ data.purchases }}
</a>
<i
class=
"fa fa-download margin-r-5"
></i>
<b>
In Process
</b>
<a
class=
"pull-right"
>
{{ data.in_process }}
</a>
</li>
</li>
<li
class=
"list-group-item"
>
<li
class=
"list-group-item"
>
<b>
In Process
</b>
<a
class=
"pull-right"
>
{{ data.in_process }}
</a>
<i
class=
"fa fa-pie-chart margin-r-5"
></i>
<b>
Disk usage
</b>
<a
class=
"pull-right"
>
{{ data.size }}
</a>
</li>
</li>
</ul>
</ul>
...
@@ -28,50 +37,33 @@
...
@@ -28,50 +37,33 @@
<!-- /.box-body -->
<!-- /.box-body -->
</div>
</div>
<!-- /.box -->
<!-- /.box -->
<div>
{% endfor %}
<br>
<div>
</div>
<br>
<!-- About Me Box -->
</div>
<div
class=
"box box-primary"
>
<div
class=
"box-header with-border"
>
<h3
class=
"box-title"
>
About Me
</h3>
</div>
<!-- /.box-header -->
<div
class=
"box-body"
>
<strong><i
class=
"fa fa-book margin-r-5"
></i>
Education
</strong>
<p
class=
"text-muted"
>
B.S. in Computer Science from the University of Tennessee at Knoxville
</p>
<hr>
<strong><i
class=
"fa fa-map-marker margin-r-5"
></i>
Location
</strong>
<p
class=
"text-muted"
>
Malibu, California
</p>
<hr>
<strong><i
class=
"fa fa-pencil margin-r-5"
></i>
Skills
</strong>
<p>
<span
class=
"label label-danger"
>
UI Design
</span>
<span
class=
"label label-success"
>
Coding
</span>
<span
class=
"label label-info"
>
Javascript
</span>
<span
class=
"label label-warning"
>
PHP
</span>
<span
class=
"label label-primary"
>
Node.js
</span>
</p>
<hr>
<strong><i
class=
"fa fa-file-text-o margin-r-5"
></i>
Notes
</strong>
<!-- About Me Box -->
<div
class=
"box box-primary"
>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam fermentum enim neque.
</p>
<div
class=
"box-header with-border"
>
</div>
<h3
class=
"box-title"
>
Searches
</h3>
<!-- /.box-body -->
</div>
</div>
<!-- /.box -->
<!-- /.box-header -->
<div><br></div>
<div
class=
"box-body"
>
<ul
class=
"list-group list-group-unbordered"
>
{% for data in user_searches %}
<li
class=
"list-group-item"
>
<i
class=
"fa fa-map-marker margin-r-5"
></i>
<b>
{{ data.search_name }}
</b>
<a
class=
"pull-right"
>
{{ data.count }}
</a>
</li>
{% endfor %}
</ul>
</div>
<!-- /.box-body -->
</div>
</div>
{% endfor %}
<!-- /.box -->
\ No newline at end of file
<div><br></div>
</div>
users/urls.py
View file @
d54b9530
...
@@ -26,5 +26,6 @@ from users import views
...
@@ -26,5 +26,6 @@ from users import views
urlpatterns
=
[
urlpatterns
=
[
url
(
r'^$'
,
views
.
Users
,
name
=
'users'
),
url
(
r'^$'
,
views
.
Users
,
name
=
'users'
),
url
(
r'^(?P<user_id>(\d+))/$'
,
views
.
User_id
,
name
=
'user_id'
),
url
(
r'^(?P<user_id>(\d+))/$'
,
views
.
User_id
,
name
=
'user_id'
),
url
(
r'^ws/report_table$'
,
views
.
wsPurchasesPM
,
name
=
'wsPurchasesPM'
),
]
]
# + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
# + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
users/views.py
View file @
d54b9530
import
calendar
import
os
import
os
from
django.contrib.auth.models
import
User
from
django.contrib.auth.models
import
User
from
django.db.models
import
Count
from
django.http
import
HttpResponse
,
Http404
from
django.shortcuts
import
render
from
django.shortcuts
import
render
# Create your views here.
# Create your views here.
import
json
import
json
from
django.views.decorators.csrf
import
csrf_exempt
from
catalog.models
import
Search
,
Purchase
from
catalog.models
import
Search
,
Purchase
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'
)
with
open
(
configfile
,
'r'
)
as
f
:
with
open
(
configfile
,
'r'
)
as
f
:
config
=
json
.
load
(
f
)
config
=
json
.
load
(
f
)
USERS_PATH
=
config
[
'PATHS'
][
'PATH_USERS'
]
USERS_PATH
=
config
[
'PATHS'
][
'PATH_NAS'
]
#-------------------------------------------
PATH_USERS
=
config
[
'PATHS'
][
'PATH_USERS'
]
size_sentinel
=
0
size_repsat
=
0
# -------------------------------------------
def
Users
(
request
):
def
Users
(
request
):
user_data
=
[]
user_data
=
[]
user_s
tatic
s
=
[]
user_s
earche
s
=
[]
user
=
User
.
objects
.
get
(
pk
=
request
.
user
.
id
)
user
=
User
.
objects
.
get
(
pk
=
request
.
user
.
id
)
searches
=
Search
.
objects
.
filter
(
user_id
=
user
.
id
)
searches
=
Search
.
objects
.
filter
(
user_id
=
user
.
id
)
...
@@ -24,31 +35,40 @@ def Users(request):
...
@@ -24,31 +35,40 @@ def Users(request):
purchases
=
Purchase
.
objects
.
filter
(
user_id
=
user
.
id
)
purchases
=
Purchase
.
objects
.
filter
(
user_id
=
user
.
id
)
in_process
=
Purchase
.
objects
.
filter
(
user_id
=
user
.
id
)
.
exclude
(
progress
=
100
)
in_process
=
Purchase
.
objects
.
filter
(
user_id
=
user
.
id
)
.
exclude
(
progress
=
100
)
bytes_size
=
0
for
path
,
directories
,
files
in
os
.
walk
(
USERS_PATH
+
"repsat_test_dev/"
+
user
.
email
):
for
filename
in
files
:
bytes_size
+=
os
.
lstat
(
os
.
path
.
join
(
path
,
filename
))
.
st_size
for
directory
in
directories
:
bytes_size
+=
os
.
lstat
(
os
.
path
.
join
(
path
,
directory
))
.
st_size
bytes_size
+=
os
.
path
.
getsize
(
USERS_PATH
+
"repsat_test_dev/"
+
user
.
email
)
size_repsat
=
best_unit_size
(
bytes_size
)
user_data
.
append
({
user_data
.
append
({
"user_fullname"
:
user
.
first_name
+
" "
+
user
.
last_name
,
"user_id"
:
user
.
id
,
"searches"
:
searches
.
count
(),
"purchases"
:
purchases
.
count
(),
"in_process"
:
in_process
.
count
(),
})
user_statics
.
append
({
"user_fullname"
:
user
.
first_name
+
" "
+
user
.
last_name
,
"user_fullname"
:
user
.
first_name
+
" "
+
user
.
last_name
,
"searches"
:
searches
.
count
(),
"searches"
:
searches
.
count
(),
"purchases"
:
purchases
.
count
(),
"purchases"
:
purchases
.
count
(),
"in_process"
:
in_process
.
count
(),
"in_process"
:
in_process
.
count
(),
"size"
:
size_repsat
,
})
})
for
search
in
Search
.
objects
.
values
(
'search_name'
)
.
filter
(
user_id
=
user
.
id
)
.
annotate
(
count
=
Count
(
'search_name'
))
.
order_by
(
'-count'
)[:
6
]:
user_searches
.
append
({
"search_name"
:
search
[
'search_name'
],
"count"
:
search
[
'count'
],
})
progress
=
0
progress
=
0
productList
=
[]
productList
=
[]
size
=
0
size
=
0
folders
=
[]
zip
=
""
product_list
=
Purchase
.
objects
.
values
(
'id'
,
'productList'
,
'aggreg_date'
,
'search__clouds'
,
'search__startDate'
,
product_list
=
Purchase
.
objects
.
values
(
'id'
,
'productList'
,
'aggreg_date'
,
'search__clouds'
,
'search__startDate'
,
'search__endDate'
,
'search__process_id__name'
,
'search__search_name'
)
.
filter
(
'search__endDate'
,
'search__process_id__name'
,
'search__search_name'
)
.
filter
(
user_id
=
request
.
user
.
id
,
purchased
=
1
)
.
order_by
(
'-aggreg_date'
)
user_id
=
user
.
id
,
purchased
=
1
)
.
order_by
(
'-aggreg_date'
)
for
producto
in
product_list
:
for
producto
in
product_list
:
log_info
=
USERS_PATH
+
request
.
user
.
email
+
"/"
+
str
(
producto
[
'id'
])
+
"/L2ASCL_AreaProcessing.log"
log_info
=
PATH_USERS
+
user
.
email
+
"/"
+
str
(
producto
[
'id'
])
+
"/L2ASCL_AreaProcessing.log"
#####################################################
#####################################################
# progress bar #
# progress bar #
...
@@ -66,10 +86,6 @@ def Users(request):
...
@@ -66,10 +86,6 @@ def Users(request):
progress
=
60
progress
=
60
if
'Finalizing...'
in
open
(
log_info
)
.
read
():
if
'Finalizing...'
in
open
(
log_info
)
.
read
():
progress
=
100
progress
=
100
# item = Purchase.objects.filter(pk=producto['id'])
# item = Purchase.objects.get(pk=producto['id'])
# item.progress = progress
# item.save()
with
open
(
log_info
,
'r'
)
as
myfile
:
with
open
(
log_info
,
'r'
)
as
myfile
:
log
=
myfile
.
read
()
.
replace
(
'
\n
'
,
''
)
log
=
myfile
.
read
()
.
replace
(
'
\n
'
,
''
)
...
@@ -82,30 +98,6 @@ def Users(request):
...
@@ -82,30 +98,6 @@ def Users(request):
else
:
else
:
final_size
=
str
(
round
(
size
,
2
))
+
" MB"
final_size
=
str
(
round
(
size
,
2
))
+
" MB"
initial_folder
=
"."
absolute_path
=
USERS_PATH
+
request
.
user
.
email
+
"/"
+
str
(
producto
[
'id'
])
+
"/out"
if
not
os
.
path
.
exists
(
absolute_path
):
print
(
"folder out noes not exists"
)
else
:
folders
=
os
.
listdir
(
path
=
absolute_path
)
print
(
folders
)
if
len
(
folders
)
==
0
:
initial_folder
=
"../#"
else
:
initial_folder
=
folders
.
pop
(
0
)
+
"_sclData"
zip_path
=
USERS_PATH
+
request
.
user
.
email
+
"/"
+
str
(
producto
[
'id'
])
# print(zip_path)
# "../ static / reports / tmpImages / repsat_test_dev / umorales @ centrogeo.edu.mx / "+str(producto['id']) / myzip.zip"
wkt
=
USERS_PATH
+
request
.
user
.
email
+
"/"
+
str
(
producto
[
'id'
])
+
"/findProducts.json"
with
open
(
wkt
,
'r'
)
as
jsonfile
:
polygon
=
json
.
load
(
jsonfile
)
for
file
in
os
.
listdir
(
path
=
zip_path
):
if
file
.
endswith
(
".zip"
):
zip
=
zip_path
+
"/"
+
file
productList
.
append
({
productList
.
append
({
"search_name"
:
producto
[
'search__search_name'
],
"search_name"
:
producto
[
'search__search_name'
],
"process"
:
producto
[
'search__process_id__name'
],
"process"
:
producto
[
'search__process_id__name'
],
...
@@ -114,27 +106,47 @@ def Users(request):
...
@@ -114,27 +106,47 @@ def Users(request):
"endDate"
:
producto
[
'search__endDate'
],
"endDate"
:
producto
[
'search__endDate'
],
"clouds"
:
producto
[
'search__clouds'
],
"clouds"
:
producto
[
'search__clouds'
],
"size"
:
final_size
,
"size"
:
final_size
,
"purchase_id"
:
producto
[
'id'
],
"progress"
:
progress
,
"progress"
:
progress
,
"log_info"
:
log
,
"log_info"
:
log
,
"initial_folder"
:
initial_folder
,
"zip"
:
zip
,
"polygon"
:
polygon
[
'wkt'
],
})
})
size
=
0
size
=
0
final_size
=
0
final_size
=
0
log_info
=
""
log_info
=
""
progress
=
0
progress
=
0
initial_folder
=
""
zip
=
""
wkt
=
""
return
render
(
request
,
'User_profile.html'
,{
"user_data"
:
user_data
,
"productList"
:
productList
}
)
#----------------------------------------------------------------------
# lista de meses #
def
User_id
(
request
,
user_id
):
month_lst
=
[
{
'quantity'
:
0
,
'date'
:
'January'
},
{
'quantity'
:
0
,
'date'
:
'February'
},
{
'quantity'
:
0
,
'date'
:
'March'
},
{
'quantity'
:
0
,
'date'
:
'April'
},
{
'quantity'
:
0
,
'date'
:
'May'
},
{
'quantity'
:
0
,
'date'
:
'June'
},
{
'quantity'
:
0
,
'date'
:
'July'
},
{
'quantity'
:
0
,
'date'
:
'August'
},
{
'quantity'
:
0
,
'date'
:
'September'
},
{
'quantity'
:
0
,
'date'
:
'October'
},
{
'quantity'
:
0
,
'date'
:
'November'
},
{
'quantity'
:
0
,
'date'
:
'December'
}]
for
date
in
Purchase
.
objects
.
filter
(
purchased
=
True
,
user_id
=
user
.
id
)
.
extra
(
{
'month'
:
"Extract(month from aggreg_date)"
})
.
values_list
(
'month'
)
.
annotate
(
Count
(
'id'
)):
date_name
=
calendar
.
month_name
[
int
(
date
[
0
])]
for
month
in
month_lst
:
if
month
[
'date'
]
==
date_name
:
month
[
'quantity'
]
=
date
[
1
]
# print(month_lst)
return
render
(
request
,
'User_profile.html'
,
{
"user_data"
:
user_data
,
"productList"
:
productList
,
"dates"
:
month_lst
,
'user_searches'
:
user_searches
})
# ----------------------------------------------------------------------
def
User_id
(
request
,
user_id
):
user_data
=
[]
user_data
=
[]
user_s
tatic
s
=
[]
user_s
earche
s
=
[]
user
=
User
.
objects
.
get
(
pk
=
user_id
)
user
=
User
.
objects
.
get
(
pk
=
user_id
)
searches
=
Search
.
objects
.
filter
(
user_id
=
user
.
id
)
searches
=
Search
.
objects
.
filter
(
user_id
=
user
.
id
)
...
@@ -142,31 +154,40 @@ def User_id(request,user_id):
...
@@ -142,31 +154,40 @@ def User_id(request,user_id):
purchases
=
Purchase
.
objects
.
filter
(
user_id
=
user
.
id
)
purchases
=
Purchase
.
objects
.
filter
(
user_id
=
user
.
id
)
in_process
=
Purchase
.
objects
.
filter
(
user_id
=
user
.
id
)
.
exclude
(
progress
=
100
)
in_process
=
Purchase
.
objects
.
filter
(
user_id
=
user
.
id
)
.
exclude
(
progress
=
100
)
bytes_size
=
0
for
path
,
directories
,
files
in
os
.
walk
(
USERS_PATH
+
"repsat_test_dev/"
+
user
.
email
):
for
filename
in
files
:
bytes_size
+=
os
.
lstat
(
os
.
path
.
join
(
path
,
filename
))
.
st_size
for
directory
in
directories
:
bytes_size
+=
os
.
lstat
(
os
.
path
.
join
(
path
,
directory
))
.
st_size
bytes_size
+=
os
.
path
.
getsize
(
USERS_PATH
+
"repsat_test_dev/"
+
user
.
email
)
size_repsat
=
best_unit_size
(
bytes_size
)
user_data
.
append
({
user_data
.
append
({
"user_fullname"
:
user
.
first_name
+
" "
+
user
.
last_name
,
"user_id"
:
user
.
id
,
"searches"
:
searches
.
count
(),
"purchases"
:
purchases
.
count
(),
"in_process"
:
in_process
.
count
(),
})
user_statics
.
append
({
"user_fullname"
:
user
.
first_name
+
" "
+
user
.
last_name
,
"user_fullname"
:
user
.
first_name
+
" "
+
user
.
last_name
,
"searches"
:
searches
.
count
(),
"searches"
:
searches
.
count
(),
"purchases"
:
purchases
.
count
(),
"purchases"
:
purchases
.
count
(),
"in_process"
:
in_process
.
count
(),
"in_process"
:
in_process
.
count
(),
"size"
:
size_repsat
,
})
})
for
search
in
Search
.
objects
.
values
(
'search_name'
)
.
filter
(
user_id
=
user
.
id
)
.
annotate
(
count
=
Count
(
'search_name'
))
.
order_by
(
'-count'
)[:
6
]:
user_searches
.
append
({
"search_name"
:
search
[
'search_name'
],
"count"
:
search
[
'count'
],
})
progress
=
0
progress
=
0
productList
=
[]
productList
=
[]
size
=
0
size
=
0
folders
=
[]
zip
=
""
product_list
=
Purchase
.
objects
.
values
(
'id'
,
'productList'
,
'aggreg_date'
,
'search__clouds'
,
'search__startDate'
,
product_list
=
Purchase
.
objects
.
values
(
'id'
,
'productList'
,
'aggreg_date'
,
'search__clouds'
,
'search__startDate'
,
'search__endDate'
,
'search__process_id__name'
,
'search__search_name'
)
.
filter
(
'search__endDate'
,
'search__process_id__name'
,
'search__search_name'
)
.
filter
(
user_id
=
user
.
id
,
purchased
=
1
)
.
order_by
(
'-aggreg_date'
)
user_id
=
user
.
id
,
purchased
=
1
)
.
order_by
(
'-aggreg_date'
)
for
producto
in
product_list
:
for
producto
in
product_list
:
log_info
=
USERS_PATH
+
user
.
email
+
"/"
+
str
(
producto
[
'id'
])
+
"/L2ASCL_AreaProcessing.log"
log_info
=
PATH_USERS
+
user
.
email
+
"/"
+
str
(
producto
[
'id'
])
+
"/L2ASCL_AreaProcessing.log"
#####################################################
#####################################################
# progress bar #
# progress bar #
...
@@ -184,10 +205,6 @@ def User_id(request,user_id):
...
@@ -184,10 +205,6 @@ def User_id(request,user_id):
progress
=
60
progress
=
60
if
'Finalizing...'
in
open
(
log_info
)
.
read
():
if
'Finalizing...'
in
open
(
log_info
)
.
read
():
progress
=
100
progress
=
100
# item = Purchase.objects.filter(pk=producto['id'])
# item = Purchase.objects.get(pk=producto['id'])
# item.progress = progress
# item.save()
with
open
(
log_info
,
'r'
)
as
myfile
:
with
open
(
log_info
,
'r'
)
as
myfile
:
log
=
myfile
.
read
()
.
replace
(
'
\n
'
,
''
)
log
=
myfile
.
read
()
.
replace
(
'
\n
'
,
''
)
...
@@ -200,30 +217,6 @@ def User_id(request,user_id):
...
@@ -200,30 +217,6 @@ def User_id(request,user_id):
else
:
else
:
final_size
=
str
(
round
(
size
,
2
))
+
" MB"
final_size
=
str
(
round
(
size
,
2
))
+
" MB"
initial_folder
=
"."
absolute_path
=
USERS_PATH
+
user
.
email
+
"/"
+
str
(
producto
[
'id'
])
+
"/out"
if
not
os
.
path
.
exists
(
absolute_path
):
print
(
"folder out noes not exists"
)
else
:
folders
=
os
.
listdir
(
path
=
absolute_path
)
if
len
(
folders
)
==
0
:
initial_folder
=
"../#"
else
:
initial_folder
=
folders
.
pop
(
0
)
+
"_sclData"
zip_path
=
USERS_PATH
+
user
.
email
+
"/"
+
str
(
producto
[
'id'
])
# print(zip_path)
# "../ static / reports / tmpImages / repsat_test_dev / umorales @ centrogeo.edu.mx / "+str(producto['id']) / myzip.zip"
wkt
=
USERS_PATH
+
user
.
email
+
"/"
+
str
(
producto
[
'id'
])
+
"/findProducts.json"
with
open
(
wkt
,
'r'
)
as
jsonfile
:
polygon
=
json
.
load
(
jsonfile
)
for
file
in
os
.
listdir
(
path
=
zip_path
):
if
file
.
endswith
(
".zip"
):
zip
=
zip_path
+
"/"
+
file
productList
.
append
({
productList
.
append
({
"search_name"
:
producto
[
'search__search_name'
],
"search_name"
:
producto
[
'search__search_name'
],
"process"
:
producto
[
'search__process_id__name'
],
"process"
:
producto
[
'search__process_id__name'
],
...
@@ -232,19 +225,116 @@ def User_id(request,user_id):
...
@@ -232,19 +225,116 @@ def User_id(request,user_id):
"endDate"
:
producto
[
'search__endDate'
],
"endDate"
:
producto
[
'search__endDate'
],
"clouds"
:
producto
[
'search__clouds'
],
"clouds"
:
producto
[
'search__clouds'
],
"size"
:
final_size
,
"size"
:
final_size
,
"purchase_id"
:
producto
[
'id'
],
"progress"
:
progress
,
"progress"
:
progress
,
"log_info"
:
log
,
"log_info"
:
log
,
"initial_folder"
:
initial_folder
,
"zip"
:
zip
,
"polygon"
:
polygon
[
'wkt'
],
})
})
size
=
0
size
=
0
final_size
=
0
final_size
=
0
log_info
=
""
log_info
=
""
progress
=
0
progress
=
0
initial_folder
=
""
zip
=
""
wkt
=
""
return
render
(
request
,
'User_profile.html'
,{
"user_data"
:
user_data
,
"productList"
:
productList
}
)
# lista de meses #
\ No newline at end of file
month_lst
=
[
{
'quantity'
:
0
,
'date'
:
'January'
},
{
'quantity'
:
0
,
'date'
:
'February'
},
{
'quantity'
:
0
,
'date'
:
'March'
},
{
'quantity'
:
0
,
'date'
:
'April'
},
{
'quantity'
:
0
,
'date'
:
'May'
},
{
'quantity'
:
0
,
'date'
:
'June'
},
{
'quantity'
:
0
,
'date'
:
'July'
},
{
'quantity'
:
0
,
'date'
:
'August'
},
{
'quantity'
:
0
,
'date'
:
'September'
},
{
'quantity'
:
0
,
'date'
:
'October'
},
{
'quantity'
:
0
,
'date'
:
'November'
},
{
'quantity'
:
0
,
'date'
:
'December'
}]
for
date
in
Purchase
.
objects
.
filter
(
purchased
=
True
,
user_id
=
user
.
id
)
.
extra
(
{
'month'
:
"Extract(month from aggreg_date)"
})
.
values_list
(
'month'
)
.
annotate
(
Count
(
'id'
)):
date_name
=
calendar
.
month_name
[
int
(
date
[
0
])]
for
month
in
month_lst
:
if
month
[
'date'
]
==
date_name
:
month
[
'quantity'
]
=
date
[
1
]
# print(month_lst)
return
render
(
request
,
'User_profile.html'
,
{
"user_data"
:
user_data
,
"productList"
:
productList
,
"dates"
:
month_lst
,
'user_searches'
:
user_searches
})
# ---------------------------------------------------------
@
csrf_exempt
def
wsPurchasesPM
(
request
):
if
request
.
is_ajax
():
table_data
=
[]
data
=
Purchase
.
objects
.
values
(
'user_id'
,
'search__endDate'
,
'search__startDate'
,
'aggreg_date'
,
'search__process_id__name'
,
'search__search_name'
)
.
filter
(
user_id
=
request
.
POST
.
get
(
'user_id'
),
purchased
=
True
,
aggreg_date__month
=
to_if
(
request
.
POST
.
get
(
'title'
)))
.
order_by
(
'aggreg_date'
)
for
producto
in
data
:
table_data
.
append
({
"search_name"
:
producto
[
'search__search_name'
],
"process"
:
producto
[
'search__process_id__name'
],
"purchase_date"
:
str
(
producto
[
'aggreg_date'
])[:
10
],
"startDate"
:
str
(
producto
[
'search__startDate'
])[:
10
],
"endDate"
:
str
(
producto
[
'search__endDate'
])[:
10
],
})
return
HttpResponse
(
json
.
dumps
(
table_data
))
# return HttpResponse({'table_data':table_data})
else
:
raise
Http404
# ----------------------------------------------------------------------
def
to_if
(
name
):
if
name
==
"January"
:
return
1
elif
name
==
"February"
:
return
2
elif
name
==
"March"
:
return
3
elif
name
==
"April"
:
return
4
elif
name
==
"May"
:
return
5
elif
name
==
"June"
:
return
6
elif
name
==
"July"
:
return
7
elif
name
==
"August"
:
return
8
elif
name
==
"September"
:
return
9
elif
name
==
"October"
:
return
10
elif
name
==
"November"
:
return
11
elif
name
==
"December"
:
return
12
else
:
raise
ValueError
# -----------------------------------------------
def
best_unit_size
(
bytes_size
):
"""
Obtenga un tamaño en bytes y conviértalo en el mejor prefijo IEC para facilitar la lectura.
Devuelva un diccionario con tres pares de claves / valores:
"s" - (flotador) Tamaño del camino convertido a la mejor unidad para una fácil lectura
"u" - (str) El prefijo (IEC) para s (de bytes (2 ^ 0) a YiB (2 ^ 80))
"b" - (int / long) El tamaño original en bytes
"""
for
exp
in
range
(
0
,
90
,
10
):
bu_size
=
abs
(
bytes_size
)
/
pow
(
2.0
,
exp
)
if
int
(
bu_size
)
<
2
**
10
:
unit
=
{
0
:
"bytes"
,
10
:
"KB"
,
20
:
"MB"
,
30
:
"GB"
,
40
:
"TB"
,
50
:
"PB"
,
60
:
"EB"
,
70
:
"ZB"
,
80
:
"YB"
}[
exp
]
break
return
str
(
round
(
bu_size
,
2
))
+
" "
+
unit
# ------------------------------------------------
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