aboutsummaryrefslogtreecommitdiff
path: root/mensa/logic.py
diff options
context:
space:
mode:
authorGabriel Pérez-Cerezo <gabriel@gpcf.eu>2017-10-10 11:45:50 +0200
committerGabriel Pérez-Cerezo <gabriel@gpcf.eu>2017-10-10 11:45:50 +0200
commitc9c7d389c45815e1b7abd7bea7dc5093a3630ea2 (patch)
tree1cfd621b5de112792aa2f13ea5c4997b33d0d03e /mensa/logic.py
parentaa70fb739bbcb4f7a5275fc6a8dac4b3b84579e6 (diff)
downloadmensa-c9c7d389c45815e1b7abd7bea7dc5093a3630ea2.tar.gz
mensa-c9c7d389c45815e1b7abd7bea7dc5093a3630ea2.tar.bz2
mensa-c9c7d389c45815e1b7abd7bea7dc5093a3630ea2.zip
Moved stuff to a module folder, preparing for setuptools
Diffstat (limited to 'mensa/logic.py')
-rwxr-xr-xmensa/logic.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/mensa/logic.py b/mensa/logic.py
new file mode 100755
index 0000000..b0165f0
--- /dev/null
+++ b/mensa/logic.py
@@ -0,0 +1,45 @@
+#!/usr/bin/python3
+
+from mensa import base
+import urllib.error
+import os
+from yapsy.PluginManager import PluginManager
+
+
+def init_foodsources():
+ backends = PluginManager()
+ backends.setPluginPlaces([os.path.join(os.path.dirname(os.path.realpath(__file__)),"backends")])
+ backends.collectPlugins()
+ for pluginInfo in backends.getAllPlugins():
+ backends.activatePluginByName(pluginInfo.name)
+ pluginInfo.plugin_object.register_restaurants()
+
+def init_renderers():
+ frontends = PluginManager()
+ frontends.setPluginPlaces([os.path.join(os.path.dirname(os.path.realpath(__file__)),"frontends")])
+ frontends.collectPlugins()
+ for pluginInfo in frontends.getAllPlugins():
+ frontends.activatePluginByName(pluginInfo.name)
+ pluginInfo.plugin_object.register_renderer()
+
+
+def get_food(restlist=False, options={}) :
+ foodl = []
+ for k,i in base.foodsources.items() :
+ if restlist and not i.name in restlist :
+ continue
+ try :
+ food = i.get_food(ignore_nudelauswahl=True)
+ foodl.append((i, food))
+ # print("*"*20+i.human_name+"*"*20+"\n"+base.formt(food))
+ except base.NoMenuError:
+ print(i.human_name + ": No menu found. This could be due to a holiday or due to an error in the script.")
+ except urllib.error.HTTPError as e :
+ print(i.human_name + ": Fetching menu failed: %s" % str(e))
+ return foodl
+
+def render(to_render, rendlist=False, options={}) :
+ for k,i in base.renderers.items() :
+ if rendlist and not i.name in rendlist :
+ continue
+ i.render(to_render)