dashboard

parent 70fc998e
......@@ -19,16 +19,24 @@ from catalog.models import Purchase, Search
from catalog.views import config
USERS_PATH = config['PATHS']['PATH_NAS']
size_sentinel =0
size_repsat=0
#------------------------------------------------------------
def Dashboard(request):
# Total de compras #
total = Purchase.objects.filter(purchased=True).count()
# Usuarios activos #
usuarios = User.objects.filter(is_active=True).count()
# Solicitudes de Alta #
Request = User.objects.filter(is_active=False).count()
# Compras en progreso #
in_process = Purchase.objects.filter(purchased=True).exclude(progress=100).count()
# lista de meses #
month_lst = [
{'quantity': 0, 'date': 'January'},
{'quantity': 0, 'date': 'February'},
......@@ -43,6 +51,7 @@ def Dashboard(request):
{'quantity': 0, 'date': 'November'},
{'quantity': 0, 'date': 'December'}]
# Obtener el nombre del mes #
for date in Purchase.objects.filter().extra({'month': "Extract(month from aggreg_date)"}).values_list(
'month').annotate(Count('id')):
date_name = calendar.month_name[int(date[0])]
......@@ -50,27 +59,42 @@ def Dashboard(request):
for month in month_lst:
if month['date'] == date_name:
month['quantity'] = date[1]
search_names =['']
# Obtener las 5 busquedas m'as comunes #
search_names = ['']
Searches = Search.objects.values('search_name').exclude(search_name__in=search_names).annotate(
count=Count('search_name')).order_by('-count')[:5]
repsat = os.stat(USERS_PATH+"/repsat_test_dev").st_size
if repsat > 1024:
size2 = repsat / 1024
size_repsat = str(round(size2, 2)) + " GB"
else:
size_repsat = str(round(repsat, 2)) + " MB"
# Espacio Usado en Sentinel #
bytes_size = 0
for path, directories, files in os.walk(USERS_PATH + "sentinelImages"):
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 + "sentinelImages")
size_sentinel = best_unit_size(bytes_size)
# Espacio Usado en Repsat #
bytes_size = 0
for path, directories, files in os.walk(USERS_PATH + "repsat_test_dev"):
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")
size_repsat = best_unit_size(bytes_size)
sentinel = os.stat(USERS_PATH + "/sentinelImages").st_size
if sentinel > 1024:
size2 = repsat / 1024
size_sentinel = str(round(size2, 2)) + " GB"
else:
size_sentinel = str(round(sentinel, 2)) + " MB"
return render(request, 'dashboard.html',
{"Viewname": "Dashboard", "Usuarios": usuarios, "Total_compras": total, "Solicitud": Request,
"Descargando": in_process, "dates": month_lst, "search": Searches,"size_repsat":size_repsat,"size_sentinel":size_sentinel})
"Descargando": in_process, "dates": month_lst, "search": Searches, "size_repsat": size_repsat,
"size_sentinel": size_sentinel})
# ----------------------------------------------------------
......@@ -135,7 +159,8 @@ def active_users(request):
# messages.success(request, 'your registration is being processed')
return render(request, 'users_table.html', {'users': user_list, "Viewname": "Request"})
#----------------------------------------------------------------------
# ----------------------------------------------------------------------
# @csrf_exempt
# def wsPurchasesPM (request):
# if request.is_ajax():
......@@ -153,44 +178,78 @@ def active_users(request):
@csrf_exempt
def wsPurchasesPM(request):
global mes
print(request.POST.get('title'))
# print(request.POST.get('title'))
if request.is_ajax():
date_list = Purchase.objects.dates('aggreg_date', 'month')
for meses in date_list:
datee = datetime.datetime.strptime(str(meses), "%Y-%m-%d")
mes = calendar.month_name[int(datee.month)]
print(mes)
# print(mes)
#data =Purchase.objects.filter(Q(date__month=1) | Q(date__month=2) | Q(date__month=3))
#data = Purchase.objects.values('user__username').filter(Q(aggreg_date__month=to_if(mes))|Q(user__purchase_user_id = user__user_id))
data = Purchase.objects.filter()
for dato in data:
print(dato.username)
# data =Purchase.objects.filter(Q(date__month=1) | Q(date__month=2) | Q(date__month=3))
# data = Purchase.objects.values('user__username').filter(Q(aggreg_date__month=to_if(mes))|Q(user__purchase_user_id = user__user_id))
# data = Purchase.objects.values('user__username').filter(aggreg_date__month=to_if(mes)).annotate(count=Count('user_id')).order_by('-count')[:1]
data = Purchase.objects.values('id', 'user__username', 'aggreg_date', 'search__clouds',
'search__startDate',
'search__endDate', 'search__process_id__name').filter(
aggreg_date__month=to_if(mes)).annotate(count_purchases=Count('id')).order_by('id')
print(data)
for dato in data:
print(dato['count_purchases'])
#return HttpResponse(json.dumps(request.POST.get('title')))
# return HttpResponse(json.dumps(request.POST.get('title')))
return HttpResponse(json.dumps(to_if(mes)))
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
\ No newline at end of file
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
......@@ -524,7 +524,7 @@ $(document).ready(function () {
'producttype' : data.product.producttype,
'tileid' : data.product.tileid,
'beginposition' : data.product.beginposition,
'img' : data.img,
//'img' : data.img,
'identifier' : data.product.identifier,
'size' : data.product.size,
'instrumentname' : data.product.instrumentname
......
......@@ -120,7 +120,7 @@
<!-- search form -->
<form role="form" action="#" method="get" class="sidebar-form">
<div class="input-group">
<input type="text" id="ajax-input" name="value" class="form-control" autocomplete="off" placeholder="Search region...">
<input type="text" id="ajax-input" value="" name="value" class="form-control" autocomplete="off" placeholder="Search region...">
<span class="input-group-btn">
<button type="button" name="search" id="erase-btn" class="btn btn-flat" onclick="erase_input()">
<i class="fa fa-eraser"></i>
......@@ -139,7 +139,7 @@
<form id='product-form' role="form" method="post">
{% csrf_token %}
<input type="hidden" id="user_name" name="user_name" value={{user.get_username}}>
<input type="hidden" id="search_name" name="search_name">
<input type="hidden" id="search_name" name="search_name" value="Drawn Polygon">
<ul class="sidebar-menu" data-widget="tree">
<li class="treeview">
<a href="#">
......
......@@ -64,10 +64,13 @@ def map(request):
# -------------------------------------------------------------------------------
def requestToImage(request):
img_link = request.GET['value']
#print(img_link)
r = requests.get(img_link, auth=("emmhp", "geoemm29"), stream=True)
print(r.content)
img_str = base64.b64encode(r.content)
#print(img_str)
img_str = img_str.decode('utf-8')
#print(img_str)
return JsonResponse({'img': img_str})
......@@ -86,8 +89,7 @@ def productList(request):
end_date = req['end'][0][:10]
clouds = req['cloudPercentage'][0]
search_name = req['search_name'][0]
if search_name == '':
search_name = 'Drawn Polygon'
print(search_name)
cloud_percentage = "[0 TO " + req['cloudPercentage'][0] + "]"
## ----- aqui llamada a api sentinel
......
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