Changeset 3292

Show
Ignore:
Timestamp:
02/29/08 05:16:06 (11 months ago)
Author:
etienne
Message:

Added a page to display informations on the builder

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • tracbuildbotintegration/trunk/tracbb/tracbb.py

    r3289 r3292  
    44from trac.util import Markup, TracError 
    55from trac.util.text import to_unicode 
     6import re 
    67 
    78import xmlrpclib, pkg_resources 
     
    4950        # IRequestHandler methods 
    5051        def match_request(self, req): 
    51                 return req.path_info == '/buildbot' 
     52                match = re.match(r'/buildbot(/([^\/]*))?(/(\d+))?$', req.path_info) 
     53                if match: 
     54                        if match.group(2): 
     55                                req.args['builder'] = match.group(2) 
     56                                if match.group(4): 
     57                                        req.args['buildnum'] = match.group(4) 
     58                        return True 
     59                return False 
    5260 
    53         def get_builders(self): 
     61 
     62 
     63        def get_builders(self, req): 
    5464                server = None 
    5565                try: 
     
    6373                        build = { 'name' : builder, 
    6474                                'status' : server.getStatus(builder), 
    65                                 'url' : self.get_builder_url(builder), 
     75                                'url' : req.href.buildbot(builder), 
    6676                                'lastbuild' : lastbuild[1], 
    6777                                'lastbuildurl' : self.get_build_url(builder, lastbuild[1]) 
     
    7181                return ret 
    7282 
     83        def get_last_builds(self, builder): 
     84                server = None 
     85                builds = None 
     86                try: 
     87                        server = self.get_server() 
     88                        builds = server.getLastBuilds(builder, 5) 
     89                except: 
     90                        raise TracError("Can't get builder %s on url %s" % (builder, self.get_xmlrpc_url())) 
     91                #last build first 
     92                builds.reverse() 
     93                ret = [] 
     94                for build in  builds: 
     95                        thisbuild = { 'status' : build[5], 
     96                                'number' : build[1], 
     97                                'url' : self.get_build_url(builder, build[1]) 
     98                                } 
     99                        ret.append(thisbuild) 
     100 
     101                return ret 
     102 
     103 
    73104 
    74105        def process_request(self, req): 
    75                 add_stylesheet(req, 'trackbb/trackbb.css') 
     106                if not req.args.has_key('builder'): 
     107                        req.hdf['title'] = 'BuildBot' 
    76108 
    77                 req.hdf['title'] = 'BuildBot' 
    78                 req.hdf['bb.baseLink'] = self.env.href.buildbot() 
     109                        req.hdf['bb.builders'] = self.get_builders(req) 
    79110 
    80                 req.hdf['bb.builders'] = self.get_builders() 
    81  
    82                 return 'tracbb_overview.cs', None 
     111                        return 'tracbb_overview.cs', None 
     112                else: 
     113                        builder = req.args['builder'] 
     114                        builds = self.get_last_builds(builder) 
     115                        req.hdf['title'] = 'Builder ' + builder 
     116                        req.hdf['bb.builder'] = builder 
     117                        req.hdf['bb.builds'] = builds 
     118                        return 'tracbb_builder.cs', None