Changeset 3548

Show
Ignore:
Timestamp:
04/24/08 17:36:15 (4 months ago)
Author:
proofek
Message:

peerReviewView templated transformed to genshi

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • peerreviewplugin/branches/2.1-toddler/codereview/peerReviewView.py

    r2578 r3548  
    2222from trac.web.chrome import add_stylesheet 
    2323import time 
     24import itertools 
    2425 
    2526class UserbaseModule(Component): 
     
    4142                                         
    4243    def process_request(self, req): 
     44 
     45        data = {} 
    4346        # check to see if the user is a manager of this page or not 
    4447        if req.perm.has_permission('CODE_REVIEW_MGR'): 
    45             req.hdf['manager'] = 1 
     48            data['manager'] = 1 
    4649        else: 
    4750            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 
    5752 
    5853        # reviewID argument checking 
    5954        reviewID = req.args.get('Review') 
    6055        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', None 
    65  
    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" 
    7065 
    7166        # set up to display the files that are in this review 
     
    8580            returnfiles.append(newfile) 
    8681            newfile = [] 
    87         req.hdf['files'] = returnfiles 
    88         req.hdf['filesLength'] = len(returnfiles) 
    89         req.hdf['reviewID'] = reviewID 
    90  
    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() 
    9287        review = dbBack.getCodeReviewsByID(reviewID) 
    9388        # error if review id does not exist in the database 
    9489        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', None 
     90            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 
    9994 
    10095        # set up the fields that will be displayed on the page 
    101         req.hdf['name'] = review.Name 
    102         req.hdf['notes'] = review.Notes 
    103         req.hdf['status'] = review.Status 
    104         req.hdf['author'] = review.Author 
    105         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())/100 
     96        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 
    112107 
    113108        # 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']) 
    115110        if entry != None: 
    116             req.hdf['canivote'] = 1 
    117             req.hdf['myvote'] = entry.Vote 
    118         else: 
    119             req.hdf['canivote'] = 0 
     111            data['canivote'] = 1 
     112            data['myvote'] = entry.Vote 
     113        else: 
     114            data['canivote'] = 0 
    120115 
    121116        #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'] = 0 
    123         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'] = 1 
    125         else: 
    126             req.hdf['viewvotesummary'] = 0 
     117        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 
    127122 
    128123        rvs = []  # reviewer/vote pairs 
     
    133128        # if we are the author, list who has voted and who has not. 
    134129        # if we are neither, list the users who are participating in this review.  
    135         if req.hdf['manager'] == '1': 
     130        if data['manager'] == '1': 
    136131            for reviewer in reviewers: 
    137132                newrvpair.append(reviewer.Reviewer) 
     
    159154                newrvpair = [] 
    160155 
    161         req.hdf['rvs'] = rvs 
    162         req.hdf['rvsLength'] = len(rvs) 
     156        data['rvs'] = rvs 
     157        data['rvsLength'] = len(rvs) 
    163158 
    164159 
    165160        # execute based on URL arguments 
    166161        if req.args.get('Vote') == 'yes': 
    167             self.vote("1", reviewID, req
     162            self.vote("1", reviewID, req, data['myname']
    168163        if req.args.get('Vote') == 'no': 
    169             self.vote("0", reviewID, req
     164            self.vote("0", reviewID, req, data['myname']
    170165 
    171166        # process state (Open for review, ready for inclusion, etc.) change by manager 
     
    175170 
    176171        if req.args.get('Close') == '1': 
    177             self.close_review(reviewID, req
     172            self.close_review(reviewID, req, data['manager']
    178173 
    179174        if req.args.get('Inclusion') == '1': 
    180175            self.submit_for_inclusion(reviewID, req) 
    181176 
    182        add_stylesheet(req, 'common/css/code.css') 
     177        add_stylesheet(req, 'common/css/code.css') 
    183178        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 
    185183                 
    186184    # ITemplateProvider methods 
     
    200198    # to vote, change the vote type in the review entry struct in the database 
    201199    # 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
    206204        if reviewEntry != None: 
    207205            reviewEntry.Vote = type 
     
    225223                review.Status = "Open for review" 
    226224            review.save(db) 
    227         req.redirect(req.hdf['trac.href.peerReviewView'] + "?Review=" + reviewID) 
     225        req.redirect(self.env.href.peerReviewView() + "?Review=" + reviewID) 
    228226             
    229227    # If it is confirmed that the user is the author of this review and they 
     
    238236                review.Status = "Ready for inclusion" 
    239237                review.save(db) 
    240                 req.redirect(req.hdf['trac.href.peerReviewView'] + "?Review=" + number) 
     238                req.redirect(self.env.href.peerReviewView() + "?Review=" + number) 
    241239 
    242240    # If the user is confirmed to be the author or manager and tries to close 
    243241    # 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): 
    245243        db = self.env.get_db_cnx() 
    246244        dbBack = dbBackend(db) 
    247245        review = dbBack.getCodeReviewsByID(number) 
    248246        # 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
    250248            review.Status = "Closed" 
    251249            review.save(db) 
    252             req.redirect(req.hdf['trac.href.peerReviewView'] + "?Review=" + number) 
     250            req.redirect(self.env.href.peerReviewView() + "?Review=" + number) 
    253251             
    254252    # It has already been confirmed that this user is a manager, so this routine 
     
    260258        review.Status = type 
    261259        review.save(db) 
    262         req.redirect(req.hdf['trac.href.peerReviewView'] + "?Review=" + number) 
     260        req.redirect(self.env.href.peerReviewView() + "?Review=" + number) 
    263261