Tommy Heyding · Jul 10, 2024 go to post

Hi Guillaume,

thankyouforthepost andthestraightforwardrecommendations.I have been using embedded Python for a while and have found that the hybrid between ObjectScript and python code is not always easy to maintain and refactor.

That's why I have now consistently outsourced the python code to .py files and imported my modules via

##class(%SYS.Python).Import("mymodule")

after reading your post. So far I'm very happy with how things are going, except I've had problems when applying the pythonic naming conventions for method names.

defvalidate_header():

caused errors when I tried to call it this way:

$$$ThrowOnError(mymodule.validate_header())

I had to rename the method to

defvalidateHeader():

which isn't particularly bad, but IthoughtI'dmentionithereincaseanyoneisstuckinasimilarsituation
 

Tommy Heyding · Jun 5, 2024 go to post

And here is the code if you are using a Installer manifest 😉 Helps us while working with containers.

  <NamespaceName="${NamespaceSub}"Code="${NamespaceSub}_CODE"Data="${NamespaceSub}_DATA"Create="yes"Ensemble="1">

...

    <InvokeClass="HBT.Util.WebApp"Method="DisableNewRuleEditor"CheckStatus="1"></Invoke>
  </Namespace>
Class HBT.Util.WebApp
{

ClassMethod DisableNewRuleEditor() As%Status
{
        #Dim tSC As%Status#Dim tSE As%Exception.StatusExceptionTry {
            Zn"%SYS"
            &SQL(UPDATE Security.Applications SET Enabled = 0WHEREID = '/ui/interop/rule-editor') 
            Set tSC = $$$OK
        } Catch tSE {
            Set tSC = tSE.AsStatus()
            Quit
        }
        Quit tSC
}

}
Tommy Heyding · Jul 5, 2022 go to post

Hi Eduard,

thanks a lot for the explanation. I just started to learn how the SDK for Python works and maybe you can help me with the following question.

I'm trying to access my Production Object via the Class Method "ProductionItems" to store a list of the items: https://docs.intersystems.com/irislatest/csp/documatic/%25CSP.Documatic…

According to the docs the method requires two Output arguments that I would pass by reference using ObjectScript. How can I do this within python?

Thanks,

Tommy