Changeset 3771 for peerreviewplugin/trunk/codereview/dbBackend.py
- Timestamp:
- 06/03/08 15:13:09 (6 months ago)
- Files:
-
- peerreviewplugin/trunk/codereview/dbBackend.py (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
peerreviewplugin/trunk/codereview/dbBackend.py
r717 r3771 14 14 from codereview.ReviewFilesStruct import * 15 15 from codereview.ReviewCommentStruct import * 16 from codereview.dbEscape import dbEscape17 16 import string 18 17 … … 30 29 if len(newStr) != 0: 31 30 newStr = newStr + "OR " 32 newStr = newStr + colName + " LIKE '% " + str + "%' "31 newStr = newStr + colName + " LIKE '%s%s%s' " % ('%', str, '%') 33 32 return newStr 34 33 35 34 #Returns an array of all the code reviews whose author is the given user 36 35 def getMyCodeReviews(self, user): 37 query = "SELECT IDReview, Author, Status, DateCreate, Name, Notes FROM CodeReviews WHERE Author = '" + dbEscape(user) + "' ORDER BY DateCreate"36 query = "SELECT IDReview, Author, Status, DateCreate, Name, Notes FROM CodeReviews WHERE Author = '%s' ORDER BY DateCreate" % (user) 38 37 return self.execCodeReviewQuery(query, False) 39 38 40 39 #Returns an array of all the code reviews who have the given user assigned to them as a reviewer 41 40 def getCodeReviews(self, user): 42 query = "SELECT CodeReviews.IDReview, CodeReviews.Author, CodeReviews.Status, CodeReviews.DateCreate, CodeReviews.Name, CodeReviews.Notes FROM CodeReviews, Reviewers WHERE Reviewers.IDReview = CodeReviews.IDReview AND Reviewer = '" + dbEscape(user) + "' ORDER BY CodeReviews.DateCreate"41 query = "SELECT cr.IDReview, cr.Author, cr.Status, cr.DateCreate, cr.Name, cr.Notes FROM CodeReviews cr, Reviewers r WHERE r.IDReview = cr.IDReview AND r.Reviewer = '%s' ORDER BY cr.DateCreate" % (user) 43 42 return self.execCodeReviewQuery(query, False) 44 43 45 44 #Returns an array of all the code reviews with the given status 46 45 def getCodeReviewsByStatus(self, status): 47 query = "SELECT IDReview, Author, Status, DateCreate, Name, Notes FROM CodeReviews WHERE Status = '" + dbEscape(status) + "'ORDER BY DateCreate"46 query = "SELECT IDReview, Author, Status, DateCreate, Name, Notes FROM CodeReviews WHERE Status = '%s' ORDER BY DateCreate" % (status) 48 47 return self.execCodeReviewQuery(query, False) 49 48 50 49 #Returns the number of votes of type 'type' for the given code review 51 50 def getVotesByID(self, type, id): 52 query = "SELECT Count(Reviewer) FROM Reviewers WHERE IDReview = ' " + dbEscape(id) +"' AND Vote = '" + dbEscape(type) + "'"51 query = "SELECT Count(Reviewer) FROM Reviewers WHERE IDReview = '%s' AND Vote = '%s'" % (id, type) 53 52 cursor = self.db.cursor() 54 53 cursor.execute(query) … … 60 59 #Returns the code review requested by ID 61 60 def getCodeReviewsByID(self, id): 62 query = "SELECT IDReview, Author, Status, DateCreate, Name, Notes FROM CodeReviews WHERE IDReview = '" + dbEscape(id) + "'"61 query = "SELECT IDReview, Author, Status, DateCreate, Name, Notes FROM CodeReviews WHERE IDReview = '%s'" % (id) 63 62 return self.execCodeReviewQuery(query, True) 64 63 … … 66 65 #names given in the 'name' string 67 66 def searchCodeReviewsByName(self, name): 68 query = self.createORLoop(dbEscape(name), "Name")67 queryPart = self.createORLoop(name, "Name") 69 68 if len(queryPart) == 0: 70 69 query = "SELECT IDReview, Author, Status, DateCreate, Name, Notes FROM CodeReviews" 71 70 else: 72 query = "SELECT IDReview, Author, Status, DateCreate, Name, Notes FROM CodeReviews WHERE " + dbEscape(query)71 query = "SELECT IDReview, Author, Status, DateCreate, Name, Notes FROM CodeReviews WHERE %s" % (queryPart) 73 72 return self.execCodeReviewQuery(query, True) 74 73 … … 77 76 def searchCodeReviews(self, crStruct): 78 77 query = "SELECT IDReview, Author, Status, DateCreate, Name, Notes FROM CodeReviews WHERE " 79 queryPart = self.createORLoop( dbEscape(crStruct.Name), "Name")78 queryPart = self.createORLoop(crStruct.Name, "Name") 80 79 if len(queryPart) != 0: 81 query = query + "( " + queryPart + ") AND "82 query = query + "Author LIKE '% " + dbEscape(crStruct.Author) + "%' AND Status LIKE '%" + dbEscape(crStruct.Status) + "%' AND DateCreate >= '" + crStruct.DateCreate + "'"80 query = query + "(%s) AND " % (queryPart) 81 query = query + "Author LIKE '%s%s%s' AND Status LIKE '%s%s%s' AND DateCreate >= '%s'" % ('%', crStruct.Author, '%', '%', crStruct.Status, '%', crStruct.DateCreate) 83 82 return self.execCodeReviewQuery(query, False) 84 83 85 84 #Returns an array of all the reviewers for a code review 86 85 def getReviewers(self, id): 87 query = "SELECT IDReview, Reviewer, Status, Vote FROM Reviewers WHERE IDReview = ' " + dbEscape(id) + "'"86 query = "SELECT IDReview, Reviewer, Status, Vote FROM Reviewers WHERE IDReview = '%s'" % (id) 88 87 return self.execReviewerQuery(query, False) 89 88 90 89 #Returns a specific reviewer entry for the given code review and name 91 90 def getReviewerEntry(self, id, name): 92 query = "SELECT IDReview, Reviewer, Status, Vote FROM Reviewers WHERE IDReview = ' " + dbEscape(id) + "' AND Reviewer = '" + dbEscape(name) + "'"91 query = "SELECT IDReview, Reviewer, Status, Vote FROM Reviewers WHERE IDReview = '%s' AND Reviewer = '%s'" % (id, name) 93 92 return self.execReviewerQuery(query, True) 94 93 95 94 #Returns an array of the files associated with the given review id 96 95 def getReviewFiles(self, id): 97 query = "SELECT IDFile, IDReview, Path, LineStart, LineEnd, Version FROM ReviewFiles WHERE IDReview = ' " + dbEscape(id) + "'"96 query = "SELECT IDFile, IDReview, Path, LineStart, LineEnd, Version FROM ReviewFiles WHERE IDReview = '%s'" % (id) 98 97 return self.execReviewFileQuery(query, False) 99 98 100 99 #Returns the requested review file 101 100 def getReviewFile(self, id): 102 query = "SELECT IDFile, IDReview, Path, LineStart, LineEnd, Version FROM ReviewFiles WHERE IDFile = '" + dbEscape(id) + "'" 103 return self.execReviewFileQuery(query, True)101 query = "SELECT IDFile, IDReview, Path, LineStart, LineEnd, Version FROM ReviewFiles WHERE IDFile = '%s'" % (id) 102 return self.execReviewFileQuery(query, True) 104 103 105 104 #Returns the requested comment 106 105 def getCommentByID(self, id): 107 query = "SELECT IDComment, IDFile, IDParent, LineNum, Author, Text, AttachmentPath, DateCreate FROM ReviewComments WHERE IDComment = ' " + dbEscape(id) + "'"106 query = "SELECT IDComment, IDFile, IDParent, LineNum, Author, Text, AttachmentPath, DateCreate FROM ReviewComments WHERE IDComment = '%s'" % (id) 108 107 return self.execReviewCommentQuery(query, True) 109 108 110 109 #Returns an array of comments for the given file 111 110 def getCommentsByFileID(self, id): 112 query = "SELECT IDComment, IDFile, IDParent, LineNum, Author, Text, AttachmentPath, DateCreate FROM ReviewComments WHERE IDFile = ' " + dbEscape(id) + "' ORDER BY DateCreate"111 query = "SELECT IDComment, IDFile, IDParent, LineNum, Author, Text, AttachmentPath, DateCreate FROM ReviewComments WHERE IDFile = '%s' ORDER BY DateCreate" % (id) 113 112 return self.execReviewCommentQuery(query, False) 114 113 115 114 #Returns all the comments for the given file on the given line 116 115 def getCommentsByFileIDAndLine(self, id, line): 117 query = "SELECT IDComment, IDFile, IDParent, LineNum, Author, Text, AttachmentPath, DateCreate FROM ReviewComments WHERE IDFile = ' " + dbEscape(id) + "' AND LineNum = '" + dbEscape(line) + "' ORDER BY DateCreate"116 query = "SELECT IDComment, IDFile, IDParent, LineNum, Author, Text, AttachmentPath, DateCreate FROM ReviewComments WHERE IDFile = '%s' AND LineNum = '%s' ORDER BY DateCreate" % (id, line) 118 117 return self.execReviewCommentQuery(query, False) 119 118 … … 135 134 #Sets the "Threshold" to the given value 136 135 def setThreshold(self, val): 137 query = "UPDATE system SET value = ' " + val + "' WHERE name = 'CodeReviewVoteThreshold'"136 query = "UPDATE system SET value = '%s' WHERE name = 'CodeReviewVoteThreshold'" % (val) 138 137 cursor = self.db.cursor() 139 138 cursor.execute(query) … … 143 142 #for the given file id. 144 143 def getCommentDictForFile(self, id): 145 query = "SELECT LineNum, Count(IDComment) FROM ReviewComments WHERE IDFile = ' " + dbEscape(id) + "' GROUP BY LineNum"144 query = "SELECT LineNum, Count(IDComment) FROM ReviewComments WHERE IDFile = '%s' GROUP BY LineNum" % (id) 146 145 cursor = self.db.cursor() 147 146 cursor.execute(query) … … 157 156 def getPossibleUsers(self): 158 157 cursor = self.db.cursor() 159 cursor.execute("SELECT DISTINCT username FROM permission WHERE action = 'CODE_REVIEW_DEV' ORaction = 'CODE_REVIEW_MGR'")158 cursor.execute("SELECT DISTINCT p1.username as username FROM permission p1 left join permission p2 on p1.action = p2.username WHERE p1.action = 'CODE_REVIEW_DEV' OR p2.action = 'CODE_REVIEW_DEV' OR p1.action = 'CODE_REVIEW_MGR' OR p2.action = 'CODE_REVIEW_MGR'") 160 159 rows = cursor.fetchall() 161 160 if not rows:
