def listRooms(): rooms = Room.select().join(Patient, JOIN.LEFT_OUTER) return_list = [] for room in rooms: ret_dict = { u'room': room.name, u'priority': room.priority, u'message': room.message } if room.patient is None: ret_dict[u'empty'] = True ret_dict[u'patient'] = None else: patient = { u'id': room.patient.patId, u'name': room.patient.name, u'surname': room.patient.surname, u'title': room.patient.title } ret_dict[u'patient'] = patient ret_dict[u'empty'] = False return_list.append(ret_dict) return CallResult(return_list)
def read_current_browsing_intent(self, *args): def get_and_decode_json_arg(argument_list): if len(argument_list) != 1: raise Exception( "'read_current_browsing_intent' accepts exactly 1 argument, browsing_session_id_obj." ) browsing_session_id_json = argument_list[0] # parse arguments for validity before processing if not isinstance(browsing_session_id_json, unicode) and not isinstance( browsing_session_id_json, str): raise Exception( "browsing_session_id_obj must be a unicode or string object. It is {}" .format(type(browsing_session_id_json))) try: return json.loads(browsing_session_id_json) except ValueError: print("Decoding JSON argument has failed") raise Exception("Decoding JSON argument has failed") def check_input_dict_for_id(browsing_data): try: db_id = browsing_data['id'] if not isinstance(db_id, unicode) and not isinstance( db_id, str): raise Exception("'id' must be a unicode or string object.") db_id = int(db_id) except KeyError: raise Exception( "id' key is not present in browsing data JSON object.") return db_id def make_return_dictionary(): current_intent = browsing_data_row.current_intent cta_url = "https://picbackend.herokuapp.com/v2/cta/?intent=" + current_intent return_value = { 'current_intent': current_intent, 'cta_url': cta_url, } return return_value browsing_session_id_dict = get_and_decode_json_arg(args) browsing_session_data_row_id = check_input_dict_for_id( browsing_session_id_dict) browsing_data_row = yield non_blocking_get_browsing_session_data_row_by_id( browsing_session_data_row_id) return_dictionary = make_return_dictionary() returnValue(CallResult(**return_dictionary))
def delete_browsing_intent_snapshot_row(self, *args): def get_and_decode_json_arg(argument_list): if len(argument_list) != 1: raise Exception( "'delete_browsing_intent_snapshot_row' accepts exactly 1 argument, intent_snapshot_id_obj.") id_json = argument_list[0] # parse arguments for validity before processing if not isinstance(id_json, unicode) and not isinstance(id_json, str): raise Exception( "id_json must be a unicode or string object. It is {}".format( type(id_json))) try: return json.loads(id_json) except ValueError: print("Decoding JSON argument has failed") raise Exception("Decoding JSON argument has failed") def check_input_dict_for_id(browsing_data): try: db_id = browsing_data['id'] if not isinstance(db_id, unicode) and not isinstance( db_id, str): raise Exception("'id' must be a unicode or string object.") db_id = int(db_id) except KeyError: raise Exception("id' key is not present in browsing data JSON object.") return db_id def make_return_dictionary(): return_value = { 'id': 'deleted' } return return_value intent_snapshot_id_dict = get_and_decode_json_arg(args) intent_snapshot_id = check_input_dict_for_id(intent_snapshot_id_dict) intent_snapshot_row = yield non_blocking_get_intent_snapshot_row_by_id(intent_snapshot_id) yield intent_snapshot_row.delete() return_dictionary = make_return_dictionary() returnValue(CallResult(**return_dictionary))
def read_browsing_intent_snapshot_rows(self, *args): def get_and_decode_json_arg(argument_list): if len(argument_list) != 1: raise Exception( "'read_browsing_sesion_data_row' accepts exactly 1 argument, browsing_session_id_obj.") browsing_session_id_json = argument_list[0] # parse arguments for validity before processing if not isinstance(browsing_session_id_json, unicode) and not isinstance(browsing_session_id_json, str): raise Exception( "browsing_session_id_obj must be a unicode or string object. It is {}".format(type(browsing_session_id_json))) try: return json.loads(browsing_session_id_json) except ValueError: print("Decoding JSON argument has failed") raise Exception("Decoding JSON argument has failed") def check_input_dict_for_id(browsing_data): try: db_id = browsing_data['id'] if not isinstance(db_id, unicode) and not isinstance(db_id, str): raise Exception("'id' must be a unicode or string object.") db_id = int(db_id) except KeyError: raise Exception("id' key is not present in browsing data JSON object.") return db_id def make_return_dictionary(): return_value = { 'intent_snapshot_rows': json.dumps([intent_snapshot_row.return_values_dict() for intent_snapshot_row in intent_snapshot_rows]), } return return_value browsing_session_id_dict = get_and_decode_json_arg(args) browsing_session_data_row_id = check_input_dict_for_id( browsing_session_id_dict) intent_snapshot_rows = yield non_blocking_get_intent_snapshot_rows_from_session_id(browsing_session_data_row_id) return_dictionary = make_return_dictionary() returnValue(CallResult(**return_dictionary))
def split_name(fullname): forename, surname = fullname.split() return CallResult(forename, surname)
def add_complex(a, ai, b, bi): return CallResult(c=a + b, ci=ai + bi)
def add_complex(a, ai, b, bi): print("add_complex() called with {}".format((a, ai, b, bi))) return CallResult(c=a + b, ci=ai + bi)
def split_name(fullname): print("split_name() called with '{}'".format(fullname)) parts = fullname.split() return CallResult(*parts)
def submit_browsing_data(self, *args): """ This procedure takes a given id corresponding to a presence health browsing data db row along with client browsing data information, updates the db record, and returns relevant updated info about the entry. :param args: Argument list. Accepts only one argument. [browsing_data_json] browsing_data_json: A JSON formatted object that has the following mandatory keys. id: (type: String) Cookie id of presence health browsing data row. keyword: (type: String) keyword corresponding the given browsing data. keyword_clicks: (type: Integer) number of clicks corresponding to given keyword. keyword_hover_time: (type: Float) length of hover time corresponding to given keyword. :return: Returns keywords results that are accessible through the results' kwargs property. id: (type: Integer) Database id of newly created presence health browsing data row. oncology_clicks: (type: Integer) Total number of clicks corresponding to the 'oncology' keyword. oncology_hover_time: (type: Float) Total amount of time corresponding to the 'oncology' keyword. """ def check_args_for_browsing_data(argument_list): """ This function takes an argument list containing one argument, browsing_data, parses it for errors, and returns the JSON object retrieved from the argument list. :param argument_list: Argument list. Accepts only one argument. [browsing_data] browsing_data: (type: Unicode or String) JSON object that contains submitted browsing data. :return: (type: Unicode or String) JSON object that contains submitted browsing data. """ if len(argument_list) != 1: raise Exception( "'patient_assist_backend.submit_browsing_data_presence_health' accepts exactly 1 argument, browsing data." ) browsing_data_json = argument_list[0] # parse arguments for validity before processing if not isinstance(browsing_data_json, unicode) and not isinstance( browsing_data_json, str): raise Exception( "browsing data must be a unicode or string object. It is {}" .format(type(browsing_data_json))) return browsing_data_json def decode_json_arg(json_arg): """ This function takes a JSON formatted String or Unicode object, parses it for errors, transforms it into a python object, and finally returns the decoded object. :param json_arg: (type: Unicode or String) JSON object for decoding. :return: (type: Dictionary) Dictionary object that contains submitted browsing data. """ try: return json.loads(json_arg) except ValueError: print("Decoding JSON argument has failed") raise Exception("Decoding JSON argument has failed") def check_browsing_data_for_args(browsing_data): """ This function takes a dictionary, parses it for parameters that are used for submitting browsing data and returns any errors. Finally, the function returns an argument list containing any relevant browsing data. :param browsing_data: (type: Dictionary) Dictionary object that contains submitted browsing data. :return: Argument List: [browsing_session_data_row_id, browsing_keyword, keyword_clicks, keyword_hover_time] browsing_session_data_row_id: (type: String or Unicode) Cookie id of presence health browsing data instance. browsing_keyword: (type: String or Unicode) Browsing data keyword to update. keyword_clicks: (type: Integer) Number of clicks for corresponding keyword. keyword_hover_time: (type: Float) Amount of time, in seconds, of hover time for corresponding keyword. """ try: browsing_session_data_row_id = browsing_data['id'] if not isinstance(browsing_session_data_row_id, unicode) and not isinstance( browsing_session_data_row_id, str): raise Exception("'id' must be a unicode or string object.") browsing_session_data_row_id = int( browsing_session_data_row_id) except KeyError: raise Exception( "id' key is not present in browsing data JSON object.") try: browsing_keyword = browsing_data['keyword'] if not isinstance(browsing_keyword, unicode) and not isinstance( browsing_keyword, str): raise Exception( "'keyword' must be a unicode or string object.") if browsing_keyword not in PRESENCE_INTENT_KEYWORDS: raise Exception( "'keyword' must be in the following list of accepted keywords: {}." .format(json.dumps(PRESENCE_INTENT_KEYWORDS))) except KeyError: raise Exception( "'keyword' key is not present in browsing data JSON object." ) try: keyword_clicks = browsing_data['keyword_clicks'] if not isinstance(keyword_clicks, int): raise Exception("'keyword_clicks' must be an integer.") if keyword_clicks < 0: raise Exception("'keyword_clicks' must be an positive.") except KeyError: raise Exception( "'keyword_clicks' key is not present in browsing data JSON object." ) try: keyword_hover_time = browsing_data['keyword_hover_time'] if not isinstance(keyword_hover_time, float): raise Exception( "'keyword_hover_time' must be a floating point.") if keyword_hover_time < 0: raise Exception("'keyword_hover_time' must be positive") except KeyError: raise Exception( "'keyword_hover_time' key is not present in browsing data JSON object." ) return browsing_session_data_row_id, browsing_keyword, keyword_clicks, keyword_hover_time browsing_data_json = check_args_for_browsing_data(args) browsing_data_raw = decode_json_arg(browsing_data_json) browsing_session_data_row_id, browsing_keyword, keyword_clicks, keyword_hover_time = check_browsing_data_for_args( browsing_data_raw) presence_browsing_session_data_row = yield non_blocking_get_browsing_session_data_row_by_id( browsing_session_data_row_id) presence_browsing_session_data_row = yield non_blocking_update_presence_session_row_w_submitted_data( presence_browsing_session_data_row, browsing_keyword, keyword_clicks, keyword_hover_time) returnValue( CallResult( **presence_browsing_session_data_row.return_values_dict()))
def create_browsing_session_data_row(self): presence_data_instance = yield non_blocking_create_presence_browsing_session_data_row( ) returnValue(CallResult(**presence_data_instance.return_values_dict()))