def __detect_company_id(): """ Get Requested Company Id """ # ====================================================================# # Detect Company Id from Request Query try: if "cid" in http.request.params.keys() and int( http.request.params['cid']) > 0: return int(http.request.params['cid']) if "cname" in http.request.params.keys() and len( str(http.request.params['cname'])) > 0: company = http.request.env['res.company'].sudo().name_search( str(http.request.params['cname']), limit=1) return int(company[0][0]) except Exception: pass # ====================================================================# # Detect Company Id from Logged User try: if not Framework.isServerMode( ) and http.request.env.user.company_id.id: return http.request.env.user.company_id.id except Exception: pass # ====================================================================# # Use Default Company Id return http.request.env['res.company']._get_main_company().id
def is_commit_allowed(object_type, object_ids=None, action=None): """ Check if Commit is Allowed Local Object :param object_type: str Object Type Name :param object_ids: str|int|list Object Local Id or Array of Local Id :param action: str Action Type (SPL_A_UPDATE, or SPL_A_CREATE, or SPL_A_DELETE) :rtype: bool """ # ==================================================================== # Verify if Server Mode (Soap Request) ==> No Commit Allowed if Framework.isServerMode(): return False # ==================================================================== # Verify this Object is Locked ==> No Action on this Node if isinstance(object_ids, list): for object_id in object_ids: if Framework.getObject(object_type).islocked(object_id): return False elif Framework.getObject(object_type).islocked(object_ids): return False # ==================================================================== # Verify Create Object is Locked ==> No Action on this Node if (const.__SPL_A_CREATE__ is action) and Framework.getObject(object_type).islocked(): return False # ====================================================================// # Verify if Travis Mode (PhpUnit) ==> No Commit Allowed return not SplashClient.is_travis_mode(object_type, action)
def commit(self, object_type, object_ids = None, action = None, user = None, comment = None): """ Submit an Update for a Local Object :param object_type: str Object Type Name :param object_ids: str|int|list Object Local Id or Array of Local Id :param action: str Action Type (SPL_A_UPDATE, or SPL_A_CREATE, or SPL_A_DELETE) :param user: str :param comment: str :rtype: bool """ # ==================================================================== # Verify this Object Class is Valid ==> No Action on this Node if not Framework.getObject(object_type): Framework.log().warn("Object "+object_type+" Not Found => Commit Skipped") Framework.log().to_logging().clear() return True # ==================================================================== # Initiate Tasks parameters array params = SplashClient.__get_commit_parameters(object_type, object_ids, action, user, comment) # ==================================================================== # Add This Commit to Session Logs SplashClient.__commited.append(params) # ==================================================================== # Verify if Server Mode (Soap Request) ==> No Commit Allowed if Framework.isServerMode(): Framework.log().warn("Server Mode => Commit Skipped") Framework.log().to_logging().clear() return False # ==================================================================== # Verify this Object is Locked ==> No Action on this Node if not SplashClient.is_commit_allowed(object_type, object_ids, action): Framework.log().msg('Module Commit Skipped (' + object_type + ', ' + action + ')') Framework.log().to_logging().clear() return True # ====================================================================// # Create Soap Client soap_client = self.__get_client() ws_id, ws_key, ws_host = self.config().identifiers() # ====================================================================# # Initiate File Request Contents request = { "tasks": { "task": { "id": 1, "name": const.__SPL_F_COMMIT__, "desc": "Commit changes from Python Module", "params": params, } } } # ====================================================================// # Execute Commit Request try: soap_response = soap_client.Objects(id=ws_id, data=pack(request)) # Catch Potential Errors except SoapFault as fault: Framework.log().on_fault(fault) Framework.log().to_logging().clear() return False except Exception as exception: Framework.log().fromException(exception) Framework.log().to_logging().clear() return False # Decode Response commit_response = unpack(soap_response.children().children().children().__str__()) # Push Logs to Console Framework.log().to_logging().clear() # Verify Response if commit_response is False: return False return commit_response