]> git.decadent.org.uk Git - dak.git/blobdiff - daklib/database.py
Merge commit 'ftpmaster/master' into sqlalchemy
[dak.git] / daklib / database.py
index dbfa2af76226457b1046f81b52d3c20b196f4915..cbdfad04e5a4504f204210802bdc5efc9236a75f 100755 (executable)
@@ -34,7 +34,7 @@ import sys
 import time
 import types
 import utils
-from binary import Binary
+import pg
 
 ################################################################################
 
@@ -79,31 +79,6 @@ def init (config, sql):
     Cnf = config
     projectB = sql
 
-
-def do_query(query):
-    """
-    Executes a database query. Writes statistics / timing to stderr.
-
-    @type query: string
-    @param query: database query string, passed unmodified
-
-    @return: db result
-
-    @warning: The query is passed B{unmodified}, so be careful what you use this for.
-    """
-    sys.stderr.write("query: \"%s\" ... " % (query))
-    before = time.time()
-    r = projectB.query(query)
-    time_diff = time.time()-before
-    sys.stderr.write("took %.3f seconds.\n" % (time_diff))
-    if type(r) is int:
-        sys.stderr.write("int result: %s\n" % (r))
-    elif type(r) is types.NoneType:
-        sys.stderr.write("result: None\n")
-    else:
-        sys.stderr.write("pgresult: %s\n" % (r.getresult()))
-    return r
-
 ################################################################################
 
 def get_suite_id (suite):
@@ -851,19 +826,22 @@ def get_new_comments(package):
     """
 
     comments = []
-    query = projectB.query(""" SELECT version, comment, author
+    query = projectB.query(""" SELECT version, comment, author, notedate
                                FROM new_comments
-                               WHERE package = '%s' """ % (package))
+                               WHERE package = '%s'
+                               ORDER BY notedate
+                           """ % (package))
 
     for row in query.getresult():
-        comments.append("\nAuthor: %s\nVersion: %s\n\n%s\n" % (row[2], row[0], row[1]))
+        comments.append("\nAuthor: %s\nVersion: %s\nTimestamp: %s\n\n%s\n" % (row[2], row[0], row[3], row[1]))
         comments.append("-"*72)
 
     return comments
 
-def has_new_comment(package, version):
+def has_new_comment(package, version, ignore_trainee=False):
     """
     Returns true if the given combination of C{package}, C{version} has a comment.
+    If C{ignore_trainee} is true, comments from a trainee are ignored.
 
     @type package: string
     @param package: name of the package
@@ -871,22 +849,30 @@ def has_new_comment(package, version):
     @type version: string
     @param version: package version
 
+    @type ignore_trainee: boolean
+    @param ignore_trainee: ignore trainee comments
+
     @rtype: boolean
     @return: true/false
     """
 
+    trainee=""
+    if ignore_trainee:
+        trainee='AND trainee=false'
+
     exists = projectB.query("""SELECT 1 FROM new_comments
                                WHERE package='%s'
                                AND version='%s'
+                               %s
                                LIMIT 1"""
-                            % (package, version) ).getresult()
+                            % (package, version, trainee) ).getresult()
 
     if not exists:
         return False
     else:
         return True
 
-def add_new_comment(package, version, comment, author):
+def add_new_comment(package, version, comment, author, trainee=False):
     """
     Add a new comment for C{package}, C{version} written by C{author}
 
@@ -901,11 +887,14 @@ def add_new_comment(package, version, comment, author):
 
     @type author: string
     @param author: the authorname
+
+    @type trainee: boolean
+    @param trainee: trainee comment
     """
 
-    projectB.query(""" INSERT INTO new_comments (package, version, comment, author)
-                       VALUES ('%s', '%s', '%s', '%s')
-    """ % (package, version, comment, author) )
+    projectB.query(""" INSERT INTO new_comments (package, version, comment, author, trainee)
+                       VALUES ('%s', '%s', '%s', '%s', '%s')
+    """ % (package, version, pg.escape_string(comment), pg.escape_string(author), trainee))
 
     return
 
@@ -919,6 +908,16 @@ def delete_new_comments(package, version):
     """ % (package, version))
     return
 
+def delete_all_new_comments(package):
+    """
+    Delete all comments for C{package}, if they exist
+    """
+
+    projectB.query(""" DELETE FROM new_comments
+                       WHERE package = '%s'
+    """ % (package))
+    return
+
 ################################################################################
 def copy_temporary_contents(package, version, arch, deb, reject):
     """