def _cmd_help_backends(self, options, *args): if len(args) > 1: exit(_('Please specifiy only one backend!')) from tel import backendmanager manager = backendmanager.manager() if not args: items = [(unicode(backend.__name__), backend.__short_description__) for backend in manager.itervalues()] headline = [_('Backend name'), _('Description')] print_simple_table(headline, items) else: try: # print complete description for a single backend backend = manager[args[0]] except KeyError, e: exit(e.message) fields = backend.__phonebook_class__.supported_fields() wrap = textwrap.TextWrapper(79) info = {'name': backend.__name__, 'shortdesc': wrap.fill(backend.__short_description__), 'longdesc': wrap.fill(backend.__long_description__), 'fields': wrap.fill(', '.join(fields)) } print >> stdout, _(""" %(name)s - %(shortdesc)s ------------ Supported fields: %(fields)s ------------ %(longdesc)s""") % info
def _cmd_help_backends(self, options, *args): if len(args) > 1: exit(_('Please specifiy only one backend!')) from tel import backendmanager manager = backendmanager.manager() if not args: items = [(unicode(backend.__name__), backend.__short_description__) for backend in manager.itervalues()] headline = [_('Backend name'), _('Description')] print_simple_table(headline, items) else: try: # print complete description for a single backend backend = manager[args[0]] except KeyError, e: exit(e.message) fields = backend.__phonebook_class__.supported_fields() wrap = textwrap.TextWrapper(79) info = { 'name': backend.__name__, 'shortdesc': wrap.fill(backend.__short_description__), 'longdesc': wrap.fill(backend.__long_description__), 'fields': wrap.fill(', '.join(fields)) } print >> stdout, _(""" %(name)s - %(shortdesc)s ------------ Supported fields: %(fields)s ------------ %(longdesc)s""") % info
def edit_entries(self, entries): """Allows interactive editing of entries. If `new` is True, `entry` is identified as new entry""" editor = ConsoleEntryEditor(self.phonebook.supported_fields(), bool(entries[0].parent)) for entry in entries: entry = editor.edit(entry) # check if the user wants to add an empty entry if not entry: question = _('Do you really want to save an emtpy entry?') if not yes_no_question(question): # abort without saving print >> stdout, _('The entry is not saved.') return if entry.parent is None: self.phonebook.add(entry) try: self.phonebook.save() print >> stdout, _('The entry was saved.') except Exception, exp: args = { 'uri': self.phonebook.uri, 'message': (exp.strerror if isinstance( exp, EnvironmentError) else exp.message) } exit(_('Couldn\'t save %(uri)s: %(message)s') % args)
def edit_entries(self, entries): """Allows interactive editing of entries. If `new` is True, `entry` is identified as new entry""" editor = ConsoleEntryEditor(self.phonebook.supported_fields(), bool(entries[0].parent)) for entry in entries: entry = editor.edit(entry) # check if the user wants to add an empty entry if not entry: question = _('Do you really want to save an emtpy entry?') if not yes_no_question(question): # abort without saving print >> stdout, _('The entry is not saved.') return if entry.parent is None: self.phonebook.add(entry) try: self.phonebook.save() print >> stdout, _('The entry was saved.') except Exception, exp: args = { 'uri': self.phonebook.uri, 'message': (exp.strerror if isinstance(exp, EnvironmentError) else exp.message)} exit(_('Couldn\'t save %(uri)s: %(message)s') % args)
def _cmd_help_fields(self, options, *args): if not args: args = phonebook.FIELDS try: items = [(phonebook.translate_field(field), unicode(field)) for field in args] except phonebook.NoSuchField, e: exit(_('There is no field %s.') % e.field)
def _cmd_create(self, options, *args): """Interactivly create a new entry""" number = 1 if len(args) == 1: try: number = int(args[0]) except ValueError: exit(_('--create needs a number.')) if len(args) > 1: exit(_('--create only accepts one argument.')) entries = [Entry() for Entry in itertools.repeat(phonebook.Entry, number)] self.edit_entries(entries)
def _cmd_create(self, options, *args): """Interactivly create a new entry""" number = 1 if len(args) == 1: try: number = int(args[0]) except ValueError: exit(_('--create needs a number.')) if len(args) > 1: exit(_('--create only accepts one argument.')) entries = [ Entry() for Entry in itertools.repeat(phonebook.Entry, number) ] self.edit_entries(entries)
def start(self): """Starts the interface""" try: locale.setlocale(locale.LC_ALL, '') args = [arg.decode(sys.getfilesystemencoding()) for arg in sys.argv] (options, args) = self._parse_args(args) try: self.phonebook = phonebook.phonebook_open(options.uri) self.phonebook.load() except Exception, exp: msg = (_('Couldn\'t load %(uri)s: %(message)s') % {'message': exp.message, 'uri': (getattr(self.phonebook, 'uri', None) or options.uri)}) exit(msg) options.command_function(options, *args)
def start(self): """Starts the interface""" try: locale.setlocale(locale.LC_ALL, '') args = [ arg.decode(sys.getfilesystemencoding()) for arg in sys.argv ] (options, args) = self._parse_args(args) try: self.phonebook = phonebook.phonebook_open(options.uri) self.phonebook.load() except Exception, exp: msg = (_('Couldn\'t load %(uri)s: %(message)s') % { 'message': exp.message, 'uri': (getattr(self.phonebook, 'uri', None) or options.uri) }) exit(msg) options.command_function(options, *args)
def _cmd_edit(self, options, *args): """Interactivly edit entries""" entries = self._find_entries(options, *args) if not entries: exit(_('No entries found for given patterns.')) self.edit_entries(entries)
# get the command function options.command_function = self._get_cmd_function(options.command) return (options, args) def start(self): """Starts the interface""" try: locale.setlocale(locale.LC_ALL, '') args = [ arg.decode(sys.getfilesystemencoding()) for arg in sys.argv ] (options, args) = self._parse_args(args) try: self.phonebook = phonebook.phonebook_open(options.uri) self.phonebook.load() except Exception, exp: msg = (_('Couldn\'t load %(uri)s: %(message)s') % { 'message': exp.message, 'uri': (getattr(self.phonebook, 'uri', None) or options.uri) }) exit(msg) options.command_function(options, *args) except KeyboardInterrupt: exit(_('Dying peacefully ...')) if __name__ == '__main__': ConsoleIFace().start()
msg = _('The command %s doesn\'t take any arguments.') parser.error(msg % options.command) # get the command function options.command_function = self._get_cmd_function(options.command) return (options, args) def start(self): """Starts the interface""" try: locale.setlocale(locale.LC_ALL, '') args = [arg.decode(sys.getfilesystemencoding()) for arg in sys.argv] (options, args) = self._parse_args(args) try: self.phonebook = phonebook.phonebook_open(options.uri) self.phonebook.load() except Exception, exp: msg = (_('Couldn\'t load %(uri)s: %(message)s') % {'message': exp.message, 'uri': (getattr(self.phonebook, 'uri', None) or options.uri)}) exit(msg) options.command_function(options, *args) except KeyboardInterrupt: exit(_('Dying peacefully ...')) if __name__ == '__main__': ConsoleIFace().start()