session.add(signature_history)
session.commit()
+ def _quote_section(self, section):
+ lines = []
+ for l in str(section).splitlines():
+ lines.append("> {0}".format(l))
+ return "\n".join(lines)
+
def _evaluate_sections(self, sections, session):
session.rollback()
try:
while True:
sections.next()
section = sections.section
+ self.result.append(self._quote_section(section))
action = section.get('Action', None)
if action is None:
raise CommandError('Encountered section without Action field')
- self.result.append('Action: {0}'.format(action))
if action == 'dm':
self.action_dm(self.fingerprint, section, session)
acl_name = cnf.get('Command::DM::ACL', 'dm')
acl = session.query(ACL).filter_by(name=acl_name).one()
- fpr = session.query(Fingerprint).filter_by(fingerprint=section['Fingerprint']).one()
+ fpr_hash = section['Fingerprint'].translate(None, ' ')
+ fpr = session.query(Fingerprint).filter_by(fingerprint=fpr_hash).first()
+ if fpr is None:
+ raise CommandError('Unknown fingerprint {0}'.format(fpr_hash))
if fpr.keyring is None or fpr.keyring.keyring_name not in cnf.value_list('Command::DM::Keyrings'):
raise CommandError('Key {0} is not in DM keyring.'.format(fpr.fingerprint))
addresses = gpg_get_key_addresses(fpr.fingerprint)