]> git.decadent.org.uk Git - dak.git/blobdiff - daklib/database.py
override
[dak.git] / daklib / database.py
index b66f3d83dba6560ce3004fcaa57336e77a903d35..826e0441954ce8515968e07ee010e15900be840f 100755 (executable)
@@ -34,6 +34,7 @@ import sys
 import time
 import types
 import utils
+import pg
 from binary import Binary
 
 ################################################################################
@@ -851,19 +852,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 +875,30 @@ def has_new_comment(package, version):
     @type version: string
     @param version: package version
 
+    @type version: boolean
+    @param version: 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
+        return False
     else:
-        return true
+        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 +913,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 +934,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):
     """