Merge lp:~knitzsche/ubuntu-translations/ul10n-custom into lp:~ubuntu-translations-coordinators/ubuntu-translations/ul10n-stats
- ul10n-custom
- Merge into ul10n-stats
Status: | Merged |
---|---|
Approved by: | Kyle Nitzsche |
Approved revision: | 24 |
Merged at revision: | 24 |
Proposed branch: | lp:~knitzsche/ubuntu-translations/ul10n-custom |
Merge into: | lp:~ubuntu-translations-coordinators/ubuntu-translations/ul10n-stats |
Diff against target: |
2933 lines (+2009/-565) 16 files modified
common/css/light.css (+321/-0) common/templates/custom_blacklisted_file.py (+119/-0) common/templates/custom_blacklisted_priority.py (+119/-0) common/templates/custom_report.py (+128/-0) common/templates/custom_src_excluded.py (+123/-0) common/templates/custom_src_included.py (+119/-0) common/templates/html_report_template.py (+13/-13) common/utils.py (+13/-2) config/blacklist.conf (+0/-423) config/blacklist.lucid.conf (+141/-0) config/blacklist.maverick.conf (+423/-0) config/settings.conf (+1/-1) ubuntu-translations-stats.py (+182/-57) ul10n_stats/ul10n_custom.py (+4/-2) ul10n_stats/ul10n_iso_pots_get.py (+31/-35) ul10n_stats/ul10n_stats_calc.py (+272/-32) |
To merge this branch: | bzr merge lp:~knitzsche/ubuntu-translations/ul10n-custom |
Related bugs: |
Commit message
Description of the change
a whole bunch of changes described in bzr log and in person. overview: custom stats optionally derive from build manifest, custom stats have src pkgs in and out links/html pages and blacklisted file and black listed priority links/html pages.
Kyle Nitzsche (knitzsche) wrote : | # |
David Planella (dpm) wrote : | # |
Thanks for the great work on this Kyle. My comments:
• I'd strongly suggest that the README file stays. I can assure I'll need it when in two weeks time I no longer remember what the script does :)
• Why add new files for each custom template type instead of simply adding new variables containing the templates in html_report_
• In ubuntu-
• In ubuntu-
• In the get_src_
>>> pkgs = map(lambda a: a.strip(), open("bla"
>>> import apt_pkg
>>> apt_pkg.init()
>>> sources = apt_pkg.
>>> sources.Restart()
>>> for pkg in pkgs:
... while sources.
... print sources.Package
(Credit to dholbach for showing me this some time ago)
• I'd suggest using the format() method instead of things such as 'print "text (" + variable + ")"' - e.g. "text ({1})".
• I'd also suggest using the logging methods to display info or debugging text on the terminal
• In ul10n_stats/
f_ = codecs.
f_.write(
f_.close()
• When merging, please take into account the changes in trunk that should stay: mainly the html + css cleanup and adaptation of the table to the Light theme, the logging mechanism, the new classes for language operations, and the bugfix for the language ordering in the report.
• As the original script is growing to be a full-fledged project, I think we should look into adopting some minimal coding conventions. I would suggest https:/
Thanks!
Kyle Nitzsche (knitzsche) wrote : | # |
On 10/06/2010 12:01 PM, David Planella wrote:
> Thanks for the great work on this Kyle. My comments:
>
> • I'd strongly suggest that the README file stays. I can assure I'll need it when in two weeks time I no longer remember what the script does :)
>
this was an error. add it back please.
> • Why add new files for each custom template type instead of simply adding new variables containing the templates in html_report_
>
to keep ubuntu stuff and custom stuff separated. and to keep these files
shortish and easier to edit.
> • In ubuntu-
>
that's intentional and relates by the new support for release-specific
blacklist. that is, the default is determined by the config/settings
distro_codename field. you only use this option if you want to use a
different file that you specify.
> • In ubuntu-
>
as per the above comment, by default the blacklist for the release in
settings.conf is used. I am agnostic as to the best way to specify using
no 'file' blacklist.
> • In the get_src_
>
I'll take a look at this point further - seems right.
>
>>>> pkgs = map(lambda a: a.strip(), open("bla"
>>>> import apt_pkg
>>>> apt_pkg.init()
>>>> sources = apt_pkg.
>>>> sources.Restart()
>>>> for pkg in pkgs:
>>>>
> ... while sources.
> ... print sources.Package
>
> (Credit to dholbach for showing me this some time ago)
>
> • I'd suggest using the format() method instead of things such as 'print "text (" + variable + ")"' - e.g. "text ({1})".
>
why? it is less intuitive to read (and code) with format.
> • I'd also suggest using the logging methods to display info or debugging text on the terminal
>
sounds good, example please
> • In ul10n_stats/
> f_ = codecs.
> f_.write(
> f_.close()
>
yes, i was going to do that, just didn't get to it.
> • When merging, please take into account the changes in trunk that should stay: mainly the html + css cleanup and adaptation of the table to the Light theme, the logging mechanism, the new classes for language operations, and the bugfix for the language ordering in the report.
>
I am not sure how to do that. you said push a branch and make it a merge
proposal, which is what I did. open to suggestions for how we can both
actively develop the same branch.
> • As the original script is gr...
Kyle Nitzsche (knitzsche) wrote : | # |
So I/we need to work out the conflicts.
Since we don't yet have a working style for that, I am continuing on with development. (I will do whatever is necessary to make this right!)
With the latest commits to my merge proposal branch, I fix a bug and add the following: now all files generated in reports/ start with <basename>, where <basename> is returned by utils.get_
Kyle Nitzsche (knitzsche) wrote : | # |
I should perhaps add that the point of this is that I'd like to be able to run the whole shebang multiple times and have all generated files (and links in html to them) be named according to that execution's target, so that one targeted execution does not overwrite the files of a differently targeted execution.
Kyle Nitzsche (knitzsche) wrote : | # |
ok, forget those two last comments (for the moment), divergence issue prevented push success. I've gotta get this branch proliferation under control. ;)
David Planella (dpm) wrote : | # |
El dc 06 de 10 de 2010 a les 16:37 +0000, en/na Kyle Nitzsche va
escriure:
> On 10/06/2010 12:01 PM, David Planella wrote:
> > Thanks for the great work on this Kyle. My comments:
> >
> > • I'd strongly suggest that the README file stays. I can assure I'll need it when in two weeks time I no longer remember what the script does :)
> >
> this was an error. add it back please.
> > • Why add new files for each custom template type instead of simply adding new variables containing the templates in html_report_
> >
> to keep ubuntu stuff and custom stuff separated. and to keep these files
> shortish and easier to edit.
> > • In ubuntu-
> >
> that's intentional and relates by the new support for release-specific
> blacklist. that is, the default is determined by the config/settings
> distro_codename field. you only use this option if you want to use a
> different file that you specify.
> > • In ubuntu-
> >
> as per the above comment, by default the blacklist for the release in
> settings.conf is used. I am agnostic as to the best way to specify using
> no 'file' blacklist.
I think it is probably redundant. We've already got -b to specify the
blacklist file. If we don't want one, we simply don't specify it neither
on the command line (-b) nor in the config file. So my suggestion would
be to remove it and go for fewer options and saner defaults.
> > • In the get_src_
> >
> I'll take a look at this point further - seems right.
> >
> >>>> pkgs = map(lambda a: a.strip(), open("bla"
> >>>> import apt_pkg
> >>>> apt_pkg.init()
> >>>> sources = apt_pkg.
> >>>> sources.Restart()
> >>>> for pkg in pkgs:
> >>>>
> > ... while sources.
> > ... print sources.Package
> >
> > (Credit to dholbach for showing me this some time ago)
> >
> > • I'd suggest using the format() method instead of things such as 'print "text (" + variable + ")"' - e.g. "text ({1})".
> >
> why? it is less intuitive to read (and code) with format.
I guess it's a matter of style or personal preference. I personally find
it easier to read
'Coordinates: {0}, {1}'.format(
'Coordinates: ' + latitude + ', ' + longitude
In the first form the text is one single unbroken string (where {0} and
{1} could also be replaced by variable names), and it has also the
benefit to provide a translator-friendly string (i.e. not split) in case
it ever needed to be made translatable. Not that it applies in this
script, I just find it good practice.
> > • I'd also suggest using the logging methods to display info or debugging text on the terminal
> >
> sounds good, example please
You can see it in the trunk branch, all files have got logging
statements. E.g.
logger.
Document...
- 24. By Kyle Nitzsche <knitzsche@chroma>
-
the merge between trunk and my custom branch with conlicts resolved
Kyle Nitzsche (knitzsche) wrote : | # |
some of the items David and I discussed as potential changes have not yet been done. These can wait until we get back to a common merged trunk.
I noticed there is a bug (unicode error) in trunk before this merge that causes crash when not obtaining languages from a local file with the -l <file> option.
I handled the merge imperfectly and so my bzr log comments after 24 (there were about 10 more) in my branch are lost. Chock that up to experience. Among the key points are:
* by default (with no args) file blacklisting is enabled AND there are release-specific blacklist files in config/, for example: config/
* -n <name> causes all generated files (html and data files) in reports/ to start with that as basename. in general,
> no args: "<distro_
> -c (for custom) and -n <name>: "<name>" (for example: "thisproject">
> -c (and no -n): "custom-
* -m <file> starts from manifest (and requires -c)
* -d <file> starts from file of gettext domains, one per line
* reports/ includes generated files for a) conversion to html as needed, b) debugging/data analysis, where all files start we basename, as described above
Preview Diff
1 | === modified file 'common/css/light.css' |
2 | --- common/css/light.css 2010-10-01 17:14:00 +0000 |
3 | +++ common/css/light.css 2010-10-07 20:22:40 +0000 |
4 | @@ -2,3 +2,324 @@ |
5 | @import url(layout.css); |
6 | @import url(color.css); |
7 | @import url(typography.css); |
8 | +/* |
9 | +* Original version created for the Ubuntu documentation team |
10 | + by Jeff Schering on Sept 2, 2005 |
11 | +* Hacked on by Matthew East for the Ubuntu documentation team. |
12 | +* Subsequently hacked by David Planella for the translations team. |
13 | + Adapted it to the new Ubuntu 'light' theme, taking bits and pieces |
14 | + from other Ubuntu sister sites, mainly the new wiki theme and the |
15 | + Ubuntu and QA sites. |
16 | + |
17 | +This file is in the Public Domain. |
18 | + |
19 | +*/ |
20 | + |
21 | +/* @import url(screen.css); */ |
22 | + |
23 | +body { |
24 | + background:url('../img/bg_dotted.png') repeat scroll 0 0 transparent; |
25 | + color:#333333; |
26 | + margin:0; |
27 | + font-family:'UbuntuBeta','Bitstream Vera Sans','DejaVu Sans',Tahoma,sans-serif; |
28 | + font-size:12px; |
29 | + line-height:16px; |
30 | +} |
31 | + |
32 | +#ubuntu-header { |
33 | + background-image:url("../img/header_logo.png"); |
34 | + background-repeat:no-repeat; |
35 | + height:32px; |
36 | + left:724px; |
37 | + margin:0; |
38 | + overflow:hidden; |
39 | + padding:0; |
40 | + position:absolute; |
41 | + text-indent:-9999px; |
42 | + top:16px; |
43 | + width:236px; |
44 | +} |
45 | + |
46 | +/* |
47 | +#navbar { |
48 | + -moz-border-radius:0 0 5px 5px; |
49 | + -moz-box-shadow:0 0 5px #555555; |
50 | + background:url("images/light_stripes.png") no-repeat scroll 0 0 #DD4814; |
51 | + font-size:14px; |
52 | + height:64px; |
53 | + line-height:16px; |
54 | + list-style-type:none; |
55 | + margin:0; |
56 | + padding:0 0 0 16px; |
57 | + position:relative; |
58 | + z-index:2; |
59 | +} |
60 | +*/ |
61 | + |
62 | +#intro-message { |
63 | + font-size:16px; |
64 | + line-height: 1.2em; |
65 | +} |
66 | + |
67 | +#navbar { |
68 | + background:url("../img/topnav_divider.png") no-repeat scroll left top transparent !important; |
69 | + height:100%; |
70 | + list-style:none outside none; |
71 | + margin:0 0 0 16px; |
72 | + padding:0; |
73 | +} |
74 | + |
75 | +#navbar a { |
76 | + color:#FFFFFF; |
77 | + display:block; |
78 | + float:left; |
79 | + margin:0; |
80 | + padding:24px 8px; |
81 | + text-decoration:none; |
82 | + text-shadow:0 1px #000000; |
83 | +} |
84 | + |
85 | +#navbar a:hover, #main-menu a.active { |
86 | + background:url("../img/topnav_active_bg.png") no-repeat scroll right top transparent !important; |
87 | +} |
88 | + |
89 | +#navbar li { |
90 | + background:url("../img/topnav_divider.png") no-repeat scroll right top transparent !important; |
91 | + float:left; |
92 | + font-size:14px; |
93 | + height:64px; |
94 | + line-height:16px; |
95 | + margin:0; |
96 | + padding:0; |
97 | +} |
98 | + |
99 | +#container { |
100 | + background-color:#FFFFFF; |
101 | + width: 976px; |
102 | + margin: auto; |
103 | + margin-bottom: 50px; |
104 | + position: relative; |
105 | +} |
106 | + |
107 | +#container .sb-inner { |
108 | + background-color: #fff; |
109 | +} |
110 | + |
111 | +#page { |
112 | + clear: both; |
113 | + margin: 0; |
114 | + padding: 10px 30px; |
115 | +} |
116 | + |
117 | +#content { |
118 | + padding: 12px; |
119 | +} |
120 | + |
121 | +img.ubuntulogo { |
122 | + margin: 20px; |
123 | +} |
124 | + |
125 | +img.rounded { |
126 | + padding: 0; |
127 | + margin: 0; |
128 | +} |
129 | + |
130 | +#topcap { |
131 | + position: absolute; |
132 | + top: 0; |
133 | + left: 0; |
134 | +} |
135 | + |
136 | +#bottomcap { |
137 | + position: absolute; |
138 | + bottom: 0; |
139 | + left: 0; |
140 | +} |
141 | + |
142 | +#header, #container-inner { |
143 | + -moz-border-radius:0 0 5px 5px; |
144 | + /*-moz-box-shadow:0 0 5px #BBBBBB;*/ |
145 | + -moz-box-shadow:0 0 5px #555555; |
146 | +} |
147 | + |
148 | +#header { |
149 | + background: url("../img/header_bg.png") repeat-x scroll left top #DD4814; |
150 | + height: 64px; |
151 | + margin: 0; |
152 | + padding: 0; |
153 | + position: relative; |
154 | +} |
155 | + |
156 | + |
157 | +#header h1 { |
158 | + display: inline; |
159 | +} |
160 | + |
161 | +#header h1 span { |
162 | + display: none; |
163 | +} |
164 | + |
165 | +#logo-floater { |
166 | + width: 225px; |
167 | + float: left; |
168 | + padding: 10px; |
169 | +} |
170 | + |
171 | +#logo-floater h1 { |
172 | + border: none; |
173 | +} |
174 | + |
175 | +#sitename a { |
176 | + position: relative; |
177 | + top: 35px; |
178 | + float: right; |
179 | + font-size: 1.5em; |
180 | + padding-right: 20px; |
181 | + text-decoration: none; |
182 | + color: black; |
183 | +} |
184 | + |
185 | +#sitename span { |
186 | + padding-left: 5px; |
187 | +} |
188 | + |
189 | +#cse-search-box { |
190 | + position: absolute; |
191 | + right: 3px; |
192 | + top: 3px; |
193 | + /* float: right; */ |
194 | + margin: 5px 10px; |
195 | + padding: 0; |
196 | + white-space: nowrap; |
197 | + font-size: 13px; |
198 | +} |
199 | + |
200 | +#cse-search-box form div { |
201 | + display: inline; |
202 | +} |
203 | + |
204 | +.breadcrumbs { |
205 | + padding-bottom: 15px; |
206 | +} |
207 | + |
208 | +ul { |
209 | + margin-left: 5px; |
210 | +} |
211 | + |
212 | +.orderedlist { |
213 | + margin-left: 10px; |
214 | +} |
215 | + |
216 | +.titlepage { |
217 | + padding-right: 1em; |
218 | +} |
219 | + |
220 | +div.toc dt { |
221 | + margin-top: 2px; |
222 | +} |
223 | + |
224 | +div.toc { |
225 | + padding-left: 1em; |
226 | + padding-right: 1em; |
227 | +} |
228 | + |
229 | +/* Links */ |
230 | + |
231 | +a { |
232 | + color:#DD4814; |
233 | + text-decoration:none; |
234 | +} |
235 | + |
236 | +a:hover { |
237 | + color:#DD4814; |
238 | + text-decoration:underline; |
239 | +} |
240 | + |
241 | +/* Headings */ |
242 | +/* |
243 | +h2 { |
244 | + -moz-border-radius-topleft:4px; |
245 | + -moz-border-radius-topright:4px; |
246 | + background:none repeat scroll 0 0 #DAD7D3; |
247 | + margin:0; |
248 | + padding:8px 534px 8px 8px; |
249 | + width:401px; |
250 | +} |
251 | +*/ |
252 | + |
253 | +h1 |
254 | +{ |
255 | + margin: 0; |
256 | + padding: 2px 0; |
257 | + font-weight: normal; |
258 | + color: #f37836; |
259 | + line-height: 1.2em; |
260 | +} |
261 | + |
262 | +h2 |
263 | +{ |
264 | + color: #f37836; |
265 | + font-size: 24px; |
266 | + line-height: 1.2em; |
267 | + font-weight: normal; |
268 | +} |
269 | + |
270 | +h3 { |
271 | + color: #f37836; |
272 | + font-size: 1.3em; |
273 | +} |
274 | +h4 {font-size: 1.1em;} |
275 | +h4, h5, h6 {font-size: 1em;} |
276 | + |
277 | +a img{ |
278 | + border: none; |
279 | +} |
280 | + |
281 | +dl { |
282 | + margin-top: 0em; |
283 | + margin-bottom: 0.5em; |
284 | +} |
285 | + |
286 | +dt { |
287 | + margin-top: 1em; |
288 | +} |
289 | + |
290 | +div.qandaset { |
291 | + margin-left: 1em; |
292 | +} |
293 | + |
294 | +.guimenu, .guimenuitem, .guisubmenu { |
295 | + font-style: italic; |
296 | + color: #6d4c07; /* dark brown */ |
297 | +} |
298 | + |
299 | +.guilabel, .guibutton { |
300 | +} |
301 | + |
302 | +.question { |
303 | + font-weight: bold; |
304 | +} |
305 | + |
306 | +/* accelerator keys in menus */ |
307 | +.accel { |
308 | + text-decoration: underline; |
309 | +} |
310 | + |
311 | +.screen, .programlisting { |
312 | + background-color: #f0eee6; /* light salmon */ |
313 | + border: 1pt solid #C1B496; /* dark tan */ |
314 | + padding: 5px; |
315 | +} |
316 | + |
317 | +#footer { |
318 | + margin: 0; |
319 | + color: #444; |
320 | +} |
321 | + |
322 | +.revhistory { font-size: 0.9em; } |
323 | + |
324 | +#ubuntulinks { |
325 | + text-align: center; |
326 | +} |
327 | + |
328 | +>>>>>>> MERGE-SOURCE |
329 | |
330 | === added file 'common/templates/custom_blacklisted_file.py' |
331 | --- common/templates/custom_blacklisted_file.py 1970-01-01 00:00:00 +0000 |
332 | +++ common/templates/custom_blacklisted_file.py 2010-10-07 20:22:40 +0000 |
333 | @@ -0,0 +1,119 @@ |
334 | +#!/usr/bin/env python |
335 | + |
336 | +# html_report_template - Provides a template to render an HTML page after |
337 | +# Python variable substitution |
338 | +# |
339 | +# Author: David Planella <david.planella@ubuntu.com>, with mods by |
340 | +# Kyle Nitzsche <kyle.nitzsche@canonical.com> |
341 | +# |
342 | +# Copyright (c) 2009, 2010 Canonical Ltd. |
343 | +# |
344 | +# This program is free software: you can redistribute it and/or modify it |
345 | +# under the terms of the GNU General Public License version 3, as published |
346 | +# by the Free Software Foundation. |
347 | +# |
348 | +# This program is distributed in the hope that it will be useful, but |
349 | +# WITHOUT ANY WARRANTY; without even the implied warranties of |
350 | +# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR |
351 | +# PURPOSE. See the GNU General Public License for more details. |
352 | +# |
353 | +# You should have received a copy of the GNU General Public License along |
354 | +# with this program. If not, see <http://www.gnu.org/licenses/>. |
355 | + |
356 | +ubuntu_template = """ |
357 | +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
358 | + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
359 | + |
360 | +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
361 | + <head> |
362 | + <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> |
363 | + <title>Ubuntu %(distro_release)s Languages</title> |
364 | + <link rel="stylesheet" href="css/light.css" type="text/css" /> |
365 | + |
366 | + <script src="http://www.google.com/jsapi" type="text/javascript"></script> |
367 | + <script type="text/javascript"> |
368 | + |
369 | + google.load("visualization", "1", {packages:["table"]}); |
370 | + google.setOnLoadCallback(drawTable); |
371 | + |
372 | + function drawTable() { |
373 | + var table_data = new google.visualization.DataTable(%(blacklisted_file_json)s, 0.6); |
374 | + |
375 | + var table = new google.visualization.Table( |
376 | + document.getElementById('table')); |
377 | + |
378 | + var formatter = new google.visualization.BarFormat({ |
379 | + min: 0, |
380 | + max: 100, |
381 | + width: 100, |
382 | + colorPositive: 'green'}); |
383 | + formatter.format(table_data, 0); // Apply formatter to second column |
384 | + |
385 | + table.draw(table_data, { |
386 | + allowHtml: true, |
387 | + showRowNumber: true, |
388 | + page: 'enable', |
389 | + pageSize: 100}); |
390 | + |
391 | + // google.visualization.events.addListener(table, 'select', function() { |
392 | + // var row = table.getSelection()[0].row; |
393 | + // alert('You selected ' + table_data.getValue(row, 0)); |
394 | + |
395 | + google.visualization.events.addListener(table, 'select', selectHandler); |
396 | + } |
397 | + |
398 | + function selectHandler(e) { |
399 | + var row = table.getSelection()[0].row; |
400 | + //alert('A table row was selected'); |
401 | + alert('A table row was selected' + table_data.getValue(row, 0)); |
402 | + } |
403 | + </script> |
404 | + |
405 | + <style type="text/css"> |
406 | + #report-meta { |
407 | + text-align: right; |
408 | + font-size: small; |
409 | + color: #999; |
410 | + float: right; |
411 | + } |
412 | + |
413 | + #report-meta p { |
414 | + margin: 0; |
415 | + } |
416 | + |
417 | + table {margin-left:auto; margin-right:auto;} |
418 | + </style> |
419 | + </head> |
420 | + |
421 | + <body> |
422 | + <div id="container"> |
423 | + <div id="container-inner" class="container clear-block"> |
424 | + <div id="header"> |
425 | + |
426 | + <h1 id="ubuntu-header"> |
427 | + <a href="https://wiki.ubuntu.com/Translations" title="Canonical OEM Translation Statistics"></a> |
428 | + </h1> |
429 | + </div> |
430 | + |
431 | + <div id="page"> |
432 | + <div id="content"> |
433 | + <div class="titlepage"> |
434 | + <h2 class="title"><a id="id2820777"></a>Custom Project: %(project)s</h2> |
435 | + <h3>Blacklisted through File</h3> |
436 | + <p>The table lists src packages/gettext domains that are excluded from the translation statistics because they were listed in the blacklist file.</p> |
437 | + </div> |
438 | + |
439 | + <div id="table"></div> |
440 | + |
441 | + <div id="footer"> |
442 | + <div id="ubuntulinks"> |
443 | + Last update on %(gen_date)s |
444 | + </div> |
445 | + </div> |
446 | + </div> |
447 | + </div> |
448 | + </div> |
449 | + </body> |
450 | + |
451 | +</html> |
452 | +""" |
453 | |
454 | === added file 'common/templates/custom_blacklisted_file.pyc' |
455 | Binary files common/templates/custom_blacklisted_file.pyc 1970-01-01 00:00:00 +0000 and common/templates/custom_blacklisted_file.pyc 2010-10-07 20:22:40 +0000 differ |
456 | === added file 'common/templates/custom_blacklisted_priority.py' |
457 | --- common/templates/custom_blacklisted_priority.py 1970-01-01 00:00:00 +0000 |
458 | +++ common/templates/custom_blacklisted_priority.py 2010-10-07 20:22:40 +0000 |
459 | @@ -0,0 +1,119 @@ |
460 | +#!/usr/bin/env python |
461 | + |
462 | +# html_report_template - Provides a template to render an HTML page after |
463 | +# Python variable substitution |
464 | +# |
465 | +# Author: David Planella <david.planella@ubuntu.com>, with mods by |
466 | +# Kyle Nitzsche <kyle.nitzsche@canonical.com> |
467 | +# |
468 | +# Copyright (c) 2009, 2010 Canonical Ltd. |
469 | +# |
470 | +# This program is free software: you can redistribute it and/or modify it |
471 | +# under the terms of the GNU General Public License version 3, as published |
472 | +# by the Free Software Foundation. |
473 | +# |
474 | +# This program is distributed in the hope that it will be useful, but |
475 | +# WITHOUT ANY WARRANTY; without even the implied warranties of |
476 | +# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR |
477 | +# PURPOSE. See the GNU General Public License for more details. |
478 | +# |
479 | +# You should have received a copy of the GNU General Public License along |
480 | +# with this program. If not, see <http://www.gnu.org/licenses/>. |
481 | + |
482 | +ubuntu_template = """ |
483 | +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
484 | + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
485 | + |
486 | +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
487 | + <head> |
488 | + <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> |
489 | + <title>Ubuntu %(distro_release)s Languages</title> |
490 | + <link rel="stylesheet" href="css/light.css" type="text/css" /> |
491 | + |
492 | + <script src="http://www.google.com/jsapi" type="text/javascript"></script> |
493 | + <script type="text/javascript"> |
494 | + |
495 | + google.load("visualization", "1", {packages:["table"]}); |
496 | + google.setOnLoadCallback(drawTable); |
497 | + |
498 | + function drawTable() { |
499 | + var table_data = new google.visualization.DataTable(%(blacklisted_priority_json)s, 0.6); |
500 | + |
501 | + var table = new google.visualization.Table( |
502 | + document.getElementById('table')); |
503 | + |
504 | + var formatter = new google.visualization.BarFormat({ |
505 | + min: 0, |
506 | + max: 100, |
507 | + width: 100, |
508 | + colorPositive: 'green'}); |
509 | + formatter.format(table_data, 0); // Apply formatter to second column |
510 | + |
511 | + table.draw(table_data, { |
512 | + allowHtml: true, |
513 | + showRowNumber: true, |
514 | + page: 'enable', |
515 | + pageSize: 100}); |
516 | + |
517 | + // google.visualization.events.addListener(table, 'select', function() { |
518 | + // var row = table.getSelection()[0].row; |
519 | + // alert('You selected ' + table_data.getValue(row, 0)); |
520 | + |
521 | + google.visualization.events.addListener(table, 'select', selectHandler); |
522 | + } |
523 | + |
524 | + function selectHandler(e) { |
525 | + var row = table.getSelection()[0].row; |
526 | + //alert('A table row was selected'); |
527 | + alert('A table row was selected' + table_data.getValue(row, 0)); |
528 | + } |
529 | + </script> |
530 | + |
531 | + <style type="text/css"> |
532 | + #report-meta { |
533 | + text-align: right; |
534 | + font-size: small; |
535 | + color: #999; |
536 | + float: right; |
537 | + } |
538 | + |
539 | + #report-meta p { |
540 | + margin: 0; |
541 | + } |
542 | + |
543 | + table {margin-left:auto; margin-right:auto;} |
544 | + </style> |
545 | + </head> |
546 | + |
547 | + <body> |
548 | + <div id="container"> |
549 | + <div id="container-inner" class="container clear-block"> |
550 | + <div id="header"> |
551 | + |
552 | + <h1 id="ubuntu-header"> |
553 | + <a href="https://wiki.ubuntu.com/Translations" title="Canonical OEM Translation Statistics"></a> |
554 | + </h1> |
555 | + </div> |
556 | + |
557 | + <div id="page"> |
558 | + <div id="content"> |
559 | + <div class="titlepage"> |
560 | + <h2 class="title"><a id="id2820777"></a>Custom Project: %(project)s</h2> |
561 | + <h3>Blacklisted through Priority</h3> |
562 | + <p>The table lists src packages/gettext domains that are excluded from the translation statistics because their LP template has priority that is lower that the blacklist priority cut-off value.</p> |
563 | + </div> |
564 | + |
565 | + <div id="table"></div> |
566 | + |
567 | + <div id="footer"> |
568 | + <div id="ubuntulinks"> |
569 | + Last update on %(gen_date)s |
570 | + </div> |
571 | + </div> |
572 | + </div> |
573 | + </div> |
574 | + </div> |
575 | + </body> |
576 | + |
577 | +</html> |
578 | +""" |
579 | |
580 | === added file 'common/templates/custom_blacklisted_priority.pyc' |
581 | Binary files common/templates/custom_blacklisted_priority.pyc 1970-01-01 00:00:00 +0000 and common/templates/custom_blacklisted_priority.pyc 2010-10-07 20:22:40 +0000 differ |
582 | === added file 'common/templates/custom_report.py' |
583 | --- common/templates/custom_report.py 1970-01-01 00:00:00 +0000 |
584 | +++ common/templates/custom_report.py 2010-10-07 20:22:40 +0000 |
585 | @@ -0,0 +1,128 @@ |
586 | +#!/usr/bin/env python |
587 | + |
588 | +# html_report_template - Provides a template to render an HTML page after |
589 | +# Python variable substitution |
590 | +# |
591 | +# Author: David Planella <david.planella@ubuntu.com>, with mods by |
592 | +# Kyle Nitzsche <kyle.nitzsche@canonical.com> |
593 | +# |
594 | +# Copyright (c) 2009, 2010 Canonical Ltd. |
595 | +# |
596 | +# This program is free software: you can redistribute it and/or modify it |
597 | +# under the terms of the GNU General Public License version 3, as published |
598 | +# by the Free Software Foundation. |
599 | +# |
600 | +# This program is distributed in the hope that it will be useful, but |
601 | +# WITHOUT ANY WARRANTY; without even the implied warranties of |
602 | +# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR |
603 | +# PURPOSE. See the GNU General Public License for more details. |
604 | +# |
605 | +# You should have received a copy of the GNU General Public License along |
606 | +# with this program. If not, see <http://www.gnu.org/licenses/>. |
607 | + |
608 | +ubuntu_template = """ |
609 | +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
610 | + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
611 | + |
612 | +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
613 | + <head> |
614 | + <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> |
615 | + <title>Ubuntu %(distro_release)s Languages</title> |
616 | + <link rel="stylesheet" href="css/light.css" type="text/css" /> |
617 | + <script src="http://www.google.com/jsapi" type="text/javascript"></script> |
618 | + <script type="text/javascript"> |
619 | + |
620 | + google.load("visualization", "1", {packages:["table"]}); |
621 | + google.setOnLoadCallback(drawTable); |
622 | + |
623 | + function drawTable() { |
624 | + var table_data = new google.visualization.DataTable(%(data_json)s, 0.6); |
625 | + |
626 | + var table = new google.visualization.Table( |
627 | + document.getElementById('table_div_langpack')); |
628 | + |
629 | + /* Format the data column containing the translation percentage |
630 | + value: show no decimal digits */ |
631 | + var nr_formatter = new google.visualization.NumberFormat({ |
632 | + fractionDigits: 0}); |
633 | + nr_formatter.format(table_data, 1); |
634 | + |
635 | + /* Format the data column containing the translation percentage |
636 | + value: show a green bar indicating the level of coverage */ |
637 | + var bar_formatter = new google.visualization.BarFormat({ |
638 | + min: 0, |
639 | + max: 100, |
640 | + width: 100, |
641 | + colorPositive: 'green' |
642 | + }); |
643 | + bar_formatter.format(table_data, 1); |
644 | + |
645 | + table.draw(table_data, { |
646 | + allowHtml: true, |
647 | + showRowNumber: true, |
648 | + page: 'enable', |
649 | + pageSize: 100 |
650 | + }); |
651 | + } |
652 | + |
653 | + </script> |
654 | + |
655 | + <style type="text/css"> |
656 | + #report-meta { |
657 | + text-align: right; |
658 | + font-size: small; |
659 | + color: #999; |
660 | + float: right; |
661 | + } |
662 | + |
663 | + #report-meta p { |
664 | + margin: 0; |
665 | + } |
666 | + |
667 | + table {margin-left:auto; margin-right:auto;} |
668 | + </style> |
669 | + </head> |
670 | + |
671 | + <body> |
672 | + <div id="container"> |
673 | + <div id="container-inner" class="container clear-block"> |
674 | + <div id="header"> |
675 | + |
676 | + <h1 id="ubuntu-header"> |
677 | + <a href="https://wiki.ubuntu.com/Translations" title="Canonical OEM Translation Statistics"></a> |
678 | + </h1> |
679 | + </div> |
680 | + |
681 | + <div id="page"> |
682 | + <div id="content"> |
683 | + <div class="titlepage"> |
684 | + <h2 class="title"><a id="id2820777"></a>Custom Project: %(project)s</h2> |
685 | + <h3>Based on Ubuntu %(distro_release)s Translations</h3> |
686 | + <ul> |
687 | + <li><a href="%(basename)s-included.html">Included Src Pkgs</a> that are in the custom project AND in lang packs. This is what the data below is for.</li> |
688 | + |
689 | + <li><a href="%(basename)s-excluded.html">Excluded Src |
690 | +Pkgs</a> that are in the custom project but NOT in lang packs or are excluded |
691 | +through blacklists: <a href="%(basename)s-blacklisted-file.html">file</a> and |
692 | +<a href="%(basename)s-blacklisted-priority.html">LP priority</a> The data below does not include these src pkgs.</li> |
693 | + </ul> |
694 | + </div> |
695 | + |
696 | + <div id="table_div_langpack"></div> |
697 | + |
698 | + <div id="footer"> |
699 | + <div id="ubuntulinks"> |
700 | + <a href="https://wiki.ubuntu.com/Translations/Stats#UbuntuTranslationStatistics">More information on these statistics</a> |
701 | + • |
702 | + Found a bug? <a href="https://bugs.launchpad.net/ubuntu-translations">Report it</a> |
703 | + • |
704 | + Last update on %(gen_date)s |
705 | + </div> |
706 | + </div> |
707 | + </div> |
708 | + </div> |
709 | + </div> |
710 | + </body> |
711 | + |
712 | +</html> |
713 | +""" |
714 | |
715 | === added file 'common/templates/custom_report.pyc' |
716 | Binary files common/templates/custom_report.pyc 1970-01-01 00:00:00 +0000 and common/templates/custom_report.pyc 2010-10-07 20:22:40 +0000 differ |
717 | === added file 'common/templates/custom_src_excluded.py' |
718 | --- common/templates/custom_src_excluded.py 1970-01-01 00:00:00 +0000 |
719 | +++ common/templates/custom_src_excluded.py 2010-10-07 20:22:40 +0000 |
720 | @@ -0,0 +1,123 @@ |
721 | +#!/usr/bin/env python |
722 | + |
723 | +# html_report_template - Provides a template to render an HTML page after |
724 | +# Python variable substitution |
725 | +# |
726 | +# Author: David Planella <david.planella@ubuntu.com>, with mods by |
727 | +# Kyle Nitzsche <kyle.nitzsche@canonical.com> |
728 | +# |
729 | +# Copyright (c) 2009, 2010 Canonical Ltd. |
730 | +# |
731 | +# This program is free software: you can redistribute it and/or modify it |
732 | +# under the terms of the GNU General Public License version 3, as published |
733 | +# by the Free Software Foundation. |
734 | +# |
735 | +# This program is distributed in the hope that it will be useful, but |
736 | +# WITHOUT ANY WARRANTY; without even the implied warranties of |
737 | +# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR |
738 | +# PURPOSE. See the GNU General Public License for more details. |
739 | +# |
740 | +# You should have received a copy of the GNU General Public License along |
741 | +# with this program. If not, see <http://www.gnu.org/licenses/>. |
742 | + |
743 | +ubuntu_template = """ |
744 | +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
745 | + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
746 | + |
747 | +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
748 | + <head> |
749 | + <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> |
750 | + <title>Ubuntu %(distro_release)s Languages</title> |
751 | + <link rel="stylesheet" href="css/light.css" type="text/css" /> |
752 | + |
753 | + <script src="http://www.google.com/jsapi" type="text/javascript"></script> |
754 | + <script type="text/javascript"> |
755 | + |
756 | + google.load("visualization", "1", {packages:["table"]}); |
757 | + google.setOnLoadCallback(drawTable); |
758 | + |
759 | + function drawTable() { |
760 | + var table_data = new google.visualization.DataTable(%(excluded_json)s, 0.6); |
761 | + |
762 | + var table = new google.visualization.Table( |
763 | + document.getElementById('table_excluded')); |
764 | + |
765 | + var formatter = new google.visualization.BarFormat({ |
766 | + min: 0, |
767 | + max: 100, |
768 | + width: 100, |
769 | + colorPositive: 'green'}); |
770 | + formatter.format(table_data, 0); // Apply formatter to second column |
771 | + |
772 | + table.draw(table_data, { |
773 | + allowHtml: true, |
774 | + showRowNumber: true, |
775 | + page: 'enable', |
776 | + pageSize: 100}); |
777 | + |
778 | + // google.visualization.events.addListener(table, 'select', function() { |
779 | + // var row = table.getSelection()[0].row; |
780 | + // alert('You selected ' + table_data.getValue(row, 0)); |
781 | + |
782 | + google.visualization.events.addListener(table, 'select', selectHandler); |
783 | + } |
784 | + |
785 | + function selectHandler(e) { |
786 | + var row = table.getSelection()[0].row; |
787 | + //alert('A table row was selected'); |
788 | + alert('A table row was selected' + table_data.getValue(row, 0)); |
789 | + } |
790 | + </script> |
791 | + |
792 | + <style type="text/css"> |
793 | + #report-meta { |
794 | + text-align: right; |
795 | + font-size: small; |
796 | + color: #999; |
797 | + float: right; |
798 | + } |
799 | + |
800 | + #report-meta p { |
801 | + margin: 0; |
802 | + } |
803 | + |
804 | + table {margin-left:auto; margin-right:auto;} |
805 | + </style> |
806 | + </head> |
807 | + |
808 | + <body> |
809 | + <div id="container"> |
810 | + <div id="container-inner" class="container clear-block"> |
811 | + <div id="header"> |
812 | + |
813 | + <h1 id="ubuntu-header"> |
814 | + <a href="https://wiki.ubuntu.com/Translations" title="Canonical OEM Translation Statistics"></a> |
815 | + </h1> |
816 | + </div> |
817 | + |
818 | + <div id="page"> |
819 | + <div id="content"> |
820 | + <div class="titlepage"> |
821 | + <h2 class="title"><a id="id2820777"></a>Custom Project: %(project)s</h2> |
822 | + <h3>Src Pkgs in Project but not included in Translation Statistics</h3> |
823 | + |
824 | + </div> |
825 | + |
826 | + <div id="table_excluded"></div> |
827 | + |
828 | + <div id="footer"> |
829 | + <div id="ubuntulinks"> |
830 | + <a href="https://wiki.ubuntu.com/Translations/Stats#UbuntuTranslationStatistics">More information on these statistics</a> |
831 | + • |
832 | + Found a bug? <a href="https://bugs.launchpad.net/ubuntu-translations">Report it</a> |
833 | + • |
834 | + Last update on %(gen_date)s |
835 | + </div> |
836 | + </div> |
837 | + </div> |
838 | + </div> |
839 | + </div> |
840 | + </body> |
841 | + |
842 | +</html> |
843 | +""" |
844 | |
845 | === added file 'common/templates/custom_src_excluded.pyc' |
846 | Binary files common/templates/custom_src_excluded.pyc 1970-01-01 00:00:00 +0000 and common/templates/custom_src_excluded.pyc 2010-10-07 20:22:40 +0000 differ |
847 | === added file 'common/templates/custom_src_included.py' |
848 | --- common/templates/custom_src_included.py 1970-01-01 00:00:00 +0000 |
849 | +++ common/templates/custom_src_included.py 2010-10-07 20:22:40 +0000 |
850 | @@ -0,0 +1,119 @@ |
851 | +#!/usr/bin/env python |
852 | + |
853 | +# html_report_template - Provides a template to render an HTML page after |
854 | +# Python variable substitution |
855 | +# |
856 | +# Author: David Planella <david.planella@ubuntu.com>, with mods by |
857 | +# Kyle Nitzsche <kyle.nitzsche@canonical.com> |
858 | +# |
859 | +# Copyright (c) 2009, 2010 Canonical Ltd. |
860 | +# |
861 | +# This program is free software: you can redistribute it and/or modify it |
862 | +# under the terms of the GNU General Public License version 3, as published |
863 | +# by the Free Software Foundation. |
864 | +# |
865 | +# This program is distributed in the hope that it will be useful, but |
866 | +# WITHOUT ANY WARRANTY; without even the implied warranties of |
867 | +# MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR |
868 | +# PURPOSE. See the GNU General Public License for more details. |
869 | +# |
870 | +# You should have received a copy of the GNU General Public License along |
871 | +# with this program. If not, see <http://www.gnu.org/licenses/>. |
872 | + |
873 | +ubuntu_template = """ |
874 | +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
875 | + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
876 | + |
877 | +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
878 | + <head> |
879 | + <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> |
880 | + <title>Ubuntu %(distro_release)s Languages</title> |
881 | + <link rel="stylesheet" href="css/light.css" type="text/css" /> |
882 | + |
883 | + <script src="http://www.google.com/jsapi" type="text/javascript"></script> |
884 | + <script type="text/javascript"> |
885 | + |
886 | + google.load("visualization", "1", {packages:["table"]}); |
887 | + google.setOnLoadCallback(drawTable); |
888 | + |
889 | + function drawTable() { |
890 | + var table_data = new google.visualization.DataTable(%(included_json)s, 0.6); |
891 | + |
892 | + var table = new google.visualization.Table( |
893 | + document.getElementById('table')); |
894 | + |
895 | + var formatter = new google.visualization.BarFormat({ |
896 | + min: 0, |
897 | + max: 100, |
898 | + width: 100, |
899 | + colorPositive: 'green'}); |
900 | + formatter.format(table_data, 0); // Apply formatter to second column |
901 | + |
902 | + table.draw(table_data, { |
903 | + allowHtml: true, |
904 | + showRowNumber: true, |
905 | + page: 'enable', |
906 | + pageSize: 100}); |
907 | + |
908 | + // google.visualization.events.addListener(table, 'select', function() { |
909 | + // var row = table.getSelection()[0].row; |
910 | + // alert('You selected ' + table_data.getValue(row, 0)); |
911 | + |
912 | + google.visualization.events.addListener(table, 'select', selectHandler); |
913 | + } |
914 | + |
915 | + function selectHandler(e) { |
916 | + var row = table.getSelection()[0].row; |
917 | + //alert('A table row was selected'); |
918 | + alert('A table row was selected' + table_data.getValue(row, 0)); |
919 | + } |
920 | + </script> |
921 | + |
922 | + <style type="text/css"> |
923 | + #report-meta { |
924 | + text-align: right; |
925 | + font-size: small; |
926 | + color: #999; |
927 | + float: right; |
928 | + } |
929 | + |
930 | + #report-meta p { |
931 | + margin: 0; |
932 | + } |
933 | + |
934 | + table {margin-left:auto; margin-right:auto;} |
935 | + </style> |
936 | + </head> |
937 | + |
938 | + <body> |
939 | + <div id="container"> |
940 | + <div id="container-inner" class="container clear-block"> |
941 | + <div id="header"> |
942 | + |
943 | + <h1 id="ubuntu-header"> |
944 | + <a href="https://wiki.ubuntu.com/Translations" title="Canonical OEM Translation Statistics"></a> |
945 | + </h1> |
946 | + </div> |
947 | + |
948 | + <div id="page"> |
949 | + <div id="content"> |
950 | + <div class="titlepage"> |
951 | + <h2 class="title"><a id="id2820777"></a>Custom Project: %(project)s</h2> |
952 | + <p>The table lists src packages in the project AND in Ubunutu Language packs. The translation statistics |
953 | + are for these src packages only.</p> |
954 | + </div> |
955 | + |
956 | + <div id="table"></div> |
957 | + |
958 | + <div id="footer"> |
959 | + <div id="ubuntulinks"> |
960 | + Last update on %(gen_date)s |
961 | + </div> |
962 | + </div> |
963 | + </div> |
964 | + </div> |
965 | + </div> |
966 | + </body> |
967 | + |
968 | +</html> |
969 | +""" |
970 | |
971 | === added file 'common/templates/custom_src_included.pyc' |
972 | Binary files common/templates/custom_src_included.pyc 1970-01-01 00:00:00 +0000 and common/templates/custom_src_included.pyc 2010-10-07 20:22:40 +0000 differ |
973 | === modified file 'common/templates/html_report_template.py' |
974 | --- common/templates/html_report_template.py 2010-10-01 17:14:00 +0000 |
975 | +++ common/templates/html_report_template.py 2010-10-07 20:22:40 +0000 |
976 | @@ -35,18 +35,16 @@ |
977 | google.setOnLoadCallback(drawTable); |
978 | |
979 | function drawTable() { |
980 | - var language_table_data = new google.visualization.DataTable( |
981 | - %(languages_json)s, 0.6); |
982 | + var table_data = new google.visualization.DataTable(%(data_json)s, 0.6); |
983 | |
984 | - var language_table = new google.visualization.Table( |
985 | - document.getElementById('stats_table')); |
986 | + var table = new google.visualization.Table( |
987 | + document.getElementById('stats_table')); |
988 | |
989 | /* Format the data column containing the translation percentage |
990 | value: show no decimal digits */ |
991 | var nr_formatter = new google.visualization.NumberFormat({ |
992 | fractionDigits: 0}); |
993 | - |
994 | - nr_formatter.format(language_table_data, 1); |
995 | + nr_formatter.format(table_data, 1); |
996 | |
997 | /* Format the data column containing the translation percentage |
998 | value: show a green bar indicating the level of coverage */ |
999 | @@ -54,16 +52,18 @@ |
1000 | min: 0, |
1001 | max: 100, |
1002 | width: 100, |
1003 | - colorPositive: 'green'}); |
1004 | - |
1005 | - bar_formatter.format(language_table_data, 1); |
1006 | + colorPositive: 'green' |
1007 | + }); |
1008 | + bar_formatter.format(table_data, 1); |
1009 | |
1010 | /* Draw the statistics table */ |
1011 | - language_table.draw(language_table_data, { |
1012 | + |
1013 | + table.draw(table_data, { |
1014 | allowHtml: true, |
1015 | showRowNumber: true, |
1016 | page: 'enable', |
1017 | pageSize: %(languages_supported)s}); |
1018 | + |
1019 | } |
1020 | |
1021 | </script> |
1022 | @@ -78,7 +78,7 @@ |
1023 | <h1 id="ubuntu-header"> |
1024 | <a href="https://wiki.ubuntu.com/Translations" title="Ubuntu Translations"></a> |
1025 | </h1> |
1026 | - |
1027 | + |
1028 | <ul id="navbar"> |
1029 | <li><a href="https://wiki.ubuntu.com/Translations/">Home</a></li> |
1030 | <li><a href="https://wiki.ubuntu.com/Translations/QuickStartGuide">Quickstart</a></li> |
1031 | @@ -88,9 +88,9 @@ |
1032 | <li><a href="https://answers.launchpad.net/ubuntu-translations">Support</a></li> |
1033 | </ul> |
1034 | </div> |
1035 | - |
1036 | + |
1037 | <!-- 2. Main content --> |
1038 | - <div id="content"> |
1039 | + <div id="content"> |
1040 | <h2>Ubuntu %(distro_release)s Translations</h2> |
1041 | <p id="intro-message"> |
1042 | <!-- |
1043 | |
1044 | === modified file 'common/utils.py' |
1045 | --- common/utils.py 2010-09-28 09:17:47 +0000 |
1046 | +++ common/utils.py 2010-10-07 20:22:40 +0000 |
1047 | @@ -55,6 +55,17 @@ |
1048 | |
1049 | return settings |
1050 | |
1051 | +def get_basename(options, settings): |
1052 | + if options.custom: |
1053 | + if options.custom_name is None: |
1054 | + basename = 'custom-{0}-{1}'.format(settings['distro_id'],settings['distro_release']) |
1055 | + else: |
1056 | + basename = '{0}'.format(options.custom_name) |
1057 | + else: |
1058 | + basename = '{0}-{1}'.format(settings['distro_id'],settings['distro_release']) |
1059 | + |
1060 | + return basename |
1061 | + |
1062 | def get_working_pot_templates(settings): |
1063 | templates = os.path.join(os.getcwd(), 'data', settings['distro_codename'] + "-templates.txt") |
1064 | if not os.path.exists(templates): |
1065 | @@ -147,7 +158,7 @@ |
1066 | statusRegexp = r'[0-9]+ {0}'.format(statusStr) |
1067 | if (re.findall(statusRegexp, item)): |
1068 | statusDict[statusStr] = re.findall(r'[0-9]+', item)[0] |
1069 | - |
1070 | + |
1071 | # msgfmt gives us only status if the count is non-zero. Fill the missing statuses. |
1072 | for statusStr in statusStrings: |
1073 | if not statusStr in statusDict: |
1074 | @@ -177,4 +188,4 @@ |
1075 | # https://launchpadlibrarian.net/56015550/openoffice.org_3.2.1-6ubuntu2_i386_translations.tar.gz |
1076 | ooo_pot_mapping = get_ooo_pot_mapping('../data/oo-o-pots-mapping.txt') |
1077 | get_ooo_raw_data('../data/source/debian/l10n/po', ooo_pot_mapping) |
1078 | - sys.exit(0) |
1079 | \ No newline at end of file |
1080 | + sys.exit(0) |
1081 | |
1082 | === removed file 'config/blacklist.conf' |
1083 | --- config/blacklist.conf 2010-09-27 16:41:27 +0000 |
1084 | +++ config/blacklist.conf 1970-01-01 00:00:00 +0000 |
1085 | @@ -1,423 +0,0 @@ |
1086 | -acl | acl |
1087 | -adduser | adduser |
1088 | -alsa-utils | alsa-utils |
1089 | -apparmor | subdomain-parser |
1090 | -aptitude | aptitude |
1091 | -aspell | aspell |
1092 | -aspell | filter |
1093 | -attr | attr |
1094 | -base-passwd | base-passwd |
1095 | -bash | bash |
1096 | -binutils | bfd |
1097 | -binutils | binutils |
1098 | -binutils | gas |
1099 | -binutils | gold |
1100 | -binutils | gprof |
1101 | -binutils | ld |
1102 | -binutils | opcodes |
1103 | -byobu | byobu |
1104 | -clutter-1.0 | clutter-1.0 |
1105 | -command-not-found | command-not-found |
1106 | -coreutils | coreutils |
1107 | -cpio | cpio |
1108 | -cryptsetup | cryptsetup |
1109 | -cryptsetup | cryptsetup-luks |
1110 | -cups | cups |
1111 | -debconf | debconf |
1112 | -debianutils | debianutils |
1113 | -devmapper | device-mapper |
1114 | -diffutils | diffutils |
1115 | -dnsmasq | dnsmasq |
1116 | -dpkg | dpkg |
1117 | -dpkg | dpkg-dev |
1118 | -dpkg | dselect |
1119 | -e2fsprogs | e2fsprogs |
1120 | -eglibc | libc |
1121 | -eject | eject |
1122 | -elfutils | elfutils |
1123 | -findutils | findutils |
1124 | -gawk | gawk |
1125 | -gcc-4.4 | cpplib |
1126 | -gcc-4.4 | gcc |
1127 | -gcc-4.4 | libstdc++ |
1128 | -gcc-4.4 | libstdcpp |
1129 | -gconf | gconf2 |
1130 | -gconf-editor | gconf-editor |
1131 | -gdb | gdb |
1132 | -gdb | bfd |
1133 | -gettext | gettext-runtime |
1134 | -gettext | gettext-tools |
1135 | -gksu | gksu |
1136 | -gnupg | gnupg |
1137 | -gnutls26 | gnutls |
1138 | -gnutls26 | libgnutls |
1139 | -grep | grep |
1140 | -gst-plugins-base0.10 | gst-plugins-base-0.10 |
1141 | -gst-plugins-good0.10 | gst-plugins-good-0.10 |
1142 | -gstreamer0.10 | gstreamer-0.10 |
1143 | -gvfs | gvfs |
1144 | -hal | hal |
1145 | -hunspell | hunspell |
1146 | -iso-codes | iso-15924 |
1147 | -iso-codes | iso-3166 |
1148 | -iso-codes | iso-3166-2 |
1149 | -iso-codes | iso-4217 |
1150 | -iso-codes | iso-639 |
1151 | -iso-codes | iso-639-3 |
1152 | -kbd | kbd |
1153 | -kerneloops | kerneloops |
1154 | -lftp | lftp |
1155 | -libgpg-error | libgpg-error |
1156 | -libidn | libidn |
1157 | -libparse-debianchangelog-perl | parse-debianchangelog |
1158 | -libparse-debianchangelog-perl | parse-debianchangelog-pod |
1159 | -libvisual | libvisual-0.4 |
1160 | -libvisual-plugins | libvisual-plugins |
1161 | -m17n-db | m17n-db |
1162 | -make-dfsg | make |
1163 | -man-db | man-db |
1164 | -man-db | man-db-gnulib |
1165 | -mlocate | mlocate |
1166 | -mono | mcs |
1167 | -neon27 | neon |
1168 | -net-tools | net-tools |
1169 | -pam | linux-pam |
1170 | -parted | parted |
1171 | -popt | popt |
1172 | -postgresql-8.4 | ecpg-8.4 |
1173 | -postgresql-8.4 | ecpglib-8.4 |
1174 | -postgresql-8.4 | initdb-8.4 |
1175 | -postgresql-8.4 | libpq5-8.4 |
1176 | -postgresql-8.4 | pg-config-8.4 |
1177 | -postgresql-8.4 | pg-controldata-8.4 |
1178 | -postgresql-8.4 | pg-ctl-8.4 |
1179 | -postgresql-8.4 | pg-dump-8.4 |
1180 | -postgresql-8.4 | pg-resetxlog-8.4 |
1181 | -postgresql-8.4 | pgscripts-8.4 |
1182 | -postgresql-8.4 | plperl-8.4 |
1183 | -postgresql-8.4 | plpgsql-8.4 |
1184 | -postgresql-8.4 | plpython-8.4 |
1185 | -postgresql-8.4 | pltcl-8.4 |
1186 | -postgresql-8.4 | postgres-8.4 |
1187 | -postgresql-8.4 | psql-8.4 |
1188 | -pppconfig | pppconfig |
1189 | -pppoeconf | pppoeconf |
1190 | -psmisc | psmisc |
1191 | -sane-backends | sane-backends |
1192 | -sed | sed |
1193 | -shadow | shadow |
1194 | -tar | tar |
1195 | -tasksel | debian-tasks |
1196 | -tasksel | tasksel |
1197 | -texinfo | texinfo |
1198 | -texlive-bin | freetype |
1199 | -texlive-bin | texinfo |
1200 | -ubiquity-slideshow-ubuntu | slideshow-xubuntu |
1201 | -ubuntu-docs | ubuntu-docs-serverguide |
1202 | -udisks | udisks |
1203 | -ufw | ufw |
1204 | -unattended-upgrades | unattended-upgrades |
1205 | -upower | UPower |
1206 | -ureadahead | ureadahead |
1207 | -util-linux | util-linux-ng |
1208 | -vim | vim |
1209 | -vte | vte |
1210 | -w3m | w3m |
1211 | -wget | wget |
1212 | -whois | whois |
1213 | -xfsprogs | xfsprogs |
1214 | -xkeyboard-config | xkeyboard-config |
1215 | -xz-utils | xz |
1216 | -zope3 | zope |
1217 | -compiz | compiz |
1218 | -compiz-fusion-plugins-main | compiz-fusion-plugins-main |
1219 | -exiv2 | exiv2 |
1220 | -gnome-user-docs | gnome-user-docs-accessibility-guide |
1221 | -gnome-user-docs | gnome-user-docs-user-guide |
1222 | -gutenprint | gutenprint |
1223 | -libgphoto2 | libgphoto2-2 |
1224 | -libgphoto2 | libgphoto2-port-0 |
1225 | -software-center | software-center-doc |
1226 | -xscreensaver | xscreensaver |
1227 | -openoffice.org | accessibility-helper |
1228 | -openoffice.org | avmedia-framework |
1229 | -openoffice.org | avmedia-viewer |
1230 | -openoffice.org | basctl-basicide |
1231 | -openoffice.org | basctl-dlged |
1232 | -openoffice.org | basic-app |
1233 | -openoffice.org | basic-classes |
1234 | -openoffice.org | basic-sbx |
1235 | -openoffice.org | binfilter-src |
1236 | -openoffice.org | chart2-dialogs |
1237 | -openoffice.org | connectivity-adabas |
1238 | -openoffice.org | connectivity-flat |
1239 | -openoffice.org | connectivity-odbc |
1240 | -openoffice.org | connectivity-postgresql |
1241 | -openoffice.org | connectivity-resource |
1242 | -openoffice.org | crashrep-all |
1243 | -openoffice.org | dbaccess-adabas |
1244 | -openoffice.org | dbaccess-app |
1245 | -openoffice.org | dbaccess-browser |
1246 | -openoffice.org | dbaccess-control |
1247 | -openoffice.org | dbaccess-core |
1248 | -openoffice.org | dbaccess-dlg |
1249 | -openoffice.org | dbaccess-inc |
1250 | -openoffice.org | dbaccess-macromigration |
1251 | -openoffice.org | dbaccess-misc |
1252 | -openoffice.org | dbaccess-querydesign |
1253 | -openoffice.org | dbaccess-relationdesign |
1254 | -openoffice.org | dbaccess-sdbtools |
1255 | -openoffice.org | dbaccess-tabledesign |
1256 | -openoffice.org | dbaccess-uno |
1257 | -openoffice.org | desktop-app |
1258 | -openoffice.org | desktop-component |
1259 | -openoffice.org | desktop-configuration |
1260 | -openoffice.org | desktop-deployment-help |
1261 | -openoffice.org | desktop-gui |
1262 | -openoffice.org | desktop-manager |
1263 | -openoffice.org | desktop-migration |
1264 | -openoffice.org | desktop-misc |
1265 | -openoffice.org | desktop-package |
1266 | -openoffice.org | desktop-registry |
1267 | -openoffice.org | desktop-script |
1268 | -openoffice.org | desktop-setup |
1269 | -openoffice.org | desktop-sfwk |
1270 | -openoffice.org | desktop-unopkg |
1271 | -openoffice.org | extensions-abpilot |
1272 | -openoffice.org | extensions-bibliography |
1273 | -openoffice.org | extensions-check |
1274 | -openoffice.org | extensions-dbpilots |
1275 | -openoffice.org | extensions-preload |
1276 | -openoffice.org | extensions-propctrlr |
1277 | -openoffice.org | extensions-scanner |
1278 | -openoffice.org | filter-filters |
1279 | -openoffice.org | filter-flash |
1280 | -openoffice.org | filter-internalgraphicfilters |
1281 | -openoffice.org | filter-pdf |
1282 | -openoffice.org | filter-t602 |
1283 | -openoffice.org | filter-types |
1284 | -openoffice.org | filter-xsltdialog |
1285 | -openoffice.org | forms-resource |
1286 | -openoffice.org | formula-dlg |
1287 | -openoffice.org | formula-resource |
1288 | -openoffice.org | fpicker-office |
1289 | -openoffice.org | framework-classes |
1290 | -openoffice.org | framework-services |
1291 | -openoffice.org | goodies-egif |
1292 | -openoffice.org | goodies-eos2met |
1293 | -openoffice.org | goodies-epbm |
1294 | -openoffice.org | goodies-epgm |
1295 | -openoffice.org | goodies-epict |
1296 | -openoffice.org | goodies-eppm |
1297 | -openoffice.org | goodies-eps |
1298 | -openoffice.org | helpcontent2-autokorr-shared |
1299 | -openoffice.org | helpcontent2-autopi-shared |
1300 | -openoffice.org | helpcontent2-database |
1301 | -openoffice.org | helpcontent2-guide-sbasic |
1302 | -openoffice.org | helpcontent2-guide-scalc |
1303 | -openoffice.org | helpcontent2-guide-sdraw |
1304 | -openoffice.org | helpcontent2-guide-shared |
1305 | -openoffice.org | helpcontent2-guide-simpress |
1306 | -openoffice.org | helpcontent2-guide-smath |
1307 | -openoffice.org | helpcontent2-guide-swriter |
1308 | -openoffice.org | helpcontent2-optionen-shared |
1309 | -openoffice.org | helpcontent2-sbasic-01 |
1310 | -openoffice.org | helpcontent2-sbasic-02 |
1311 | -openoffice.org | helpcontent2-sbasic-shared |
1312 | -openoffice.org | helpcontent2-scalc |
1313 | -openoffice.org | helpcontent2-scalc-00 |
1314 | -openoffice.org | helpcontent2-scalc-01 |
1315 | -openoffice.org | helpcontent2-scalc-02 |
1316 | -openoffice.org | helpcontent2-scalc-04 |
1317 | -openoffice.org | helpcontent2-scalc-05 |
1318 | -openoffice.org | helpcontent2-schart |
1319 | -openoffice.org | helpcontent2-schart-00 |
1320 | -openoffice.org | helpcontent2-schart-01 |
1321 | -openoffice.org | helpcontent2-schart-02 |
1322 | -openoffice.org | helpcontent2-schart-04 |
1323 | -openoffice.org | helpcontent2-sdraw |
1324 | -openoffice.org | helpcontent2-sdraw-00 |
1325 | -openoffice.org | helpcontent2-sdraw-01 |
1326 | -openoffice.org | helpcontent2-sdraw-04 |
1327 | -openoffice.org | helpcontent2-shared |
1328 | -openoffice.org | helpcontent2-shared-00 |
1329 | -openoffice.org | helpcontent2-shared-01 |
1330 | -openoffice.org | helpcontent2-shared-02 |
1331 | -openoffice.org | helpcontent2-shared-04 |
1332 | -openoffice.org | helpcontent2-shared-05 |
1333 | -openoffice.org | helpcontent2-shared-07 |
1334 | -openoffice.org | helpcontent2-simpress |
1335 | -openoffice.org | helpcontent2-simpress-00 |
1336 | -openoffice.org | helpcontent2-simpress-01 |
1337 | -openoffice.org | helpcontent2-simpress-02 |
1338 | -openoffice.org | helpcontent2-simpress-04 |
1339 | -openoffice.org | helpcontent2-smath |
1340 | -openoffice.org | helpcontent2-smath-00 |
1341 | -openoffice.org | helpcontent2-smath-01 |
1342 | -openoffice.org | helpcontent2-smath-02 |
1343 | -openoffice.org | helpcontent2-smath-04 |
1344 | -openoffice.org | helpcontent2-swriter |
1345 | -openoffice.org | helpcontent2-swriter-00 |
1346 | -openoffice.org | helpcontent2-swriter-01 |
1347 | -openoffice.org | helpcontent2-swriter-02 |
1348 | -openoffice.org | helpcontent2-swriter-04 |
1349 | -openoffice.org | instsetoonative-msilanguages |
1350 | -openoffice.org | instsetoonative-office |
1351 | -openoffice.org | javainstaller2-localization |
1352 | -openoffice.org | mysqlc-dataaccess |
1353 | -openoffice.org | odk-complextoolbarcontrols |
1354 | -openoffice.org | odk-examples-asciifilter |
1355 | -openoffice.org | odk-examples-developersguide-dialogwithhelp |
1356 | -openoffice.org | odk-examples-embeddedobject |
1357 | -openoffice.org | odk-examples-flatxmlfilterdetection |
1358 | -openoffice.org | odk-examples-protocolhandleraddon-cpp |
1359 | -openoffice.org | odk-examples-protocolhandleraddon-java |
1360 | -openoffice.org | odk-inspector |
1361 | -openoffice.org | officecfg-office |
1362 | -openoffice.org | officecfg-openoffice |
1363 | -openoffice.org | officecfg-ui |
1364 | -openoffice.org | ooo-build |
1365 | -openoffice.org | padmin-source |
1366 | -openoffice.org | readlicense-oo-readme |
1367 | -openoffice.org | reportbuilder-office |
1368 | -openoffice.org | reportbuilder-openoffice |
1369 | -openoffice.org | reportbuilder-typedetection |
1370 | -openoffice.org | reportbuilder-ui |
1371 | -openoffice.org | reportdesign-dlg |
1372 | -openoffice.org | reportdesign-inspection |
1373 | -openoffice.org | reportdesign-registry-office |
1374 | -openoffice.org | reportdesign-report |
1375 | -openoffice.org | reportdesign-resource |
1376 | -openoffice.org | sc-core |
1377 | -openoffice.org | sc-dbgui |
1378 | -openoffice.org | sc-docshell |
1379 | -openoffice.org | sc-drawfunc |
1380 | -openoffice.org | sc-formdlg |
1381 | -openoffice.org | sc-miscdlgs |
1382 | -openoffice.org | sc-navipi |
1383 | -openoffice.org | sc-pagedlg |
1384 | -openoffice.org | sc-styleui |
1385 | -openoffice.org | sc-ui |
1386 | -openoffice.org | sc-ui-cctrl |
1387 | -openoffice.org | scaddins-analysis |
1388 | -openoffice.org | scaddins-datefunc |
1389 | -openoffice.org | sccomp-solver |
1390 | -openoffice.org | scp2-activex |
1391 | -openoffice.org | scp2-base |
1392 | -openoffice.org | scp2-binfilter |
1393 | -openoffice.org | scp2-calc |
1394 | -openoffice.org | scp2-draw |
1395 | -openoffice.org | scp2-gnome |
1396 | -openoffice.org | scp2-graphicfilter |
1397 | -openoffice.org | scp2-impress |
1398 | -openoffice.org | scp2-javafilter |
1399 | -openoffice.org | scp2-kde |
1400 | -openoffice.org | scp2-lingu |
1401 | -openoffice.org | scp2-math |
1402 | -openoffice.org | scp2-onlineupdate |
1403 | -openoffice.org | scp2-ooo |
1404 | -openoffice.org | scp2-python |
1405 | -openoffice.org | scp2-quickstart |
1406 | -openoffice.org | scp2-sdkoo |
1407 | -openoffice.org | scp2-testtool |
1408 | -openoffice.org | scp2-winexplorerext |
1409 | -openoffice.org | scp2-writer |
1410 | -openoffice.org | scp2-xsltfilter |
1411 | -openoffice.org | scsolver-ext |
1412 | -openoffice.org | scsolver-ui |
1413 | -openoffice.org | sd-accessibility |
1414 | -openoffice.org | sd-animations |
1415 | -openoffice.org | sd-app |
1416 | -openoffice.org | sd-core |
1417 | -openoffice.org | sd-dlg |
1418 | -openoffice.org | sd-html |
1419 | -openoffice.org | sd-notes |
1420 | -openoffice.org | sd-slideshow |
1421 | -openoffice.org | sd-table |
1422 | -openoffice.org | sdext-extension |
1423 | -openoffice.org | sdext-minimizer-extension |
1424 | -openoffice.org | sdext-minimizer-office |
1425 | -openoffice.org | sdext-minimizer-ui |
1426 | -openoffice.org | sfx2-appl |
1427 | -openoffice.org | sfx2-bastyp |
1428 | -openoffice.org | sfx2-config |
1429 | -openoffice.org | sfx2-dialog |
1430 | -openoffice.org | sfx2-doc |
1431 | -openoffice.org | sfx2-menu |
1432 | -openoffice.org | sfx2-view |
1433 | -openoffice.org | shell-res |
1434 | -openoffice.org | starmath-source |
1435 | -openoffice.org | svtools-contnr |
1436 | -openoffice.org | svtools-control |
1437 | -openoffice.org | svtools-dialogs |
1438 | -openoffice.org | svtools-filter |
1439 | -openoffice.org | svtools-items1 |
1440 | -openoffice.org | svtools-java |
1441 | -openoffice.org | svtools-misc |
1442 | -openoffice.org | svtools-misc1 |
1443 | -openoffice.org | svtools-plugapp |
1444 | -openoffice.org | svtools-productregistration |
1445 | -openoffice.org | svtools-uno |
1446 | -openoffice.org | svtools-unodialog |
1447 | -openoffice.org | svx-accessibility |
1448 | -openoffice.org | svx-dialog |
1449 | -openoffice.org | svx-editeng |
1450 | -openoffice.org | svx-engine3d |
1451 | -openoffice.org | svx-fmcomp |
1452 | -openoffice.org | svx-form |
1453 | -openoffice.org | svx-gallery2 |
1454 | -openoffice.org | svx-inc |
1455 | -openoffice.org | svx-intro |
1456 | -openoffice.org | svx-items |
1457 | -openoffice.org | svx-options |
1458 | -openoffice.org | svx-outliner |
1459 | -openoffice.org | svx-src |
1460 | -openoffice.org | svx-stbctrls |
1461 | -openoffice.org | svx-svdraw |
1462 | -openoffice.org | svx-svxlink |
1463 | -openoffice.org | svx-table |
1464 | -openoffice.org | svx-tbxctrls |
1465 | -openoffice.org | svx-textconversiondlgs |
1466 | -openoffice.org | svx-toolbars |
1467 | -openoffice.org | sw-app |
1468 | -openoffice.org | sw-chrdlg |
1469 | -openoffice.org | sw-config |
1470 | -openoffice.org | sw-dbui |
1471 | -openoffice.org | sw-dialog |
1472 | -openoffice.org | sw-dochdl |
1473 | -openoffice.org | sw-docvw |
1474 | -openoffice.org | sw-envelp |
1475 | -openoffice.org | sw-fldui |
1476 | -openoffice.org | sw-fmtui |
1477 | -openoffice.org | sw-frmdlg |
1478 | -openoffice.org | sw-globdoc |
1479 | -openoffice.org | sw-inc |
1480 | -openoffice.org | sw-index |
1481 | -openoffice.org | sw-lingu |
1482 | -openoffice.org | sw-misc |
1483 | -openoffice.org | sw-ribbar |
1484 | -openoffice.org | sw-sdi |
1485 | -openoffice.org | sw-shells |
1486 | -openoffice.org | sw-smartmenu |
1487 | -openoffice.org | sw-table |
1488 | -openoffice.org | sw-uiview |
1489 | -openoffice.org | sw-undo |
1490 | -openoffice.org | sw-unocore |
1491 | -openoffice.org | sw-utlui |
1492 | -openoffice.org | sw-web |
1493 | -openoffice.org | sw-wrtsh |
1494 | -openoffice.org | swext-custom |
1495 | -openoffice.org | swext-help |
1496 | -openoffice.org | swext-office |
1497 | -openoffice.org | sysui-share |
1498 | -openoffice.org | toolkit-workben-layout |
1499 | -openoffice.org | ucbhelper-ucb-explorer |
1500 | -openoffice.org | uui-source |
1501 | -openoffice.org | vcl-src |
1502 | -openoffice.org | wizards-euro |
1503 | -openoffice.org | wizards-formwizard |
1504 | -openoffice.org | wizards-importwizard |
1505 | -openoffice.org | wizards-schedule |
1506 | -openoffice.org | wizards-template |
1507 | -openoffice.org | xmlsecurity-component |
1508 | -openoffice.org | xmlsecurity-dialogs |
1509 | |
1510 | === added file 'config/blacklist.lucid.conf' |
1511 | --- config/blacklist.lucid.conf 1970-01-01 00:00:00 +0000 |
1512 | +++ config/blacklist.lucid.conf 2010-10-07 20:22:40 +0000 |
1513 | @@ -0,0 +1,141 @@ |
1514 | +acl | acl |
1515 | +adduser | adduser |
1516 | +alsa-utils | alsa-utils |
1517 | +apparmor | subdomain-parser |
1518 | +aptitude | aptitude |
1519 | +aspell | aspell |
1520 | +aspell | filter |
1521 | +attr | attr |
1522 | +base-passwd | base-passwd |
1523 | +bash | bash |
1524 | +binutils | bfd |
1525 | +binutils | binutils |
1526 | +binutils | gas |
1527 | +binutils | gold |
1528 | +binutils | gprof |
1529 | +binutils | ld |
1530 | +binutils | opcodes |
1531 | +byobu | byobu |
1532 | +clutter-1.0 | clutter-1.0 |
1533 | +command-not-found | command-not-found |
1534 | +coreutils | coreutils |
1535 | +cpio | cpio |
1536 | +cryptsetup | cryptsetup |
1537 | +cryptsetup | cryptsetup-luks |
1538 | +cups | cups |
1539 | +debconf | debconf |
1540 | +debianutils | debianutils |
1541 | +devmapper | device-mapper |
1542 | +diffutils | diffutils |
1543 | +dnsmasq | dnsmasq |
1544 | +dpkg | dpkg |
1545 | +dpkg | dpkg-dev |
1546 | +dpkg | dselect |
1547 | +e2fsprogs | e2fsprogs |
1548 | +eglibc | libc |
1549 | +eject | eject |
1550 | +elfutils | elfutils |
1551 | +findutils | findutils |
1552 | +gawk | gawk |
1553 | +gcc-4.4 | cpplib |
1554 | +gcc-4.4 | gcc |
1555 | +gcc-4.4 | libstdc++ |
1556 | +gcc-4.4 | libstdcpp |
1557 | +gconf | gconf2 |
1558 | +gconf-editor | gconf-editor |
1559 | +gdb | gdb |
1560 | +gdb | bfd |
1561 | +gettext | gettext-runtime |
1562 | +gettext | gettext-tools |
1563 | +gksu | gksu |
1564 | +gnupg | gnupg |
1565 | +gnutls26 | gnutls |
1566 | +gnutls26 | libgnutls |
1567 | +grep | grep |
1568 | +gst-plugins-base0.10 | gst-plugins-base-0.10 |
1569 | +gst-plugins-good0.10 | gst-plugins-good-0.10 |
1570 | +gstreamer0.10 | gstreamer-0.10 |
1571 | +gvfs | gvfs |
1572 | +hal | hal |
1573 | +hunspell | hunspell |
1574 | +iso-codes | iso-15924 |
1575 | +iso-codes | iso-3166 |
1576 | +iso-codes | iso-3166-2 |
1577 | +iso-codes | iso-4217 |
1578 | +iso-codes | iso-639 |
1579 | +iso-codes | iso-639-3 |
1580 | +kbd | kbd |
1581 | +kerneloops | kerneloops |
1582 | +lftp | lftp |
1583 | +libgpg-error | libgpg-error |
1584 | +libidn | libidn |
1585 | +libparse-debianchangelog-perl | parse-debianchangelog |
1586 | +libparse-debianchangelog-perl | parse-debianchangelog-pod |
1587 | +libvisual | libvisual-0.4 |
1588 | +libvisual-plugins | libvisual-plugins |
1589 | +m17n-db | m17n-db |
1590 | +make-dfsg | make |
1591 | +man-db | man-db |
1592 | +man-db | man-db-gnulib |
1593 | +mlocate | mlocate |
1594 | +mono | mcs |
1595 | +neon27 | neon |
1596 | +net-tools | net-tools |
1597 | +pam | linux-pam |
1598 | +parted | parted |
1599 | +popt | popt |
1600 | +postgresql-8.4 | ecpg-8.4 |
1601 | +postgresql-8.4 | ecpglib-8.4 |
1602 | +postgresql-8.4 | initdb-8.4 |
1603 | +postgresql-8.4 | libpq5-8.4 |
1604 | +postgresql-8.4 | pg-config-8.4 |
1605 | +postgresql-8.4 | pg-controldata-8.4 |
1606 | +postgresql-8.4 | pg-ctl-8.4 |
1607 | +postgresql-8.4 | pg-dump-8.4 |
1608 | +postgresql-8.4 | pg-resetxlog-8.4 |
1609 | +postgresql-8.4 | pgscripts-8.4 |
1610 | +postgresql-8.4 | plperl-8.4 |
1611 | +postgresql-8.4 | plpgsql-8.4 |
1612 | +postgresql-8.4 | plpython-8.4 |
1613 | +postgresql-8.4 | pltcl-8.4 |
1614 | +postgresql-8.4 | postgres-8.4 |
1615 | +postgresql-8.4 | psql-8.4 |
1616 | +pppconfig | pppconfig |
1617 | +pppoeconf | pppoeconf |
1618 | +psmisc | psmisc |
1619 | +sane-backends | sane-backends |
1620 | +sed | sed |
1621 | +shadow | shadow |
1622 | +tar | tar |
1623 | +tasksel | debian-tasks |
1624 | +tasksel | tasksel |
1625 | +texinfo | texinfo |
1626 | +texlive-bin | freetype |
1627 | +texlive-bin | texinfo |
1628 | +ubiquity-slideshow-ubuntu | slideshow-xubuntu |
1629 | +ubuntu-docs | ubuntu-docs-serverguide |
1630 | +udisks | udisks |
1631 | +ufw | ufw |
1632 | +unattended-upgrades | unattended-upgrades |
1633 | +upower | UPower |
1634 | +ureadahead | ureadahead |
1635 | +util-linux | util-linux-ng |
1636 | +vim | vim |
1637 | +vte | vte |
1638 | +w3m | w3m |
1639 | +wget | wget |
1640 | +whois | whois |
1641 | +xfsprogs | xfsprogs |
1642 | +xkeyboard-config | xkeyboard-config |
1643 | +xz-utils | xz |
1644 | +zope3 | zope |
1645 | +compiz | compiz |
1646 | +compiz-fusion-plugins-main | compiz-fusion-plugins-main |
1647 | +exiv2 | exiv2 |
1648 | +gnome-user-docs | gnome-user-docs-accessibility-guide |
1649 | +gnome-user-docs | gnome-user-docs-user-guide |
1650 | +gutenprint | gutenprint |
1651 | +libgphoto2 | libgphoto2-2 |
1652 | +libgphoto2 | libgphoto2-port-0 |
1653 | +software-center | software-center-doc |
1654 | +xscreensaver | xscreensaver |
1655 | |
1656 | === added file 'config/blacklist.maverick.conf' |
1657 | --- config/blacklist.maverick.conf 1970-01-01 00:00:00 +0000 |
1658 | +++ config/blacklist.maverick.conf 2010-10-07 20:22:40 +0000 |
1659 | @@ -0,0 +1,423 @@ |
1660 | +acl | acl |
1661 | +adduser | adduser |
1662 | +alsa-utils | alsa-utils |
1663 | +apparmor | subdomain-parser |
1664 | +aptitude | aptitude |
1665 | +aspell | aspell |
1666 | +aspell | filter |
1667 | +attr | attr |
1668 | +base-passwd | base-passwd |
1669 | +bash | bash |
1670 | +binutils | bfd |
1671 | +binutils | binutils |
1672 | +binutils | gas |
1673 | +binutils | gold |
1674 | +binutils | gprof |
1675 | +binutils | ld |
1676 | +binutils | opcodes |
1677 | +byobu | byobu |
1678 | +clutter-1.0 | clutter-1.0 |
1679 | +command-not-found | command-not-found |
1680 | +coreutils | coreutils |
1681 | +cpio | cpio |
1682 | +cryptsetup | cryptsetup |
1683 | +cryptsetup | cryptsetup-luks |
1684 | +cups | cups |
1685 | +debconf | debconf |
1686 | +debianutils | debianutils |
1687 | +devmapper | device-mapper |
1688 | +diffutils | diffutils |
1689 | +dnsmasq | dnsmasq |
1690 | +dpkg | dpkg |
1691 | +dpkg | dpkg-dev |
1692 | +dpkg | dselect |
1693 | +e2fsprogs | e2fsprogs |
1694 | +eglibc | libc |
1695 | +eject | eject |
1696 | +elfutils | elfutils |
1697 | +findutils | findutils |
1698 | +gawk | gawk |
1699 | +gcc-4.4 | cpplib |
1700 | +gcc-4.4 | gcc |
1701 | +gcc-4.4 | libstdc++ |
1702 | +gcc-4.4 | libstdcpp |
1703 | +gconf | gconf2 |
1704 | +gconf-editor | gconf-editor |
1705 | +gdb | gdb |
1706 | +gdb | bfd |
1707 | +gettext | gettext-runtime |
1708 | +gettext | gettext-tools |
1709 | +gksu | gksu |
1710 | +gnupg | gnupg |
1711 | +gnutls26 | gnutls |
1712 | +gnutls26 | libgnutls |
1713 | +grep | grep |
1714 | +gst-plugins-base0.10 | gst-plugins-base-0.10 |
1715 | +gst-plugins-good0.10 | gst-plugins-good-0.10 |
1716 | +gstreamer0.10 | gstreamer-0.10 |
1717 | +gvfs | gvfs |
1718 | +hal | hal |
1719 | +hunspell | hunspell |
1720 | +iso-codes | iso-15924 |
1721 | +iso-codes | iso-3166 |
1722 | +iso-codes | iso-3166-2 |
1723 | +iso-codes | iso-4217 |
1724 | +iso-codes | iso-639 |
1725 | +iso-codes | iso-639-3 |
1726 | +kbd | kbd |
1727 | +kerneloops | kerneloops |
1728 | +lftp | lftp |
1729 | +libgpg-error | libgpg-error |
1730 | +libidn | libidn |
1731 | +libparse-debianchangelog-perl | parse-debianchangelog |
1732 | +libparse-debianchangelog-perl | parse-debianchangelog-pod |
1733 | +libvisual | libvisual-0.4 |
1734 | +libvisual-plugins | libvisual-plugins |
1735 | +m17n-db | m17n-db |
1736 | +make-dfsg | make |
1737 | +man-db | man-db |
1738 | +man-db | man-db-gnulib |
1739 | +mlocate | mlocate |
1740 | +mono | mcs |
1741 | +neon27 | neon |
1742 | +net-tools | net-tools |
1743 | +pam | linux-pam |
1744 | +parted | parted |
1745 | +popt | popt |
1746 | +postgresql-8.4 | ecpg-8.4 |
1747 | +postgresql-8.4 | ecpglib-8.4 |
1748 | +postgresql-8.4 | initdb-8.4 |
1749 | +postgresql-8.4 | libpq5-8.4 |
1750 | +postgresql-8.4 | pg-config-8.4 |
1751 | +postgresql-8.4 | pg-controldata-8.4 |
1752 | +postgresql-8.4 | pg-ctl-8.4 |
1753 | +postgresql-8.4 | pg-dump-8.4 |
1754 | +postgresql-8.4 | pg-resetxlog-8.4 |
1755 | +postgresql-8.4 | pgscripts-8.4 |
1756 | +postgresql-8.4 | plperl-8.4 |
1757 | +postgresql-8.4 | plpgsql-8.4 |
1758 | +postgresql-8.4 | plpython-8.4 |
1759 | +postgresql-8.4 | pltcl-8.4 |
1760 | +postgresql-8.4 | postgres-8.4 |
1761 | +postgresql-8.4 | psql-8.4 |
1762 | +pppconfig | pppconfig |
1763 | +pppoeconf | pppoeconf |
1764 | +psmisc | psmisc |
1765 | +sane-backends | sane-backends |
1766 | +sed | sed |
1767 | +shadow | shadow |
1768 | +tar | tar |
1769 | +tasksel | debian-tasks |
1770 | +tasksel | tasksel |
1771 | +texinfo | texinfo |
1772 | +texlive-bin | freetype |
1773 | +texlive-bin | texinfo |
1774 | +ubiquity-slideshow-ubuntu | slideshow-xubuntu |
1775 | +ubuntu-docs | ubuntu-docs-serverguide |
1776 | +udisks | udisks |
1777 | +ufw | ufw |
1778 | +unattended-upgrades | unattended-upgrades |
1779 | +upower | UPower |
1780 | +ureadahead | ureadahead |
1781 | +util-linux | util-linux-ng |
1782 | +vim | vim |
1783 | +vte | vte |
1784 | +w3m | w3m |
1785 | +wget | wget |
1786 | +whois | whois |
1787 | +xfsprogs | xfsprogs |
1788 | +xkeyboard-config | xkeyboard-config |
1789 | +xz-utils | xz |
1790 | +zope3 | zope |
1791 | +compiz | compiz |
1792 | +compiz-fusion-plugins-main | compiz-fusion-plugins-main |
1793 | +exiv2 | exiv2 |
1794 | +gnome-user-docs | gnome-user-docs-accessibility-guide |
1795 | +gnome-user-docs | gnome-user-docs-user-guide |
1796 | +gutenprint | gutenprint |
1797 | +libgphoto2 | libgphoto2-2 |
1798 | +libgphoto2 | libgphoto2-port-0 |
1799 | +software-center | software-center-doc |
1800 | +xscreensaver | xscreensaver |
1801 | +openoffice.org | accessibility-helper |
1802 | +openoffice.org | avmedia-framework |
1803 | +openoffice.org | avmedia-viewer |
1804 | +openoffice.org | basctl-basicide |
1805 | +openoffice.org | basctl-dlged |
1806 | +openoffice.org | basic-app |
1807 | +openoffice.org | basic-classes |
1808 | +openoffice.org | basic-sbx |
1809 | +openoffice.org | binfilter-src |
1810 | +openoffice.org | chart2-dialogs |
1811 | +openoffice.org | connectivity-adabas |
1812 | +openoffice.org | connectivity-flat |
1813 | +openoffice.org | connectivity-odbc |
1814 | +openoffice.org | connectivity-postgresql |
1815 | +openoffice.org | connectivity-resource |
1816 | +openoffice.org | crashrep-all |
1817 | +openoffice.org | dbaccess-adabas |
1818 | +openoffice.org | dbaccess-app |
1819 | +openoffice.org | dbaccess-browser |
1820 | +openoffice.org | dbaccess-control |
1821 | +openoffice.org | dbaccess-core |
1822 | +openoffice.org | dbaccess-dlg |
1823 | +openoffice.org | dbaccess-inc |
1824 | +openoffice.org | dbaccess-macromigration |
1825 | +openoffice.org | dbaccess-misc |
1826 | +openoffice.org | dbaccess-querydesign |
1827 | +openoffice.org | dbaccess-relationdesign |
1828 | +openoffice.org | dbaccess-sdbtools |
1829 | +openoffice.org | dbaccess-tabledesign |
1830 | +openoffice.org | dbaccess-uno |
1831 | +openoffice.org | desktop-app |
1832 | +openoffice.org | desktop-component |
1833 | +openoffice.org | desktop-configuration |
1834 | +openoffice.org | desktop-deployment-help |
1835 | +openoffice.org | desktop-gui |
1836 | +openoffice.org | desktop-manager |
1837 | +openoffice.org | desktop-migration |
1838 | +openoffice.org | desktop-misc |
1839 | +openoffice.org | desktop-package |
1840 | +openoffice.org | desktop-registry |
1841 | +openoffice.org | desktop-script |
1842 | +openoffice.org | desktop-setup |
1843 | +openoffice.org | desktop-sfwk |
1844 | +openoffice.org | desktop-unopkg |
1845 | +openoffice.org | extensions-abpilot |
1846 | +openoffice.org | extensions-bibliography |
1847 | +openoffice.org | extensions-check |
1848 | +openoffice.org | extensions-dbpilots |
1849 | +openoffice.org | extensions-preload |
1850 | +openoffice.org | extensions-propctrlr |
1851 | +openoffice.org | extensions-scanner |
1852 | +openoffice.org | filter-filters |
1853 | +openoffice.org | filter-flash |
1854 | +openoffice.org | filter-internalgraphicfilters |
1855 | +openoffice.org | filter-pdf |
1856 | +openoffice.org | filter-t602 |
1857 | +openoffice.org | filter-types |
1858 | +openoffice.org | filter-xsltdialog |
1859 | +openoffice.org | forms-resource |
1860 | +openoffice.org | formula-dlg |
1861 | +openoffice.org | formula-resource |
1862 | +openoffice.org | fpicker-office |
1863 | +openoffice.org | framework-classes |
1864 | +openoffice.org | framework-services |
1865 | +openoffice.org | goodies-egif |
1866 | +openoffice.org | goodies-eos2met |
1867 | +openoffice.org | goodies-epbm |
1868 | +openoffice.org | goodies-epgm |
1869 | +openoffice.org | goodies-epict |
1870 | +openoffice.org | goodies-eppm |
1871 | +openoffice.org | goodies-eps |
1872 | +openoffice.org | helpcontent2-autokorr-shared |
1873 | +openoffice.org | helpcontent2-autopi-shared |
1874 | +openoffice.org | helpcontent2-database |
1875 | +openoffice.org | helpcontent2-guide-sbasic |
1876 | +openoffice.org | helpcontent2-guide-scalc |
1877 | +openoffice.org | helpcontent2-guide-sdraw |
1878 | +openoffice.org | helpcontent2-guide-shared |
1879 | +openoffice.org | helpcontent2-guide-simpress |
1880 | +openoffice.org | helpcontent2-guide-smath |
1881 | +openoffice.org | helpcontent2-guide-swriter |
1882 | +openoffice.org | helpcontent2-optionen-shared |
1883 | +openoffice.org | helpcontent2-sbasic-01 |
1884 | +openoffice.org | helpcontent2-sbasic-02 |
1885 | +openoffice.org | helpcontent2-sbasic-shared |
1886 | +openoffice.org | helpcontent2-scalc |
1887 | +openoffice.org | helpcontent2-scalc-00 |
1888 | +openoffice.org | helpcontent2-scalc-01 |
1889 | +openoffice.org | helpcontent2-scalc-02 |
1890 | +openoffice.org | helpcontent2-scalc-04 |
1891 | +openoffice.org | helpcontent2-scalc-05 |
1892 | +openoffice.org | helpcontent2-schart |
1893 | +openoffice.org | helpcontent2-schart-00 |
1894 | +openoffice.org | helpcontent2-schart-01 |
1895 | +openoffice.org | helpcontent2-schart-02 |
1896 | +openoffice.org | helpcontent2-schart-04 |
1897 | +openoffice.org | helpcontent2-sdraw |
1898 | +openoffice.org | helpcontent2-sdraw-00 |
1899 | +openoffice.org | helpcontent2-sdraw-01 |
1900 | +openoffice.org | helpcontent2-sdraw-04 |
1901 | +openoffice.org | helpcontent2-shared |
1902 | +openoffice.org | helpcontent2-shared-00 |
1903 | +openoffice.org | helpcontent2-shared-01 |
1904 | +openoffice.org | helpcontent2-shared-02 |
1905 | +openoffice.org | helpcontent2-shared-04 |
1906 | +openoffice.org | helpcontent2-shared-05 |
1907 | +openoffice.org | helpcontent2-shared-07 |
1908 | +openoffice.org | helpcontent2-simpress |
1909 | +openoffice.org | helpcontent2-simpress-00 |
1910 | +openoffice.org | helpcontent2-simpress-01 |
1911 | +openoffice.org | helpcontent2-simpress-02 |
1912 | +openoffice.org | helpcontent2-simpress-04 |
1913 | +openoffice.org | helpcontent2-smath |
1914 | +openoffice.org | helpcontent2-smath-00 |
1915 | +openoffice.org | helpcontent2-smath-01 |
1916 | +openoffice.org | helpcontent2-smath-02 |
1917 | +openoffice.org | helpcontent2-smath-04 |
1918 | +openoffice.org | helpcontent2-swriter |
1919 | +openoffice.org | helpcontent2-swriter-00 |
1920 | +openoffice.org | helpcontent2-swriter-01 |
1921 | +openoffice.org | helpcontent2-swriter-02 |
1922 | +openoffice.org | helpcontent2-swriter-04 |
1923 | +openoffice.org | instsetoonative-msilanguages |
1924 | +openoffice.org | instsetoonative-office |
1925 | +openoffice.org | javainstaller2-localization |
1926 | +openoffice.org | mysqlc-dataaccess |
1927 | +openoffice.org | odk-complextoolbarcontrols |
1928 | +openoffice.org | odk-examples-asciifilter |
1929 | +openoffice.org | odk-examples-developersguide-dialogwithhelp |
1930 | +openoffice.org | odk-examples-embeddedobject |
1931 | +openoffice.org | odk-examples-flatxmlfilterdetection |
1932 | +openoffice.org | odk-examples-protocolhandleraddon-cpp |
1933 | +openoffice.org | odk-examples-protocolhandleraddon-java |
1934 | +openoffice.org | odk-inspector |
1935 | +openoffice.org | officecfg-office |
1936 | +openoffice.org | officecfg-openoffice |
1937 | +openoffice.org | officecfg-ui |
1938 | +openoffice.org | ooo-build |
1939 | +openoffice.org | padmin-source |
1940 | +openoffice.org | readlicense-oo-readme |
1941 | +openoffice.org | reportbuilder-office |
1942 | +openoffice.org | reportbuilder-openoffice |
1943 | +openoffice.org | reportbuilder-typedetection |
1944 | +openoffice.org | reportbuilder-ui |
1945 | +openoffice.org | reportdesign-dlg |
1946 | +openoffice.org | reportdesign-inspection |
1947 | +openoffice.org | reportdesign-registry-office |
1948 | +openoffice.org | reportdesign-report |
1949 | +openoffice.org | reportdesign-resource |
1950 | +openoffice.org | sc-core |
1951 | +openoffice.org | sc-dbgui |
1952 | +openoffice.org | sc-docshell |
1953 | +openoffice.org | sc-drawfunc |
1954 | +openoffice.org | sc-formdlg |
1955 | +openoffice.org | sc-miscdlgs |
1956 | +openoffice.org | sc-navipi |
1957 | +openoffice.org | sc-pagedlg |
1958 | +openoffice.org | sc-styleui |
1959 | +openoffice.org | sc-ui |
1960 | +openoffice.org | sc-ui-cctrl |
1961 | +openoffice.org | scaddins-analysis |
1962 | +openoffice.org | scaddins-datefunc |
1963 | +openoffice.org | sccomp-solver |
1964 | +openoffice.org | scp2-activex |
1965 | +openoffice.org | scp2-base |
1966 | +openoffice.org | scp2-binfilter |
1967 | +openoffice.org | scp2-calc |
1968 | +openoffice.org | scp2-draw |
1969 | +openoffice.org | scp2-gnome |
1970 | +openoffice.org | scp2-graphicfilter |
1971 | +openoffice.org | scp2-impress |
1972 | +openoffice.org | scp2-javafilter |
1973 | +openoffice.org | scp2-kde |
1974 | +openoffice.org | scp2-lingu |
1975 | +openoffice.org | scp2-math |
1976 | +openoffice.org | scp2-onlineupdate |
1977 | +openoffice.org | scp2-ooo |
1978 | +openoffice.org | scp2-python |
1979 | +openoffice.org | scp2-quickstart |
1980 | +openoffice.org | scp2-sdkoo |
1981 | +openoffice.org | scp2-testtool |
1982 | +openoffice.org | scp2-winexplorerext |
1983 | +openoffice.org | scp2-writer |
1984 | +openoffice.org | scp2-xsltfilter |
1985 | +openoffice.org | scsolver-ext |
1986 | +openoffice.org | scsolver-ui |
1987 | +openoffice.org | sd-accessibility |
1988 | +openoffice.org | sd-animations |
1989 | +openoffice.org | sd-app |
1990 | +openoffice.org | sd-core |
1991 | +openoffice.org | sd-dlg |
1992 | +openoffice.org | sd-html |
1993 | +openoffice.org | sd-notes |
1994 | +openoffice.org | sd-slideshow |
1995 | +openoffice.org | sd-table |
1996 | +openoffice.org | sdext-extension |
1997 | +openoffice.org | sdext-minimizer-extension |
1998 | +openoffice.org | sdext-minimizer-office |
1999 | +openoffice.org | sdext-minimizer-ui |
2000 | +openoffice.org | sfx2-appl |
2001 | +openoffice.org | sfx2-bastyp |
2002 | +openoffice.org | sfx2-config |
2003 | +openoffice.org | sfx2-dialog |
2004 | +openoffice.org | sfx2-doc |
2005 | +openoffice.org | sfx2-menu |
2006 | +openoffice.org | sfx2-view |
2007 | +openoffice.org | shell-res |
2008 | +openoffice.org | starmath-source |
2009 | +openoffice.org | svtools-contnr |
2010 | +openoffice.org | svtools-control |
2011 | +openoffice.org | svtools-dialogs |
2012 | +openoffice.org | svtools-filter |
2013 | +openoffice.org | svtools-items1 |
2014 | +openoffice.org | svtools-java |
2015 | +openoffice.org | svtools-misc |
2016 | +openoffice.org | svtools-misc1 |
2017 | +openoffice.org | svtools-plugapp |
2018 | +openoffice.org | svtools-productregistration |
2019 | +openoffice.org | svtools-uno |
2020 | +openoffice.org | svtools-unodialog |
2021 | +openoffice.org | svx-accessibility |
2022 | +openoffice.org | svx-dialog |
2023 | +openoffice.org | svx-editeng |
2024 | +openoffice.org | svx-engine3d |
2025 | +openoffice.org | svx-fmcomp |
2026 | +openoffice.org | svx-form |
2027 | +openoffice.org | svx-gallery2 |
2028 | +openoffice.org | svx-inc |
2029 | +openoffice.org | svx-intro |
2030 | +openoffice.org | svx-items |
2031 | +openoffice.org | svx-options |
2032 | +openoffice.org | svx-outliner |
2033 | +openoffice.org | svx-src |
2034 | +openoffice.org | svx-stbctrls |
2035 | +openoffice.org | svx-svdraw |
2036 | +openoffice.org | svx-svxlink |
2037 | +openoffice.org | svx-table |
2038 | +openoffice.org | svx-tbxctrls |
2039 | +openoffice.org | svx-textconversiondlgs |
2040 | +openoffice.org | svx-toolbars |
2041 | +openoffice.org | sw-app |
2042 | +openoffice.org | sw-chrdlg |
2043 | +openoffice.org | sw-config |
2044 | +openoffice.org | sw-dbui |
2045 | +openoffice.org | sw-dialog |
2046 | +openoffice.org | sw-dochdl |
2047 | +openoffice.org | sw-docvw |
2048 | +openoffice.org | sw-envelp |
2049 | +openoffice.org | sw-fldui |
2050 | +openoffice.org | sw-fmtui |
2051 | +openoffice.org | sw-frmdlg |
2052 | +openoffice.org | sw-globdoc |
2053 | +openoffice.org | sw-inc |
2054 | +openoffice.org | sw-index |
2055 | +openoffice.org | sw-lingu |
2056 | +openoffice.org | sw-misc |
2057 | +openoffice.org | sw-ribbar |
2058 | +openoffice.org | sw-sdi |
2059 | +openoffice.org | sw-shells |
2060 | +openoffice.org | sw-smartmenu |
2061 | +openoffice.org | sw-table |
2062 | +openoffice.org | sw-uiview |
2063 | +openoffice.org | sw-undo |
2064 | +openoffice.org | sw-unocore |
2065 | +openoffice.org | sw-utlui |
2066 | +openoffice.org | sw-web |
2067 | +openoffice.org | sw-wrtsh |
2068 | +openoffice.org | swext-custom |
2069 | +openoffice.org | swext-help |
2070 | +openoffice.org | swext-office |
2071 | +openoffice.org | sysui-share |
2072 | +openoffice.org | toolkit-workben-layout |
2073 | +openoffice.org | ucbhelper-ucb-explorer |
2074 | +openoffice.org | uui-source |
2075 | +openoffice.org | vcl-src |
2076 | +openoffice.org | wizards-euro |
2077 | +openoffice.org | wizards-formwizard |
2078 | +openoffice.org | wizards-importwizard |
2079 | +openoffice.org | wizards-schedule |
2080 | +openoffice.org | wizards-template |
2081 | +openoffice.org | xmlsecurity-component |
2082 | +openoffice.org | xmlsecurity-dialogs |
2083 | |
2084 | === modified file 'config/settings.conf' |
2085 | --- config/settings.conf 2010-09-28 14:23:29 +0000 |
2086 | +++ config/settings.conf 2010-10-07 20:22:40 +0000 |
2087 | @@ -9,7 +9,7 @@ |
2088 | |
2089 | [defaults] |
2090 | distro_id: ubuntu |
2091 | -distro_codename: maverick |
2092 | +distro_codename: lucid |
2093 | devel_milestone: |
2094 | product: desktop |
2095 | blacklist_priority: 3499 |
2096 | |
2097 | === modified file 'ubuntu-translations-stats.py' |
2098 | --- ubuntu-translations-stats.py 2010-09-28 10:04:10 +0000 |
2099 | +++ ubuntu-translations-stats.py 2010-10-07 20:22:40 +0000 |
2100 | @@ -23,6 +23,8 @@ |
2101 | import sys |
2102 | import urllib |
2103 | import os |
2104 | +import apt_pkg |
2105 | +import subprocess |
2106 | from optparse import OptionParser |
2107 | from common import utils |
2108 | from ul10n_stats import ul10n_iso_pots_get |
2109 | @@ -47,33 +49,6 @@ |
2110 | given distro version.""" |
2111 | |
2112 | parser = OptionParser(usage = USAGE, description = DESCRIPTION) |
2113 | - |
2114 | - parser.add_option("-l", |
2115 | - "--languages-file", |
2116 | - dest="languages_file", |
2117 | - default=None, |
2118 | - help="File with read languages for report.") |
2119 | - |
2120 | - parser.add_option("-d", |
2121 | - "--domains-file", |
2122 | - dest="domains_file", |
2123 | - default=None, |
2124 | - help="File to read domains from and on which stats are based. Requires -c argument.") |
2125 | - |
2126 | - parser.add_option("-c", |
2127 | - "--custom", |
2128 | - dest="custom", |
2129 | - action="store_true", |
2130 | - default=False, |
2131 | - help="Turn on custom (non-Ubuntu) mode") |
2132 | - |
2133 | - parser.add_option("-f", |
2134 | - "--no-file", |
2135 | - dest="no_file", |
2136 | - action="store_true", |
2137 | - default=False, |
2138 | - help="Disables using conf file blacklist.") |
2139 | - |
2140 | parser.add_option("-p", |
2141 | "--no-priorities", |
2142 | dest="no_priorities", |
2143 | @@ -90,14 +65,56 @@ |
2144 | parser.add_option("-b", |
2145 | "--template-blacklist", |
2146 | dest="blacklist", |
2147 | - default='config/blacklist.conf', |
2148 | + default='', |
2149 | help="Specify the file containing the templates to blacklist during the calculation of statistics") |
2150 | +# from here down are args for custom options. they all required -c. |
2151 | + parser.add_option("-c", |
2152 | + "--custom", |
2153 | + dest="custom", |
2154 | + action="store_true", |
2155 | + default=False, |
2156 | + help="Turn on custom (non-Ubuntu) mode") |
2157 | + |
2158 | + parser.add_option("-l", |
2159 | + "--languages-file", |
2160 | + dest="languages_file", |
2161 | + default=None, |
2162 | + help="File with languages for report.") |
2163 | + |
2164 | + parser.add_option("-n", |
2165 | + "--custom-name", |
2166 | + dest="custom_name", |
2167 | + default=None, |
2168 | + help="Name of custom project. Requires -c argument.") |
2169 | + |
2170 | + parser.add_option("-m", |
2171 | + "--manifest-file", |
2172 | + dest="manifest_file", |
2173 | + default=None, |
2174 | + help="Manifest file to read bin pkgs from and on which stats are based. Requires -c argument.") |
2175 | + |
2176 | + parser.add_option("-d", |
2177 | + "--domains-file", |
2178 | + dest="domains_file", |
2179 | + default=None, |
2180 | + help="File to read domains from and on which stats are based. Requires -c argument.") |
2181 | + |
2182 | + parser.add_option("-r", |
2183 | + "--root-dir", |
2184 | + dest="root_dir", |
2185 | + default=None, |
2186 | + help="Path to root dir of custom system from which to get domains. Requires -c argument.") |
2187 | + parser.add_option("-f", |
2188 | + "--disable-file-blacklist", |
2189 | + dest="disable_file_blacklist", |
2190 | + action="store_true", |
2191 | + default=False, |
2192 | + help="Disables using conf file blacklist.") |
2193 | |
2194 | (options, args) = parser.parse_args() |
2195 | |
2196 | return options, settings |
2197 | |
2198 | - |
2199 | def get_raw_data(distro_codename): |
2200 | |
2201 | logger.info("Fetching stats data...") |
2202 | @@ -107,7 +124,7 @@ |
2203 | urllib.urlretrieve(url, path) |
2204 | |
2205 | |
2206 | -def get_working_templates(options, settings): |
2207 | +def get_superset_templates(options, settings): |
2208 | |
2209 | distro_codename = settings['distro_codename'] |
2210 | distro_id = settings['distro_id'] |
2211 | @@ -116,7 +133,9 @@ |
2212 | |
2213 | logger.info("Fetching working templates set...") |
2214 | |
2215 | - # if normal ubuntu mode, get src pkg list form seeds, else from custom |
2216 | + src_pkgs_not_found = list() |
2217 | + |
2218 | + # if normal ubuntu mode, get src pkg list from seeds, else from custom |
2219 | if not options.custom: |
2220 | # Get the source packages from the given distro's seeds. |
2221 | # This will give us only the list of source packages we're interested |
2222 | @@ -130,14 +149,22 @@ |
2223 | |
2224 | # create list ('valid') of lines from lp_stats_pots file that only includes |
2225 | # src pkgs that are: in the seed, enabled, or in extra (for live cd) |
2226 | - valid = ul10n_iso_pots_get.apply_valid_pots_filter(TEMPLATES_FILE, |
2227 | + superset = ul10n_iso_pots_get.apply_valid_pots_filter(TEMPLATES_FILE, |
2228 | distro_seeds.sourcepackages) |
2229 | - |
2230 | - working_pots = ul10n_iso_pots_get.apply_blacklist_filter(options, settings, valid) |
2231 | - |
2232 | else: |
2233 | - domain_src, domain_linenum, domain_template, lines = ul10n_iso_pots_get.get_dictionaries(TEMPLATES_FILE) |
2234 | - if options.domains_file: |
2235 | + domain_src, domain_linenum, domain_template, src_domains, lines = ul10n_iso_pots_get.get_dictionaries(TEMPLATES_FILE) |
2236 | + if options.manifest_file: |
2237 | + binary_pkgs = get_bin_pkgs_from_manifest(options.manifest_file) |
2238 | + src_pkgs, not_found = get_src_pkgs_from_binary_pkgs(binary_pkgs) |
2239 | + domains = list() |
2240 | + for src_pkg in src_pkgs: |
2241 | + if src_pkg in src_domains.keys(): |
2242 | + for domain in src_domains[src_pkg]: |
2243 | + domains.append(domain) |
2244 | + else: |
2245 | + src_pkgs_not_found.append(src_pkg) |
2246 | + #TODO save src pkgs not found. this shows what the trans stats DON'T include |
2247 | + elif options.domains_file: |
2248 | if not os.path.exists(options.domains_file): |
2249 | logger.critical("Error: domains_file not found. Stopping.") |
2250 | sys.exit(1) |
2251 | @@ -145,28 +172,117 @@ |
2252 | domains = f.read().split('\n') |
2253 | f.close() |
2254 | else: |
2255 | - domains = ul10n_custom.get_domains() |
2256 | - #for domain in domains: logger.debug(domain) |
2257 | - working_pots = list() |
2258 | + if options.root_dir: |
2259 | + r_dir = options.root_dir |
2260 | + else: |
2261 | + r_dir = '/' |
2262 | + domains = ul10n_custom.get_domains(r_dir) |
2263 | + #for domain in domains: print >> sys.stderr, domain |
2264 | + superset = list() |
2265 | invalid = list() |
2266 | for domain in domains: |
2267 | if domain in domain_src.keys(): |
2268 | - line = lines[domain_linenum[domain]].rstrip() |
2269 | - working_pots.append(line) |
2270 | - # write |
2271 | - f_domains = open(os.path.join(os.getcwd(), "reports", "report_domains"), 'w') |
2272 | - f_domains.write("- Src Pkg | Gettext Domain | LP Template -\n") |
2273 | - f_domains.write("------------------------------------------\n") |
2274 | - for line in working_pots: |
2275 | - items = line.split('|') |
2276 | - f_domains.write(items[0].strip() + ' | ' + items[1].strip() + ' | ' + items[2].strip() + '\n') |
2277 | - f_domains.flush() |
2278 | - f_domains.close() |
2279 | - |
2280 | - return working_pots |
2281 | + line = lines[domain_linenum[domain]].rstrip().lstrip() |
2282 | + superset.append(line) |
2283 | + superset.sort() |
2284 | + |
2285 | + return superset, src_pkgs_not_found |
2286 | + |
2287 | +def get_src_pkgs_from_binary_pkgs(binaries): |
2288 | + not_found = list() |
2289 | + src_pkgs = list() |
2290 | + |
2291 | + |
2292 | + for items in binaries: |
2293 | + cmd = ['apt-cache', 'showsrc', items[0]] |
2294 | + try: |
2295 | + res = subprocess.Popen(cmd, cwd="./", stdout=subprocess.PIPE |
2296 | +).communicate() |
2297 | + except: |
2298 | + print >>sys.stderr, "Error: subprocess exception. stopping." |
2299 | + sys.exit(1) |
2300 | + continue |
2301 | + src_pkg = res[0][res[0].find(" ") + 1:res[0].find("\n")] |
2302 | + if len(src_pkg) == 0: |
2303 | + not_found.append(items[0]) |
2304 | + continue |
2305 | + if src_pkg not in src_pkgs: |
2306 | + src_pkgs.append(src_pkg) |
2307 | + |
2308 | +# apt_pkg.init() |
2309 | +# srcs = apt_pkg.GetPkgSrcRecords() |
2310 | +# srcs.Restart() |
2311 | +# for tup in binaries: |
2312 | +# if srcs.Lookup(tup[0]): |
2313 | +# src_pkgs.append(srcs.Package) |
2314 | +# else: |
2315 | +# not_found.append(tup[0]) |
2316 | + |
2317 | + src_pkgs.sort() |
2318 | + |
2319 | + return src_pkgs, not_found |
2320 | + |
2321 | +def get_bin_pkgs_from_manifest(path): |
2322 | + if not os.path.exists(path): |
2323 | + print >> sys.stderr, "Error: " + path + "does not exist. Stoppping." |
2324 | + sys.exit(1) |
2325 | + f = open(path, 'r') |
2326 | + lines = f.readlines() |
2327 | + f.close() |
2328 | + |
2329 | + binaries = list(tuple()) |
2330 | + for line in lines: |
2331 | + items = line.split() |
2332 | + binaries.append([items[0],items[1]]) |
2333 | + |
2334 | + return binaries |
2335 | + |
2336 | +def log_template(the_set, name, options, settings): |
2337 | + basename = utils.get_basename(options,settings) |
2338 | + f_name = basename + "-" + name |
2339 | + f = open(os.path.join(os.getcwd(), "reports", f_name), 'w') |
2340 | + the_list_ = list(the_set) |
2341 | + the_list_.sort() |
2342 | + for line in the_list_: |
2343 | + f.write(line + '\n') |
2344 | + f.flush() |
2345 | + f.close() |
2346 | + |
2347 | + return |
2348 | + |
2349 | +def log_blacklist(the_list, name, options, settings): |
2350 | + |
2351 | + basename = utils.get_basename(options,settings) |
2352 | + f_name = basename + "-blacklist-" + name |
2353 | + |
2354 | + # write used blacklist to file in data dir |
2355 | + f = open(os.path.join("reports", f_name), 'w') |
2356 | + l = list(the_list) |
2357 | + l.sort() |
2358 | + for item in l: |
2359 | + f.write(item[0] + ' | ' + item[1] + '\n') |
2360 | + f.flush() |
2361 | + f.close() |
2362 | + |
2363 | + return |
2364 | + |
2365 | +def log(blacklisted, blacklisted_priority, blacklisted_file, superset, working, |
2366 | + src_pkgs_not_found, options, settings): |
2367 | + # write blaclisted files |
2368 | + log_blacklist(blacklisted_file, "file", options, settings) |
2369 | + log_blacklist(blacklisted_priority, "priority", options, settings) |
2370 | + log_blacklist(blacklisted, "all", options, settings) |
2371 | + |
2372 | + log_template(superset, "superset", options, settings) |
2373 | + log_template(working, "working", options, settings) |
2374 | + if options.manifest_file: |
2375 | + log_template(src_pkgs_not_found, "src-pkgs-not-found", options, settings) |
2376 | + |
2377 | + return |
2378 | |
2379 | def main(): |
2380 | - |
2381 | + import codecs |
2382 | + sys.stdout = codecs.open("/dev/stdout", "w", 'utf-8') |
2383 | # Get the command line options and settings from the config file |
2384 | options, settings = options_parse() |
2385 | |
2386 | @@ -175,12 +291,21 @@ |
2387 | get_raw_data(settings['distro_codename']) |
2388 | |
2389 | # Compile a list of working templates to be considered for the calculation. |
2390 | - # Apply any blacklisting if necessary. |
2391 | - working_pots = get_working_templates(options, settings) |
2392 | + # Also, if its a custom execution and the manifest file option is used, return |
2393 | + # the list of src packages that are derived from the manifest but that are |
2394 | + # not found in the LP export. These are removed from the superset of pkgs |
2395 | + # and thus the statistics do not include them. |
2396 | + superset, src_pkgs_not_found = get_superset_templates(options, settings) |
2397 | + |
2398 | + # Apply blacklists |
2399 | + working, blacklisted, blacklisted_priority, blacklisted_file = ul10n_iso_pots_get.apply_blacklist_filter(options, settings, superset) |
2400 | + |
2401 | + # write log files |
2402 | + log(blacklisted, blacklisted_priority, blacklisted_file, superset, working, src_pkgs_not_found, options, settings) |
2403 | |
2404 | # Calculate the unified, per language translation statistics from the |
2405 | # working templates set and output them in a report |
2406 | - ul10n_stats_calc.calculate_stats(options, settings, working_pots) |
2407 | + ul10n_stats_calc.calculate_stats(options, settings, working) |
2408 | |
2409 | if __name__ == "__main__": |
2410 | main() |
2411 | |
2412 | === modified file 'ul10n_stats/ul10n_custom.py' (properties changed: -x to +x) |
2413 | --- ul10n_stats/ul10n_custom.py 2010-09-25 12:56:20 +0000 |
2414 | +++ ul10n_stats/ul10n_custom.py 2010-10-07 20:22:40 +0000 |
2415 | @@ -2,10 +2,11 @@ |
2416 | |
2417 | import os, sys, subprocess |
2418 | |
2419 | -def get_domains(): |
2420 | +def get_domains(root_path): |
2421 | domains = list() |
2422 | not_found = list() |
2423 | - cmd = 'find /usr/share/locale-langpack -name "*.mo"' |
2424 | + path = os.path.join(root_path, 'usr/share/locale-langpack') |
2425 | + cmd = 'find ' + path + ' -name "*.mo"' |
2426 | res = None |
2427 | try: |
2428 | res = subprocess.Popen(cmd, shell=True, cwd="./", stdout=subprocess.PIPE ).communicate() |
2429 | @@ -20,6 +21,7 @@ |
2430 | if len(domain) > 0: |
2431 | if domain not in domains: |
2432 | domains.append(domain) |
2433 | + domains.sort() |
2434 | return domains |
2435 | |
2436 | def get_src_pkgs(domains): |
2437 | |
2438 | === modified file 'ul10n_stats/ul10n_iso_pots_get.py' |
2439 | --- ul10n_stats/ul10n_iso_pots_get.py 2010-09-28 18:55:37 +0000 |
2440 | +++ ul10n_stats/ul10n_iso_pots_get.py 2010-10-07 20:22:40 +0000 |
2441 | @@ -110,50 +110,49 @@ |
2442 | valid.append(line.strip()) |
2443 | return valid |
2444 | |
2445 | -def apply_blacklist_filter(options, settings, pot_set): |
2446 | - |
2447 | - blacklist = options.blacklist |
2448 | - |
2449 | +def apply_blacklist_filter(options, settings, superset): |
2450 | + |
2451 | + if len(options.blacklist) != 0: |
2452 | + blacklist = options.blacklist |
2453 | + else: |
2454 | + blacklist = 'config/blacklist.' + settings['distro_codename'] + '.conf' |
2455 | + |
2456 | + blacklisted = set() |
2457 | # create or get blacklist |
2458 | priority_blacklist = list(tuple()) |
2459 | |
2460 | if not options.no_priorities: |
2461 | # Set up blacklist from priorities |
2462 | - type_msg = "Generated from Priorities" |
2463 | cutoff_priority = settings['blacklist_priority'] |
2464 | |
2465 | - for line in pot_set: |
2466 | + for line in superset: |
2467 | items = line.split('|') |
2468 | priority = items[6].strip() |
2469 | - if priority < cutoff_priority: |
2470 | + if priority <= cutoff_priority: |
2471 | src = items[0].strip() |
2472 | - template = items[1].strip() |
2473 | - priority_blacklist.append((src, template)) |
2474 | + domain = items[1].strip() |
2475 | + priority_blacklist.append((src, domain)) |
2476 | print >>sys.stderr, "BLACKLISTED through Priority: " + str(len(priority_blacklist)) |
2477 | |
2478 | - write_blacklist(priority_blacklist, "priority", settings) |
2479 | - |
2480 | file_blacklist = list(tuple()) |
2481 | |
2482 | - if not options.no_file: |
2483 | + if not options.disable_file_blacklist: |
2484 | # Set up blacklist from config/blacklist.conf |
2485 | - type_msg = "Read from Conf File" |
2486 | - |
2487 | for line in open(blacklist): |
2488 | - blk_pkg, blk_pot = line.split('|') |
2489 | - blk_pkg = blk_pkg.strip() |
2490 | - blk_pot = blk_pot.strip() |
2491 | - file_blacklist.append((blk_pkg, blk_pot)) |
2492 | + src, domain= line.split('|') |
2493 | + src = src.strip() |
2494 | + domain = domain.strip() |
2495 | + file_blacklist.append((src, domain)) |
2496 | print >>sys.stderr, "BLACKLISTED through File: " + str(len(file_blacklist)) |
2497 | |
2498 | - write_blacklist(file_blacklist, "file", settings) |
2499 | + for item in file_blacklist: blacklisted.add(item) |
2500 | + for item in priority_blacklist: blacklisted.add(item) |
2501 | + |
2502 | + print >>sys.stderr, "BLACKLISTED: " + str(len(blacklisted)) |
2503 | |
2504 | valid = list() |
2505 | started = 1 |
2506 | - for line in pot_set: |
2507 | - if started > 0: |
2508 | - started -= 1 |
2509 | - continue |
2510 | + for line in superset: |
2511 | |
2512 | if '|' in line: |
2513 | (pkg, domain, pot, total, enabled, langpack, priority, date) = line.split('|') |
2514 | @@ -161,7 +160,8 @@ |
2515 | pot = pot.strip() |
2516 | if ((pkg, pot) not in file_blacklist) and ((pkg, pot) not in priority_blacklist): |
2517 | valid.append(line.strip()) |
2518 | - return valid |
2519 | + |
2520 | + return valid, blacklisted, priority_blacklist, file_blacklist |
2521 | |
2522 | def get_dictionaries(f): |
2523 | |
2524 | @@ -170,6 +170,7 @@ |
2525 | domain_src = dict() |
2526 | domain_template = dict() |
2527 | domain_linenum = dict() |
2528 | + src_domains = dict() |
2529 | |
2530 | line_num = -1 |
2531 | started = 1 |
2532 | @@ -191,15 +192,10 @@ |
2533 | domain_template[domain] = template |
2534 | if (domain,line_num) not in domain_linenum.keys(): |
2535 | domain_linenum[domain] = line_num |
2536 | - return domain_src, domain_linenum, domain_template, lines |
2537 | + if src_pkg not in src_domains.keys(): |
2538 | + src_domains[src_pkg] = [domain] |
2539 | + else: |
2540 | + if domain not in src_domains[src_pkg]: |
2541 | + src_domains[src_pkg].append(domain) |
2542 | + return domain_src, domain_linenum, domain_template, src_domains, lines |
2543 | |
2544 | -def write_blacklist(bl, msg, settings): |
2545 | - # write used blacklist to file in data dir |
2546 | - black_list_f = open(os.path.join("data", settings['distro_codename'] + "-black_listed-" + msg), 'w') |
2547 | - black_list_f.write("- " + msg + " -\n- Source Package | Template -\n-----------------------------\n") |
2548 | - bl_l = list(bl) |
2549 | - bl_l.sort() |
2550 | - for item in bl_l: |
2551 | - black_list_f.write(item[0] + ' | ' + item[1] + '\n') |
2552 | - black_list_f.flush() |
2553 | - black_list_f.close() |
2554 | |
2555 | === modified file 'ul10n_stats/ul10n_stats_calc.py' |
2556 | --- ul10n_stats/ul10n_stats_calc.py 2010-09-28 14:23:29 +0000 |
2557 | +++ ul10n_stats/ul10n_stats_calc.py 2010-10-07 20:22:40 +0000 |
2558 | @@ -27,7 +27,7 @@ |
2559 | import urllib2 |
2560 | import datetime |
2561 | import gzip |
2562 | -from common.utils import init_logging, do_lp_login |
2563 | +from common.utils import init_logging, do_lp_login, get_basename |
2564 | from common.templates import html_report_template |
2565 | sys.path.append(os.path.join(os.getcwd(), 'lib/python2.6/site-packages')) |
2566 | from gviz_api import gviz_api |
2567 | @@ -102,7 +102,7 @@ |
2568 | |
2569 | length = property(_get_languages_len) |
2570 | |
2571 | - def get_all_languages(self, config=None): |
2572 | + def get_all_languages(self, options, config=None): |
2573 | """Fetch all available languages either known to Launchpad or listed |
2574 | in a configuration file. |
2575 | """ |
2576 | @@ -145,17 +145,11 @@ |
2577 | if started > 0: |
2578 | started -= 1 |
2579 | elif '|' in line: |
2580 | - try: |
2581 | - code, english_name, visible = line.split('|') |
2582 | - except ValueError, e: |
2583 | + if options.custom and options.languages_file: |
2584 | code, english_name = line.split('|') |
2585 | visible = "t" |
2586 | - logger.warning( |
2587 | - "Language {0} [{1}]:".format( |
2588 | - english_name.strip(), code.strip()) \ |
2589 | - + " missing 'visible' column " \ |
2590 | - + "in the languages file. Assuming " \ |
2591 | - + "it is visible.") |
2592 | + else: |
2593 | + code, english_name, visible = line.split('|') |
2594 | language = Language(code.strip(), |
2595 | english_name.strip(), |
2596 | visible.strip() == "t") |
2597 | @@ -212,6 +206,7 @@ |
2598 | |
2599 | |
2600 | def addToLanguage(stats, language, translated, total): |
2601 | + |
2602 | if language in stats: |
2603 | stats[language]['translated'] += translated |
2604 | stats[language]['total'] += total |
2605 | @@ -221,10 +216,100 @@ |
2606 | 'total': total, |
2607 | } |
2608 | |
2609 | - |
2610 | -def print_report(variables, settings, custom): |
2611 | - basename = '{0}-{1}-translation-stats.html'.format(settings['distro_id'], settings['distro_release']) |
2612 | - report_filename = os.path.join('reports', basename) |
2613 | +def do_lp_login(): |
2614 | + |
2615 | + from launchpadlib.launchpad import Launchpad |
2616 | + import tempfile |
2617 | + import atexit |
2618 | + import shutil |
2619 | + cachedir = tempfile.mkdtemp() |
2620 | + atexit.register(shutil.rmtree, cachedir) |
2621 | + |
2622 | + print >> sys.stderr, "Logging in to Launchpad... " |
2623 | + |
2624 | + # TODO: error checking, especially if we're working offline |
2625 | + launchpad = Launchpad.login_anonymously('Ubuntu Translation stats', |
2626 | + 'production', cachedir) |
2627 | + |
2628 | + return launchpad |
2629 | + |
2630 | + |
2631 | +def get_lang_names(options): |
2632 | + |
2633 | + # Set only to False to speed up debugging |
2634 | + lp_api = False |
2635 | + |
2636 | + lang_names = {} |
2637 | + |
2638 | + print >>sys.stderr, 'Getting language list...' |
2639 | + |
2640 | + if lp_api: |
2641 | + max_tries = 2 |
2642 | + tries = 0 |
2643 | + |
2644 | + launchpad = do_lp_login() |
2645 | + |
2646 | + try: |
2647 | + langs = launchpad.languages |
2648 | + except urllib2.URLError, e: |
2649 | + tries += 1 |
2650 | + if tries >= max_tries or (e.code != 502 and e.code != 504): |
2651 | + print >>sys.stderr, "Failed (%d): %s" % (e.code, url) |
2652 | + raise |
2653 | + |
2654 | + print >>sys.stderr, "Retrying (%d): %s" % (e.code, url) |
2655 | + time.sleep(3) |
2656 | + |
2657 | + for lang in langs: |
2658 | + if lang.visible: |
2659 | + lang_names[lang.code] = lang.english_name |
2660 | + |
2661 | + langs_len = len(langs) |
2662 | + |
2663 | + else: |
2664 | + if options.languages_file: |
2665 | + languages_file = options.languages_file |
2666 | + else: |
2667 | + languages_file = os.path.join('data', 'langs.log') |
2668 | + |
2669 | + if not os.path.exists(languages_file): |
2670 | + print >> sys.stderr, 'Error: Langauges file does not exist. Stopping' |
2671 | + sys.exit(1) |
2672 | + f = open(languages_file, 'r') |
2673 | + lines = f.readlines() |
2674 | + f.close() |
2675 | + |
2676 | + print >> sys.stderr, 'file:' + languages_file |
2677 | + started = 2 |
2678 | + for line in lines: |
2679 | + if started > 0 and not options.languages_file: |
2680 | + started -= 1 |
2681 | + continue |
2682 | + |
2683 | + if '|' in line: |
2684 | + items = line.split('|') |
2685 | + code = items[0].strip() |
2686 | + englishname = items[1].strip() |
2687 | + visible = True |
2688 | + if len(items) > 2: |
2689 | + vis = items[2].strip() |
2690 | + if vis.strip() != "t": |
2691 | + visible = False |
2692 | + if visible: |
2693 | + lang_names[code] = englishname |
2694 | + |
2695 | + |
2696 | + langs_len = len(lang_names) |
2697 | + |
2698 | + print >>sys.stderr, '{0} languages obtained'.format(str(langs_len)) |
2699 | + |
2700 | + return lang_names |
2701 | + |
2702 | + |
2703 | +def print_reports(variables, settings, options): |
2704 | + basename = get_basename(options,settings) |
2705 | + #basename += ".html" |
2706 | + report_filename = os.path.join('reports', basename + '.html') |
2707 | |
2708 | # Log the date of creation for the report |
2709 | gen_date = str(datetime.datetime.utcnow()) |
2710 | @@ -232,14 +317,31 @@ |
2711 | # Add necessary variables for the report |
2712 | variables['gen_date'] = gen_date |
2713 | variables['distro_release'] = settings['distro_release'] |
2714 | - |
2715 | - # This is clearly not optimal, but as long as the file is hosted |
2716 | - # on people.ubuntu.com there is no other way to make the statistics |
2717 | - # link work. |
2718 | - variables['basename'] = '/~dpm/' + basename |
2719 | - |
2720 | + variables['project'] = options.custom_name |
2721 | + variables['basename'] = basename |
2722 | f = codecs.open(report_filename, 'w', 'utf-8') |
2723 | - f.write(html_report_template.ubuntu_template % variables) |
2724 | + if options.custom: |
2725 | + from common.templates import custom_report as template |
2726 | + from common.templates import custom_src_excluded as excluded |
2727 | + f_ = codecs.open(os.path.join('reports', basename + '-excluded.html'), 'w', 'utf-8') |
2728 | + f_.write(excluded.ubuntu_template % variables) |
2729 | + f_.close() |
2730 | + from common.templates import custom_src_included as included |
2731 | + f_ = codecs.open(os.path.join('reports', basename + '-included.html'), 'w', 'utf-8') |
2732 | + f_.write(included.ubuntu_template % variables) |
2733 | + f_.close() |
2734 | + from common.templates import custom_blacklisted_file as blacklisted_file |
2735 | + f_ = codecs.open(os.path.join('reports', basename + '-blacklisted-file.html'), 'w', 'utf-8') |
2736 | + f_.write(blacklisted_file.ubuntu_template % variables) |
2737 | + f_.close() |
2738 | + from common.templates import custom_blacklisted_priority as blacklisted_priority |
2739 | + f_ = codecs.open(os.path.join('reports', basename + '-blacklisted-priority.html'), 'w', 'utf-8') |
2740 | + f_.write(blacklisted_priority.ubuntu_template % variables) |
2741 | + f_.close() |
2742 | + #print "variables: " + str(variables) |
2743 | + else: |
2744 | + from common.templates import html_report_template as template |
2745 | + f.write(template.ubuntu_template % variables) |
2746 | f.close() |
2747 | |
2748 | logger.info('Report generated at {0}'.format(report_filename)) |
2749 | @@ -271,7 +373,7 @@ |
2750 | print >> sys.stderr, "TOTAL MESSAGES: " + str(TOTAL) |
2751 | |
2752 | languages = LanguageSet() |
2753 | - languages.get_all_languages(options.languages_file) |
2754 | + languages.get_all_languages(options, options.languages_file) |
2755 | |
2756 | # Skip 2 lines from the package stats file |
2757 | started = 2 |
2758 | @@ -304,11 +406,13 @@ |
2759 | languages_available.sort(cmp=lambda a, b: |
2760 | cmp(stats[b]['translated'], stats[a]['translated'])) |
2761 | |
2762 | + #for l in languages_available: |
2763 | + # print >> sys.stderr, l |
2764 | + |
2765 | # This list will contain the language statistics data in the format |
2766 | # the gviz_api.DataTable expects |
2767 | language_stats = [] |
2768 | languages_supported = 0 |
2769 | - |
2770 | for lang in languages_available: |
2771 | if lang in languages: |
2772 | translated_percent = 100.00 * stats[lang]['translated'] / TOTAL |
2773 | @@ -324,16 +428,152 @@ |
2774 | |
2775 | languages_total = len(languages_available) |
2776 | |
2777 | - keys = ("language", "translated") |
2778 | - description = {"language": ("string", "Language"), |
2779 | - "translated": ("number", "Translated")} |
2780 | + description = { |
2781 | + "language": ("string", "Language"), |
2782 | + "translated": ("number", "Translated") |
2783 | + } |
2784 | |
2785 | # Load the data into a gviz_api.DataTable |
2786 | data_table = gviz_api.DataTable(description) |
2787 | data_table.LoadData(language_stats) |
2788 | |
2789 | - languages_json = data_table.ToJSon( |
2790 | - columns_order=("language", "translated"), |
2791 | - order_by=[("translated", "desc")]) |
2792 | - |
2793 | - print_report(locals(), settings, options.custom) |
2794 | + # FIXME: If we do rounding of the percentages before here, languages with |
2795 | + # the same percentage after rounding will be simply ordered alphabetically. |
2796 | + # When losing the figures after the decimal point, we lose the order of |
2797 | + # languages in a given percentage range |
2798 | + data_json = data_table.ToJSon( |
2799 | + columns_order=("language", "translated"), |
2800 | + order_by=[("translated", "desc"), ("language", "asc")] |
2801 | + ) |
2802 | + |
2803 | + if options.custom: |
2804 | + included_data_table, included_json, \ |
2805 | + excluded_data_table, excluded_json, \ |
2806 | + blacklisted_file_data, blacklisted_file_json, \ |
2807 | + blacklisted_priority_data, blacklisted_priority_json = make_custom_html(options, settings) |
2808 | + |
2809 | + print_reports(locals(), settings, options) |
2810 | + |
2811 | +def make_custom_html(options, settings): |
2812 | + basename = get_basename(options,settings) |
2813 | + |
2814 | + #create data for blacklisted-priority |
2815 | + l = list() |
2816 | + f = open(os.path.join('reports', basename + '-blacklist-priority'), 'r') |
2817 | + lines = f.readlines() |
2818 | + f.close() |
2819 | + for line in lines: |
2820 | + items = line.split('|') |
2821 | + src = items[0].strip() |
2822 | + domain = items[1].strip() |
2823 | + found = False |
2824 | + for d in l: |
2825 | + if domain == d['domain']: |
2826 | + found = True |
2827 | + if not found: |
2828 | + l.append({'src_pkg':src, 'domain':domain}) |
2829 | + description = { |
2830 | + "src_pkg": ("string", "Source Package"), |
2831 | + 'domain': ('string', 'Gettext Domain') |
2832 | + } |
2833 | + blacklisted_priority_data = gviz_api.DataTable(description) |
2834 | + blacklisted_priority_data.LoadData(l) |
2835 | + blacklisted_priority_json = blacklisted_priority_data.ToJSon( |
2836 | + columns_order=("src_pkg", "domain"), |
2837 | + order_by=[('src_pkg', 'asc'), ('domain', 'asc')] |
2838 | + ) |
2839 | + |
2840 | + #create data for blacklisted-file |
2841 | + blacklist_file = list() |
2842 | + f = open(os.path.join('reports', basename + '-blacklist-file'), 'r') |
2843 | + lines = f.readlines() |
2844 | + f.close() |
2845 | + for line in lines: |
2846 | + items = line.split('|') |
2847 | + src = items[0].strip() |
2848 | + domain = items[1].strip() |
2849 | + found = False |
2850 | + for d in blacklist_file: |
2851 | + if domain == d['domain']: |
2852 | + found = True |
2853 | + if not found: |
2854 | + blacklist_file.append({'src_pkg':src, 'domain':domain}) |
2855 | + description = { |
2856 | + "src_pkg": ("string", "Source Package"), |
2857 | + 'domain': ('string', 'Gettext Domain') |
2858 | + } |
2859 | + blacklisted_file_data = gviz_api.DataTable(description) |
2860 | + blacklisted_file_data.LoadData(blacklist_file) |
2861 | + blacklisted_file_json = blacklisted_file_data.ToJSon( |
2862 | + columns_order=("src_pkg", "domain"), |
2863 | + order_by=[('src_pkg', 'asc'), ('domain', 'asc')] |
2864 | + ) |
2865 | + |
2866 | + #create data for included src pckgs |
2867 | + included = list() |
2868 | + f = open(os.path.join('reports', basename + '-working'), 'r') |
2869 | + lines = f.readlines() |
2870 | + f.close() |
2871 | + for line in lines: |
2872 | + items = line.split('|') |
2873 | + src = items[0].strip() |
2874 | + domain = items[1].strip() |
2875 | + template = items[2].strip() |
2876 | + found = False |
2877 | + for d in included: |
2878 | + if domain in d.values(): |
2879 | + found = True |
2880 | + if not found: |
2881 | + included.append({'src_pkg':src, 'domain':domain, 'template':template}) |
2882 | + description = { |
2883 | + "src_pkg": ("string", "Source Package"), |
2884 | + 'domain': ('string', 'Gettext Domain'), |
2885 | + 'template': ('string', 'LP Template') |
2886 | + } |
2887 | + included_data_table = gviz_api.DataTable(description) |
2888 | + included_data_table.LoadData(included) |
2889 | + included_json = included_data_table.ToJSon( |
2890 | + columns_order=("src_pkg", "domain", 'template'), |
2891 | + |
2892 | + order_by=[('src_pkg', 'asc'), ('domain', 'asc'), ('template', 'asc')] |
2893 | + ) |
2894 | + |
2895 | + #create data for excluded src pckgs |
2896 | + src_not_included = list() |
2897 | + f = open(os.path.join('reports', basename + '-blacklist-all'), 'r') |
2898 | + lines = f.readlines() |
2899 | + f.close() |
2900 | + for line in lines: |
2901 | + items = line.split() |
2902 | + src = items[0].strip() |
2903 | + found = False |
2904 | + for d in src_not_included: |
2905 | + if src in d.values(): |
2906 | + found = True |
2907 | + if not found: |
2908 | + src_not_included.append({'src_pkg':src}) |
2909 | + # if using build manifest, also include pkgs in manifest and not found |
2910 | + # in LP exports |
2911 | + if options.manifest_file: |
2912 | + f = open(os.path.join('reports', basename + '-src-pkgs-not-found'), 'r') |
2913 | + lines = f.readlines() |
2914 | + f.close() |
2915 | + found = False |
2916 | + for d in src_not_included: |
2917 | + if src in d.values(): |
2918 | + found = True |
2919 | + if not found: |
2920 | + src_not_included.append({'src_pkg':src}) |
2921 | + |
2922 | + description = { |
2923 | + "src_pkg": ("string", "Source Package") |
2924 | + } |
2925 | + excluded_data_table = gviz_api.DataTable(description) |
2926 | + excluded_data_table.LoadData(src_not_included) |
2927 | + excluded_json = excluded_data_table.ToJSon( |
2928 | + order_by=[('src_pkg', 'asc')] |
2929 | + ) |
2930 | + return included_data_table, included_json,\ |
2931 | + excluded_data_table, excluded_json,\ |
2932 | + blacklisted_file_data, blacklisted_file_json, \ |
2933 | + blacklisted_priority_data, blacklisted_priority_json |
with rev 33 and 34 I added release specific black lists. Now config/ has blacklist. lucid.conf and blacklist. maverick. conf. Default is derived from config/settings distro_codename field. -b argument still allows you to use specified file.