Example #1
0
 def get(self, list_id, session=None):
     """ Get pending list by ID """
     try:
         list = get_list_by_id(list_id=list_id, session=session)
     except NoResultFound:
         raise NotFoundError('list_id %d does not exist' % list_id)
     return jsonify(list.to_dict())
Example #2
0
 def get(self, list_id, session=None):
     """ Get pending list by ID """
     try:
         list = get_list_by_id(list_id=list_id, session=session)
     except NoResultFound:
         raise NotFoundError('list_id %d does not exist' % list_id)
     return jsonify(list.to_dict())
Example #3
0
    def get(self, list_id, session=None):
        """ Get entries by list ID """
        try:
            list = get_list_by_id(list_id=list_id, session=session)
        except NoResultFound:
            raise NotFoundError('list_id %d does not exist' % list_id)

        args = entries_parser.parse_args()

        # Pagination and sorting params
        page = args['page']
        per_page = args['per_page']
        sort_by = args['sort_by']
        sort_order = args['order']

        # Handle max size limit
        if per_page > 100:
            per_page = 100

        start = per_page * (page - 1)
        stop = start + per_page
        descending = sort_order == 'desc'

        kwargs = {
            'start': start,
            'stop': stop,
            'list_id': list_id,
            'order_by': sort_by,
            'descending': descending,
            'session': session
        }

        total_items = list.entries.count()

        if not total_items:
            return jsonify([])

        log.debug('pending lists entries count is %d', total_items)
        entries = [entry.to_dict() for entry in get_entries_by_list_id(**kwargs)]

        # Total number of pages
        total_pages = int(ceil(total_items / float(per_page)))

        if page > total_pages:
            raise NotFoundError('page %s does not exist' % page)

        # Actual results in page
        actual_size = min(len(entries), per_page)

        # Get pagination headers
        pagination = pagination_headers(total_pages, total_items, actual_size, request)

        # Create response
        rsp = jsonify(entries)

        # Add link header to response
        rsp.headers.extend(pagination)
        return rsp
Example #4
0
 def post(self, list_id, session=None):
     """ Create a new entry object"""
     try:
         get_list_by_id(list_id=list_id, session=session)
     except NoResultFound:
         raise NotFoundError('list_id %d does not exist' % list_id)
     data = request.json
     title = data.get('title')
     entry_object = get_entry_by_title(list_id=list_id, title=title, session=session)
     if entry_object:
         raise Conflict('entry with title \'%s\' already exists' % title)
     entry_object = PendingListEntry(entry=data, pending_list_id=list_id)
     if data.get('approved'):
         entry_object.approved = data['approved']
     session.add(entry_object)
     session.commit()
     response = jsonify(entry_object.to_dict())
     response.status_code = 201
     return response
Example #5
0
 def post(self, list_id, session=None):
     """ Create a new entry object"""
     try:
         get_list_by_id(list_id=list_id, session=session)
     except NoResultFound:
         raise NotFoundError('list_id %d does not exist' % list_id)
     data = request.json
     title = data.get('title')
     entry_object = get_entry_by_title(list_id=list_id,
                                       title=title,
                                       session=session)
     if entry_object:
         raise Conflict('entry with title \'%s\' already exists' % title)
     entry_object = PendingListEntry(entry=data, pending_list_id=list_id)
     if data.get('approved'):
         entry_object.approved = data['approved']
     session.add(entry_object)
     session.commit()
     response = jsonify(entry_object.to_dict())
     response.status_code = 201
     return response
Example #6
0
    def get(self, list_id, session=None):
        """ Get entries by list ID """
        try:
            list = get_list_by_id(list_id=list_id, session=session)
        except NoResultFound:
            raise NotFoundError('list_id %d does not exist' % list_id)

        args = entries_parser.parse_args()

        # Pagination and sorting params
        page = args['page']
        per_page = args['per_page']
        sort_by = args['sort_by']
        sort_order = args['order']

        # Handle max size limit
        if per_page > 100:
            per_page = 100

        start = per_page * (page - 1)
        stop = start + per_page
        descending = sort_order == 'desc'

        kwargs = {
            'start': start,
            'stop': stop,
            'list_id': list_id,
            'order_by': sort_by,
            'descending': descending,
            'session': session
        }

        total_items = list.entries.count()

        if not total_items:
            return jsonify([])

        log.debug('pending lists entries count is %d', total_items)
        entries = [
            entry.to_dict() for entry in get_entries_by_list_id(**kwargs)
        ]

        # Total number of pages
        total_pages = int(ceil(total_items / float(per_page)))

        if page > total_pages:
            raise NotFoundError('page %s does not exist' % page)

        # Actual results in page
        actual_size = min(len(entries), per_page)

        # Get pagination headers
        pagination = pagination_headers(total_pages, total_items, actual_size,
                                        request)

        # Create response
        rsp = jsonify(entries)

        # Add link header to response
        rsp.headers.extend(pagination)
        return rsp