diff options
Diffstat (limited to 'mensa/base.py')
-rw-r--r-- | mensa/base.py | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/mensa/base.py b/mensa/base.py new file mode 100644 index 0000000..fa7346a --- /dev/null +++ b/mensa/base.py @@ -0,0 +1,59 @@ +# This file contains functions and classes necessary for the operation of backends. + +class Food : + def __init__(self,name, price="", category="Essen", veggie=False, desc=None, ingredients={}) : + self.name = name + self.price = price + self.category = category + self.veggie = veggie + self.desc=desc + self.ingredients=ingredients + +class NoMenuError(Exception) : + """ gets raised if there's no menu""" + +class Renderer(object) : + def __init__(self, name, human_name, module, description="", optional_args=[]) : + self.name = name + self.human_name = human_name + self.description = description + self.optional_args = [] + self.module = module + def render(self, foods, **options) : + self.module.render(foods, **options) + +def formt (food) : + cat = [] + vegkeys = [ "", "Vegetarian", "Vegan" ] + r = "" + food.sort(key=lambda foo: foo.category) + for i in food: + if not i.category in cat : + cat.append(i.category) + if not i.category == None : + r=r+ i.category+"\n" + r=r+"\t" + i.name.ljust(80) + "\t"+ i.price.ljust(20) + vegkeys[i.veggie]+"\n" + if i.desc : + r = r+"\t "+i.desc+"\n" + return r + +foodsources = {} +renderers = {} + +class Restaurant(object): + def __init__(self, name, human_name, module, optional_args=[], obligatory_args=()): + self.name = name + self.human_name = human_name + self.module = module + self.optional_args = optional_args + self.obligatory_args = obligatory_args + + def get_food(self,**opt_args) : + return self.module.get_food_items(*self.obligatory_args, **opt_args) + +def register_restaurant(restaurant): + global foodsources + foodsources[restaurant.name] = restaurant +def register_renderer(renderer) : + global renderers + renderers[renderer.name] = renderer |