Exemplo n.º 1
0
    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))
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
 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)
Exemplo n.º 5
0
    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)
Exemplo n.º 6
0
    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)
Exemplo n.º 7
0
    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)
Exemplo n.º 8
0
    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'])
Exemplo n.º 9
0
 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.")
Exemplo n.º 10
0
    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)
Exemplo n.º 11
0
    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)
Exemplo n.º 12
0
    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())
Exemplo n.º 13
0
    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())
Exemplo n.º 14
0
    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!")
Exemplo n.º 15
0
    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)
Exemplo n.º 16
0
 def get_all_findlock_entries() -> m_LogicReturn:
     return m_LogicReturn.f_success("Returned list of entries",
                                    Tools.get_types(m_FindlockEntries()))
Exemplo n.º 17
0
 def get_all_user_entries() -> m_LogicReturn:
     return m_LogicReturn.f_success("Returned list of entries",
                                    Tools.get_types(m_UserEntries()))
Exemplo n.º 18
0
 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()))
Exemplo n.º 19
0
 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}))
Exemplo n.º 20
0
 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()))
Exemplo n.º 21
0
    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))
Exemplo n.º 22
0
 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}))
Exemplo n.º 23
0
 def get() -> m_LogicReturn:
     user_session = m_Session.fromSession(session)
     return m_LogicReturn.f_success("Got data!", user_session)