Fixed issue with company details if its name has unicode chars

Also:
* fixed case of company name
* inner decorator functions are renamed to simplify stack trace analysis

Fixes bug 1202169

Change-Id: Idd7212b838fb3ae88228d513a24bf1d104d2b617
This commit is contained in:
Ilya Shakhat 2013-07-17 16:52:31 +04:00
parent b3bfb7b7f2
commit 31101fa618
3 changed files with 14 additions and 13 deletions

View File

@ -80,7 +80,7 @@ class CachedMemoryStorage(MemoryStorage):
def get_record_ids_by_companies(self, companies):
return self._get_record_ids_from_index(
map(self._get_company_name, companies),
map(self.get_original_company_name, companies),
self.company_index)
def get_record_ids_by_launchpad_ids(self, launchpad_ids):
@ -97,7 +97,7 @@ class CachedMemoryStorage(MemoryStorage):
for i in record_ids:
yield self.records[i]
def _get_company_name(self, company_name):
def get_original_company_name(self, company_name):
normalized = company_name.lower()
if normalized not in self.company_name_mapping:
raise Exception('Unknown company name %s' % company_name)

View File

@ -203,7 +203,7 @@
return index + "=" + val;
}).join("&");
return uri + "?" + str;
return (str == "")? uri: uri + "?" + str;
}
function make_std_options() {

View File

@ -142,7 +142,7 @@ def record_filter(ignore=None, use_default=True):
def decorator(f):
@functools.wraps(f)
def decorated_function(*args, **kwargs):
def record_filter_decorated_function(*args, **kwargs):
vault = get_vault()
memory_storage = vault['memory_storage']
@ -188,7 +188,7 @@ def record_filter(ignore=None, use_default=True):
kwargs['records'] = memory_storage.get_records(record_ids)
return f(*args, **kwargs)
return decorated_function
return record_filter_decorated_function
return decorator
@ -196,7 +196,7 @@ def record_filter(ignore=None, use_default=True):
def aggregate_filter():
def decorator(f):
@functools.wraps(f)
def decorated_function(*args, **kwargs):
def aggregate_filter_decorated_function(*args, **kwargs):
metric_param = (flask.request.args.get('metric') or
get_default('metric'))
@ -211,7 +211,7 @@ def aggregate_filter():
kwargs['metric_filter'] = metric_filter
return f(*args, **kwargs)
return decorated_function
return aggregate_filter_decorated_function
return decorator
@ -219,14 +219,14 @@ def aggregate_filter():
def exception_handler():
def decorator(f):
@functools.wraps(f)
def decorated_function(*args, **kwargs):
def exception_handler_decorated_function(*args, **kwargs):
try:
return f(*args, **kwargs)
except Exception as e:
LOG.debug(e)
flask.abort(404)
return decorated_function
return exception_handler_decorated_function
return decorator
@ -234,7 +234,7 @@ def exception_handler():
def templated(template=None):
def decorator(f):
@functools.wraps(f)
def decorated_function(*args, **kwargs):
def templated_decorated_function(*args, **kwargs):
vault = get_vault()
template_name = template
@ -270,7 +270,7 @@ def templated(template=None):
return flask.render_template(template_name, **ctx)
return decorated_function
return templated_decorated_function
return decorator
@ -336,7 +336,8 @@ def contribution_details(records, limit=DEFAULT_RECORDS_LIMIT):
@record_filter()
def company_details(company, records):
details = contribution_details(records)
details['company'] = company
details['company'] = (
get_memory_storage().get_original_company_name(company))
return details
@ -486,7 +487,7 @@ def format_launchpad_module_link(module):
@app.template_filter('encode')
def safe_encode(s):
return urllib.quote_plus(s)
return urllib.quote_plus(s.encode('utf-8'))
@app.template_filter('link')