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 Funktonsbibliothek liegt standardmäßig im Server-Verzeichnis unter /dlls/ und heißt je nach Betriebssystem _ppms.so oder _ppms.dll.
  • Im Verzeichnis ppms befindet 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.py importiert, die den Pfad weiter anpasst
  • Die Standard-Reihenfolge, die von PLANTA konfiguriert wird, lautet wie folgt:
    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

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!')
    
    # ...
PY

Customizing API

NamespaceTopic
ppms.assignment_moduleGeneral assignment API
ppms.create_projectCreating projects
ppms.create_reportCreating reports
ppms.cu_accessCustomizer access
ppms.customizer.mailAPI for sending emails
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