dashboard

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