%PDF- %PDF-
Direktori : /lib/calibre/calibre/db/cli/ |
Current File : //lib/calibre/calibre/db/cli/cmd_saved_searches.py |
#!/usr/bin/env python3 # License: GPLv3 Copyright: 2017, Kovid Goyal <kovid at kovidgoyal.net> readonly = False version = 0 # change this if you change signature of implementation() from calibre import prints from calibre.srv.changes import saved_searches from polyglot.builtins import iteritems def implementation(db, notify_changes, action, *args): if action == 'list': with db.safe_read_lock: names = db.saved_search_names() return {n: db.saved_search_lookup(n) for n in names} if action == 'add': name, val = args db.saved_search_add(name, val) if notify_changes is not None: notify_changes(saved_searches(added=(name,))) return if action == 'remove': name = args[0] db.saved_search_delete(name) if notify_changes is not None: notify_changes(saved_searches(removed=(name,))) return def option_parser(get_parser, args): parser = get_parser( _( '''\ %prog saved_searches [options] (list|add|remove) Manage the saved searches stored in this database. If you try to add a query with a name that already exists, it will be replaced. Syntax for adding: %prog saved_searches add search_name search_expression Syntax for removing: %prog saved_searches remove search_name ''' ) ) return parser def main(opts, args, dbctx): args = args or ['list'] if args[0] == 'list': for name, value in iteritems(dbctx.run('saved_searches', 'list')): prints(_('Name:'), name) prints(_('Search string:'), value) print() elif args[0] == 'add': if len(args) < 3: raise SystemExit(_('Error: You must specify a name and a search string')) dbctx.run('saved_searches', 'add', args[1], args[2]) prints(args[1], _('added')) elif args[0] == 'remove': if len(args) < 2: raise SystemExit(_('Error: You must specify a name')) dbctx.run('saved_searches', 'remove', args[1]) prints(args[1], _('removed')) else: raise SystemExit( _( 'Error: Action %s not recognized, must be one ' 'of: (add|remove|list)' ) % args[0] ) return 0