aboutsummaryrefslogtreecommitdiffstats
path: root/src/booking
diff options
context:
space:
mode:
authorSean Smith <ssmith@iol.unh.edu>2021-04-06 15:18:06 -0400
committerSean Smith <ssmith@iol.unh.edu>2021-05-03 11:40:07 -0400
commit8269a6743c14cab1ca4105651255e6f908ee195c (patch)
tree7eabea6597cb232114cd84ae3b9d91f8d1ab43bf /src/booking
parentf1456220fcc098cb0f5e9fc60124680ff8aba6af (diff)
Analytics Board
Signed-off-by: Sean Smith <ssmith@iol.unh.edu> Change-Id: Id942628ff04cd2f3808f8608ac45989360717f34
Diffstat (limited to 'src/booking')
-rw-r--r--src/booking/stats.py54
-rw-r--r--src/booking/urls.py2
-rw-r--r--src/booking/views.py2
3 files changed, 53 insertions, 5 deletions
diff --git a/src/booking/stats.py b/src/booking/stats.py
index bdb478a..626ed79 100644
--- a/src/booking/stats.py
+++ b/src/booking/stats.py
@@ -6,8 +6,11 @@
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
+import os
from booking.models import Booking
+from resource_inventory.models import ResourceQuery, ResourceProfile
from datetime import datetime, timedelta
+from collections import Counter
import pytz
@@ -23,9 +26,28 @@ class StatisticsManager(object):
y values are the integer number of bookings/users active at time
"""
+ anuket_colors = [
+ '#6BDAD5', # Turquoise
+ '#E36386', # Pale Violet Red
+ '#F5B335', # Sandy Brown
+ '#007473', # Teal
+ '#BCE194', # Gainsboro
+ '#00CE7C', # Sea Green
+ ]
+
+ lfedge_colors = [
+ '#0049B0',
+ '#B481A5',
+ '#6CAFE4',
+ '#D33668',
+ '#28245A'
+ ]
+
x = []
y = []
users = []
+ projects = []
+ profiles = {str(profile): [] for profile in ResourceProfile.objects.all()}
now = datetime.now(pytz.utc)
delta = timedelta(days=span)
@@ -49,10 +71,38 @@ class StatisticsManager(object):
for booking in books:
active_users += booking.collaborators.all().count() + 1
- x.append(str(start))
+ x.append(str(start.month) + '-' + str(start.day))
y.append(books.count())
+
+ step_profiles = Counter([
+ str(config.profile)
+ for book in books
+ for config in book.resource.template.getConfigs()
+ ])
+
+ for profile in ResourceProfile.objects.all():
+ profiles[str(profile)].append(step_profiles[str(profile)])
users.append(active_users)
start += timedelta(hours=12)
- return {"booking": [x, y], "user": [x, users]}
+ in_use = len(ResourceQuery.filter(working=True, booked=True))
+ not_in_use = len(ResourceQuery.filter(working=True, booked=False))
+ maintenance = len(ResourceQuery.filter(working=False))
+
+ projects = [x.project for x in bookings]
+ proj_count = sorted(Counter(projects).items(), key=lambda x: x[1])
+
+ project_keys = [proj[0] for proj in proj_count[-5:]]
+ project_counts = [proj[1] for proj in proj_count[-5:]]
+
+ resources = {key: [x, value] for key, value in profiles.items()}
+
+ return {
+ "resources": resources,
+ "booking": [x, y],
+ "user": [x, users],
+ "utils": [in_use, not_in_use, maintenance],
+ "projects": [project_keys, project_counts],
+ "colors": anuket_colors if os.environ['TEMPLATE_OVERRIDE_DIR'] == 'laas' else lfedge_colors
+ }
diff --git a/src/booking/urls.py b/src/booking/urls.py
index d5287e9..cdf18ae 100644
--- a/src/booking/urls.py
+++ b/src/booking/urls.py
@@ -40,8 +40,6 @@ from booking.views import (
app_name = "booking"
urlpatterns = [
-
-
url(r'^detail/(?P<booking_id>[0-9]+)/$', booking_detail_view, name='detail'),
url(r'^(?P<booking_id>[0-9]+)/$', booking_detail_view, name='booking_detail'),
url(r'^delete/$', BookingDeleteView.as_view(), name='delete_prefix'),
diff --git a/src/booking/views.py b/src/booking/views.py
index 66cb594..2b910e7 100644
--- a/src/booking/views.py
+++ b/src/booking/views.py
@@ -195,7 +195,7 @@ def booking_stats_view(request):
return render(
request,
"booking/stats.html",
- context={"data": StatisticsManager.getContinuousBookingTimeSeries(), "title": "Booking Statistics"}
+ context={"data": StatisticsManager.getContinuousBookingTimeSeries(), "title": ""}
)