diff options
Diffstat (limited to 'SBoTools/plugin.py')
-rw-r--r-- | SBoTools/plugin.py | 33 |
1 files changed, 24 insertions, 9 deletions
diff --git a/SBoTools/plugin.py b/SBoTools/plugin.py index 0e18e9d..24df7ce 100644 --- a/SBoTools/plugin.py +++ b/SBoTools/plugin.py @@ -40,6 +40,13 @@ class SBoTools(callbacks.Plugin): maxresults *= 5 return maxresults + def getMaxDeps(self, msg): + maxdeps = self.registryValue('maxdeps') + if msg.channel is None: + # private message, increase limit + maxdeps *= 10 + return maxdeps + def InitDB(self): if self.db is None: filename = self.registryValue('dbpath') @@ -142,25 +149,33 @@ class SBoTools(callbacks.Plugin): db = self.InitDB(); cursor = db.cursor() - if(category is None): - cursor.execute("select b.id, b.name, c.name, b.descrip, b.version from builds b, categories c where b.category = c.id and b.name = ?", (build,)) - else: - cursor.execute("select b.id, b.name, c.name, b.descrip, b.version from builds b, categories c where c.id = ? and b.category = c.id and b.name = ?", (category, build,)) + + sql = """select b.id, b.name, c.name, b.descrip, b.version, m.name, e.addr + from builds b, categories c, maintainers m, emails e where """ + if(category is not None): + sql += "c.id=" + str(category) + " and " + sql += """b.category = c.id and b.maintainer = m.id and b.email = e.id + and b.name=?""" + cursor.execute(sql, (build,)) result = cursor.fetchall() if(len(result) == 0): irc.reply("no results found") else: lines = [] - for (bid, bname, cname, bdescrip, bversion) in result: - lines.append(cname + "/" + bname + " v" + bversion + ": " + bdescrip) - cursor.execute("select b.name from builds b, deps d where d.build_id=? and b.id=d.depends_on", (bid,)) + for (bid, bname, cname, bdescrip, bversion, maint, email) in result: + lines.append(cname + "/" + bname + " v" + bversion + ": " + bdescrip + + ", " + maint + " <" + email + ">") + maxdeps = self.getMaxDeps(msg) + cursor.execute("select b.name from builds b, deps d where d.build_id=? and b.id=d.depends_on limit ?", (bid,maxdeps+1)) depres = cursor.fetchall() if(len(depres) != 0): deps = "" for (depname) in depres: - deps += depname[0] + " " - lines.append("deps: " + deps) + deps += " " + depname[0] + lines.append("deps:" + deps) + if(len(depres) > maxdeps): + lines.append("[too many deps, only showing " + str(maxdeps) + "]") irc.replies(lines, joiner=' | ') |