Merge lp:~davidc3/developer-ubuntu-com/translations-dashboard into lp:developer-ubuntu-com

Proposed by David Callé on 2015-06-29
Status: Merged
Approved by: Michael Hall on 2015-09-04
Approved revision: 126
Merged at revision: 142
Proposed branch: lp:~davidc3/developer-ubuntu-com/translations-dashboard
Merge into: lp:developer-ubuntu-com
Diff against target: 175 lines (+108/-4)
7 files modified
developer_portal/urls.py (+4/-0)
locale/developer_portal.pot (+19/-4)
templates/translations_dashboard.html (+38/-0)
translations_dashboard/admin.py (+3/-0)
translations_dashboard/models.py (+3/-0)
translations_dashboard/tests.py (+3/-0)
translations_dashboard/views.py (+38/-0)
To merge this branch: bzr merge lp:~davidc3/developer-ubuntu-com/translations-dashboard
Reviewer Review Type Date Requested Status
Daniel Holbach (community) 2015-06-29 Approve on 2015-07-29
Review via email: mp+263230@code.launchpad.net

Commit Message

Add a translations dashboard

Description of the Change

Add a translations dashboard to keep track of pages updates and translations requirements.

https://developer.ubuntu.com/translations-dashboard/

To post a comment you must log in.
Daniel Holbach (dholbach) wrote :

Great work!

review: Approve
126. By David Callé on 2015-09-04

Merge trunk, resolve conflicts

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'developer_portal/urls.py'
2--- developer_portal/urls.py 2015-02-05 14:24:04 +0000
3+++ developer_portal/urls.py 2015-09-04 13:12:51 +0000
4@@ -39,3 +39,7 @@
5 urlpatterns += patterns('webapp_creator.views',
6 url(r'^webapp-generator/$', 'webapp', name='webapp'),
7 )
8+
9+urlpatterns += patterns('translations_dashboard.views',
10+ url(r'^translations-dashboard/$', 'translations_dashboard', name='translations_dashboard'),
11+)
12
13=== modified file 'locale/developer_portal.pot'
14--- locale/developer_portal.pot 2015-09-01 15:59:07 +0000
15+++ locale/developer_portal.pot 2015-09-04 13:12:51 +0000
16@@ -36,10 +36,12 @@
17 msgstr ""
18
19 #: developer_portal/settings.py:187 developer_portal/settings.py:195
20+#: templates/translations_dashboard.html:12
21 msgid "English"
22 msgstr ""
23
24 #: developer_portal/settings.py:188 developer_portal/settings.py:202
25+#: templates/translations_dashboard.html:13
26 msgid "Simplified Chinese"
27 msgstr ""
28
29@@ -200,6 +202,23 @@
30 msgid "API Docs:"
31 msgstr ""
32
33+#: templates/translations_dashboard.html:6
34+msgid "Translations dashboard"
35+msgstr ""
36+
37+#: templates/translations_dashboard.html:7
38+msgid "A simple dashboard to keep track of updates between languages."
39+msgstr ""
40+
41+#: templates/translations_dashboard.html:11
42+#: templates/zinnia/entry_list.html:23
43+msgid "Page"
44+msgstr ""
45+
46+#: templates/translations_dashboard.html:30
47+msgid "Not available"
48+msgstr ""
49+
50 #: templates/webapp.html:6
51 msgid "Create your Webapp package"
52 msgstr ""
53@@ -414,10 +433,6 @@
54 msgid "Author"
55 msgstr ""
56
57-#: templates/zinnia/entry_list.html:23
58-msgid "Page"
59-msgstr ""
60-
61 #: templates/zinnia/entry_list.html:32
62 #, python-format
63 msgid "Category archives: %(category)s"
64
65=== added file 'templates/translations_dashboard.html'
66--- templates/translations_dashboard.html 1970-01-01 00:00:00 +0000
67+++ templates/translations_dashboard.html 2015-09-04 13:12:51 +0000
68@@ -0,0 +1,38 @@
69+{% extends "base.html" %}
70+{% load i18n static %}
71+
72+{% block content %}
73+<div class="row">
74+ <h2>{% trans "Translations dashboard" %}</h2>
75+ <p>{% trans "A simple dashboard to keep track of updates between languages." %}</p>
76+ <table>
77+ <thead>
78+ <tr>
79+ <th>{% trans "Page" %}</th>
80+ <th>{% trans "English" %}</th>
81+ <th>{% trans "Simplified Chinese" %}</th>
82+ </tr>
83+ </thead>
84+ <tbody
85+ {% for page in cms_pages %}
86+ <tr>
87+
88+ <td style="text-align:left;width:40%;"><a href="/{{ page.path }}">{{ page.title }}</a></td>
89+ <td style="text-align:left;">{{ page.en }}</td>
90+ {% if page.zh_cn > page.en %}
91+ <td style="text-align:left;background-color:#60ab5d;color:#fff;">
92+ {% else %}
93+ <td style="text-align:left;background-color:#f95e5d;color:#fff;">
94+ {% endif %}
95+ {% if page.zh_cn %}
96+ {{ page.zh_cn }}
97+ {% else %}
98+ <span style="color:lightgrey">{% trans "Not available" %}</span>
99+ {% endif %}
100+ </td>
101+ </tr>
102+ {% endfor %}
103+ </tbody>
104+ </table>
105+</div>
106+{% endblock content %}
107
108=== added directory 'translations_dashboard'
109=== added file 'translations_dashboard/__init__.py'
110=== added file 'translations_dashboard/admin.py'
111--- translations_dashboard/admin.py 1970-01-01 00:00:00 +0000
112+++ translations_dashboard/admin.py 2015-09-04 13:12:51 +0000
113@@ -0,0 +1,3 @@
114+from django.contrib import admin
115+
116+# Register your models here.
117
118=== added file 'translations_dashboard/models.py'
119--- translations_dashboard/models.py 1970-01-01 00:00:00 +0000
120+++ translations_dashboard/models.py 2015-09-04 13:12:51 +0000
121@@ -0,0 +1,3 @@
122+from django.db import models
123+
124+# Create your models here.
125
126=== added file 'translations_dashboard/tests.py'
127--- translations_dashboard/tests.py 1970-01-01 00:00:00 +0000
128+++ translations_dashboard/tests.py 2015-09-04 13:12:51 +0000
129@@ -0,0 +1,3 @@
130+from django.test import TestCase
131+
132+# Create your tests here.
133
134=== added file 'translations_dashboard/views.py'
135--- translations_dashboard/views.py 1970-01-01 00:00:00 +0000
136+++ translations_dashboard/views.py 2015-09-04 13:12:51 +0000
137@@ -0,0 +1,38 @@
138+from django.shortcuts import render_to_response
139+from django.template import RequestContext
140+from django.views.decorators.cache import never_cache
141+from cms.models import CMSPlugin
142+
143+
144+def get_pages():
145+ dashboard_data = []
146+ known_paths = []
147+ for plugin_change in CMSPlugin.objects.filter(
148+ plugin_type__regex='TextPlugin|RawHtmlPlugin').order_by(
149+ '-changed_date'):
150+ date = plugin_change.changed_date
151+ lang = plugin_change.language.replace('-', '_')
152+ page = plugin_change.placeholder.page
153+ path = page.get_path()
154+ if path not in known_paths:
155+ known_paths.append(path)
156+ dashboard_data.append({'path': path})
157+ for p in dashboard_data:
158+ if p['path'] == path:
159+ p['title'] = page.get_title()
160+ if p.get(lang):
161+ if date > p[lang]:
162+ p[lang] = date
163+ else:
164+ p[lang] = date
165+ dashboard_data = list(reversed(sorted(
166+ dashboard_data, key=lambda k: k['en'])))
167+ return dashboard_data
168+
169+
170+@never_cache
171+def translations_dashboard(request):
172+ return render_to_response(
173+ 'translations_dashboard.html',
174+ {'cms_pages': get_pages()},
175+ context_instance=RequestContext(request))

Subscribers

People subscribed via source and target branches