root / api_diffs / stats_api.diff @ 14:dfa5d639ed9b
History | View | Annotate | Download (2.5 kB)
1 |
class StatsHandler(BaseHandler):
|
---|---|
2 |
allowed_methods = ('GET', ) |
3 |
|
4 |
def read(self, request, project_slug, resource_slug, |
5 |
lang_code=None, api_version=1): |
6 |
""" |
7 |
This is an API handler to display translation statistics for individual |
8 |
resources. |
9 |
""" |
10 |
if api_version == 2: |
11 |
return self._get_stats(request=request, pslug=project_slug, |
12 |
rslug=resource_slug, lang_code=lang_code) |
13 |
|
14 |
def _get_stats(self, request, pslug, rslug, lang_code): |
15 |
try: |
16 |
resource = Resource.objects.get(project__slug=pslug, slug=rslug) |
17 |
except Resource.DoesNotExist, e: |
18 |
logger.debug( |
19 |
"Resource %s.%s requested, but it does not exist" % (pslug, rslug), |
20 |
exc_info=True |
21 |
) |
22 |
return rc.NOT_FOUND |
23 |
language = None |
24 |
if lang_code is not None: |
25 |
try: |
26 |
language = Language.objects.by_code_or_alias(lang_code) |
27 |
except Language.DoesNotExist, e: |
28 |
logger.debug( |
29 |
"Language %s was requested, but it does not exist." % lang_code, |
30 |
exc_info=True |
31 |
) |
32 |
return BAD_REQUEST("Unknown language code %s" % lang_code) |
33 |
|
34 |
stats = RLStats.objects.by_resource(resource) |
35 |
if language is not None: |
36 |
stat = stats.by_language(language)[0] |
37 |
return { |
38 |
'completed': '%s%%' % stat.translated_perc, |
39 |
'translated_entities': stat.translated, |
40 |
'translated_words': stat.translated_wordcount, |
41 |
'untranslated_entities': stat.untranslated, |
42 |
'untranslated_words': stat.untranslated_wordcount, |
43 |
'last_update': stat.last_update, |
44 |
'last_commiter': stat.last_committer.username if stat.last_committer else '', |
45 |
} |
46 |
# statistics requested for all languages |
47 |
res = {} |
48 |
for stat in stats: |
49 |
res[stat.language.code] = { |
50 |
'completed': '%s%%' % stat.translated_perc, |
51 |
'translated_entities': stat.translated, |
52 |
'translated_words': stat.translated_wordcount, |
53 |
'untranslated_entities': stat.untranslated, |
54 |
'untranslated_words': stat.untranslated_wordcount, |
55 |
'last_update': stat.last_update, |
56 |
'last_commiter': stat.last_committer.username if stat.last_committer else '', |
57 |
} |
58 |
return res |
59 |
|