def list_entries(options): """List pending entries""" approved = options.approved task_name = options.task_name with Session() as session: entries = plugin_pending_approval.list_pending_entries( session=session, task_name=task_name, approved=approved) header = ['#', 'Task Name', 'Title', 'URL', 'Approved', 'Added'] table_data = [header] for entry in entries: table_data.append([ entry.id, entry.task_name, entry.title, entry.url, colorize('green', 'Yes') if entry.approved else 'No', entry.added.strftime("%c"), ]) try: table = TerminalTable(options.table_type, table_data, wrap_columns=[1, 2, 3], drop_columns=[5, 1, 3]) console(table.output) except TerminalTableError as e: console('ERROR: %s' % str(e))
def manage_entries(options, selection, approved): """Manage pending entries""" approved_text = 'approved' if approved else 'pending' with Session() as session: if selection == 'all': entries = plugin_pending_approval.list_pending_entries( session=session, approved=not approved) else: try: entry = plugin_pending_approval.get_entry_by_id( session, selection) if entry.approved is approved: console( colorize('red', 'ERROR: ') + 'Entry with ID %s is already %s' % (entry.id, approved_text)) sys.exit(1) except NoResultFound: console('Pending entry with ID %s does not exist' % selection) sys.exit(1) else: entries = [entry] if not entries: console('All entries are already %s' % approved_text) return for entry in entries: if entry.approved is not approved: console('Setting pending entry with ID %s status to %s' % (entry.id, approved_text)) entry.approved = approved
def put(self, session=None): """Approve/Reject the status of pending entries""" args = filter_parser.parse_args() data = request.json approved = data['operation'] == 'approve' task_name = args.get('task_name') pending_entries = [] for entry in list_pending_entries(session, task_name=task_name): if entry.approved is not approved: entry.approved = approved pending_entries.append(entry.to_dict()) rsp = jsonify(pending_entries) rsp.status_code = 201 if pending_entries else 204 return rsp
def put(self, session=None): """Approve/Reject the status of pending entries""" args = filter_parser.parse_args() data = request.json approved = data["operation"] == "approve" task_name = args.get("task_name") pending_entries = [] for entry in list_pending_entries(session, task_name=task_name): if entry.approved is not approved: entry.approved = approved pending_entries.append(entry.to_dict()) rsp = jsonify(pending_entries) rsp.status_code = 201 if pending_entries else 204 return rsp
def list_entries(options): """List pending entries""" approved = options.approved task_name = options.task_name with Session() as session: entries = list_pending_entries(session=session, task_name=task_name, approved=approved) header = ['#', 'Task Name', 'Title', 'URL', 'Approved', 'Added'] table_data = [header] for entry in entries: table_data.append([ entry.id, entry.task_name, entry.title, entry.url, colorize('green', 'Yes') if entry.approved else 'No', entry.added.strftime("%c"), ]) try: table = TerminalTable(options.table_type, table_data, wrap_columns=[1, 2, 3], drop_columns=[5, 1, 3]) console(table.output) except TerminalTableError as e: console('ERROR: %s' % str(e))
def manage_entries(options, selection, approved): """Manage pending entries""" approved_text = 'approved' if approved else 'pending' with Session() as session: if selection == 'all': entries = list_pending_entries(session=session, approved=not approved) else: try: entry = get_entry_by_id(session, selection) if entry.approved is approved: console(colorize('red', 'ERROR: ') + 'Entry with ID %s is already %s' % (entry.id, approved_text)) sys.exit(1) except NoResultFound: console('Pending entry with ID %s does not exist' % selection) sys.exit(1) else: entries = [entry] if not entries: console('All entries are already %s' % approved_text) return for entry in entries: if entry.approved is not approved: console('Setting pending entry with ID %s status to %s' % (entry.id, approved_text)) entry.approved = approved
def get(self, session=None): """List all pending entries""" args = pending_parser.parse_args() # Filter params task_name = args.get('task_name') approved = args.get('approved') # 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' # Handle max size limit if per_page > 100: per_page = 100 start = per_page * (page - 1) stop = start + per_page kwargs = { 'task_name': task_name, 'approved': approved, 'start': start, 'stop': stop, 'descending': descending, 'sort_by': sort_by, 'session': session } total_items = session.query(PendingEntry).count() if not total_items: return jsonify([]) pending_entries = [ pending.to_dict() for pending in list_pending_entries(**kwargs) ] 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(per_page, len(pending_entries)) # Get pagination headers pagination = pagination_headers(total_pages, total_items, actual_size, request) # Created response rsp = jsonify(pending_entries) # Add link header to response rsp.headers.extend(pagination) return rsp
def get(self, session=None): """List all pending entries""" args = pending_parser.parse_args() # Filter params task_name = args.get("task_name") approved = args.get("approved") # 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" # Handle max size limit if per_page > 100: per_page = 100 start = per_page * (page - 1) stop = start + per_page kwargs = { "task_name": task_name, "approved": approved, "start": start, "stop": stop, "descending": descending, "sort_by": sort_by, "session": session, } total_items = session.query(PendingEntry).count() if not total_items: return jsonify([]) pending_entries = [pending.to_dict() for pending in list_pending_entries(**kwargs)] 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(per_page, len(pending_entries)) # Get pagination headers pagination = pagination_headers(total_pages, total_items, actual_size, request) # Created response rsp = jsonify(pending_entries) # Add link header to response rsp.headers.extend(pagination) return rsp
def get(self, session=None): """List all pending entries""" args = pending_parser.parse_args() # Filter params task_name = args.get('task_name') approved = args.get('approved') # 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' # Handle max size limit if per_page > 100: per_page = 100 start = per_page * (page - 1) stop = start + per_page kwargs = { 'task_name': task_name, 'approved': approved, 'start': start, 'stop': stop, 'descending': descending, 'sort_by': sort_by, 'session': session } total_items = session.query(PendingEntry).count() if not total_items: return jsonify([]) pending_entries = [pending.to_dict() for pending in list_pending_entries(**kwargs)] 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(per_page, len(pending_entries)) # Get pagination headers pagination = pagination_headers(total_pages, total_items, actual_size, request) # Created response rsp = jsonify(pending_entries) # Add link header to response rsp.headers.extend(pagination) return rsp