Пример #1
0
    def do_unsubscribefolder(self, folder):
        if folder_name not in self.lsub():
            print "not subscribed. maybe 'reload' and/or 'lsub'?"
            return

        im_resp(self.im.unsubscribe(folder))
        self._lsub_cache = None
Пример #2
0
    def do_subscribefolder(self, folder_name):
        if folder_name in self.lsub():
            print "already subscribed. maybe 'reload' and/or 'lsub'?"
            return

        im_resp(self.im.subscribe(folder_name))
        if self.im.select(folder_name,readonly=True)[0] != 'OK':
            print "I subscribed, but I can't select it. You might want to unsubscribe"
Пример #3
0
    def do_newfolder(self, folder_name):
        if not self.valid_folder.match(folder_name):
            print ("I'm not very adventurous, I'll only let you create folders named \"%s\""
                   % validfolder_expr)
            return

        im_resp(self.im.create(folder_name))
        im_resp(self.im.subscribe(folder_name))
        self._lsub_cache = None
Пример #4
0
    def _lsub(self):
        if self._lsub_cache is not None:
            return self._lsub_cache

        # im.lsub() returns a relatively raw response like
        # ['(\Nochildren \Seen \Bacon) "/" "INBOX"',
        #  '() "/" "lists/reddit-dev_googlegroups_com"',
        #  '() "/" "lists/commits.couchdb.apache.org"' ]
        folders_descr = im_resp(im.lsub())
        folders = []
        for x in folders_descr:
            
        folders_descr = [ split_quoted(x)
                          for x in folders_descr ]
        # we're going to force the use of / as a separator, even if
        # the server disagrees
        folders = [ '/'.join(x[2].split(x[1]))
                    for x in folders_descr ]

        self._lsub_cache = folders
        return self._lsub_cache

    def _copymove(self, new_folder, delete):
        if new_folder not in self._lsub():
            print "I can't find \"%s\" on the remote side" % newfolder
            return

        next_msg_num = self._find_next_msg_num()

        im_resp.copy(self.messages[self.current_message_index][0], new_folder)

        if delete:
            self._set_flag('\\Deleted')
            self._reload()
            self._try_select_msg_num(next_msg_num)

            if self.messages:
                self.do_messages(None)
                self.do_show(None)
Пример #5
0
 def _set_flag(self, flag):
     im_resp(im.select(self.imap_folder, readonly = False))
     im_resp(im.store(self.messages[self.current_message_index][0], "+FLAGS", flag))
     # go back to readonly mode
     im_resp(im.select(self.imap_folder, readonly = True))