/[qa]/trunk/carnivore/carnivore.py
ViewVC logotype

Diff of /trunk/carnivore/carnivore.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1255 by jeroen, Sun Jan 29 10:01:18 2006 UTC revision 1256 by jeroen, Sun Jan 29 15:25:35 2006 UTC
# Line 18  Line 18 
18  # along with this program; if not, write to the Free Software  # along with this program; if not, write to the Free Software
19  # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA  # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
20    
21  import os, sys, bsddb  import os, sys, bsddb, sets
22  import apt_pkg  import apt_pkg
23    
24  carnivore = bsddb.btopen("/org/qa.debian.org/data/carnivore/result.db", "r")  carnivore = bsddb.btopen("/org/qa.debian.org/data/carnivore/result.db", "r")
# Line 26  carnivore = bsddb.btopen("/org/qa.debian Line 26  carnivore = bsddb.btopen("/org/qa.debian
26  def join(sep, items):  def join(sep, items):
27      return reduce(lambda a, b: a+sep+b, items)      return reduce(lambda a, b: a+sep+b, items)
28    
29  def get(key):  class carnivoreEntry:
30        def __init__(self, v):
31            if not isinstance(v, tuple):
32                raise "Not a carnivore typle"
33    
34            (self.ldap, self.realname, self.email, self.package) = [], [], [], []
35            (self.extra, self.expl, self.warnings, self.mia) = [], [], [], []
36            self.gecos = ""
37            self.keyring = {'keyring': [], 'emeritus': [], 'removed': [], 'ldap': []}
38            for item in sets.Set(v[1]+v[2]):
39                if item.startswith("ldap:"):
40                    self.ldap.append(item[5:])
41                elif item.startswith("email:"):
42                    self.email.append(item[6:])
43                elif item.startswith("realname:"):
44                    self.realname.append(item[9:])
45                elif item.startswith("maint:"):
46                    self.package.append(item[6:])
47                elif item.startswith("x:"):
48                    self.expl.append(item[2:])
49                    if item.startswith("x:ldap:gpg:"):
50                        self.keyring['ldap'].append(item[11:].split(':')[1])
51                    if item.startswith("x:gpg:keyring:"):
52                        gpg, ring = item[14:].split(':')
53                        self.keyring[ring].append(gpg)
54                    if item.startswith("x:ldap:realname:"):
55                        self.gecos = item[16:].split(':')[1]
56                else:
57                    self.extra.append(item)
58            for ring in self.keyring.values(): ring.sort()
59    
60        def getPrettyprintedText(self):
61            text = ""
62            if self.ldap: text += "DD: "+self.gecos+" <"+self.ldap[0]+"@debian.org>\n"
63            if self.realname: text += "Known as: "+", ".join(self.realname)+"\n"
64            if self.email: text += "Using emails: "+", ".join(self.email)+"\n"
65            for k, v in self.keyring.iteritems():
66                for key in v:
67                    text += "Key in "+k+": "+key+"\n"
68            p = "0"
69            if self.package and len(self.package) <= 5:
70                p = "%s (%s)" % (len(self.package), ", ".join(self.package))
71            elif self.package:
72                p = "%s (%s)" % (len(self.package), ", ".join(self.package[:4]+["..."]))
73            text += "Packages: %s\n" % p
74            return text
75    
76    def search(key):
77      if not carnivore.has_key(key):      if not carnivore.has_key(key):
78          return None          return []
79      while 1:      while 1:
80            lastkey = key
81          key = carnivore[key]          key = carnivore[key]
82          if key[0] in ["(", "["]:          if key[0] == "(":
83                return [lastkey]
84            elif key[0] == "[":
85              return eval(key)              return eval(key)
86    
87    def get(key):
88        while 1:
89            key = carnivore[key]
90            if key[0] == "(":
91                return carnivoreEntry(eval(key))
92            elif key[0] == "[":
93                raise "%s is not an id of a real carnivore entry" % key
94    
95  class iteritems:  class iteritems:
96      def __init__(this):      def __init__(this):
97          this.iter = carnivore.iteritems()          this.iter = carnivore.iteritems()
# Line 42  class iteritems: Line 100  class iteritems:
100          while 1:          while 1:
101              key, val = this.iter.next()              key, val = this.iter.next()
102              if val[0] == '(':              if val[0] == '(':
103                  return key, eval(val)                  return key, carnivoreEntry(eval(val))
104    
105  # vim: et  # vim: et

Legend:
Removed from v.1255  
changed lines
  Added in v.1256

  ViewVC Help
Powered by ViewVC 1.1.5