builder added, removed old files

This commit is contained in:
Hadrian Burkhardt
2023-11-30 02:32:40 +01:00
committed by f4lco
parent f714fc4c79
commit 58a53e608f
10 changed files with 447 additions and 306 deletions
+55 -33
View File
@@ -1,70 +1,92 @@
import logging
from pyopenmensa.feed import LazyBuilder
from datetime import datetime
from stw_potsdam.builder import Builder
from stw_potsdam.swp_webspeiseplan_api import SWP_Webspeiseplan_API
class SWP_Webspeiseplan_Parser:
def __init__(
self, menu_data: list[dict], meal_categories: list[dict], outlet_data: dict
self,
menu_data: list[dict],
meal_categories: list[dict],
outlet_data: dict,
url: str,
):
logging.basicConfig()
self.logger = logging.getLogger(__name__)
self.menu_data = menu_data
self.meal_categories = meal_categories
self.outlet_data = outlet_data
self.canteen = None
self.url = url
self._builder = Builder()
self.__parse_canteen(outlet_data)
self.__parse_feed()
self.__parse_meals()
def __parse_canteen(self, outlet: dict):
builder = LazyBuilder()
builder.name = outlet["name"]
builder.address = outlet["addressInfo"]["street"]
builder.city = (
f'{outlet["addressInfo"]["postalCode"]} {outlet["addressInfo"]["city"]}'
canteen = self._builder
canteen.name = outlet["name"]
canteen.address = (
outlet["addressInfo"]["street"],
outlet["addressInfo"]["postalCode"],
outlet["addressInfo"]["city"],
)
builder.phone = outlet["contactInfo"][0]["phone"]
builder.email = outlet["contactInfo"][0]["email"]
canteen.city = outlet["addressInfo"]["city"]
canteen.phone = outlet["contactInfo"][0]["phone"]
canteen.email = outlet["contactInfo"][0]["email"]
if outlet["positionInfo"]:
builder.location(
str(outlet["positionInfo"]["longitude"]),
str(outlet["positionInfo"]["latitude"]),
canteen.location = (
outlet["positionInfo"]["longitude"],
outlet["positionInfo"]["latitude"],
)
builder.availability = f"Montag: {outlet['moZeit1']}, {outlet['moZeit2']}\n"
builder.availability += f"Dienstag: {outlet['diZeit1']}, {outlet['diZeit2']}\n"
builder.availability += f"Mittwoch: {outlet['miZeit1']}, {outlet['miZeit2']}\n"
builder.availability += (
f"Donnerstag: {outlet['doZeit1']}, {outlet['doZeit2']}\n"
)
builder.availability += f"Freitag: {outlet['frZeit1']}, {outlet['frZeit2']}\n"
builder.availability += f"Samstag: {outlet['saZeit1']}, {outlet['saZeit2']}\n"
builder.availability += f"Sonntag: {outlet['soZeit1']}, {outlet['soZeit2']}"
builder.availability = (
builder.availability.replace("None, None", "")
.replace("None,", "")
.replace(", None", "")
)
# TODO: availability via locations isPublic
self.canteen = builder
times = {
"monday": f"{outlet['moZeit1']}, {outlet['moZeit2']}",
"tuesday": f"{outlet['diZeit1']}, {outlet['diZeit2']}",
"wednesday": f"{outlet['miZeit1']}, {outlet['miZeit2']}",
"thursday": f"{outlet['doZeit1']}, {outlet['doZeit2']}",
"friday": f"{outlet['frZeit1']}, {outlet['frZeit2']}",
"saturday": f"{outlet['saZeit1']}, {outlet['saZeit2']}",
"sunday": f"{outlet['soZeit1']}, {outlet['soZeit2']}",
}
times = {
k: v.replace("None, None", "").replace("None,", "").replace(", None", "")
for k, v in times.items()
}
canteen.times = times
def __parse_feed(self):
feed = {
"name": "full",
"priority": 0,
"hour": "8-14",
"retry": "30 1",
"url": self.url,
"source": SWP_Webspeiseplan_API.URL_BASE,
}
self._builder.feed = feed
def __parse_meals(self):
for menu in self.menu_data:
for meal in menu["speiseplanGerichtData"]:
info = meal["speiseplanAdvancedGericht"]
date = datetime.fromisoformat(info["datum"]).date()
additional_info = meal["zusatzinformationen"]
self.canteen.addMeal(
self._builder.add_meal(
date=date,
category=self.meal_categories[info["gerichtkategorieID"]]["name"],
name=info["gerichtname"],
prices={
"employee": f'{additional_info["mitarbeiterpreisDecimal2"]:.2f}',
"other": f'{additional_info["gaestepreisDecimal2"]:.2f}',
"student": additional_info["mitarbeiterpreisDecimal2"],
"employee": additional_info["price3Decimal2"],
"other": additional_info["gaestepreisDecimal2"],
},
)
@property
def xml_feed(self):
return self.canteen.toXMLFeed()
return self._builder.toXML()