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 })
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, } )
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 })
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))
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))
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))
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 {}
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 })
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')
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')
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 })
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)
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 {}
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 {}
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
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