def get_all(self, story_id=None, event_type=None, marker=None, offset=None, limit=None, sort_field=None, sort_dir=None): """Retrieve all events that have happened under specified story. :param story_id: Filter events by story ID. :param event_type: A selection of event types to get. :param marker: The resource id where the page should begin. :param offset: The offset to start the page at. :param limit: The number of events to retrieve. :param sort_field: The name of the field to sort on. :param sort_dir: Sort direction for results (asc, desc). """ # Boundary check on limit. if limit is not None: limit = max(0, limit) # Sanity check on event types. if event_type: for r_type in event_type: if r_type not in event_types.ALL: msg = _('Invalid event_type requested. Event type must be ' 'one of the following: %s') msg = msg % (', '.join(event_types.ALL), ) abort(400, msg) # Resolve the marker record. marker_event = None if marker is not None: marker_event = events_api.event_get(marker) event_count = events_api.events_get_count(story_id=story_id, event_type=event_type) events = events_api.events_get_all(story_id=story_id, event_type=event_type, marker=marker_event, offset=offset, limit=limit, sort_field=sort_field, sort_dir=sort_dir) # Apply the query response headers. if limit: response.headers['X-Limit'] = str(limit) response.headers['X-Total'] = str(event_count) if marker_event: response.headers['X-Marker'] = str(marker_event.id) if offset is not None: response.headers['X-Offset'] = str(offset) return [ wmodels.TimeLineEvent.resolve_event_values( wmodels.TimeLineEvent.from_db_model(event)) for event in events ]
def get_all(self, story_id=None, event_type=None, marker=None, offset=None, limit=None, sort_field=None, sort_dir=None): """Retrieve all events that have happened under specified story. Example:: curl https://my.example.org/api/v1/stories/11/events :param story_id: Filter events by story ID. :param event_type: A selection of event types to get. :param marker: The resource id where the page should begin. :param offset: The offset to start the page at. :param limit: The number of events to retrieve. :param sort_field: The name of the field to sort on. :param sort_dir: Sort direction for results (asc, desc). """ current_user = request.current_user_id # Boundary check on limit. if limit is not None: limit = max(0, limit) # Sanity check on event types. if event_type: for r_type in event_type: if r_type not in event_types.ALL: msg = _('Invalid event_type requested. Event type must be ' 'one of the following: %s') msg = msg % (', '.join(event_types.ALL),) abort(400, msg) # Resolve the marker record. marker_event = None if marker is not None: marker_event = events_api.event_get(marker) event_count = events_api.events_get_count(story_id=story_id, event_type=event_type, current_user=current_user) events = events_api.events_get_all(story_id=story_id, event_type=event_type, marker=marker_event, offset=offset, limit=limit, sort_field=sort_field, sort_dir=sort_dir, current_user=current_user) # Apply the query response headers. if limit: response.headers['X-Limit'] = str(limit) response.headers['X-Total'] = str(event_count) if marker_event: response.headers['X-Marker'] = str(marker_event.id) if offset is not None: response.headers['X-Offset'] = str(offset) return [wmodels.TimeLineEvent.resolve_event_values( wmodels.TimeLineEvent.from_db_model(event)) for event in events]
def get_all(self, story_id=None, marker=None, limit=None, sort_field='id', sort_dir='asc'): """Retrieve all comments posted under specified story. Example:: curl https://my.example.org/api/v1/stories/11/comments :param story_id: Filter comments by story ID. :param marker: The resource id where the page should begin. :param limit: The number of comments to retrieve. :param sort_field: The name of the field to sort on. :param sort_dir: Sort direction for results (asc, desc). """ current_user = request.current_user_id # Boundary check on limit. if limit is not None: limit = max(0, limit) # Resolve the marker record. marker_event = None if marker: event_query = \ events_api.events_get_all(comment_id=marker, event_type=event_types.USER_COMMENT, current_user=current_user) if len(event_query) > 0: marker_event = event_query[0] events_count = events_api.events_get_count( story_id=story_id, event_type=event_types.USER_COMMENT, current_user=current_user) events = events_api.events_get_all(story_id=story_id, marker=marker_event, limit=limit, event_type=event_types.USER_COMMENT, sort_field=sort_field, sort_dir=sort_dir, current_user=current_user) comments = [ comments_api.comment_get(event.comment_id) for event in events ] # Apply the query response headers. if limit: response.headers['X-Limit'] = str(limit) response.headers['X-Total'] = str(events_count) if marker_event: response.headers['X-Marker'] = str(marker) return [wmodels.Comment.from_db_model(comment) for comment in comments]
def get_all(self, story_id=None, marker=None, limit=None, sort_field='id', sort_dir='asc'): """Retrieve all comments posted under specified story. Example:: curl https://my.example.org/api/v1/stories/11/comments :param story_id: Filter comments by story ID. :param marker: The resource id where the page should begin. :param limit: The number of comments to retrieve. :param sort_field: The name of the field to sort on. :param sort_dir: Sort direction for results (asc, desc). """ current_user = request.current_user_id # Boundary check on limit. if limit is not None: limit = max(0, limit) # Resolve the marker record. marker_event = None if marker: event_query = \ events_api.events_get_all(comment_id=marker, event_type=event_types.USER_COMMENT, current_user=current_user) if len(event_query) > 0: marker_event = event_query[0] events_count = events_api.events_get_count( story_id=story_id, event_type=event_types.USER_COMMENT, current_user=current_user) events = events_api.events_get_all(story_id=story_id, marker=marker_event, limit=limit, event_type=event_types.USER_COMMENT, sort_field=sort_field, sort_dir=sort_dir, current_user=current_user) comments = [comments_api.comment_get(event.comment_id) for event in events] # Apply the query response headers. if limit: response.headers['X-Limit'] = str(limit) response.headers['X-Total'] = str(events_count) if marker_event: response.headers['X-Marker'] = str(marker) return [wmodels.Comment.from_db_model(comment) for comment in comments]