eventbrite-sdk-python
eventbrite-sdk-python copied to clipboard
Pagination support
Added pagination support for a few of the known pagination calls.
I know there are several other calls that also have pagination.
This also suggests that instead of adding pagination support manually as I have done in this commit to every single call that has pagination maybe some kind of decorator logic should be introduced.
Current implementation:
def get_event_attendees(self, event_id, status=None, changed_since=None, page=None):
data = {}
if status:
data['status'] = status
if changed_since:
data['changed_since'] = changed_since
if page:
data['page'] = page
return self.get("/events/{0}/attendees/".format(event_id), data=data)
Alternative implementation:
from functools import wraps
def data(arg, optional=True):
def func(f):
@wraps(f)
def _(self, event_id, *args, data=None, **kwargs):
if data is None:
data = {}
# arg is either in kwargs OR args[0]
if arg in kwargs:
# found arg in kwargs
data[arg] = kwargs[arg]
del kwargs[arg]
elif len(args) > 0:
# found arg in args
data[arg] = args[0]
args = args[1:]
elif not optional:
# did not find arg and it is required
raise TypeError("missing required argument {0}".format(arg))
return f(self, event_id, *args, data=data, **kwargs)
return _
return func
@data("status")
@data("changed_since")
@data("page")
def get_event_attendees(self, event_id, data={}):
return self.get("/events/{0}/attendees/".format(event_id), data=data)
Related to #18
WHY IS THIS NOT MERGED?? 😩
I just finished a script for us to pull down all my org's eventbrite data, and low and behold. I am completely stuck until this is ready. What is the hold up? Why no pagination on a clearly paginated response?