summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordk-152017-06-15 18:55:21 +0530
committerdk-152017-06-15 19:02:21 +0530
commit730a85cddf9958e0e7c70bde0aebb0a566dc685c (patch)
tree3236fdf8e3fd0fb1f6a057db7f5204918c23d346
parentb4985750bdf1ad7c570723e3f8387f4c9ce3e561 (diff)
downloadSBHS-2018-Rpi-730a85cddf9958e0e7c70bde0aebb0a566dc685c.tar.gz
SBHS-2018-Rpi-730a85cddf9958e0e7c70bde0aebb0a566dc685c.tar.bz2
SBHS-2018-Rpi-730a85cddf9958e0e7c70bde0aebb0a566dc685c.zip
Add function to provide RPi ip to client app
-rw-r--r--experiment/urls.py2
-rw-r--r--experiment/views.py81
2 files changed, 10 insertions, 73 deletions
diff --git a/experiment/urls.py b/experiment/urls.py
index 9445973..6b9c801 100644
--- a/experiment/urls.py
+++ b/experiment/urls.py
@@ -9,7 +9,7 @@ urlpatterns = [
url(r'^experiment/check_connection/?$', views.check_connection, name='experiment_check_connection'),
url(r'^experiment/client_version/?$', views.client_version, name='experiment_client_version'),
- url(r'^experiment/initiate/?$', views.initiation, name='experiment_initiate'),
+ url(r'^experiment/initiate/?$', views.initial_login, name='experiment_initiate'),
url(r'^experiment/experiment/?$', views.experiment, name='experiment_experiment'),
url(r'^experiment/reset/?$', views.reset, name='experiment_reset'),
url(r'^experiment/logs/?$', views.logs, name='experiment_logs'),
diff --git a/experiment/views.py b/experiment/views.py
index 9b493f3..1aa79e5 100644
--- a/experiment/views.py
+++ b/experiment/views.py
@@ -13,80 +13,17 @@ def check_connection(req):
return HttpResponse("TESTOK")
@csrf_exempt
-def initiation(req):
+def initial_login(req):
username = req.POST.get("username")
- password = req.POST.get("password")
- user = authenticate(username=username, password=password)
- if user is not None:
- if user.is_active:
- user1 = Account.objects.select_related().filter(id=user.id)
- user1 = user1[0]
- user_board = user1.board
-
- #allows admin to access the temporary offline devices but prohibits the users to do so
- if user_board.online and (not user_board.temp_offline or user1.is_admin):
- slots = Slot.slots_now()
- slot_ids = [s.id for s in slots]
- now = datetime.datetime.now()
- bookings = user.booking_set.filter(booking_date__year=now.year,
- booking_date__month=now.month,
- booking_date__day=now.day,
- slot_id__in=slot_ids).select_related("slot")
- try:
- cur_booking = bookings[0]
- active_slot = cur_booking.slot
- except:
- cur_booking = None
- active_slot = None
-
- if active_slot is not None:
- endtime = cur_booking.end_time()
- if now < endtime:
- filename = datetime.datetime.strftime(now, "%Y%b%d_%H_%M_%S.txt")
- logdir = os.path.join(settings.EXPERIMENT_LOGS_DIR, user.username)
- if not os.path.exists(logdir):
- os.makedirs(logdir)
-
- f = open(os.path.join(logdir, filename), "a")
- f.close()
-
- LOGIN(req, user)
-
- e = Experiment()
- e.booking=cur_booking
- e.log=os.path.join(logdir, filename)
- e.save()
-
- key = str(user_board.mid)
-
- settings.boards[key]["experiment_id"] = e.id
- global_logfile = settings.SBHS_GLOBAL_LOG_DIR + "/" + key + ".log"
- with open(global_logfile, "a") as global_loghandler:
- data = "\n\n===================New experiment====================\nUsername : " + user.username + "\nExperiment Id : " + str(e.id) + "\n"
- global_loghandler.write(data)
-
- reset(req)
-
- STATUS = 1
- MESSAGE = filename
- else:
- reset(req)
- STATUS = 0
- MESSAGE = "Slot has ended. Please book the next slot to continue the experiment."
- else:
- STATUS = 0
- MESSAGE = "You haven't booked this slot."
- else:
- STATUS = 0
- MESSAGE = "Your SBHS is offline. Please contact the Vlabs team."
- else:
- STATUS = 0
- MESSAGE = "Your account is not activated yet. Please check your email for activation link."
- else:
- STATUS = 0
- MESSAGE = "Invalid username or password"
+ rpi_ip = ''
+ try:
+ assigned_mid = Account.objects.select_related().get(username=username).board.mid
+ except Exception as e:
+ return HttpResponse(json.dumps({"STATUS": 400, "MESSAGE": "Invalid username"}))
+
+ rpi_ip = settings.pi_ip_map[str(assigned_mid)]
- return HttpResponse(json.dumps({"STATUS": STATUS, "MESSAGE": MESSAGE}))
+ return HttpResponse(json.dumps({"STATUS": 200, "MESSAGE": rpi_ip}))
# return HttpResponse(key)
# @login_required(redirect_field_name=None)
@csrf_exempt