%def name="span(value, title)">${value}%def>
<%def name="format(json, base='')">
% if 'children' in json:
% for label, child in json['children']:
% if 'value' in child and ('missingFile' in child['value'] or 'obsoleteFile' in child['value']):
${span(label, base + label)}
% else:
${span(label, base + label)}
% if 'value' in child:
<%
from xml.sax.saxutils import escape
v = child['value']
# errors used be strings, and are now arrays, support both
if 'error' in v and v['error']:
errors = v['error']
if not isinstance(errors, list):
errors = [errors]
errors = map(escape, errors)
else:
errors = []
missings = ('missingEntity' in v and v['missingEntity']) or []
obsoletes = ('obsoleteEntity' in v and v ['obsoleteEntity']) or []
entities = missings + obsoletes
entities.sort()
cls = ['obsolete','missing']
out = [('error', e) for e in errors] + [(cls[e in missings], e) for e in entities]
%>
% if len(out):
% for cls, entity in out:
${entity}
% endfor
% endif
% endif
% if 'children' in child:
${format(child, base + label + '/')}
% endif
% endif
% endfor
% endif
%def>
Comparison for ${build['app']}-${build['locale']} (${build['buildnumber']})
Comparison for ${build['app']}-${build['locale']}
Build ${build['buildnumber']} from ${build['starttime'].ctime()}
<%
total = sum(summary[k] for k in ['changed','unchanged','missing','missingInFiles'] if k in summary)
total_missing = sum(summary[k] for k in ['missing','missingInFiles'] if k in summary)
width = 300
%>
${summary['completion']}% changed, ignoring ${summary['keys']} keys
% if total_missing > 0:
<%
sep = ''
if 'missing' in summary and summary['missing'] != total_missing:
sep = ', '
%>
% if 'missing' in summary and summary['missing'] > 0:
${summary['missing']} entries missing in existing files${sep}
% endif
% if 'missingInFiles' in summary and summary['missingInFiles'] > 0:
${summary['missingInFiles']} entries missing in new files
% endif
% endif
Below you see the files and localizable strings missing and obsolete. The obsolete ones are striked through and grey. The data is organized hierarchically, the full path for a file is available as an tooltip.
${format(result)}