def status(request): output = [ ("system_status", functions.get_configuration("system_status", False))] output.append( ("system_mode", functions.get_configuration("system_mode", False))) output.append(("login", request.user.is_authenticated())) if request.user.is_authenticated(): output.append(("user", request.user.get_full_name())) output.append(("admin", request.user.is_superuser)) output.append( ("auto_optimization", functions.get_configuration("auto_optimization", False))) return create_json_response(dict(output), request)
def status(request): output = [("system_status", functions.get_configuration("system_status", False))] output.append( ("system_mode", functions.get_configuration("system_mode", False))) output.append(("login", request.user.is_authenticated())) if request.user.is_authenticated(): output.append(("user", request.user.get_full_name())) output.append(("admin", request.user.is_superuser)) output.append(("auto_optimization", functions.get_configuration("auto_optimization", False))) return create_json_response(dict(output), request)
def forecast(request): if not request.user.is_superuser: raise PermissionDenied try: latest_timestamp = get_past_time() initial_time = calendar.timegm(latest_timestamp.timetuple()) except SensorValue.DoesNotExist: initial_time = time() if request.method == 'POST': try: data = json.loads(request.body) if 'forecast_id' in data: result = FORECAST_QUEUE.get_by_id(data['forecast_id']) if result == None: output = { "forecast_id": data['forecast_id'], 'sensors': [], 'status': "running" } else: output = result output["status"] = "finished" return create_json_response(output, request) code = None if 'code' in data: code = data['code'] configurations = None if 'configurations' in data: configurations = functions.get_modified_configurations( data['configurations']) if functions.get_configuration('auto_optimization'): # schedule forecast and immediately return its id. # The forecast result can be later retrieved by it forecast_id = FORECAST_QUEUE.schedule_new( initial_time, configurations=configurations, code=code) output = { "forecast_id": forecast_id, 'sensors': [], 'status': "running" } else: output = get_forecast(initial_time, configurations=configurations, code=code) except ValueError as e: logger.error(e) return create_json_response({"status": "failed"}, request) else: output = get_forecast(initial_time) return create_json_response(output, request)
def forecast(request): if not request.user.is_superuser: raise PermissionDenied try: latest_timestamp = get_past_time() initial_time = calendar.timegm(latest_timestamp.timetuple()) except SensorValue.DoesNotExist: initial_time = time() if request.method == 'POST': try: data = json.loads(request.body) if 'forecast_id' in data: result = FORECAST_QUEUE.get_by_id(data['forecast_id']) if result == None: output = {"forecast_id": data[ 'forecast_id'], 'sensors': [], 'status': "running"} else: output = result output["status"] = "finished" return create_json_response(output, request) code = None if 'code' in data: code = data['code'] configurations = None if 'configurations' in data: configurations = functions.get_modified_configurations( data['configurations']) if functions.get_configuration('auto_optimization'): # schedule forecast and immediately return its id. # The forecast result can be later retrieved by it forecast_id = FORECAST_QUEUE.schedule_new( initial_time, configurations=configurations, code=code) output = {"forecast_id": forecast_id, 'sensors': [], 'status': "running"} else: output = get_forecast( initial_time, configurations=configurations, code=code) except ValueError as e: logger.error(e) return create_json_response({"status": "failed"}, request) else: output = get_forecast(initial_time) return create_json_response(output, request)