From 6de35547a32b90a22896fb537bdd94495df752e4 Mon Sep 17 00:00:00 2001 From: Yarne Coppens Date: Fri, 26 Jul 2024 12:01:12 +0200 Subject: [PATCH] Implemented boardgame type check for expansions --- bgg_connection.py | 51 ++++++++++++++++++++++++++++++++++------------- 1 file changed, 37 insertions(+), 14 deletions(-) diff --git a/bgg_connection.py b/bgg_connection.py index a731e78..0956261 100644 --- a/bgg_connection.py +++ b/bgg_connection.py @@ -9,21 +9,44 @@ def url_to_xml_object(url: HttpUrl) -> ET.Element: root = ET.fromstring(r.content) return root +#Requires single boardgame XML 'item' from bgg api def convert_xml_to_boardgame(boardgame_xml: ET.Element) -> BoardGame: - boardgame = BoardGame( - id = boardgame_xml.get('id'), - name = boardgame_xml.find('name').get('value'), - description = boardgame_xml.find('description').text, - image_url = boardgame_xml.find('image').text, - thumbnail_url = boardgame_xml.find('thumbnail').text, - year_published = int(boardgame_xml.find('yearpublished').get('value')), - min_players = int(boardgame_xml.find('minplayers').get('value')), - max_players = int(boardgame_xml.find('maxplayers').get('value')), - min_playing_time = int(boardgame_xml.find('minplaytime').get('value')), - max_playing_time = int(boardgame_xml.find('maxplaytime').get('value')), - min_age = int(boardgame_xml.find('minage').get('value')), - all_expansion_ids = [0,1,2,3] - ) + + boardgame_type = boardgame_xml.get('type') + + match boardgame_type: + case "boardgame": + boardgame = BoardGame( + id = boardgame_xml.get('id'), + name = boardgame_xml.find('name').get('value'), + description = boardgame_xml.find('description').text, + image_url = boardgame_xml.find('image').text, + thumbnail_url = boardgame_xml.find('thumbnail').text, + year_published = int(boardgame_xml.find('yearpublished').get('value')), + min_players = int(boardgame_xml.find('minplayers').get('value')), + max_players = int(boardgame_xml.find('maxplayers').get('value')), + min_playing_time = int(boardgame_xml.find('minplaytime').get('value')), + max_playing_time = int(boardgame_xml.find('maxplaytime').get('value')), + min_age = int(boardgame_xml.find('minage').get('value')), + all_expansion_ids = [0,1,2,3] + ) + case "boardgameexpansion": + boardgame = BoardGameExpansion( + id = boardgame_xml.get('id'), + name = boardgame_xml.find('name').get('value'), + description = boardgame_xml.find('description').text, + image_url = boardgame_xml.find('image').text, + thumbnail_url = boardgame_xml.find('thumbnail').text, + year_published = int(boardgame_xml.find('yearpublished').get('value')), + min_players = int(boardgame_xml.find('minplayers').get('value')), + max_players = int(boardgame_xml.find('maxplayers').get('value')), + min_playing_time = int(boardgame_xml.find('minplaytime').get('value')), + max_playing_time = int(boardgame_xml.find('maxplaytime').get('value')), + min_age = int(boardgame_xml.find('minage').get('value')), + all_expansion_ids = [0,1,2,3] + ) + + return boardgame