user profile

parent 60fb3c34
...@@ -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
{% 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>
...@@ -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)
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_statics = [] user_searches = []
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_statics = [] user_searches = []
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
# ------------------------------------------------
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