Information

  • Below you will find the description of the PLANTA Python API.

Technical Details

Information

  • CPython interpreter is running within the PLANTA Server (versions cannot be selected in / during iInstallation / update in the PLANTA Installer).
  • Since all sessions of a server share a common interpreter, all global objects are likewise shared by all sessions.
    • If you, e.g., add a new attribute to a Python module, this attribute can also be retrieved in other sessions. If a status is only to be saved in the active session, ppms.get_session_dict() should be used.

ppms Module

Information

  • The part of the PLANTA Server which is written in C provides particular functions in a function library.
    • This function library is located in the Server directory under /dlls/ by default and is named _ppms.so or _ppms.dll, depending on the respective operating system.
  • Tthe ppms directory contains:
    • the ppms_.py. file: this file is automatically generated by SWIG and renders the C function callable.
    • the ppms.py file which combines both modules and contains the actual interface to PLANTA. Here, additional functions which are exclusively written in Python are added to the PLANTA objects.

Injections

Information

  • Python code can be stored at several positions in the system and is then executed by the program.
  • During execution, a Python module object is generated from the source text. In the course of this, additional attributes may be inserted automatically.
  • At each position in the system, the ppms module is automatically made available. For Code in the Value range field, the inspect module is imported in addition.

Python Path

Information

  • The PYTHONPATH environment variable is set for the server by the respective start scripts by default.
  • After the server has started the Python interpreter, the startup.py which further adjusts the path is imported.
  • The standard order, as it is configured by PLANTA, reads as follows:
    1. py/distribution
    2. dlls
    3. dlls/python34.zip
    4. lib
    5. py
    6. py/pysrc
    7. py/distribution/site-packages
    8. py/api/ppms/wrapper/system
    9. py/api/ppms/wrapper
    10. py/api/ppms/customizing/venus
    11. py/api/ppms/server

Python IDs

Individual Python Files

  • Individual files should best be located in a separate directory under /py/<customer> 

Logging

You can use logging calls to debug your Python code.

  • The logging is written to both the wrapper and session log file
  • To work with custom python packages they must reside in your /py/api/ folder
import logging

logger = logging.getLogger(__name__)


def my_func(arg):
    logger.info('Custom func was called!')
    
    # ...
PY

Customizing API

NamespaceTopic
ppms.assignment_moduleGeneral assignment API
ppms.create_projectCreating projects
ppms.create_reportCreating reports
ppms.cu_accessCustomizer access
ppms.debuggingDebugging Python code
ppms.dimmerClient-side dimmer
ppms.file_utilsUtilities for working with files
ppms.global_settingReading global settings
ppms.periodCreating period records
ppms.project_rightsProject rights
ppms.psp_elementsPSP elements
ppms.rightsGeneral rights API
ppms.sqlUtilities for working with the database

ppms.user_interface

The ppms.user_interface package provides various helper functions that affect how the user interacts with the client.

ppms.interface

The ppms.interface package contains the PLANTA link API.

Server API

NamespaceContent
ppms.text_constantUsing text constants
planta_logging.loggingPLANTA Server Logging

ppms.migration

The ppms.migration package implements the migration framework and provides the base classes for writing new migration packets.

Related Topics

The API style guide can be found (in German) in the topic PythonApiStyleGuide