X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Fdatabase.py;h=cbdfad04e5a4504f204210802bdc5efc9236a75f;hb=52b14d883272923a4296ac02921ccf350815db83;hp=b66f3d83dba6560ce3004fcaa57336e77a903d35;hpb=a59ca3145f204083ffcf5edf322d5b6ee2c4e0f8;p=dak.git diff --git a/daklib/database.py b/daklib/database.py index b66f3d83..cbdfad04 100755 --- a/daklib/database.py +++ b/daklib/database.py @@ -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 + 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 +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): """