Example #1
0
    def get(self, session):
        """ Search for seen entries """
        args = seen_search_parser.parse_args()
        value = args['value']
        page = args['page']
        page_size = args['page_size']
        is_seen_local = args['is_seen_local']
        sort_by = args['sort_by']
        order = args['order']

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

        # Handles default if it explicitly called
        descending = bool(order == 'desc')

        # Unquotes and prepares value for DB lookup
        if value:
            value = unquote(value)
            value = '%{0}%'.format(value)

        start = page_size * (page - 1)
        stop = start + page_size

        kwargs = {
            'value': value,
            'status': is_seen_local,
            'stop': stop,
            'start': start,
            'order_by': sort_by,
            'descending': descending,
            'session': session
        }
        count = seen.search(count=True, **kwargs)

        raw_seen_entries_list = seen.search(**kwargs)
        converted_seen_entry_list = [
            entry.to_dict() for entry in raw_seen_entries_list.all()
        ]

        pages = int(ceil(count / float(page_size)))

        actual_size = min(count, page_size)

        # Invalid page request
        if page > pages and pages != 0:
            return {
                'status': 'error',
                'message': 'page %s does not exist' % page
            }, 404

        return jsonify({
            'seen_entries': converted_seen_entry_list,
            'total_number_of_seen_entries': count,
            'page_size': actual_size,
            'page_number': page,
            'total_number_of_pages': pages
        })
Example #2
0
    def get(self, session):
        """ Search for seen entries """
        args = seen_search_parser.parse_args()
        value = args["value"]
        page = args["page"]
        page_size = args["page_size"]
        is_seen_local = args["is_seen_local"]
        sort_by = args["sort_by"]
        order = args["order"]

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

        # Handles default if it explicitly called
        if order == "desc":
            order = True
        else:
            order = False

        # Unquotes and prepares value for DB lookup
        if value:
            value = unquote(value)
            value = "%{0}%".format(value)

        start = page_size * (page - 1)
        stop = start + page_size

        kwargs = {
            "value": value,
            "status": is_seen_local,
            "stop": stop,
            "start": start,
            "order_by": sort_by,
            "descending": order,
            "session": session,
        }
        count = seen.search(count=True, **kwargs)

        raw_seen_entries_list = seen.search(**kwargs)
        converted_seen_entry_list = [entry.to_dict() for entry in raw_seen_entries_list.all()]

        pages = int(ceil(count / float(page_size)))

        actual_size = min(count, page_size)

        # Invalid page request
        if page > pages and pages != 0:
            return {"status": "error", "message": "page %s does not exist" % page}, 404

        return jsonify(
            {
                "seen_entries": converted_seen_entry_list,
                "total_number_of_seen_entries": count,
                "page_size": actual_size,
                "page_number": page,
                "total_number_of_pages": pages,
            }
        )
Example #3
0
    def get(self, session):
        """ Search for seen entries """
        args = seen_search_parser.parse_args()
        value = args['value']
        page = args['page']
        page_size = args['page_size']
        is_seen_local = args['is_seen_local']
        sort_by = args['sort_by']
        order = args['order']

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

        # Handles default if it explicitly called
        if order == 'desc':
            order = True
        else:
            order = False

        # Unquotes and prepares value for DB lookup
        if value:
            value = unquote(value)
            value = '%{0}%'.format(value)

        start = page_size * (page - 1)
        stop = start + page_size

        kwargs = {
            'value': value,
            'status': is_seen_local,
            'stop': stop,
            'start': start,
            'order_by': sort_by,
            'descending': order,
            'session': session
        }
        count = seen.search(count=True, **kwargs)

        raw_seen_entries_list = seen.search(**kwargs)
        converted_seen_entry_list = [entry.to_dict() for entry in raw_seen_entries_list.all()]

        pages = int(ceil(count / float(page_size)))

        actual_size = min(count, page_size)

        # Invalid page request
        if page > pages and pages != 0:
            return {'status': 'error',
                    'message': 'page %s does not exist' % page}, 404

        return jsonify({
            'seen_entries': converted_seen_entry_list,
            'total_number_of_seen_entries': count,
            'page_size': actual_size,
            'page_number': page,
            'total_number_of_pages': pages
        })
Example #4
0
def seen_search(options, session=None):
    search_term = '%' + options.search_term + '%'
    seen_entries = seen.search(value=search_term, status=None, session=session)
    table_data = []
    for se in seen_entries.all():
        table_data.append(['Title', se.title])
        for sf in se.fields:
            if sf.field.lower() == 'title':
                continue
            table_data.append(['{}'.format(sf.field.upper()), str(sf.value)])
        table_data.append(['Task', se.task])
        table_data.append(['Added', se.added.strftime('%Y-%m-%d %H:%M')])
        if options.table_type != 'porcelain':
            table_data.append(['', ''])

    if options.table_type != 'porcelain':
        del table_data[-1]
    table = TerminalTable(options.table_type, table_data, wrap_columns=[1])
    table.table.inner_heading_row_border = False
    if not table_data:
        console('No results found for search')
        return
    try:
        console(table.output)
    except TerminalTableError as e:
        console('ERROR: %s' % str(e))
Example #5
0
def seen_search(options, session=None):
    search_term = options.search_term
    if is_imdb_url(search_term):
        console('IMDB url detected, parsing ID')
        imdb_id = extract_id(search_term)
        if imdb_id:
            search_term = imdb_id
        else:
            console("Could not parse IMDB ID")
    else:
        search_term = '%' + options.search_term + '%'
    seen_entries = plugin_seen.search(value=search_term, status=None, session=session)
    table_data = []
    for se in seen_entries.all():
        table_data.append(['Title', se.title])
        for sf in se.fields:
            if sf.field.lower() == 'title':
                continue
            table_data.append(['{}'.format(sf.field.upper()), str(sf.value)])
        table_data.append(['Task', se.task])
        table_data.append(['Added', se.added.strftime('%Y-%m-%d %H:%M')])
        if options.table_type != 'porcelain':
            table_data.append(['', ''])
    if not table_data:
        console('No results found for search')
        return
    if options.table_type != 'porcelain':
        del table_data[-1]

    try:
        table = TerminalTable(options.table_type, table_data, wrap_columns=[1])
        table.table.inner_heading_row_border = False
        console(table.output)
    except TerminalTableError as e:
        console('ERROR: %s' % str(e))
Example #6
0
def seen_search(options, session=None):
    search_term = "%" + options.search_term + "%"
    seen_entries = seen.search(value=search_term, status=None, session=session)
    table_data = []
    for se in seen_entries.all():
        table_data.append(["Title", se.title])
        for sf in se.fields:
            if sf.field.lower() == "title":
                continue
            table_data.append(["{}".format(sf.field.upper()), str(sf.value)])
        table_data.append(["Task", se.task])
        table_data.append(["Added", se.added.strftime("%Y-%m-%d %H:%M")])
        if options.table_type != "porcelain":
            table_data.append(["", ""])
    if not table_data:
        console("No results found for search")
        return
    if options.table_type != "porcelain":
        del table_data[-1]
    table = TerminalTable(options.table_type, table_data, wrap_columns=[1])
    table.table.inner_heading_row_border = False

    try:
        console(table.output)
    except TerminalTableError as e:
        console("ERROR: %s" % str(e))
Example #7
0
    def delete(self, session):
        """ Delete seen entries """
        args = seen_delete_parser.parse_args()
        value = args['value']
        is_seen_local = args['is_seen_local']

        if value:
            value = unquote(value)
            value = '%' + value + '%'
        seen_entries_list = seen.search(value=value,
                                        status=is_seen_local,
                                        session=session)

        if not seen_entries_list.all():
            return {'status': 'error', 'message': 'no results to delete'}, 404

        for entry in seen_entries_list:
            try:
                seen.forget_by_id(entry.id)
            except ValueError:
                return {
                    'status': 'error',
                    'message': 'Could not delete entry ID {0}'.format(entry.id)
                }, 500
        return {}
Example #8
0
    def get(self, session):
        """ Search for seen entries """
        args = seen_search_parser.parse_args()
        value = args['value']
        page = args['page']
        max_results = args['max']
        is_seen_local = args['is_seen_local']
        sort_by = args['sort_by']
        order = args['order']

        # Handles default if it explicitly called
        if order == 'desc':
            order = True
        else:
            order = False

        # Unquotes and prepares value for DB lookup
        if value:
            value = unquote(value)
            value = '%{0}%'.format(value)

        raw_seen_entries_list = seen.search(value=value,
                                            status=is_seen_local,
                                            session=session)
        converted_seen_entry_list = [
            entry.to_dict() for entry in raw_seen_entries_list
        ]
        sorted_seen_entries_list = sorted(converted_seen_entry_list,
                                          key=itemgetter(sort_by),
                                          reverse=order)

        # Pagination
        count = len(sorted_seen_entries_list)

        pages = int(ceil(count / float(max_results)))

        # Invalid page request
        if page > pages and pages != 0:
            return {
                'status': 'error',
                'message': 'page %s does not exist' % page
            }, 404

        start = (page - 1) * max_results
        finish = start + max_results
        if finish > count:
            finish = count

        paginated_seen_entries = []
        for seen_entry_num in range(start, finish):
            paginated_seen_entries.append(
                sorted_seen_entries_list[seen_entry_num])

        return jsonify({
            'seen_entries': paginated_seen_entries,
            'number_of_seen_entries': count,
            'page_number': page,
            'total_number_of_pages': pages
        })
Example #9
0
def seen_search(options, session=None):
    search_term = '%' + options.search_term + '%'
    seen_entries = seen.search(value=search_term, status=None, session=session)
    for se in seen_entries.all():
        console('ID: %s Name: %s Task: %s Added: %s' % (se.id, se.title, se.task, se.added.strftime('%c')))
        for sf in se.fields:
            console(' %s: %s' % (sf.field, sf.value))
        console('')
    if not seen_entries:
        console('No results')
Example #10
0
def seen_search(options, session=None):
    search_term = '%' + options.search_term + '%'
    seen_entries = seen.search(value=search_term, status=None, session=session)
    for se in seen_entries:
        console('ID: %s Name: %s Task: %s Added: %s' % (se.id, se.title, se.task, se.added.strftime('%c')))
        for sf in se.fields:
            console(' %s: %s' % (sf.field, sf.value))
        console('')
    if not seen_entries:
        console('No results')
Example #11
0
    def get(self, session):
        """ Search for seen entries """
        args = seen_search_parser.parse_args()
        value = args['value']
        page = args['page']
        max_results = args['max']
        is_seen_local = args['is_seen_local']
        sort_by = args['sort_by']
        order = args['order']

        # Handles default if it explicitly called
        if order == 'desc':
            order = True
        else:
            order = False

        # Unquotes and prepares value for DB lookup
        if value:
            value = unquote(value)
            value = '%{0}%'.format(value)

        raw_seen_entries_list = seen.search(value=value, status=is_seen_local, session=session)
        converted_seen_entry_list = [entry.to_dict() for entry in raw_seen_entries_list]
        sorted_seen_entries_list = sorted(converted_seen_entry_list, key=itemgetter(sort_by), reverse=order)

        # Pagination
        count = len(sorted_seen_entries_list)

        pages = int(ceil(count / float(max_results)))

        # Invalid page request
        if page > pages and pages != 0:
            return {'status': 'error',
                    'message': 'page %s does not exist' % page}, 404

        start = (page - 1) * max_results
        finish = start + max_results
        if finish > count:
            finish = count

        paginated_seen_entries = []
        for seen_entry_num in range(start, finish):
            paginated_seen_entries.append(sorted_seen_entries_list[seen_entry_num])

        return jsonify({
            'seen_entries': paginated_seen_entries,
            'number_of_seen_entries': count,
            'page_number': page,
            'total_number_of_pages': pages
        })
Example #12
0
    def delete(self, session):
        """ Delete seen entries """
        args = seen_base_parser.parse_args()
        value = args['value']
        local = args['local']

        if value:
            value = unquote(value)
            value = '%' + value + '%'
        seen_entries_list = seen.search(value=value, status=local, session=session)

        deleted = 0
        for se in seen_entries_list:
            forget_by_id(se.id, session=session)
            deleted += 1
        return success_response('successfully deleted %i entries' % deleted)
Example #13
0
    def delete(self, session):
        """ Delete seen entries """
        args = seen_delete_parser.parse_args()
        value = args['value']
        is_seen_local = args['is_seen_local']

        if value:
            value = unquote(value)
            value = '%' + value + '%'
        seen_entries_list = seen.search(value=value, status=is_seen_local, session=session)

        for entry in seen_entries_list:
            try:
                seen.forget_by_id(entry.id)
            except ValueError as e:
                return {'status': 'error',
                        'message': 'Could not delete entry ID {0}'.format(entry.id)}, 500
        return {}
Example #14
0
    def delete(self, session):
        """ Delete seen entries """
        args = seen_base_parser.parse_args()
        value = args['value']
        local = args['local']

        if value:
            value = unquote(value)
            value = '%' + value + '%'
        seen_entries_list = seen.search(value=value,
                                        status=local,
                                        session=session)

        deleted = 0
        for se in seen_entries_list:
            forget_by_id(se.id, session=session)
            deleted += 1
        return success_response('successfully deleted %i entries' % deleted)
Example #15
0
    def delete(self, session):
        """ Delete seen entries """
        args = seen_delete_parser.parse_args()
        value = args["value"]
        is_seen_local = args["is_seen_local"]

        if value:
            value = unquote(value)
            value = "%" + value + "%"
        seen_entries_list = seen.search(value=value, status=is_seen_local, session=session)

        if not seen_entries_list.all():
            return {"status": "error", "message": "no results to delete"}, 404

        for entry in seen_entries_list:
            try:
                seen.forget_by_id(entry.id)
            except ValueError:
                return {"status": "error", "message": "Could not delete entry ID {0}".format(entry.id)}, 500
        return {}
Example #16
0
    def get(self, session):
        """ Search for seen entries """
        args = seen_search_parser.parse_args()

        # Filter params
        value = args['value']
        local = args['local']

        # 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

        descending = sort_order == 'desc'

        # Unquotes and prepares value for DB lookup
        if value:
            value = unquote(value)
            value = '%{0}%'.format(value)

        start = per_page * (page - 1)
        stop = start + per_page

        kwargs = {
            'value': value,
            'status': local,
            'stop': stop,
            'start': start,
            'order_by': sort_by,
            'descending': descending,
            'session': session
        }

        total_items = seen.search(count=True, **kwargs)

        if not total_items:
            return jsonify([])

        raw_seen_entries_list = seen.search(**kwargs).all()

        converted_seen_entry_list = [
            entry.to_dict() for entry in raw_seen_entries_list
        ]

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

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

        # Invalid page request
        if page > total_pages and total_pages != 0:
            raise NotFoundError('page %s does not exist' % page)

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

        # Create response
        rsp = jsonify(converted_seen_entry_list)

        # Add link header to response
        rsp.headers.extend(pagination)
        return rsp
Example #17
0
    def get(self, session):
        """ Search for seen entries """
        args = seen_search_parser.parse_args()

        # Filter params
        value = args['value']
        local = args['local']

        # 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

        descending = sort_order == 'desc'

        # Unquotes and prepares value for DB lookup
        if value:
            value = unquote(value)
            value = '%{0}%'.format(value)

        start = per_page * (page - 1)
        stop = start + per_page

        kwargs = {
            'value': value,
            'status': local,
            'stop': stop,
            'start': start,
            'order_by': sort_by,
            'descending': descending,
            'session': session
        }

        total_items = seen.search(count=True, **kwargs)

        if not total_items:
            return jsonify([])

        raw_seen_entries_list = seen.search(**kwargs).all()

        converted_seen_entry_list = [entry.to_dict() for entry in raw_seen_entries_list]

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

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

        # Invalid page request
        if page > total_pages and total_pages != 0:
            raise NotFoundError('page %s does not exist' % page)

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

        # Create response
        rsp = jsonify(converted_seen_entry_list)

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