Python API
Information
This topic describes the public Python API of PLANTA
These functions are guaranteed to be supported in future versions
Technische Details
Informationen
Innerhalb des PLANTA-Servers läuft ein CPython-Interpreter (Versionen sind in bei der Installation / dem Update im PLANTA-Installer auswählbar).
Da sich alle Sessions eines Servers den gleichen Interpreter teilen, werden auch alle globalen Objekte zwischen allen Sessions geteilt.
Fügt man also beispielsweise einem Python-Modul ein neues Attribut hinzu, ist dieses Attribut auch in anderen Session abfragbar. Soll ein Zustand nur in der aktiven Session gespeichert werden, sollte hierfür ppms.get_session_dict() verwendet werden.
ppms-Modul
Informationen
Der in C geschriebene Teil des PLANTA-Servers stellt bestimmte Funktionen in einer Funktionsbibliothek zur Verfügung.
Diese Funktionsbibliothek liegt standardmäßig im Server-Verzeichnis unter
/dlls/und heißt je nach Betriebssystem_ppms.sooder_ppms.dll.
Im Verzeichnis
ppmsbefindet sich:die Datei
ppms_.py. Diese Datei wird mithilfe von SWIG automatisch generiert und macht die C-Funktionen aufrufbar.die Datei
ppms.py, die die beiden Module kombiniert und die eigentliche Schnittstelle zu PLANTA beinhaltet. Die PLANTA-Objekte werden hier noch um Funktionen erweitert, die in purem Python geschrieben sind.
Injections
Informationen
An mehreren Stellen im System kann Python-Code hinterlegt werden, der vom Programm ausgeführt wird.
Bei der Ausführung wird aus dem Quelltext ein Python-Modul-Objekt erzeugt. Dabei werden ggf. weitere Attribute automatisch eingefügt.
An jeder Stelle im System wird das
ppms-Modul automatisch verfügbar gemacht. Bei Code im Feld Wertebereich wird noch zusätzlich das inspect -Modul importiert.
Python-Pfad
Informationen
Die Umgebungsvariable PYTHONPATH wird standardmäßig von den entsprechenden Start-Skripten für den Server gesetzt.
Nachdem der Server den Python-Interpreter gestartet hat, wird die
startup.pyimportiert, die den Pfad weiter anpasstDie Standard-Reihenfolge, die von PLANTA konfiguriert wird, lautet wie folgt:
py/distributiondllsdlls/python34.ziplibpypy/pysrcpy/distribution/site-packagespy/api/ppms/wrapper/systempy/api/ppms/wrapperpy/api/ppms/customizing/venuspy/api/ppms/server
Python-IDs
DI/DF-Python-IDs können in folgenden Dataitems verwendet werden:
Individuelle Python Dateien
Individuelle Dateien sollten am Besten in einem eigenen Verzeichnis unter /py/<kunde> liegen
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!')
# ...
Customizing API
Namespace | Topic |
|---|---|
General assignment API | |
Creating projects | |
Creating reports | |
Customizer access | |
API for sending emails | |
Package for consuming module data and converting that to JSON | |
Debugging Python code | |
Client-side dimmer | |
Utilities for working with files | |
Reading global settings | |
Prompt templating | |
Creating period records | |
Project rights | |
PSP elements | |
General rights API | |
Utilities 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
Namespace | Content |
|---|---|
Using text constants | |
PLANTA 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