aboutsummaryrefslogtreecommitdiffstats
path: root/src/api
diff options
context:
space:
mode:
authorJacob Hodgdon <jhodgdon@iol.unh.edu>2021-07-22 16:49:26 -0400
committerSawyer Bergeron <sbergeron@iol.unh.edu>2021-08-04 15:01:12 -0400
commitaa06cf305172854a47d61387c4df4f893dd00839 (patch)
tree8533c8498ed6cdcab396de609d566208c2301b85 /src/api
parent68e660d74131f92337a37362014056e6390d350f (diff)
added /api/labs endpoint and tracebacks
Change-Id: I59d06d19806e892daed007689b0dab139eae3160 Signed-off-by: Jacob Hodgdon <jhodgdon@iol.unh.edu> Signed-off-by: Sawyer Bergeron <sbergeron@iol.unh.edu>
Diffstat (limited to 'src/api')
-rw-r--r--src/api/urls.py1
-rw-r--r--src/api/views.py33
2 files changed, 31 insertions, 3 deletions
diff --git a/src/api/urls.py b/src/api/urls.py
index 3d78ed6..1878d9c 100644
--- a/src/api/urls.py
+++ b/src/api/urls.py
@@ -82,6 +82,7 @@ urlpatterns = [
path('resource_inventory/<int:template_id>/images', images_for_template),
path('users', all_users),
+ path('labs', all_labs),
url(r'^token$', GenerateTokenView.as_view(), name='generate_token'),
]
diff --git a/src/api/views.py b/src/api/views.py
index 3c8445d..84085b4 100644
--- a/src/api/views.py
+++ b/src/api/views.py
@@ -10,6 +10,7 @@
import json
import math
+import traceback
from datetime import timedelta
from django.contrib.auth.decorators import login_required
@@ -362,7 +363,8 @@ def make_booking(request):
try:
booking = create_from_API(request.body, token.user)
except Exception as e:
- return HttpResponse(str(e), status=400)
+ exc_type, exc_value, exc_traceback = sys.exc_info()
+ return HttpResponse(str(traceback.format_exception(exc_type, exc_value, exc_traceback)), status=400)
sbooking = AutomationAPIManager.serialize_booking(booking)
return JsonResponse(sbooking, safe=False)
@@ -383,7 +385,7 @@ def available_templates(request):
# mirrors MultipleSelectFilter Widget
avt = []
for lab in Lab.objects.all():
- for template in ResourceTemplate.objects.filter(lab=lab, owner=token.user, public=True):
+ for template in ResourceTemplate.objects.filter(Q(lab=lab), Q(owner=token.user) | Q(public=True)):
available_resources = lab.get_available_resources()
required_resources = template.get_required_resources()
least_available = 100
@@ -417,7 +419,7 @@ def images_for_template(request, template_id=""):
"""
User API Views
"""
-
+lab_info
def all_users(request):
token = auth_and_log(request, 'users')
@@ -429,3 +431,28 @@ def all_users(request):
for up in UserProfile.objects.exclude(user=token.user)]
return JsonResponse(users, safe=False)
+
+
+"""
+Lab API Views
+"""
+
+
+def all_labs():
+ lab_list=[]
+ for lab in Lab.objects.all():
+ lab_info = {
+ 'name':lab.name,
+ 'username':lab.lab_user.username,
+ 'status':lab.status,
+ 'project':lab.project,
+ 'description':lab.description,
+ 'location':lab.location,
+ 'info':lab.lab_info_link,
+ 'email':lab.contact_email,
+ 'phone':lab.contact_phone
+ }
+ lab_list.append(lab_info)
+
+ return JsonResponse(lab_list, safe=False)
+