Example #1
0
    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
Example #2
0
    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
Example #3
0
    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)
Example #4
0
    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)
Example #5
0
 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)
Example #6
0
 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)
Example #7
0
 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)
Example #8
0
 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)
Example #9
0
 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)
Example #10
0
 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)
Example #11
0
 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)
Example #12
0
        # 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()
Example #13
0
 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)
Example #14
0
            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()