Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(53)

Side by Side Diff: app.py

Issue 12211015: Better unicode output processing. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/chromium-build
Patch Set: Fix Python 2.6 encode keyword error. Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 from __future__ import with_statement 5 from __future__ import with_statement
6 6
7 import datetime 7 import datetime
8 import json 8 import json
9 import logging 9 import logging
10 import os 10 import os
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 # Map(k,v): k=Master, v=Dict of category data 291 # Map(k,v): k=Master, v=Dict of category data
292 self.category_data = {} 292 self.category_data = {}
293 293
294 self.category_count = 0 294 self.category_count = 0
295 self.master = '' 295 self.master = ''
296 self.lastRevisionSeen = None 296 self.lastRevisionSeen = None
297 self.lastMasterSeen = None 297 self.lastMasterSeen = None
298 298
299 @staticmethod 299 @staticmethod
300 def ContentsToHtml(contents): 300 def ContentsToHtml(contents):
301 return ''.join([str(content) for content in contents]) 301 return ''.join(unicode(content).encode('ascii', 'replace')
302 for content in contents)
302 303
303 @property 304 @property
304 def last_row(self): 305 def last_row(self):
305 return self.row_data[self.lastRevisionSeen] 306 return self.row_data[self.lastRevisionSeen]
306 307
307 def SawMaster(self, master): 308 def SawMaster(self, master):
308 self.lastMasterSeen = master 309 self.lastMasterSeen = master
309 assert(self.lastMasterSeen not in self.category_order) 310 assert(self.lastMasterSeen not in self.category_order)
310 self.masters.append(self.lastMasterSeen) 311 self.masters.append(self.lastMasterSeen)
311 self.category_order.setdefault(self.lastMasterSeen, []) 312 self.category_order.setdefault(self.lastMasterSeen, [])
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 363
363 def ParseRow(self, row): 364 def ParseRow(self, row):
364 cells = row.findAll('td', recursive=False) 365 cells = row.findAll('td', recursive=False)
365 # Figure out which row this is. 366 # Figure out which row this is.
366 for attrname, attrvalue in cells[0].attrs: 367 for attrname, attrvalue in cells[0].attrs:
367 if attrname != 'class': 368 if attrname != 'class':
368 continue 369 continue
369 attrvalue = re.sub(r'^(\S+).*', r'\1', attrvalue) 370 attrvalue = re.sub(r'^(\S+).*', r'\1', attrvalue)
370 if attrvalue == 'DevRev': 371 if attrvalue == 'DevRev':
371 revision = cells[0] 372 revision = cells[0]
372 self.SawRevision(revision=revision.findAll('a')[0].contents[0]) 373 self.SawRevision(self.ContentsToHtml(
373 self.SetLink(revlink=revision.findAll('a')[0].attrs[0][1]) 374 revision.findAll('a')[0].contents[0]))
375 self.SetLink(self.ContentsToHtml(revision.findAll('a')[0].attrs[0][1]))
374 nameparts = cells[1].contents 376 nameparts = cells[1].contents
375 self.SetName(who=re.sub(r'^\s+(.*)\s*$', 377 self.SetName(re.sub(r'^\s+(.*)\s*$',
376 r'\1', 378 r'\1',
377 self.ContentsToHtml(nameparts))) 379 self.ContentsToHtml(nameparts)))
378 for i, bs in enumerate(cells[2:]): 380 for i, bs in enumerate(cells[2:]):
379 self.SetStatus(category=self.category_order[self.lastMasterSeen][i], 381 self.SetStatus(self.category_order[self.lastMasterSeen][i],
380 status=str(bs.findAll('table', recursive=False)[0])) 382 self.ContentsToHtml(bs.findAll('table',
383 recursive=False)[0]))
381 if attrvalue == 'DevComment': 384 if attrvalue == 'DevComment':
382 self.SetComment(comment=self.ContentsToHtml(cells[0].contents)) 385 self.SetComment(comment=self.ContentsToHtml(cells[0].contents))
383 if attrvalue == 'DevDetails': 386 if attrvalue == 'DevDetails':
384 self.SetDetail(detail=self.ContentsToHtml(cells[0].contents)) 387 self.SetDetail(detail=self.ContentsToHtml(cells[0].contents))
385 388
386 def Finish(self): 389 def Finish(self):
387 self.row_orderedkeys = sorted(self.row_orderedkeys, key=int, reverse=True) 390 self.row_orderedkeys = sorted(self.row_orderedkeys, key=int, reverse=True)
388 # TODO(cmp): Look for row/master/categories that are unset. If they are 391 # TODO(cmp): Look for row/master/categories that are unset. If they are
389 # at the latest revisions, leave them unset. If they are at 392 # at the latest revisions, leave them unset. If they are at
390 # the earliest revisions, set them to ''. 393 # the earliest revisions, set them to ''.
(...skipping 803 matching lines...) Expand 10 before | Expand all | Expand 10 after
1194 # LKGR JSON. 1197 # LKGR JSON.
1195 { 1198 {
1196 'remoteurl': 1199 'remoteurl':
1197 ('http://build.chromium.org/p/chromium.lkgr/json/builders/Linux%20x64/' 1200 ('http://build.chromium.org/p/chromium.lkgr/json/builders/Linux%20x64/'
1198 'builds/-1?as_text=1'), 1201 'builds/-1?as_text=1'),
1199 'localpath': 1202 'localpath':
1200 'chromium.lkgr/json/builders/Linux%20x64/builds/-1/as_text=1.json', 1203 'chromium.lkgr/json/builders/Linux%20x64/builds/-1/as_text=1.json',
1201 'maxage': 2*60, # 2 mins 1204 'maxage': 2*60, # 2 mins
1202 }, 1205 },
1203 ] 1206 ]
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698