def get_findlock(self, search_type: m_FindlockEntries, query) -> m_LogicReturn: res = self.find_one({search_type: query}) return m_LogicReturn.f_error_msg( "Findlock not found") if res is None else m_LogicReturn.f_success( "Found findlock!", m_Findlock.fromDict(res))
def get_allowed_users_for_findlock(_findlock_uuid) -> m_LogicReturn: if not v.verify_uuid(_findlock_uuid).success: return m_LogicReturn.f_error_msg(f"{_findlock_uuid} is not a valid uuid!") db_resp = DbFindlock().get_findlock( m_FindlockEntries.device_uuid, _findlock_uuid ) if not db_resp.success: return m_LogicReturn.f_error_msg(db_resp.content) findlock = db_resp.addon_data findlock: m_Findlock allowed_names = list() for u in findlock.FindlockPermission.allowed_uuids: db_resp = DbUser().get_user( m_UserEntries.user_uuid, u ) if not db_resp.success: return m_LogicReturn.f_error_msg(db_resp.content) tmp_user = db_resp.addon_data tmp_user: m_User allowed_names.append(f"{tmp_user.first_name} {tmp_user.surname}") return m_LogicReturn.f_success("Ok!", allowed_names)
def get_all_users(self) -> m_LogicReturn: res = self.find_all() users = list() for fl in res: users.append(m_User.fromDict(fl)) return m_LogicReturn.f_success(f"Got {len(users)} users", users)
def get_all_findlocks(self) -> m_LogicReturn: res = self.find_all() findlocks = list() for fl in res: findlocks.append(m_Findlock.fromDict(fl)) return m_LogicReturn.f_success(f"Found {len(findlocks)} findlocks.", findlocks)
def get_list_of_users() -> m_LogicReturn: db_resp = db_User().get_all_users() if not db_resp.success: return m_LogicReturn.f_error_msg(db_resp.content) _Users = db_resp.addon_data _Users: [m_User] return m_LogicReturn.f_success(f"List of {len(_Users)} users", _Users)
def get_list_of_findlocks() -> m_LogicReturn: db_resp = db_Findlock().get_all_findlocks() if not db_resp.success: return m_LogicReturn.f_error_msg(db_resp.content) _Findlocks = db_resp.addon_data _Findlocks: [m_Findlock] return m_LogicReturn.f_success(f"List of {len(_Findlocks)} findlocks", _Findlocks)
def get_user_info(user_uuid) -> m_LogicReturn: if not v.verify_uuid(user_uuid).success: return m_LogicReturn.f_error_msg( f"{user_uuid} is not a valid uuid") db_resp = db_User().get_user(m_UserEntries.user_uuid, user_uuid) if not db_resp.success: return m_LogicReturn.f_error_msg(db_resp.content) _user = db_resp.addon_data _user: m_User return m_LogicReturn.f_success("User found!", _user)
def verify_token_id(google_token_id, client_id): idinfo = id_token.verify_oauth2_token(google_token_id, requests.Request()) if idinfo['aud'] != config.get_gcid(): return m_LogicReturn.f_error_msg("Could not verify audience.") if idinfo['iss'] not in [ 'accounts.google.com', 'https://accounts.google.com' ]: return m_LogicReturn.f_error_msg("Wrong issuer!") # returns user id return m_LogicReturn.f_success("Verified!", addon_data=idinfo['sub'])
def get_raw_logs() -> m_LogicReturn: filename = config.get_log_file_name() try: f = open(filename, 'r') lines = f.readlines() lines.reverse() out = "" for i in lines: out += f"{i}" f.close() return m_LogicReturn.f_success("Returned log file", out) except IOError: return m_LogicReturn.f_error_msg("Failed when reading file.")
def get_findlock_info(findlock_uuid) -> m_LogicReturn: if not v.verify_uuid(findlock_uuid).success: return m_LogicReturn.f_error_msg( f"{findlock_uuid} is not a valid uuid") db_resp = db_Findlock().get_findlock(m_FindlockEntries.device_uuid, findlock_uuid) if not db_resp.success: return m_LogicReturn.f_error_msg(db_resp.content) _findlock = db_resp.addon_data _findlock: m_Findlock return m_LogicReturn.f_success("Findlock found!", _findlock)
def get_info_about_findlock(device_uuid) -> m_LogicReturn: if not v.verify_uuid(device_uuid).success: return m_LogicReturn.f_error_msg(f"{device_uuid} is not a valid uuid!") db_resp = DbFindlock().get_findlock( m_FindlockEntries.device_uuid, device_uuid ) if not db_resp.success: return m_LogicReturn.f_error_msg(db_resp.addon_data) Findlock = db_resp.addon_data Findlock: m_Findlock return m_LogicReturn.f_success("Found info!", Findlock)
def get_findlock_event(device_uuid) -> m_LogicReturn: #using if not v.verify_uuid(device_uuid).success: return m_LogicReturn.f_error_msg( f"{device_uuid} is not a valid uuid") db_resp = db_Findlock().get_findlock(m_FindlockEntries.device_uuid, device_uuid) if not db_resp.success: return m_LogicReturn.f_error_msg(db_resp.content) Findlock = db_resp.addon_data Findlock: m_Findlock # TODO: check if client waits for data in data and not in content return m_LogicReturn.f_success("Found event.", Findlock.Event.toDict())
def get_findlock_location(device_uuid) -> m_LogicReturn: if not v.verify_uuid(device_uuid).success: return m_LogicReturn.f_error_msg("Invalid UUID") db_resp = db_Findlock().get_findlock(m_FindlockEntries.device_uuid, device_uuid) if not db_resp.success: return m_LogicReturn.f_error_msg(db_resp.content) findlock = db_resp.addon_data findlock: m_Findlock n_locations = findlock.GpsLocationHistory.get_location_count() - 1 if n_locations < 0: return m_LogicReturn.f_error_msg("No locations") return m_LogicReturn.f_success( "Returned.", findlock.GpsLocationHistory.get_location(n_locations).toDict())
def user_data_missing(_user_dict: dict) -> m_LogicReturn: #using if type(_user_dict) != dict: return m_LogicReturn.f_error_msg("User is not in a dict format") editable_user_entries = AdminLogic.get_list_of_user_entries( only_editable=True) missing_entries = list() for i in editable_user_entries: if _user_dict[i] is None: missing_entries.append(i) if len(missing_entries) > 0: return m_LogicReturn.f_success( "Your account misses some data!", missing_entries ) return m_LogicReturn.f_error_msg("All data is filled, no action needed!")
def get_user_findlocks(_user_uuid: str,master_only=True) -> m_LogicReturn: #using if not v.verify_uuid(_user_uuid).success: return m_LogicReturn.f_error_msg(f"{_user_uuid} is not a valid uuid") # todo: make query with find (and not find_one) db_resp = DbFindlock().get_all_findlocks() if not db_resp.success: return m_LogicReturn.f_error_msg( db_resp.content) Findlocks = db_resp.addon_data Findlocks: [m_Findlock] findlocks_list = list() for i in Findlocks: i: m_Findlock if i.FindlockPermission.master_uuid == _user_uuid: findlocks_list.append(i) if not master_only: for i in Findlocks: i: m_Findlock if _user_uuid in i.FindlockPermission.allowed_uuids: findlocks_list.append(i) return m_LogicReturn.f_success("Found findlocks", findlocks_list)
def get_all_findlock_entries() -> m_LogicReturn: return m_LogicReturn.f_success("Returned list of entries", Tools.get_types(m_FindlockEntries()))
def get_all_user_entries() -> m_LogicReturn: return m_LogicReturn.f_success("Returned list of entries", Tools.get_types(m_UserEntries()))
def create_findlock(self, Findlock: m_Findlock) -> m_LogicReturn: return m_LogicReturn.f_error_msg( "This findlock already exists!") if self.__does_findlock_exist( Findlock) else m_LogicReturn.f_success( "Findlock created!", self.insert_one(Findlock.toDict()))
def delete_user(self, User: m_User) -> m_LogicReturn: return m_LogicReturn.f_success( "Deleted user", self.delete_one({m_UserEntries.user_uuid: User.user_uuid}))
def create_user(self, User: m_User) -> m_LogicReturn: return m_LogicReturn.f_error_msg( "User already exists!") if self.__does_user_exist( User) else m_LogicReturn.f_success( True, self.insert_one(User.toDict()))
def get_user(self, search_type: m_UserEntries, query) -> m_LogicReturn: res = self.find_one({search_type: query}) return m_LogicReturn.f_error_msg( "User not found!") if res is None else m_LogicReturn.f_success( "Found user!", m_User.fromDict(res))
def delete_findlock(self, Findlock: m_Findlock) -> m_LogicReturn: return m_LogicReturn.f_success( "Findlock deleted!", self.delete_one( {m_FindlockEntries.device_uuid: Findlock.device_uuid}))
def get() -> m_LogicReturn: user_session = m_Session.fromSession(session) return m_LogicReturn.f_success("Got data!", user_session)