diff options
author | Patrick Totzke <patricktotzke@gmail.com> | 2012-05-17 15:47:23 +0100 |
---|---|---|
committer | Patrick Totzke <patricktotzke@gmail.com> | 2012-05-17 15:47:23 +0100 |
commit | 08c2ee1d88e69aa5df27b74d1cebd3c0c8be68f6 (patch) | |
tree | 2dde7d7db9146918242f2c289c64e587706b3f09 /alot/commands/envelope.py | |
parent | 138f13c682f6a63da67cced1f0c267b5f6f349b8 (diff) | |
parent | 56b0b8a0f310403d4664649ab9b69d3cd765dbe5 (diff) |
Merge branch '0.3-feature-pyme' into staging
Conflicts:
alot/settings/__init__.py
alot/settings/checks.py
docs/source/generate_configs.py
Diffstat (limited to 'alot/commands/envelope.py')
-rw-r--r-- | alot/commands/envelope.py | 66 |
1 files changed, 65 insertions, 1 deletions
diff --git a/alot/commands/envelope.py b/alot/commands/envelope.py index c906bef4..70547075 100644 --- a/alot/commands/envelope.py +++ b/alot/commands/envelope.py @@ -1,3 +1,4 @@ +import argparse import os import re import glob @@ -8,8 +9,10 @@ from twisted.internet.defer import inlineCallbacks import datetime from alot.account import SendingMailFailed +from alot.errors import GPGProblem from alot import buffers from alot import commands +from alot import crypto from alot.commands import Command, registerCommand from alot.commands import globals from alot.helper import string_decode @@ -130,9 +133,20 @@ class SendCommand(Command): else: account = settings.get_accounts()[0] + clearme = ui.notify(u'constructing mail (GPG, attachments)\u2026', + timeout=-1) + + try: + mail = envelope.construct_mail() + except GPGProblem, e: + ui.clear_notify([clearme]) + ui.notify(e.message, priority='error') + return + + ui.clear_notify([clearme]) + # send clearme = ui.notify('sending..', timeout=-1) - mail = envelope.construct_mail() def afterwards(returnvalue): logging.debug('mail sent successfully') @@ -317,3 +331,53 @@ class ToggleHeaderCommand(Command): """toggle display of all headers""" def apply(self, ui): ui.current_buffer.toggle_all_headers() + + +@registerCommand(MODE, 'sign', forced={'action': 'sign'}, arguments=[ + (['keyid'], {'nargs':argparse.REMAINDER, 'help':'which key id to use'})], + help='mark mail to be signed before sending') +@registerCommand(MODE, 'unsign', forced={'action': 'unsign'}, + help='mark mail not to be signed before sending') +@registerCommand(MODE, 'togglesign', forced={'action': 'toggle'}, arguments=[ + (['keyid'], {'nargs':argparse.REMAINDER, 'help':'which key id to use'})], + help='toggle sign status') +class SignCommand(Command): + """toggle signing this email""" + def __init__(self, action=None, keyid=None, **kwargs): + """ + :param action: whether to sign/unsign/toggle + :type action: str + :param keyid: which key id to use + :type keyid: str + """ + self.action = action + self.keyid = keyid + Command.__init__(self, **kwargs) + + def apply(self, ui): + sign = None + key = None + envelope = ui.current_buffer.envelope + # sign status + if self.action == 'sign': + sign = True + elif self.action == 'unsign': + sign = False + elif self.action == 'toggle': + sign = not envelope.sign + envelope.sign = sign + + # try to find key if hint given as parameter + if sign: + if len(self.keyid) > 0: + keyid = str(' '.join(self.keyid)) + try: + key = crypto.CryptoContext().get_key(keyid) + except GPGProblem, e: + envelope.sign = False + ui.notify(e.message, priority='error') + return + envelope.sign_key = key + + # reload buffer + ui.current_buffer.rebuild() |