diff options
Diffstat (limited to 'mensa/backends')
-rw-r--r-- | mensa/backends/base.py | 43 | ||||
-rw-r--r-- | mensa/backends/mathemensa.py | 6 | ||||
-rw-r--r-- | mensa/backends/satyam.py | 7 | ||||
-rw-r--r-- | mensa/backends/singh.py | 10 | ||||
-rw-r--r-- | mensa/backends/studentenwerk.py | 20 |
5 files changed, 25 insertions, 61 deletions
diff --git a/mensa/backends/base.py b/mensa/backends/base.py deleted file mode 100644 index 6c57336..0000000 --- a/mensa/backends/base.py +++ /dev/null @@ -1,43 +0,0 @@ -# Common classes and methods. - -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 - -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 = {} - -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(**opt_args) : - self.module.get_food_items(*obligatory_args, **optional_args) - - -def register_restaurant(restaurant): - global foodsources - foodsources[restaurant.name] = (restaurant) diff --git a/mensa/backends/mathemensa.py b/mensa/backends/mathemensa.py index 559956d..6fa93ce 100644 --- a/mensa/backends/mathemensa.py +++ b/mensa/backends/mathemensa.py @@ -10,7 +10,7 @@ import html5lib import datetime from mensa.base import * from yapsy.IPlugin import IPlugin - +from collections import OrderedDict class Mathemensa(IPlugin) : def register_restaurants(self) : r = Restaurant("Mathekantine", "Mathekantine", self, "dummy", pos=(52.51388,13.3235066)) @@ -46,4 +46,6 @@ class Mathemensa(IPlugin) : if "(v)" in name or "Gemüseplatte" in name : veg = 1 fl.append(Food(name, price, "Menü", veg)) - return fl + d = OrderedDict() + d["Menü"] = fl + return d diff --git a/mensa/backends/satyam.py b/mensa/backends/satyam.py index bf18dc5..6d28209 100644 --- a/mensa/backends/satyam.py +++ b/mensa/backends/satyam.py @@ -6,6 +6,7 @@ from mensa.base import * import re import sys from yapsy.IPlugin import IPlugin +from collections import OrderedDict class Satyam(IPlugin): def register_restaurants(self) : @@ -30,9 +31,9 @@ class Satyam(IPlugin): name = name.replace("\\n", "") name = " ".join(name.split()) name = name.replace(price, "") - - return [Food("Mittagstisch Express", price, "Mittagstisch", 2, name[3:-1])] - + k = OrderedDict() + k["Mittagstisch"] = [Food("Mittagstisch Express", price, "Mittagstisch", 2, name[3:-1])] + return k # if __name__ == "__main__": # food = get_food_items() diff --git a/mensa/backends/singh.py b/mensa/backends/singh.py index 393b5da..3e76190 100644 --- a/mensa/backends/singh.py +++ b/mensa/backends/singh.py @@ -7,6 +7,7 @@ import sys import datetime from mensa.base import * from yapsy.IPlugin import IPlugin +from collections import OrderedDict class Signh(IPlugin) : def register_restaurants(self) : @@ -27,7 +28,7 @@ class Signh(IPlugin) : the_page = response.read() document = html5lib.parse(the_page, treebuilder="lxml") groupsel = CSSSelector('.menu-list__items') - myorder=[0,3,1,4,2] + myorder=[0,3,1,4,2] # Weird order for weekdays, due to page layout. mylist = [ groupsel(document)[i] for i in myorder] i = mylist[weekday] fl = [] @@ -48,9 +49,8 @@ class Signh(IPlugin) : veg = 2 fl.append(Food(name, price, "Essen", veg, desc)) sys.stderr = s - return fl + k = OrderedDict() + k["Essen"] = fl + return k -if __name__ == "__main__": - food = get_food_items() - print(formt(food)) diff --git a/mensa/backends/studentenwerk.py b/mensa/backends/studentenwerk.py index 89c45eb..b1f00fd 100644 --- a/mensa/backends/studentenwerk.py +++ b/mensa/backends/studentenwerk.py @@ -9,7 +9,7 @@ from mensa.base import * from yapsy.IPlugin import IPlugin import multiprocessing import datetime - +from collections import OrderedDict from yapsy import NormalizePluginNameForModuleName as normalize mensenliste = {"TU Hardenbergstraße" : ["mensa-tu-hardenbergstra%C3%9Fe", (52.5097684, 13.3259478)], @@ -43,18 +43,20 @@ class Studentenwerk(IPlugin) : for h,n in mensenliste.items() : r = Restaurant(normalize(h), h, self, "dummy", [n[0]], pos=n[1]) register_restaurant(r) - def get_food_items(self, mensa="mensa-tu-hardenbergstra%C3%9Fe", ignore_nudelauswahl=False) : + def get_food_items(self, mensa="mensa-tu-hardenbergstra%C3%9Fe", ignore_nudelauswahl=False, **options) : document = self.fetch_page(mensa) groupsel = CSSSelector('.splGroupWrapper') groups = [e for e in groupsel(document)] - fl = [] - for i in groups : + fl = OrderedDict() + for group in groups : try: - name = CSSSelector('.splGroup')(i)[0].text + category = CSSSelector('.splGroup')(group)[0].text except: - raise NoMenuError from None + raise NoMenuError from None + if not category in fl : + fl[category] = [] sel = CSSSelector('.splMeal') - meals = [e for e in sel(i)] + meals = [e for e in sel(group)] for m in meals : namesel = CSSSelector('.bold') nm = namesel(m)[0].text @@ -68,7 +70,9 @@ class Studentenwerk(IPlugin) : elif "1.png" in pricesel(m)[0][1].attrib["src"] : veg = 1 price = pricesel(m)[-1].text.strip() - fl.append(Food(nm, price, name, veg)) + if "only_student_prices" in options and options["only_student_prices"] : + price = only_student_prices(price) + fl[category].append(Food(nm, price, category, veg)) return fl def get_opening_hours(self, mensa) : #### Rudiment of a function for getting opening hours. Does NOT work yet due to unknown issues. |