eventbrite-sdk-python icon indicating copy to clipboard operation
eventbrite-sdk-python copied to clipboard

Pagination support

Open kenodegard opened this issue 7 years ago • 3 comments

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)

kenodegard avatar Oct 06 '17 16:10 kenodegard

Related to #18

kenodegard avatar Oct 06 '17 17:10 kenodegard

WHY IS THIS NOT MERGED?? 😩

mwvolo avatar Feb 12 '20 18:02 mwvolo

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?

dcwiggin avatar Feb 18 '20 23:02 dcwiggin