sams_classes
Dieses Python3 Modul stellt die Grundlage für die Implementierung von Applicationservern in der Selve-/ Administravie-Microservice-Structure dar. Das Künftige MIPortal, ZID und andere Anwendungen sollen diese Klassen verwenden verwenden können.
Klassen
Derzeit enthält die Bibliothek drei Klassen
- SAMSHub
- SAMApp
- SAMSProxy
SAMSHub
SAMSHub stellt eine gewöhnliche flask App bereit, die alle grundsätzlich für die Konkreten Server immer benötigten Eigenschaften mitbringt. die Flask App besitzt bereits einen context_processor um Sprach-Dictionaries der Apps und Menüeinträge den jeweiligen Termplates verfügbar zu machen. Der SAMSHub folgt dem Designprinzip 'Komposition über Vererbung'. Dadurch lassen sich das gesamte Wissen über Flask und alle möglichkeiten von Flask auch auf die vom SAMSHub bereitgestellte flaskApp anwenden. Der SAMSHub erledigt lediglich einige Aufgaben die so bei allen Zukünftigen Anwendungen anfallen werden.
Methoden
Konstruktor
hub = SAMSHub(name=__name__, config = {'default_language': 'de'})
Pflichtparameter sind name und config. Das Konfigurationsdictionary muss eine angabe tur 'default_language' beinhalten.
addApp
hub.addApp(app=samsApp)
Die Methode fügt dem hub eine SAMSApp hinzu. Es muss sich bei app um eine Instanz von SAMSApp handeln. Der Name der app (app.name) wird als name für die Ansprache mit hub.app(name) verwendet.
app
samsApp = hub.app(name)
Die Methode gibt die SAMSApp mit dem betreffenden Namen zurück.
menu
menu = hub.menu(langCode = 'de')
Gibt eine Liste mit allen Menüeinträgen aller hinzugefügter Apps in der geforderten Sprache zurück. Falls die sprache bei einigen Einträgen nicht verfügbar ist wird die default Sprache der App verwendet. Die Reihenfolge der Einträge wird durch die reihenfolge, in der die Apps hinzugefügt wurden, bestimmt.
Eigenschaften
appKeys
for key in hub.appKeys:
print(key + '\n')
Die Methode gibt eine Liste der keys aller dem hub hinzugefügten apps aus.
Über einen Key lässt sich mit hub.app(key)
die jeweilige app Instanz
zurückgeben.
flaskApp
hub.flaskApp.run()
Mit flaskApp lässt sich die vom hub erzeugte flask App zurückgeben und z.B. dann über run starten. Für die flask App kann die flask Dokumentation zu Rate gezogen werden.
SAMSApp
Methoden
Konstruktor
Minimalistischste App:
app = SAMSApp(name = 'appname', manifest = {'default_language': 'en'}
, langDict = {'en':{}})
Eine SAMSApp benötigt name (name des python packages oder moduls der app), langDict und manifest. Das Dictionary vom manifest muss eine default_language definieren, die im langDict enthalten ist. Eine derart definierte App beinhaltet keine views und keinen Proxy, macht also relativ wenig Sinn. In der Regel wird eine SAMSApp eher so aussehen:
app = SAMSApp(
manifest = {
'default_language': 'en',
'views': [{'url': 'test/do_nothing', 'function': 'views.do_nothing'}],
'menu':[
{'url': '',
'name_string': menu_main},
{'url': 'topic', 'name_string': 'menu_topic',
'menu':[
{'url': 'topic/subtopic01',
'name_string': 'menu_topic_subtopic01'},
{'url': 'topic/subtopic02',
'name_string': 'menu_topic_subtopic02'}
]
}
]
}, name = 'test.app',
langDict={'en': {'menu_main': 'Home', 'menu_topic': 'Topic',
'menu_topic_subtopic01': 'Subtopic 01',
'menu_topic_subtopic02': 'Subtopic 02'},
'de':{'menu_main': 'Startseite'}
}
)
lang
langDict = app.lang(langCode = 'de')
Gibt ein Dictionary für die angeforderte Sprache zurück. Sind Einträge im default dictionary und nicht in der Angeforderten Sprache vorhanden, werden diese verwendet.
menu
# mandatory
menuEntries = SAMSApp.menu(langCode = 'de')
# optional
menuEntries = SAMSApp.menu(langCode = 'de', urlPrefix = '/app/')
Gibt eine Liste von Menüeinträgen zurück. Jeder Eintrag ist ein Dictionary. Dieses Dictionary enthält immer 'url' und 'name' und kann außerdem wieder über 'menu' ein Menü enthalten. Der Anzeigename ('name') ist entweder der zu langCode passende oder der, der defaultSprache.
Eigenschaften
module
Das zur App gehörende python Modul. Führt zu einer Exception falls das Modul nicht geladen werden kann,
name
Der Name der app.
blueprint
Das flask Blueprint der app.
manifest
Das manifest Dictionary. Hier wird folgendes festgelegt:
- Standardsprache über
default_language
- Menüeinträge über
menu
- URL View regeln über
views
- proxies
Die Menüeinträge bestehen jeweils aus einem Eintrag 'url' und dem 'name_string' Die zeichenkette in 'name_string' wird über einen Eintrag im langDict aufgelöst.
Eine View besteht aus 'url' und dem Namen der function in 'function'.
Die ist eine Liste von Proxy definitionen. Die Proxydefinition wird als proxySpec für SAMSProxy verwendet.
proxies
Eine Liste an SAMSProxy Objekten erzeugt aus den Spezifikationen im Manifest.
SAMProxy
TODO