Changeset 3548
- Timestamp:
- 04/24/08 17:36:15 (4 months ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
peerreviewplugin/branches/2.1-toddler/codereview/peerReviewView.py
r2578 r3548 22 22 from trac.web.chrome import add_stylesheet 23 23 import time 24 import itertools 24 25 25 26 class UserbaseModule(Component): … … 41 42 42 43 def process_request(self, req): 44 45 data = {} 43 46 # check to see if the user is a manager of this page or not 44 47 if req.perm.has_permission('CODE_REVIEW_MGR'): 45 req.hdf['manager'] = 148 data['manager'] = 1 46 49 else: 47 50 req.perm.assert_permission('CODE_REVIEW_DEV') 48 req.hdf['manager'] = 0 49 50 # set up dynamic links 51 req.hdf['trac.href.peerReviewMain'] = self.env.href.peerReviewMain() 52 req.hdf['trac.href.peerReviewNew'] = self.env.href.peerReviewNew() 53 req.hdf['trac.href.peerReviewSearch'] = self.env.href.peerReviewSearch() 54 req.hdf['trac.href.peerReviewPerform'] = self.env.href.peerReviewPerform() 55 req.hdf['trac.href.peerReviewView'] = self.env.href.peerReviewView() 56 req.hdf['trac.href.peerReviewOptions'] = self.env.href.peerReviewOptions() 51 data['manager'] = 0 57 52 58 53 # reviewID argument checking 59 54 reviewID = req.args.get('Review') 60 55 if reviewID == None or not reviewID.isdigit(): 61 req.hdf['error.type'] = "TracError"62 req.hdf['error.title'] = "Review ID error"63 req.hdf['error.message'] = "Invalid review ID supplied - unable to load page."64 return 'error.cs', None65 66 req.hdf['main'] = "no"67 req.hdf['create'] = "no"68 req.hdf['search'] = "no"69 req.hdf['options'] = "no"56 data['error.type'] = "TracError" 57 data['error.title'] = "Review ID error" 58 data['error.message'] = "Invalid review ID supplied - unable to load page." 59 return 'error.cs', data, None 60 61 data['main'] = "no" 62 data['create'] = "no" 63 data['search'] = "no" 64 data['option'] = "no" 70 65 71 66 # set up to display the files that are in this review … … 85 80 returnfiles.append(newfile) 86 81 newfile = [] 87 req.hdf['files'] = returnfiles88 req.hdf['filesLength'] = len(returnfiles)89 req.hdf['reviewID'] = reviewID90 91 req.hdf['users'] = dbBack.getPossibleUsers()82 data['files'] = returnfiles 83 data['filesLength'] = len(returnfiles) 84 data['reviewID'] = reviewID 85 86 data['users'] = dbBack.getPossibleUsers() 92 87 review = dbBack.getCodeReviewsByID(reviewID) 93 88 # error if review id does not exist in the database 94 89 if review == None: 95 req.hdf['error.type'] = "TracError"96 req.hdf['error.title'] = "Review error"97 req.hdf['error.message'] = "Review does not exist in database - unable to load page."98 return 'error.cs', None90 data['error.type'] = "TracError" 91 data['error.title'] = "Review error" 92 data['error.message'] = "Review does not exist in database - unable to load page." 93 return 'error.cs', data, None 99 94 100 95 # set up the fields that will be displayed on the page 101 req.hdf['name'] = review.Name102 req.hdf['notes'] = review.Notes103 req.hdf['status'] = review.Status104 req.hdf['author'] = review.Author105 req.hdf['myname'] = util.get_reporter_id(req)106 req.hdf['datecreate'] = util.format_date(review.DateCreate)107 req.hdf['voteyes'] = dbBack.getVotesByID("1", reviewID)108 req.hdf['voteno'] = dbBack.getVotesByID("0", reviewID)109 req.hdf['notvoted'] = dbBack.getVotesByID("-1", reviewID)110 req.hdf['total_votes_possible'] = float(req.hdf['voteyes']) + float(req.hdf['voteno']) + float(req.hdf['notvoted'])111 req.hdf['threshold'] = float(dbBack.getThreshold())/10096 data['name'] = review.Name 97 data['notes'] = review.Notes 98 data['status'] = review.Status 99 data['author'] = review.Author 100 data['myname'] = util.get_reporter_id(req) 101 data['datecreate'] = util.format_date(review.DateCreate) 102 data['voteyes'] = dbBack.getVotesByID("1", reviewID) 103 data['voteno'] = dbBack.getVotesByID("0", reviewID) 104 data['notvoted'] = dbBack.getVotesByID("-1", reviewID) 105 data['total_votes_possible'] = float(data['voteyes']) + float(data['voteno']) + float(data['notvoted']) 106 data['threshold'] = float(dbBack.getThreshold())/100 112 107 113 108 # figure out whether I can vote on this review or not 114 entry = dbBack.getReviewerEntry(reviewID, req.hdf['myname'])109 entry = dbBack.getReviewerEntry(reviewID, data['myname']) 115 110 if entry != None: 116 req.hdf['canivote'] = 1117 req.hdf['myvote'] = entry.Vote118 else: 119 req.hdf['canivote'] = 0111 data['canivote'] = 1 112 data['myvote'] = entry.Vote 113 else: 114 data['canivote'] = 0 120 115 121 116 #display vote summary only if I have voted or am the author/manager, or if the review is "Ready for inclusion" or "Closed 122 req.hdf['viewvotesummary'] = 0123 if req.hdf['author'] == req.hdf['myname'] or req.hdf['manager'] == '1' or (dbBack.getReviewerEntry(reviewID, req.hdf['myname']) != None and dbBack.getReviewerEntry(reviewID, req.hdf['myname']).Vote != '-1') or req.hdf['status']=="Closed" or req.hdf['status']=="Ready for inclusion":124 req.hdf['viewvotesummary'] = 1125 else: 126 req.hdf['viewvotesummary'] = 0117 data['viewvotesummary'] = 0 118 if data['author'] == data['myname'] or data['manager'] == '1' or (dbBack.getReviewerEntry(reviewID, data['myname']) != None and dbBack.getReviewerEntry(reviewID, data['myname']).Vote != '-1') or data['status']=="Closed" or data['status']=="Ready for inclusion": 119 data['viewvotesummary'] = 1 120 else: 121 data['viewvotesummary'] = 0 127 122 128 123 rvs = [] # reviewer/vote pairs … … 133 128 # if we are the author, list who has voted and who has not. 134 129 # if we are neither, list the users who are participating in this review. 135 if req.hdf['manager'] == '1':130 if data['manager'] == '1': 136 131 for reviewer in reviewers: 137 132 newrvpair.append(reviewer.Reviewer) … … 159 154 newrvpair = [] 160 155 161 req.hdf['rvs'] = rvs162 req.hdf['rvsLength'] = len(rvs)156 data['rvs'] = rvs 157 data['rvsLength'] = len(rvs) 163 158 164 159 165 160 # execute based on URL arguments 166 161 if req.args.get('Vote') == 'yes': 167 self.vote("1", reviewID, req )162 self.vote("1", reviewID, req, data['myname']) 168 163 if req.args.get('Vote') == 'no': 169 self.vote("0", reviewID, req )164 self.vote("0", reviewID, req, data['myname']) 170 165 171 166 # process state (Open for review, ready for inclusion, etc.) change by manager … … 175 170 176 171 if req.args.get('Close') == '1': 177 self.close_review(reviewID, req )172 self.close_review(reviewID, req, data['manager']) 178 173 179 174 if req.args.get('Inclusion') == '1': 180 175 self.submit_for_inclusion(reviewID, req) 181 176 182 add_stylesheet(req, 'common/css/code.css')177 add_stylesheet(req, 'common/css/code.css') 183 178 add_stylesheet(req, 'common/css/browser.css') 184 return 'peerReviewView.cs', None 179 180 data['cycle'] = itertools.cycle 181 182 return 'peerReviewView.html', data, None 185 183 186 184 # ITemplateProvider methods … … 200 198 # to vote, change the vote type in the review entry struct in the database 201 199 # and reload the page. 202 def vote(self, type, number, req ):203 db = self.env.get_db_cnx() 204 dbBack = dbBackend(db) 205 reviewEntry = dbBack.getReviewerEntry(number, req.hdf['myname'])200 def vote(self, type, number, req, myname): 201 db = self.env.get_db_cnx() 202 dbBack = dbBackend(db) 203 reviewEntry = dbBack.getReviewerEntry(number, myname) 206 204 if reviewEntry != None: 207 205 reviewEntry.Vote = type … … 225 223 review.Status = "Open for review" 226 224 review.save(db) 227 req.redirect( req.hdf['trac.href.peerReviewView']+ "?Review=" + reviewID)225 req.redirect(self.env.href.peerReviewView() + "?Review=" + reviewID) 228 226 229 227 # If it is confirmed that the user is the author of this review and they … … 238 236 review.Status = "Ready for inclusion" 239 237 review.save(db) 240 req.redirect( req.hdf['trac.href.peerReviewView']+ "?Review=" + number)238 req.redirect(self.env.href.peerReviewView() + "?Review=" + number) 241 239 242 240 # If the user is confirmed to be the author or manager and tries to close 243 241 # this review, close it by changing the status of the review to "Closed." 244 def close_review(self, number, req ):242 def close_review(self, number, req, manager): 245 243 db = self.env.get_db_cnx() 246 244 dbBack = dbBackend(db) 247 245 review = dbBack.getCodeReviewsByID(number) 248 246 # this option available if you are the author or manager of this code review 249 if review.Author == util.get_reporter_id(req) or req.hdf('Manager') == '1':247 if review.Author == util.get_reporter_id(req) or manager == 1: 250 248 review.Status = "Closed" 251 249 review.save(db) 252 req.redirect( req.hdf['trac.href.peerReviewView']+ "?Review=" + number)250 req.redirect(self.env.href.peerReviewView() + "?Review=" + number) 253 251 254 252 # It has already been confirmed that this user is a manager, so this routine … … 260 258 review.Status = type 261 259 review.save(db) 262 req.redirect( req.hdf['trac.href.peerReviewView']+ "?Review=" + number)260 req.redirect(self.env.href.peerReviewView() + "?Review=" + number) 263 261
