]> git.decadent.org.uk Git - dak.git/blobdiff - daklib/command.py
Merge remote-tracking branch 'dktrkranz/fixes'
[dak.git] / daklib / command.py
index cbaffa8f3a206f2094fb298604ddec3eb94d761d..451c6b1f69bd2a6ecab7620f5e8f85300c0eb0b9 100644 (file)
@@ -59,17 +59,23 @@ class CommandFile(object):
         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)
@@ -192,7 +198,9 @@ class CommandFile(object):
         acl = session.query(ACL).filter_by(name=acl_name).one()
 
         fpr_hash = section['Fingerprint'].translate(None, ' ')
-        fpr = session.query(Fingerprint).filter_by(fingerprint=fpr_hash).one()
+        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)