def get_change_object(change):
    """
    Retrieves a Change from a given change API object, getting user data from
    the API and saving the User if it doesn't already exist in the DB.
    """
    try:
        return Change.get(Change.change_id == change['rcid'])
    except DoesNotExist:
        size_diff = change['newlen'] - change['oldlen']
        timestamp_dt = parse_iso_dt(change['timestamp'])
        return Change.create(change_id=change['rcid'],
                             change_type=change['type'],
                             user=get_user_object(change['user']),
                             timestamp=timestamp_dt,
                             page=get_page_object(change['pageid']),
                             comment=change['comment'],
                             size_diff=size_diff)