implement workaround to allow eventlineupentry
This commit is contained in:
@@ -1,4 +1,6 @@
|
|||||||
from .base import BaseTeamsnapObject
|
from .base import BaseTeamsnapObject
|
||||||
|
from .eventlineup import EventLineup
|
||||||
|
import apiclient.exceptions
|
||||||
|
|
||||||
|
|
||||||
class EventLineupEntry(BaseTeamsnapObject):
|
class EventLineupEntry(BaseTeamsnapObject):
|
||||||
@@ -19,9 +21,32 @@ class EventLineupEntry(BaseTeamsnapObject):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def search(cls, client, **kwargs):
|
def search(cls, client, **kwargs):
|
||||||
|
# For some reason the query listed for search at this endpoint is for EventLineup, not EventLineupEntry
|
||||||
|
# this is a workaround, specifically line 31 which calls class method instead of client
|
||||||
|
try:
|
||||||
|
event_lineup_results = client.query(EventLineup.rel, "search", **kwargs)
|
||||||
|
event_lineups = [EventLineup(client, data=result) for result in event_lineup_results]
|
||||||
|
lineup_entries = []
|
||||||
|
for event_lineup in event_lineups:
|
||||||
|
event_lineup_entries_results = cls.query(client, "search", event_lineup_id=event_lineup.id)
|
||||||
|
lineup_entries += [cls(client, data=result) for result in event_lineup_entries_results]
|
||||||
|
except apiclient.exceptions.ServerError as e:
|
||||||
|
raise e
|
||||||
|
|
||||||
|
return lineup_entries
|
||||||
|
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def query(cls, client, query: str, **kwargs) -> list:
|
||||||
# For some reason the query listed for search at this endpoint is for EventLineup, not EventLineupEntry
|
# For some reason the query listed for search at this endpoint is for EventLineup, not EventLineupEntry
|
||||||
# this is a workaround
|
# this is a workaround
|
||||||
r = client.get(f"{client.link(cls.rel)}/search", params=kwargs)
|
|
||||||
results = client.parse_response(r)
|
if cls.rel == "event_lineup_entries" and query == "search":
|
||||||
[cls(client, data=r) for r in results]
|
response = client.get(
|
||||||
return [cls(client, data=r) for r in results]
|
f"https://api.teamsnap.com/v3/{cls.rel}/{query}",
|
||||||
|
params=kwargs)
|
||||||
|
parsed_response = [{d.name: d.value for d in item.data} for item in response.items]
|
||||||
|
return parsed_response
|
||||||
|
|
||||||
|
else:
|
||||||
|
return client.query(cls.rel, query, **kwargs)
|
||||||
|
|||||||
Reference in New Issue
Block a user