Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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