Customizing
Version 27 Version 26 39.5.25 39.5.23 39.5.22 39.5.21 39.5.20 39.5.19 39.5.18 39.5.17 German English
Version 27 Version 26 39.5.25 39.5.23 39.5.22 39.5.21 39.5.20 39.5.19 39.5.18 39.5.17 German English

Python API

Information

  • Nachfolgend finden Sie die Beschreibung der PLANTA-Python-API.

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:

Python-IDs

Individuelle Python Dateien

  • Individuelle Dateien sollten am Besten in einem eigenen Verzeichnis unter /py/<kunde> liegen 

Logging

Sie können Logging-Aufrufe verwenden, um Ihren Python-Code zu debuggen.

  • Das Logging wird sowohl in den Wwrapper als auch in das session log geschrieben

  • Um mit eigenen Python-Paketen zu arbeiten, müssen diese in ihrem /py/api/-Ordner liegen

Python
import logging

logger = logging.getLogger(__name__)


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

Customizing API

Namespace

Topic

ppms.assignment_module

General assignment API

ppms.create_project

Projekte erstellen

ppms.create_report

Berichte erstellen

ppms.cu_access

Customizer-Zugang

ppms.debugging

Debugging-Python-Code

ppms.dimmer

Dimmer Client-seitig

ppms.file_utils

Hilfsprogramme zum Arbeiten mit Dateien 

ppms.global_setting

Globale Einstellungen lesen 

ppms.period

Perioden-Datensätze erstellen

ppms.project_rights

Projektrechte

ppms.psp_elements

PSP-Elemente

ppms.rights

Allgemeine Rechte-API

ppms.sql

Hilfsprogramme zum Arbeiten mit der Datenbank

ppms.user_interface

Das ppms.user_interface-Paket stellt unterschiedliche Hilfsfunktionen bereit, die einen Einfluss auf die Art und Weise haben, in der der Nutzer mit dem Client interagiert.

ppms.interface

Das ppms.interface-Paket enthält das PLANTA link API.

Server API

Namespace

Inhalt

ppms.text_constant

Verwendung von Textkonstanten

planta_logging.logging

PLANTA-Server-Logging

ppms.migration

Das ppms.migration-Paket implementiert das Migrationsframework und stellt die Basisklasse zum Schreiben von Migrationspaketen zur Verfügung.

Related topics

Den API-Style-Guide finden Sie im PythonApiStyleGuide Topic.