Fetch blink component from crbug. Fixes #480

This commit is contained in:
Eric Bidelman 2017-07-25 18:39:49 +03:00
Родитель b5d53b165f
Коммит 6abd28890d
3 изменённых файлов: 26 добавлений и 4 удалений

Просмотреть файл

@ -26,7 +26,9 @@ import os
import re import re
import sys import sys
import webapp2 import webapp2
import xml.dom.minidom from bs4 import BeautifulSoup
from HTMLParser import HTMLParser
from xml.dom import minidom
# Appengine imports. # Appengine imports.
import cloudstorage import cloudstorage
@ -198,7 +200,7 @@ class HistogramsHandler(webapp2.RequestHandler):
return return
histograms_content = result.content.decode('base64') histograms_content = result.content.decode('base64')
dom = xml.dom.minidom.parseString(histograms_content) dom = minidom.parseString(histograms_content)
# The enums.xml file looks like this: # The enums.xml file looks like this:
# <enum name="FeatureObserver"> # <enum name="FeatureObserver">
@ -243,6 +245,17 @@ class FeatureHandler(common.ContentHandler):
param = int(param) param = int(param)
return param return param
def __get_blink_component_from_bug(self, blink_components, bug_url):
if blink_components[0] == models.BlinkComponent.DEFAULT_COMPONENT and bug_url:
result = urlfetch.fetch(bug_url)
if result.status_code == 200:
soup = BeautifulSoup(result.content, 'html.parser')
components = soup.find_all(string=re.compile('^Blink'))
h = HTMLParser()
return [h.unescape(unicode(c)) for c in components]
return blink_components
def get(self, path, feature_id=None): def get(self, path, feature_id=None):
user = users.get_current_user() user = users.get_current_user()
if user is None: if user is None:
@ -377,6 +390,13 @@ class FeatureHandler(common.ContentHandler):
feature.sample_links = sample_links feature.sample_links = sample_links
feature.search_tags = search_tags feature.search_tags = search_tags
else: else:
# Check bug for existing blink component(s) used to label the bug. If
# found, use the first component name instead of the generic "Blink" name.
try:
blink_components = self.__get_blink_component_from_bug(blink_components, bug_url)
except Exception:
pass
feature = models.Feature( feature = models.Feature(
category=int(self.request.get('category')), category=int(self.request.get('category')),
name=self.request.get('name'), name=self.request.get('name'),

Просмотреть файл

@ -11,7 +11,8 @@
"deps": "rm -rf static/bower_components && bower install && pip install -t lib -r requirements.txt", "deps": "rm -rf static/bower_components && bower install && pip install -t lib -r requirements.txt",
"lint": "gulp lint", "lint": "gulp lint",
"build": "gulp", "build": "gulp",
"deploy": "./scripts/deploy_site.sh" "deploy": "./scripts/deploy_site.sh",
"start": "./scripts/start_server.sh"
}, },
"repository": { "repository": {
"type": "git", "type": "git",

Просмотреть файл

@ -1 +1,2 @@
Django==1.4 Django==1.4
beautifulsoup4