From 22aa3afa8d052a3e293666eb30b29a684ec60b76 Mon Sep 17 00:00:00 2001
From: Thierry Parmentelat <thierry.parmentelat@inria.fr>
Date: Tue, 14 Apr 2015 12:47:06 +0200
Subject: [PATCH] more compact, and hopefully nicer versions of pretty_cred and
 pretty_cert

---
 sfa/trust/certificate.py | 23 ++++++++++++++++++++++-
 sfa/trust/credential.py  |  2 +-
 2 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/sfa/trust/certificate.py b/sfa/trust/certificate.py
index 4609ce32..dc2672f2 100644
--- a/sfa/trust/certificate.py
+++ b/sfa/trust/certificate.py
@@ -497,10 +497,31 @@ class Certificate:
 
     ##
     # Get a pretty-print subject name of the certificate
+    # let's try to make this a little more usable as is makes logs hairy
+    pretty_fields = ['email']
+    def filter_chunk(self, chunk):
+        for field in self.pretty_fields:
+            if field in chunk:
+                return " "+chunk
 
     def pretty_cert(self):
         x = self.x509.get_subject()
-        return "[ OU: %s, CN: %s, SubjectAltName: %s ]" % (getattr(x, "OU"), getattr(x, "CN"), self.get_data())
+        ou = getattr(x, "OU")
+        cn = getattr(x, "CN")
+        data = self.get_data(field='subjectAltName')
+        message = "[Cert."
+        if ou: message += " OU: {}".format(ou)
+        if cn: message += " CN: {}".format(cn)
+        if data:
+            message += " SubjectAltName:"
+            counter = 0
+            filtered = [self.filter_chunk(chunk) for chunk in data.split()]
+            message += " ".join( [f for f in filtered if f])
+            omitted = len ([f for f in filtered if not f])
+            if omitted:
+                message += "..+{} omitted".format(omitted)
+        message += "]"
+        return message
 
     ##
     # Get the public key of the certificate.
diff --git a/sfa/trust/credential.py b/sfa/trust/credential.py
index b856930e..20b1dfde 100644
--- a/sfa/trust/credential.py
+++ b/sfa/trust/credential.py
@@ -300,7 +300,7 @@ class Credential(object):
         caller = self.gidCaller.pretty_cert()
         exp = self.get_expiration()
         # Summarize the rights too? The issuer?
-        return "[ Grant {caller} rights on {obj} until {exp} ]".format(**locals())
+        return "[Cred. for {caller} rights on {obj} until {exp} ]".format(**locals())
 
     def get_signature(self):
         if not self.signature:
-- 
2.47.0