launchpad-reviewers team mailing list archive
-
launchpad-reviewers team
-
Mailing list archive
-
Message #02559
[Merge] lp:~abentley/launchpad/merge-translation-script into lp:launchpad/db-devel
Aaron Bentley has proposed merging lp:~abentley/launchpad/merge-translation-script into lp:launchpad/db-devel with lp:~abentley/launchpad/merge-job-schema as a prerequisite.
Requested reviews:
Launchpad code reviewers (launchpad-reviewers)
For more details, see:
https://code.launchpad.net/~abentley/launchpad/merge-translation-script/+merge/49099
= Summary =
Enable running TranslationMergeJobs from a cron script.
== Proposed fix ==
Turn TranslationMergeJob into a Storm class, implement a script that can run
jobs from any IJobSource.
== Pre-implementation notes ==
None
== Implementation details ==
Extracted test methods from TestTranslationMergeJob for reuse in
TestMergeTranslations. Registered TranslationMergeJob as the utility for the
new ITranslationMergeJobSource interface.
When we add new PackagingJob types, we'll need to split TranslationMergeJob
into PackagingJob and job-specific pseudo-subclasses.
== Tests ==
bin/test -v test_merge_translations
== Demo and Q/A ==
None
= Launchpad lint =
Checking for conflicts and issues in changed files.
Linting changed files:
lib/lp/translations/tests/test_potemplate.py
lib/lp/translations/scripts/tests/test_merge_translations.py
lib/lp/translations/interfaces/potemplate.py
database/sampledata/current.sql
database/schema/patch-2208-90-0.sql
lib/canonical/config/schema-lazr.conf
database/sampledata/current-dev.sql
cronscripts/run_jobs.py
lib/lp/services/job/runner.py
lib/lp/translations/tests/test_translationmerger.py
lib/lp/translations/translationmerger.py
database/schema/comments.sql
database/schema/security.cfg
lib/lp/translations/model/translationmergejob.py
lib/lp/translations/interfaces/translationmergejob.py
lib/lp/translations/tests/test_translationmergejob.py
lib/lp/translations/configure.zcml
configs/testrunner/launchpad-lazr.conf
lib/lp/translations/model/potemplate.py
configs/development/launchpad-lazr.conf
scripts/rosetta/message-sharing-merge.py
./database/schema/patch-2208-90-0.sql
7: Line exceeds 78 characters.
8: Line exceeds 78 characters.
9: Line exceeds 78 characters.
./lib/canonical/config/schema-lazr.conf
522: Line exceeds 78 characters.
605: Line exceeds 78 characters.
1049: Line exceeds 78 characters.
./cronscripts/run_jobs.py
10: '_pythonpath' imported but unused
./database/schema/comments.sql
11: Line exceeds 78 characters.
12: Line exceeds 78 characters.
13: Line exceeds 78 characters.
14: Line exceeds 78 characters.
18: Line exceeds 78 characters.
19: Line exceeds 78 characters.
20: Line exceeds 78 characters.
21: Line exceeds 78 characters.
22: Line exceeds 78 characters.
23: Line exceeds 78 characters.
27: Line exceeds 78 characters.
28: Line exceeds 78 characters.
29: Line exceeds 78 characters.
30: Line exceeds 78 characters.
34: Line exceeds 78 characters.
35: Line exceeds 78 characters.
36: Line exceeds 78 characters.
37: Line exceeds 78 characters.
43: Line exceeds 78 characters.
44: Line exceeds 78 characters.
45: Line exceeds 78 characters.
46: Line exceeds 78 characters.
47: Line exceeds 78 characters.
48: Line exceeds 78 characters.
49: Line exceeds 78 characters.
50: Line exceeds 78 characters.
51: Line exceeds 78 characters.
52: Line exceeds 78 characters.
53: Line exceeds 78 characters.
54: Line exceeds 78 characters.
55: Line exceeds 78 characters.
56: Line exceeds 78 characters.
57: Line exceeds 78 characters.
61: Line exceeds 78 characters.
62: Line exceeds 78 characters.
63: Line exceeds 78 characters.
64: Line exceeds 78 characters.
65: Line exceeds 78 characters.
66: Line exceeds 78 characters.
70: Line exceeds 78 characters.
72: Line exceeds 78 characters.
73: Line exceeds 78 characters.
75: Line exceeds 78 characters.
76: Line exceeds 78 characters.
77: Line exceeds 78 characters.
82: Line exceeds 78 characters.
83: Line exceeds 78 characters.
85: Line exceeds 78 characters.
86: Line exceeds 78 characters.
90: Line exceeds 78 characters.
91: Line exceeds 78 characters.
92: Line exceeds 78 characters.
93: Line exceeds 78 characters.
94: Line exceeds 78 characters.
95: Line exceeds 78 characters.
96: Line exceeds 78 characters.
97: Line exceeds 78 characters.
98: Line exceeds 78 characters.
99: Line exceeds 78 characters.
100: Line exceeds 78 characters.
101: Line exceeds 78 characters.
102: Line exceeds 78 characters.
103: Line exceeds 78 characters.
104: Line exceeds 78 characters.
105: Line exceeds 78 characters.
106: Line exceeds 78 characters.
107: Line exceeds 78 characters.
108: Line exceeds 78 characters.
109: Line exceeds 78 characters.
110: Line exceeds 78 characters.
111: Line exceeds 78 characters.
112: Line exceeds 78 characters.
113: Line exceeds 78 characters.
114: Line exceeds 78 characters.
115: Line exceeds 78 characters.
116: Line exceeds 78 characters.
117: Line exceeds 78 characters.
118: Line exceeds 78 characters.
123: Line exceeds 78 characters.
124: Line exceeds 78 characters.
125: Line exceeds 78 characters.
126: Line exceeds 78 characters.
127: Line exceeds 78 characters.
131: Line exceeds 78 characters.
132: Line exceeds 78 characters.
133: Line exceeds 78 characters.
134: Line exceeds 78 characters.
135: Line exceeds 78 characters.
136: Line exceeds 78 characters.
137: Line exceeds 78 characters.
142: Line exceeds 78 characters.
144: Line exceeds 78 characters.
145: Line exceeds 78 characters.
149: Line exceeds 78 characters.
150: Line exceeds 78 characters.
151: Line exceeds 78 characters.
152: Line exceeds 78 characters.
153: Line exceeds 78 characters.
154: Line exceeds 78 characters.
158: Line exceeds 78 characters.
159: Line exceeds 78 characters.
160: Line exceeds 78 characters.
161: Line exceeds 78 characters.
162: Line exceeds 78 characters.
166: Line exceeds 78 characters.
168: Line exceeds 78 characters.
170: Line exceeds 78 characters.
171: Line exceeds 78 characters.
172: Line exceeds 78 characters.
173: Line exceeds 78 characters.
174: Line exceeds 78 characters.
175: Line exceeds 78 characters.
176: Line exceeds 78 characters.
177: Line exceeds 78 characters.
180: Line exceeds 78 characters.
183: Line exceeds 78 characters.
184: Line exceeds 78 characters.
185: Line exceeds 78 characters.
188: Line exceeds 78 characters.
190: Line exceeds 78 characters.
191: Line exceeds 78 characters.
194: Line exceeds 78 characters.
196: Line exceeds 78 characters.
197: Line exceeds 78 characters.
199: Line exceeds 78 characters.
200: Line exceeds 78 characters.
201: Line exceeds 78 characters.
202: Line exceeds 78 characters.
206: Line exceeds 78 characters.
209: Line exceeds 78 characters.
210: Line exceeds 78 characters.
211: Line exceeds 78 characters.
212: Line exceeds 78 characters.
213: Line exceeds 78 characters.
214: Line exceeds 78 characters.
215: Line exceeds 78 characters.
216: Line exceeds 78 characters.
219: Line exceeds 78 characters.
220: Line exceeds 78 characters.
221: Line exceeds 78 characters.
224: Line exceeds 78 characters.
225: Line exceeds 78 characters.
226: Line exceeds 78 characters.
230: Line exceeds 78 characters.
232: Line exceeds 78 characters.
240: Line exceeds 78 characters.
243: Line exceeds 78 characters.
244: Line exceeds 78 characters.
245: Line exceeds 78 characters.
246: Line exceeds 78 characters.
247: Line exceeds 78 characters.
248: Line exceeds 78 characters.
249: Line exceeds 78 characters.
250: Line exceeds 78 characters.
253: Line exceeds 78 characters.
254: Line exceeds 78 characters.
255: Line exceeds 78 characters.
256: Line exceeds 78 characters.
257: Line exceeds 78 characters.
258: Line exceeds 78 characters.
259: Line exceeds 78 characters.
260: Line exceeds 78 characters.
261: Line exceeds 78 characters.
267: Line exceeds 78 characters.
268: Line exceeds 78 characters.
269: Line exceeds 78 characters.
270: Line exceeds 78 characters.
271: Line exceeds 78 characters.
272: Line exceeds 78 characters.
273: Line exceeds 78 characters.
278: Line exceeds 78 characters.
280: Line exceeds 78 characters.
281: Line exceeds 78 characters.
282: Line exceeds 78 characters.
287: Line exceeds 78 characters.
288: Line exceeds 78 characters.
289: Line exceeds 78 characters.
293: Line exceeds 78 characters.
294: Line exceeds 78 characters.
295: Line exceeds 78 characters.
296: Line exceeds 78 characters.
297: Line exceeds 78 characters.
302: Line exceeds 78 characters.
303: Line exceeds 78 characters.
304: Line exceeds 78 characters.
305: Line exceeds 78 characters.
306: Line exceeds 78 characters.
307: Line exceeds 78 characters.
308: Line exceeds 78 characters.
309: Line exceeds 78 characters.
310: Line exceeds 78 characters.
311: Line exceeds 78 characters.
315: Line exceeds 78 characters.
316: Line exceeds 78 characters.
317: Line exceeds 78 characters.
318: Line exceeds 78 characters.
319: Line exceeds 78 characters.
320: Line exceeds 78 characters.
321: Line exceeds 78 characters.
322: Line exceeds 78 characters.
323: Line exceeds 78 characters.
324: Line exceeds 78 characters.
328: Line exceeds 78 characters.
329: Line exceeds 78 characters.
330: Line exceeds 78 characters.
331: Line exceeds 78 characters.
332: Line exceeds 78 characters.
333: Line exceeds 78 characters.
334: Line exceeds 78 characters.
335: Line exceeds 78 characters.
336: Line exceeds 78 characters.
337: Line exceeds 78 characters.
338: Line exceeds 78 characters.
342: Line exceeds 78 characters.
343: Line exceeds 78 characters.
344: Line exceeds 78 characters.
348: Line exceeds 78 characters.
349: Line exceeds 78 characters.
350: Line exceeds 78 characters.
351: Line exceeds 78 characters.
352: Line exceeds 78 characters.
356: Line exceeds 78 characters.
357: Line exceeds 78 characters.
358: Line exceeds 78 characters.
359: Line exceeds 78 characters.
360: Line exceeds 78 characters.
361: Line exceeds 78 characters.
362: Line exceeds 78 characters.
366: Line exceeds 78 characters.
367: Line exceeds 78 characters.
368: Line exceeds 78 characters.
372: Line exceeds 78 characters.
377: Line exceeds 78 characters.
378: Line exceeds 78 characters.
379: Line exceeds 78 characters.
380: Line exceeds 78 characters.
385: Line exceeds 78 characters.
386: Line exceeds 78 characters.
387: Line exceeds 78 characters.
388: Line exceeds 78 characters.
389: Line exceeds 78 characters.
390: Line exceeds 78 characters.
395: Line exceeds 78 characters.
397: Line exceeds 78 characters.
402: Line exceeds 78 characters.
403: Line exceeds 78 characters.
404: Line exceeds 78 characters.
405: Line exceeds 78 characters.
406: Line exceeds 78 characters.
407: Line exceeds 78 characters.
408: Line exceeds 78 characters.
409: Line exceeds 78 characters.
410: Line exceeds 78 characters.
411: Line exceeds 78 characters.
412: Line exceeds 78 characters.
413: Line exceeds 78 characters.
414: Line exceeds 78 characters.
418: Line exceeds 78 characters.
419: Line exceeds 78 characters.
420: Line exceeds 78 characters.
421: Line exceeds 78 characters.
422: Line exceeds 78 characters.
426: Line exceeds 78 characters.
427: Line exceeds 78 characters.
428: Line exceeds 78 characters.
429: Line exceeds 78 characters.
433: Line exceeds 78 characters.
434: Line exceeds 78 characters.
435: Line exceeds 78 characters.
437: Line exceeds 78 characters.
438: Line exceeds 78 characters.
439: Line exceeds 78 characters.
440: Line exceeds 78 characters.
441: Line exceeds 78 characters.
442: Line exceeds 78 characters.
447: Line exceeds 78 characters.
449: Line exceeds 78 characters.
450: Line exceeds 78 characters.
451: Line exceeds 78 characters.
452: Line exceeds 78 characters.
453: Line exceeds 78 characters.
457: Line exceeds 78 characters.
458: Line exceeds 78 characters.
459: Line exceeds 78 characters.
460: Line exceeds 78 characters.
461: Line exceeds 78 characters.
462: Line exceeds 78 characters.
463: Line exceeds 78 characters.
468: Line exceeds 78 characters.
469: Line exceeds 78 characters.
471: Line exceeds 78 characters.
472: Line exceeds 78 characters.
476: Line exceeds 78 characters.
477: Line exceeds 78 characters.
478: Line exceeds 78 characters.
479: Line exceeds 78 characters.
480: Line exceeds 78 characters.
481: Line exceeds 78 characters.
482: Line exceeds 78 characters.
485: Line exceeds 78 characters.
486: Line exceeds 78 characters.
487: Line exceeds 78 characters.
488: Line exceeds 78 characters.
489: Line exceeds 78 characters.
490: Line exceeds 78 characters.
491: Line exceeds 78 characters.
492: Line exceeds 78 characters.
493: Line exceeds 78 characters.
494: Line exceeds 78 characters.
495: Line exceeds 78 characters.
498: Line exceeds 78 characters.
499: Line exceeds 78 characters.
500: Line exceeds 78 characters.
501: Line exceeds 78 characters.
502: Line exceeds 78 characters.
503: Line exceeds 78 characters.
507: Line exceeds 78 characters.
508: Line exceeds 78 characters.
509: Line exceeds 78 characters.
510: Line exceeds 78 characters.
515: Line exceeds 78 characters.
516: Line exceeds 78 characters.
517: Line exceeds 78 characters.
518: Line exceeds 78 characters.
523: Line exceeds 78 characters.
524: Line exceeds 78 characters.
527: Line exceeds 78 characters.
531: Line exceeds 78 characters.
532: Line exceeds 78 characters.
533: Line exceeds 78 characters.
534: Line exceeds 78 characters.
535: Line exceeds 78 characters.
536: Line exceeds 78 characters.
537: Line exceeds 78 characters.
538: Line exceeds 78 characters.
539: Line exceeds 78 characters.
543: Line exceeds 78 characters.
544: Line exceeds 78 characters.
545: Line exceeds 78 characters.
546: Line exceeds 78 characters.
547: Line exceeds 78 characters.
548: Line exceeds 78 characters.
549: Line exceeds 78 characters.
550: Line exceeds 78 characters.
551: Line exceeds 78 characters.
554: Line exceeds 78 characters.
555: Line exceeds 78 characters.
556: Line exceeds 78 characters.
557: Line exceeds 78 characters.
558: Line exceeds 78 characters.
559: Line exceeds 78 characters.
560: Line exceeds 78 characters.
561: Line exceeds 78 characters.
562: Line exceeds 78 characters.
563: Line exceeds 78 characters.
566: Line exceeds 78 characters.
567: Line exceeds 78 characters.
568: Line exceeds 78 characters.
572: Line exceeds 78 characters.
573: Line exceeds 78 characters.
574: Line exceeds 78 characters.
575: Line exceeds 78 characters.
576: Line exceeds 78 characters.
577: Line exceeds 78 characters.
578: Line exceeds 78 characters.
579: Line exceeds 78 characters.
583: Line exceeds 78 characters.
584: Line exceeds 78 characters.
585: Line exceeds 78 characters.
590: Line exceeds 78 characters.
591: Line exceeds 78 characters.
618: Line exceeds 78 characters.
622: Line exceeds 78 characters.
623: Line exceeds 78 characters.
624: Line exceeds 78 characters.
625: Line exceeds 78 characters.
626: Line exceeds 78 characters.
627: Line exceeds 78 characters.
628: Line exceeds 78 characters.
629: Line exceeds 78 characters.
630: Line exceeds 78 characters.
634: Line exceeds 78 characters.
635: Line exceeds 78 characters.
636: Line exceeds 78 characters.
637: Line exceeds 78 characters.
638: Line exceeds 78 characters.
642: Line exceeds 78 characters.
644: Line exceeds 78 characters.
649: Line exceeds 78 characters.
650: Line exceeds 78 characters.
654: Line exceeds 78 characters.
655: Line exceeds 78 characters.
656: Line exceeds 78 characters.
661: Line exceeds 78 characters.
662: Line exceeds 78 characters.
663: Line exceeds 78 characters.
664: Line exceeds 78 characters.
665: Line exceeds 78 characters.
666: Line exceeds 78 characters.
667: Line exceeds 78 characters.
668: Line exceeds 78 characters.
669: Line exceeds 78 characters.
670: Line exceeds 78 characters.
674: Line exceeds 78 characters.
675: Line exceeds 78 characters.
676: Line exceeds 78 characters.
677: Line exceeds 78 characters.
678: Line exceeds 78 characters.
679: Line exceeds 78 characters.
683: Line exceeds 78 characters.
684: Line exceeds 78 characters.
685: Line exceeds 78 characters.
686: Line exceeds 78 characters.
687: Line exceeds 78 characters.
688: Line exceeds 78 characters.
689: Line exceeds 78 characters.
690: Line exceeds 78 characters.
691: Line exceeds 78 characters.
692: Line exceeds 78 characters.
693: Line exceeds 78 characters.
694: Line exceeds 78 characters.
695: Line exceeds 78 characters.
696: Line exceeds 78 characters.
697: Line exceeds 78 characters.
698: Line exceeds 78 characters.
699: Line exceeds 78 characters.
700: Line exceeds 78 characters.
701: Line exceeds 78 characters.
702: Line exceeds 78 characters.
703: Line exceeds 78 characters.
704: Line exceeds 78 characters.
705: Line exceeds 78 characters.
706: Line exceeds 78 characters.
707: Line exceeds 78 characters.
708: Line exceeds 78 characters.
709: Line exceeds 78 characters.
710: Line exceeds 78 characters.
711: Line exceeds 78 characters.
712: Line exceeds 78 characters.
713: Line exceeds 78 characters.
714: Line exceeds 78 characters.
715: Line exceeds 78 characters.
716: Line exceeds 78 characters.
717: Line exceeds 78 characters.
718: Line exceeds 78 characters.
719: Line exceeds 78 characters.
720: Line exceeds 78 characters.
721: Line exceeds 78 characters.
722: Line exceeds 78 characters.
723: Line exceeds 78 characters.
724: Line exceeds 78 characters.
727: Line exceeds 78 characters.
728: Line exceeds 78 characters.
729: Line exceeds 78 characters.
733: Line exceeds 78 characters.
734: Line exceeds 78 characters.
735: Line exceeds 78 characters.
736: Line exceeds 78 characters.
737: Line exceeds 78 characters.
738: Line exceeds 78 characters.
739: Line exceeds 78 characters.
743: Line exceeds 78 characters.
744: Line exceeds 78 characters.
745: Line exceeds 78 characters.
746: Line exceeds 78 characters.
747: Line exceeds 78 characters.
748: Line exceeds 78 characters.
749: Line exceeds 78 characters.
750: Line exceeds 78 characters.
754: Line exceeds 78 characters.
755: Line exceeds 78 characters.
756: Line exceeds 78 characters.
757: Line exceeds 78 characters.
758: Line exceeds 78 characters.
771: Line exceeds 78 characters.
775: Line exceeds 78 characters.
776: Line exceeds 78 characters.
777: Line exceeds 78 characters.
780: Line exceeds 78 characters.
781: Line exceeds 78 characters.
782: Line exceeds 78 characters.
783: Line exceeds 78 characters.
795: Line exceeds 78 characters.
796: Line exceeds 78 characters.
797: Line exceeds 78 characters.
798: Line exceeds 78 characters.
799: Line exceeds 78 characters.
800: Line exceeds 78 characters.
801: Line exceeds 78 characters.
802: Line exceeds 78 characters.
803: Line exceeds 78 characters.
809: Line exceeds 78 characters.
810: Line exceeds 78 characters.
811: Line exceeds 78 characters.
812: Line exceeds 78 characters.
813: Line exceeds 78 characters.
814: Line exceeds 78 characters.
815: Line exceeds 78 characters.
816: Line exceeds 78 characters.
817: Line exceeds 78 characters.
821: Line exceeds 78 characters.
822: Line exceeds 78 characters.
823: Line exceeds 78 characters.
824: Line exceeds 78 characters.
831: Line exceeds 78 characters.
832: Line exceeds 78 characters.
833: Line exceeds 78 characters.
834: Line exceeds 78 characters.
835: Line exceeds 78 characters.
836: Line exceeds 78 characters.
837: Line exceeds 78 characters.
838: Line exceeds 78 characters.
839: Line exceeds 78 characters.
842: Line exceeds 78 characters.
843: Line exceeds 78 characters.
844: Line exceeds 78 characters.
845: Line exceeds 78 characters.
846: Line exceeds 78 characters.
847: Line exceeds 78 characters.
848: Line exceeds 78 characters.
849: Line exceeds 78 characters.
850: Line exceeds 78 characters.
851: Line exceeds 78 characters.
852: Line exceeds 78 characters.
853: Line exceeds 78 characters.
856: Line exceeds 78 characters.
857: Line exceeds 78 characters.
858: Line exceeds 78 characters.
863: Line exceeds 78 characters.
864: Line exceeds 78 characters.
865: Line exceeds 78 characters.
866: Line exceeds 78 characters.
869: Line exceeds 78 characters.
870: Line exceeds 78 characters.
871: Line exceeds 78 characters.
875: Line exceeds 78 characters.
876: Line exceeds 78 characters.
877: Line exceeds 78 characters.
880: Line exceeds 78 characters.
881: Line exceeds 78 characters.
882: Line exceeds 78 characters.
883: Line exceeds 78 characters.
884: Line exceeds 78 characters.
885: Line exceeds 78 characters.
886: Line exceeds 78 characters.
887: Line exceeds 78 characters.
890: Line exceeds 78 characters.
891: Line exceeds 78 characters.
892: Line exceeds 78 characters.
893: Line exceeds 78 characters.
894: Line exceeds 78 characters.
895: Line exceeds 78 characters.
896: Line exceeds 78 characters.
899: Line exceeds 78 characters.
900: Line exceeds 78 characters.
901: Line exceeds 78 characters.
902: Line exceeds 78 characters.
903: Line exceeds 78 characters.
904: Line exceeds 78 characters.
908: Line exceeds 78 characters.
909: Line exceeds 78 characters.
910: Line exceeds 78 characters.
911: Line exceeds 78 characters.
912: Line exceeds 78 characters.
913: Line exceeds 78 characters.
917: Line exceeds 78 characters.
919: Line exceeds 78 characters.
922: Line exceeds 78 characters.
926: Line exceeds 78 characters.
927: Line exceeds 78 characters.
928: Line exceeds 78 characters.
929: Line exceeds 78 characters.
930: Line exceeds 78 characters.
931: Line exceeds 78 characters.
932: Line exceeds 78 characters.
933: Line exceeds 78 characters.
935: Line exceeds 78 characters.
936: Line exceeds 78 characters.
937: Line exceeds 78 characters.
938: Line exceeds 78 characters.
939: Line exceeds 78 characters.
944: Line exceeds 78 characters.
984: Line exceeds 78 characters.
986: Line exceeds 78 characters.
992: Line exceeds 78 characters.
993: Line exceeds 78 characters.
994: Line exceeds 78 characters.
995: Line exceeds 78 characters.
996: Line exceeds 78 characters.
997: Line exceeds 78 characters.
998: Line exceeds 78 characters.
999: Line exceeds 78 characters.
1000: Line exceeds 78 characters.
1001: Line exceeds 78 characters.
1002: Line exceeds 78 characters.
1003: Line exceeds 78 characters.
1004: Line exceeds 78 characters.
1005: Line exceeds 78 characters.
1006: Line exceeds 78 characters.
1007: Line exceeds 78 characters.
1011: Line exceeds 78 characters.
1015: Line exceeds 78 characters.
1016: Line exceeds 78 characters.
1017: Line exceeds 78 characters.
1021: Line exceeds 78 characters.
1022: Line exceeds 78 characters.
1023: Line exceeds 78 characters.
1024: Line exceeds 78 characters.
1029: Line exceeds 78 characters.
1033: Line exceeds 78 characters.
1037: Line exceeds 78 characters.
1043: Line exceeds 78 characters.
1044: Line exceeds 78 characters.
1045: Line exceeds 78 characters.
1050: Line exceeds 78 characters.
1051: Line exceeds 78 characters.
1052: Line exceeds 78 characters.
1053: Line exceeds 78 characters.
1054: Line exceeds 78 characters.
1055: Line exceeds 78 characters.
1056: Line exceeds 78 characters.
1066: Line exceeds 78 characters.
1067: Line exceeds 78 characters.
1068: Line exceeds 78 characters.
1069: Line exceeds 78 characters.
1070: Line exceeds 78 characters.
1071: Line exceeds 78 characters.
1072: Line exceeds 78 characters.
1073: Line exceeds 78 characters.
1074: Line exceeds 78 characters.
1075: Line exceeds 78 characters.
1077: Line exceeds 78 characters.
1078: Line exceeds 78 characters.
1079: Line exceeds 78 characters.
1080: Line exceeds 78 characters.
1081: Line exceeds 78 characters.
1082: Line exceeds 78 characters.
1083: Line exceeds 78 characters.
1088: Line exceeds 78 characters.
1089: Line exceeds 78 characters.
1092: Line exceeds 78 characters.
1093: Line exceeds 78 characters.
1094: Line exceeds 78 characters.
1095: Line exceeds 78 characters.
1096: Line exceeds 78 characters.
1097: Line exceeds 78 characters.
1098: Line exceeds 78 characters.
1099: Line exceeds 78 characters.
1104: Line exceeds 78 characters.
1105: Line exceeds 78 characters.
1106: Line exceeds 78 characters.
1107: Line exceeds 78 characters.
1108: Line exceeds 78 characters.
1109: Line exceeds 78 characters.
1110: Line exceeds 78 characters.
1111: Line exceeds 78 characters.
1115: Line exceeds 78 characters.
1117: Line exceeds 78 characters.
1119: Line exceeds 78 characters.
1121: Line exceeds 78 characters.
1123: Line exceeds 78 characters.
1125: Line exceeds 78 characters.
1128: Line exceeds 78 characters.
1130: Line exceeds 78 characters.
1132: Line exceeds 78 characters.
1135: Line exceeds 78 characters.
1137: Line exceeds 78 characters.
1139: Line exceeds 78 characters.
1142: Line exceeds 78 characters.
1144: Line exceeds 78 characters.
1146: Line exceeds 78 characters.
1148: Line exceeds 78 characters.
1157: Line exceeds 78 characters.
1158: Line exceeds 78 characters.
1159: Line exceeds 78 characters.
1160: Line exceeds 78 characters.
1161: Line exceeds 78 characters.
1162: Line exceeds 78 characters.
1163: Line exceeds 78 characters.
1164: Line exceeds 78 characters.
1165: Line exceeds 78 characters.
1166: Line exceeds 78 characters.
1167: Line exceeds 78 characters.
1168: Line exceeds 78 characters.
1169: Line exceeds 78 characters.
1170: Line exceeds 78 characters.
1171: Line exceeds 78 characters.
1172: Line exceeds 78 characters.
1173: Line exceeds 78 characters.
1174: Line exceeds 78 characters.
1178: Line exceeds 78 characters.
1179: Line exceeds 78 characters.
1180: Line exceeds 78 characters.
1181: Line exceeds 78 characters.
1185: Line exceeds 78 characters.
1186: Line exceeds 78 characters.
1187: Line exceeds 78 characters.
1191: Line exceeds 78 characters.
1192: Line exceeds 78 characters.
1193: Line exceeds 78 characters.
1194: Line exceeds 78 characters.
1196: Line exceeds 78 characters.
1197: Line exceeds 78 characters.
1200: Line exceeds 78 characters.
1201: Line exceeds 78 characters.
1202: Line exceeds 78 characters.
1203: Line exceeds 78 characters.
1206: Line exceeds 78 characters.
1208: Line exceeds 78 characters.
1209: Line exceeds 78 characters.
1210: Line exceeds 78 characters.
1211: Line exceeds 78 characters.
1212: Line exceeds 78 characters.
1215: Line exceeds 78 characters.
1217: Line exceeds 78 characters.
1218: Line exceeds 78 characters.
1221: Line exceeds 78 characters.
1222: Line exceeds 78 characters.
1224: Line exceeds 78 characters.
1225: Line exceeds 78 characters.
1226: Line exceeds 78 characters.
1227: Line exceeds 78 characters.
1228: Line exceeds 78 characters.
1232: Line exceeds 78 characters.
1234: Line exceeds 78 characters.
1235: Line exceeds 78 characters.
1236: Line exceeds 78 characters.
1237: Line exceeds 78 characters.
1241: Line exceeds 78 characters.
1242: Line exceeds 78 characters.
1246: Line exceeds 78 characters.
1247: Line exceeds 78 characters.
1248: Line exceeds 78 characters.
1249: Line exceeds 78 characters.
1250: Line exceeds 78 characters.
1251: Line exceeds 78 characters.
1252: Line exceeds 78 characters.
1253: Line exceeds 78 characters.
1254: Line exceeds 78 characters.
1255: Line exceeds 78 characters.
1256: Line exceeds 78 characters.
1257: Line exceeds 78 characters.
1258: Line exceeds 78 characters.
1260: Line exceeds 78 characters.
1261: Line exceeds 78 characters.
1262: Line exceeds 78 characters.
1263: Line exceeds 78 characters.
1264: Line exceeds 78 characters.
1265: Line exceeds 78 characters.
1266: Line exceeds 78 characters.
1267: Line exceeds 78 characters.
1268: Line exceeds 78 characters.
1270: Line exceeds 78 characters.
1271: Line exceeds 78 characters.
1273: Line exceeds 78 characters.
1276: Line exceeds 78 characters.
1277: Line exceeds 78 characters.
1278: Line exceeds 78 characters.
1281: Line exceeds 78 characters.
1282: Line exceeds 78 characters.
1283: Line exceeds 78 characters.
1284: Line exceeds 78 characters.
1285: Line exceeds 78 characters.
1286: Line exceeds 78 characters.
1287: Line exceeds 78 characters.
1288: Line exceeds 78 characters.
1292: Line exceeds 78 characters.
1293: Line exceeds 78 characters.
1294: Line exceeds 78 characters.
1295: Line exceeds 78 characters.
1296: Line exceeds 78 characters.
1300: Line exceeds 78 characters.
1301: Line exceeds 78 characters.
1302: Line exceeds 78 characters.
1303: Line exceeds 78 characters.
1304: Line exceeds 78 characters.
1305: Line exceeds 78 characters.
1309: Line exceeds 78 characters.
1310: Line exceeds 78 characters.
1311: Line exceeds 78 characters.
1312: Line exceeds 78 characters.
1316: Line exceeds 78 characters.
1317: Line exceeds 78 characters.
1318: Line exceeds 78 characters.
1321: Line exceeds 78 characters.
1322: Line exceeds 78 characters.
1324: Line exceeds 78 characters.
1325: Line exceeds 78 characters.
1326: Line exceeds 78 characters.
1328: Line exceeds 78 characters.
1330: Line exceeds 78 characters.
1332: Line exceeds 78 characters.
1335: Line exceeds 78 characters.
1336: Line exceeds 78 characters.
1337: Line exceeds 78 characters.
1338: Line exceeds 78 characters.
1339: Line exceeds 78 characters.
1342: Line exceeds 78 characters.
1343: Line exceeds 78 characters.
1344: Line exceeds 78 characters.
1345: Line exceeds 78 characters.
1346: Line exceeds 78 characters.
1348: Line exceeds 78 characters.
1349: Line exceeds 78 characters.
1350: Line exceeds 78 characters.
1351: Line exceeds 78 characters.
1354: Line exceeds 78 characters.
1355: Line exceeds 78 characters.
1390: Line exceeds 78 characters.
1411: Line exceeds 78 characters.
1412: Line exceeds 78 characters.
1413: Line exceeds 78 characters.
1414: Line exceeds 78 characters.
1415: Line exceeds 78 characters.
1416: Line exceeds 78 characters.
1417: Line exceeds 78 characters.
1418: Line exceeds 78 characters.
1419: Line exceeds 78 characters.
1420: Line exceeds 78 characters.
1421: Line exceeds 78 characters.
1422: Line exceeds 78 characters.
1423: Line exceeds 78 characters.
1424: Line exceeds 78 characters.
1428: Line exceeds 78 characters.
1432: Line exceeds 78 characters.
1433: Line exceeds 78 characters.
1434: Line exceeds 78 characters.
1435: Line exceeds 78 characters.
1436: Line exceeds 78 characters.
1437: Line exceeds 78 characters.
1438: Line exceeds 78 characters.
1442: Line exceeds 78 characters.
1443: Line exceeds 78 characters.
1444: Line exceeds 78 characters.
1445: Line exceeds 78 characters.
1446: Line exceeds 78 characters.
1447: Line exceeds 78 characters.
1448: Line exceeds 78 characters.
1449: Line exceeds 78 characters.
1450: Line exceeds 78 characters.
1451: Line exceeds 78 characters.
1452: Line exceeds 78 characters.
1456: Line exceeds 78 characters.
1457: Line exceeds 78 characters.
1458: Line exceeds 78 characters.
1459: Line exceeds 78 characters.
1460: Line exceeds 78 characters.
1461: Line exceeds 78 characters.
1463: Line exceeds 78 characters.
1467: Line exceeds 78 characters.
1468: Line exceeds 78 characters.
1469: Line exceeds 78 characters.
1473: Line exceeds 78 characters.
1474: Line exceeds 78 characters.
1475: Line exceeds 78 characters.
1476: Line exceeds 78 characters.
1477: Line exceeds 78 characters.
1478: Line exceeds 78 characters.
1482: Line exceeds 78 characters.
1483: Line exceeds 78 characters.
1487: Line exceeds 78 characters.
1488: Line exceeds 78 characters.
1489: Line exceeds 78 characters.
1490: Line exceeds 78 characters.
1491: Line exceeds 78 characters.
1492: Line exceeds 78 characters.
1493: Line exceeds 78 characters.
1494: Line exceeds 78 characters.
1495: Line exceeds 78 characters.
1496: Line exceeds 78 characters.
1497: Line exceeds 78 characters.
1498: Line exceeds 78 characters.
1499: Line exceeds 78 characters.
1500: Line exceeds 78 characters.
1501: Line exceeds 78 characters.
1502: Line exceeds 78 characters.
1503: Line exceeds 78 characters.
1504: Line exceeds 78 characters.
1505: Line exceeds 78 characters.
1506: Line exceeds 78 characters.
1507: Line exceeds 78 characters.
1508: Line exceeds 78 characters.
1509: Line exceeds 78 characters.
1510: Line exceeds 78 characters.
1514: Line exceeds 78 characters.
1515: Line exceeds 78 characters.
1516: Line exceeds 78 characters.
1517: Line exceeds 78 characters.
1520: Line exceeds 78 characters.
1521: Line exceeds 78 characters.
1522: Line exceeds 78 characters.
1523: Line exceeds 78 characters.
1526: Line exceeds 78 characters.
1529: Line exceeds 78 characters.
1530: Line exceeds 78 characters.
1533: Line exceeds 78 characters.
1534: Line exceeds 78 characters.
1535: Line exceeds 78 characters.
1538: Line exceeds 78 characters.
1542: Line exceeds 78 characters.
1543: Line exceeds 78 characters.
1544: Line exceeds 78 characters.
1545: Line exceeds 78 characters.
1546: Line exceeds 78 characters.
1547: Line exceeds 78 characters.
1548: Line exceeds 78 characters.
1549: Line exceeds 78 characters.
1550: Line exceeds 78 characters.
1551: Line exceeds 78 characters.
1552: Line exceeds 78 characters.
1553: Line exceeds 78 characters.
1554: Line exceeds 78 characters.
1555: Line exceeds 78 characters.
1556: Line exceeds 78 characters.
1557: Line exceeds 78 characters.
1558: Line exceeds 78 characters.
1559: Line exceeds 78 characters.
1560: Line exceeds 78 characters.
1561: Line exceeds 78 characters.
1562: Line exceeds 78 characters.
1563: Line exceeds 78 characters.
1564: Line exceeds 78 characters.
1565: Line exceeds 78 characters.
1566: Line exceeds 78 characters.
1567: Line exceeds 78 characters.
1572: Line exceeds 78 characters.
1573: Line exceeds 78 characters.
1574: Line exceeds 78 characters.
1575: Line exceeds 78 characters.
1579: Line exceeds 78 characters.
1583: Line exceeds 78 characters.
1584: Line exceeds 78 characters.
1585: Line exceeds 78 characters.
1586: Line exceeds 78 characters.
1587: Line exceeds 78 characters.
1588: Line exceeds 78 characters.
1589: Line exceeds 78 characters.
1590: Line exceeds 78 characters.
1591: Line exceeds 78 characters.
1592: Line exceeds 78 characters.
1593: Line exceeds 78 characters.
1594: Line exceeds 78 characters.
1598: Line exceeds 78 characters.
1599: Line exceeds 78 characters.
1600: Line exceeds 78 characters.
1601: Line exceeds 78 characters.
1602: Line exceeds 78 characters.
1603: Line exceeds 78 characters.
1604: Line exceeds 78 characters.
1605: Line exceeds 78 characters.
1606: Line exceeds 78 characters.
1607: Line exceeds 78 characters.
1608: Line exceeds 78 characters.
1609: Line exceeds 78 characters.
1610: Line exceeds 78 characters.
1615: Line exceeds 78 characters.
1616: Line exceeds 78 characters.
1621: Line exceeds 78 characters.
1622: Line exceeds 78 characters.
1623: Line exceeds 78 characters.
1624: Line exceeds 78 characters.
1629: Line exceeds 78 characters.
1630: Line exceeds 78 characters.
1632: Line exceeds 78 characters.
1633: Line exceeds 78 characters.
1634: Line exceeds 78 characters.
1638: Line exceeds 78 characters.
1639: Line exceeds 78 characters.
1640: Line exceeds 78 characters.
1641: Line exceeds 78 characters.
1642: Line exceeds 78 characters.
1643: Line exceeds 78 characters.
1644: Line exceeds 78 characters.
1645: Line exceeds 78 characters.
1646: Line exceeds 78 characters.
1648: Line exceeds 78 characters.
1649: Line exceeds 78 characters.
1651: Line exceeds 78 characters.
1652: Line exceeds 78 characters.
1655: Line exceeds 78 characters.
1656: Line exceeds 78 characters.
1660: Line exceeds 78 characters.
1661: Line exceeds 78 characters.
1662: Line exceeds 78 characters.
1663: Line exceeds 78 characters.
1665: Line exceeds 78 characters.
1666: Line exceeds 78 characters.
1667: Line exceeds 78 characters.
1668: Line exceeds 78 characters.
1669: Line exceeds 78 characters.
1670: Line exceeds 78 characters.
1671: Line exceeds 78 characters.
1672: Line exceeds 78 characters.
1673: Line exceeds 78 characters.
1676: Line exceeds 78 characters.
1677: Line exceeds 78 characters.
1678: Line exceeds 78 characters.
1679: Line exceeds 78 characters.
1680: Line exceeds 78 characters.
1681: Line exceeds 78 characters.
1682: Line exceeds 78 characters.
1683: Line exceeds 78 characters.
1686: Line exceeds 78 characters.
1688: Line exceeds 78 characters.
1689: Line exceeds 78 characters.
1690: Line exceeds 78 characters.
1691: Line exceeds 78 characters.
1692: Line exceeds 78 characters.
1693: Line exceeds 78 characters.
1694: Line exceeds 78 characters.
1695: Line exceeds 78 characters.
1697: Line exceeds 78 characters.
1698: Line exceeds 78 characters.
1699: Line exceeds 78 characters.
1702: Line exceeds 78 characters.
1703: Line exceeds 78 characters.
1704: Line exceeds 78 characters.
1705: Line exceeds 78 characters.
1706: Line exceeds 78 characters.
1707: Line exceeds 78 characters.
1708: Line exceeds 78 characters.
1709: Line exceeds 78 characters.
1711: Line exceeds 78 characters.
1712: Line exceeds 78 characters.
1713: Line exceeds 78 characters.
1716: Line exceeds 78 characters.
1717: Line exceeds 78 characters.
1718: Line exceeds 78 characters.
1719: Line exceeds 78 characters.
1720: Line exceeds 78 characters.
1721: Line exceeds 78 characters.
1724: Line exceeds 78 characters.
1725: Line exceeds 78 characters.
1726: Line exceeds 78 characters.
1727: Line exceeds 78 characters.
1730: Line exceeds 78 characters.
1731: Line exceeds 78 characters.
1732: Line exceeds 78 characters.
1733: Line exceeds 78 characters.
1734: Line exceeds 78 characters.
1735: Line exceeds 78 characters.
1736: Line exceeds 78 characters.
1737: Line exceeds 78 characters.
1738: Line exceeds 78 characters.
1741: Line exceeds 78 characters.
1742: Line exceeds 78 characters.
1743: Line exceeds 78 characters.
1744: Line exceeds 78 characters.
1745: Line exceeds 78 characters.
1746: Line exceeds 78 characters.
1747: Line exceeds 78 characters.
1748: Line exceeds 78 characters.
1749: Line exceeds 78 characters.
1750: Line exceeds 78 characters.
1754: Line exceeds 78 characters.
1755: Line exceeds 78 characters.
1756: Line exceeds 78 characters.
1757: Line exceeds 78 characters.
1759: Line exceeds 78 characters.
1760: Line exceeds 78 characters.
1761: Line exceeds 78 characters.
1763: Line exceeds 78 characters.
1764: Line exceeds 78 characters.
1765: Line exceeds 78 characters.
1767: Line exceeds 78 characters.
1768: Line exceeds 78 characters.
1769: Line exceeds 78 characters.
1773: Line exceeds 78 characters.
1774: Line exceeds 78 characters.
1775: Line exceeds 78 characters.
1776: Line exceeds 78 characters.
1777: Line exceeds 78 characters.
1778: Line exceeds 78 characters.
1779: Line exceeds 78 characters.
1780: Line exceeds 78 characters.
1781: Line exceeds 78 characters.
1782: Line exceeds 78 characters.
1783: Line exceeds 78 characters.
1784: Line exceeds 78 characters.
1785: Line exceeds 78 characters.
1786: Line exceeds 78 characters.
1787: Line exceeds 78 characters.
1788: Line exceeds 78 characters.
1789: Line exceeds 78 characters.
1790: Line exceeds 78 characters.
1831: Line exceeds 78 characters.
1832: Line exceeds 78 characters.
1833: Line exceeds 78 characters.
1834: Line exceeds 78 characters.
1838: Line exceeds 78 characters.
1839: Line exceeds 78 characters.
1841: Line exceeds 78 characters.
1842: Line exceeds 78 characters.
1843: Line exceeds 78 characters.
1844: Line exceeds 78 characters.
1845: Line exceeds 78 characters.
1848: Line exceeds 78 characters.
1849: Line exceeds 78 characters.
1850: Line exceeds 78 characters.
1851: Line exceeds 78 characters.
1864: Line exceeds 78 characters.
1868: Line exceeds 78 characters.
1869: Line exceeds 78 characters.
1870: Line exceeds 78 characters.
1871: Line exceeds 78 characters.
1872: Line exceeds 78 characters.
1873: Line exceeds 78 characters.
1881: Line exceeds 78 characters.
1882: Line exceeds 78 characters.
1883: Line exceeds 78 characters.
1885: Line exceeds 78 characters.
1892: Line exceeds 78 characters.
1895: Line exceeds 78 characters.
1896: Line exceeds 78 characters.
1898: Line exceeds 78 characters.
1900: Line exceeds 78 characters.
1903: Line exceeds 78 characters.
1910: Line exceeds 78 characters.
1913: Line exceeds 78 characters.
1914: Line exceeds 78 characters.
1915: Line exceeds 78 characters.
1916: Line exceeds 78 characters.
1917: Line exceeds 78 characters.
1918: Line exceeds 78 characters.
1919: Line exceeds 78 characters.
1920: Line exceeds 78 characters.
1921: Line exceeds 78 characters.
1922: Line exceeds 78 characters.
1923: Line exceeds 78 characters.
1924: Line exceeds 78 characters.
1925: Line exceeds 78 characters.
1926: Line exceeds 78 characters.
1928: Line exceeds 78 characters.
1933: Line exceeds 78 characters.
1935: Line exceeds 78 characters.
1936: Line exceeds 78 characters.
1937: Line exceeds 78 characters.
1940: Line exceeds 78 characters.
1942: Line exceeds 78 characters.
1943: Line exceeds 78 characters.
1944: Line exceeds 78 characters.
1945: Line exceeds 78 characters.
1946: Line exceeds 78 characters.
1949: Line exceeds 78 characters.
1950: Line exceeds 78 characters.
1951: Line exceeds 78 characters.
1953: Line exceeds 78 characters.
1956: Line exceeds 78 characters.
1957: Line exceeds 78 characters.
1958: Line exceeds 78 characters.
1959: Line exceeds 78 characters.
1960: Line exceeds 78 characters.
1961: Line exceeds 78 characters.
1964: Line exceeds 78 characters.
1965: Line exceeds 78 characters.
1966: Line exceeds 78 characters.
1967: Line exceeds 78 characters.
1968: Line exceeds 78 characters.
1974: Line exceeds 78 characters.
1975: Line exceeds 78 characters.
1976: Line exceeds 78 characters.
1977: Line exceeds 78 characters.
1978: Line exceeds 78 characters.
1979: Line exceeds 78 characters.
1983: Line exceeds 78 characters.
1993: Line exceeds 78 characters.
1994: Line exceeds 78 characters.
1995: Line exceeds 78 characters.
1997: Line exceeds 78 characters.
2001: Line exceeds 78 characters.
2003: Line exceeds 78 characters.
2004: Line exceeds 78 characters.
2005: Line exceeds 78 characters.
2006: Line exceeds 78 characters.
2007: Line exceeds 78 characters.
2009: Line exceeds 78 characters.
2010: Line exceeds 78 characters.
2011: Line exceeds 78 characters.
2012: Line exceeds 78 characters.
2013: Line exceeds 78 characters.
2016: Line exceeds 78 characters.
2017: Line exceeds 78 characters.
2018: Line exceeds 78 characters.
2019: Line exceeds 78 characters.
2022: Line exceeds 78 characters.
2023: Line exceeds 78 characters.
2024: Line exceeds 78 characters.
2025: Line exceeds 78 characters.
2026: Line exceeds 78 characters.
2029: Line exceeds 78 characters.
2030: Line exceeds 78 characters.
2031: Line exceeds 78 characters.
2032: Line exceeds 78 characters.
2035: Line exceeds 78 characters.
2036: Line exceeds 78 characters.
2037: Line exceeds 78 characters.
2038: Line exceeds 78 characters.
2041: Line exceeds 78 characters.
2042: Line exceeds 78 characters.
2044: Line exceeds 78 characters.
2047: Line exceeds 78 characters.
2048: Line exceeds 78 characters.
2049: Line exceeds 78 characters.
2050: Line exceeds 78 characters.
2051: Line exceeds 78 characters.
2052: Line exceeds 78 characters.
2053: Line exceeds 78 characters.
2054: Line exceeds 78 characters.
2055: Line exceeds 78 characters.
2056: Line exceeds 78 characters.
2057: Line exceeds 78 characters.
2058: Line exceeds 78 characters.
2059: Line exceeds 78 characters.
2060: Line exceeds 78 characters.
2061: Line exceeds 78 characters.
2064: Line exceeds 78 characters.
2065: Line exceeds 78 characters.
2066: Line exceeds 78 characters.
2067: Line exceeds 78 characters.
2068: Line exceeds 78 characters.
2069: Line exceeds 78 characters.
2070: Line exceeds 78 characters.
2071: Line exceeds 78 characters.
2072: Line exceeds 78 characters.
2073: Line exceeds 78 characters.
2074: Line exceeds 78 characters.
2075: Line exceeds 78 characters.
2076: Line exceeds 78 characters.
2077: Line exceeds 78 characters.
2079: Line exceeds 78 characters.
2080: Line exceeds 78 characters.
2081: Line exceeds 78 characters.
2082: Line exceeds 78 characters.
2083: Line exceeds 78 characters.
2084: Line exceeds 78 characters.
2085: Line exceeds 78 characters.
2086: Line exceeds 78 characters.
2087: Line exceeds 78 characters.
2088: Line exceeds 78 characters.
2089: Line exceeds 78 characters.
2090: Line exceeds 78 characters.
2091: Line exceeds 78 characters.
2092: Line exceeds 78 characters.
2096: Line exceeds 78 characters.
2097: Line exceeds 78 characters.
2098: Line exceeds 78 characters.
2099: Line exceeds 78 characters.
2100: Line exceeds 78 characters.
2101: Line exceeds 78 characters.
2104: Line exceeds 78 characters.
2105: Line exceeds 78 characters.
2106: Line exceeds 78 characters.
2111: Line exceeds 78 characters.
2112: Line exceeds 78 characters.
2113: Line exceeds 78 characters.
2114: Line exceeds 78 characters.
2115: Line exceeds 78 characters.
2116: Line exceeds 78 characters.
2117: Line exceeds 78 characters.
2118: Line exceeds 78 characters.
2119: Line exceeds 78 characters.
2123: Line exceeds 78 characters.
2124: Line exceeds 78 characters.
2125: Line exceeds 78 characters.
2126: Line exceeds 78 characters.
2127: Line exceeds 78 characters.
2128: Line exceeds 78 characters.
2129: Line exceeds 78 characters.
2130: Line exceeds 78 characters.
2131: Line exceeds 78 characters.
2132: Line exceeds 78 characters.
2136: Line exceeds 78 characters.
2137: Line exceeds 78 characters.
2138: Line exceeds 78 characters.
2139: Line exceeds 78 characters.
2140: Line exceeds 78 characters.
2141: Line exceeds 78 characters.
2142: Line exceeds 78 characters.
2143: Line exceeds 78 characters.
2144: Line exceeds 78 characters.
2146: Line exceeds 78 characters.
2147: Line exceeds 78 characters.
2148: Line exceeds 78 characters.
2149: Line exceeds 78 characters.
2150: Line exceeds 78 characters.
2154: Line exceeds 78 characters.
2155: Line exceeds 78 characters.
2156: Line exceeds 78 characters.
2170: Line exceeds 78 characters.
2171: Line exceeds 78 characters.
2172: Line exceeds 78 characters.
2176: Line exceeds 78 characters.
2177: Line exceeds 78 characters.
2178: Line exceeds 78 characters.
2181: Line exceeds 78 characters.
2182: Line exceeds 78 characters.
2185: Line exceeds 78 characters.
2186: Line exceeds 78 characters.
2187: Line exceeds 78 characters.
2194: Line exceeds 78 characters.
2195: Line exceeds 78 characters.
2196: Line exceeds 78 characters.
2197: Line exceeds 78 characters.
2202: Line exceeds 78 characters.
2203: Line exceeds 78 characters.
2204: Line exceeds 78 characters.
2207: Line exceeds 78 characters.
2208: Line exceeds 78 characters.
2213: Line exceeds 78 characters.
2214: Line exceeds 78 characters.
2215: Line exceeds 78 characters.
2216: Line exceeds 78 characters.
2217: Line exceeds 78 characters.
2219: Line exceeds 78 characters.
2220: Line exceeds 78 characters.
2221: Line exceeds 78 characters.
2223: Line exceeds 78 characters.
2224: Line exceeds 78 characters.
2225: Line exceeds 78 characters.
2226: Line exceeds 78 characters.
2227: Line exceeds 78 characters.
2228: Line exceeds 78 characters.
2229: Line exceeds 78 characters.
2232: Line exceeds 78 characters.
2234: Line exceeds 78 characters.
2235: Line exceeds 78 characters.
2236: Line exceeds 78 characters.
2237: Line exceeds 78 characters.
2238: Line exceeds 78 characters.
2239: Line exceeds 78 characters.
2240: Line exceeds 78 characters.
2243: Line exceeds 78 characters.
2245: Line exceeds 78 characters.
2247: Line exceeds 78 characters.
2248: Line exceeds 78 characters.
2249: Line exceeds 78 characters.
2252: Line exceeds 78 characters.
2255: Line exceeds 78 characters.
2256: Line exceeds 78 characters.
2257: Line exceeds 78 characters.
2258: Line exceeds 78 characters.
2259: Line exceeds 78 characters.
2260: Line exceeds 78 characters.
2261: Line exceeds 78 characters.
2265: Line exceeds 78 characters.
2266: Line exceeds 78 characters.
2267: Line exceeds 78 characters.
2268: Line exceeds 78 characters.
2269: Line exceeds 78 characters.
2270: Line exceeds 78 characters.
2272: Line exceeds 78 characters.
2273: Line exceeds 78 characters.
2274: Line exceeds 78 characters.
2275: Line exceeds 78 characters.
2276: Line exceeds 78 characters.
2280: Line exceeds 78 characters.
2284: Line exceeds 78 characters.
2287: Line exceeds 78 characters.
2290: Line exceeds 78 characters.
2291: Line exceeds 78 characters.
2296: Line exceeds 78 characters.
2298: Line exceeds 78 characters.
2301: Line exceeds 78 characters.
2303: Line exceeds 78 characters.
2304: Line exceeds 78 characters.
2305: Line exceeds 78 characters.
2309: Line exceeds 78 characters.
2310: Line exceeds 78 characters.
2312: Line exceeds 78 characters.
2313: Line exceeds 78 characters.
2314: Line exceeds 78 characters.
2315: Line exceeds 78 characters.
2316: Line exceeds 78 characters.
2318: Line exceeds 78 characters.
2319: Line exceeds 78 characters.
2320: Line exceeds 78 characters.
2322: Line exceeds 78 characters.
2323: Line exceeds 78 characters.
2324: Line exceeds 78 characters.
2325: Line exceeds 78 characters.
2326: Line exceeds 78 characters.
2332: Line exceeds 78 characters.
2334: Line exceeds 78 characters.
2336: Line exceeds 78 characters.
2338: Line exceeds 78 characters.
2339: Line exceeds 78 characters.
2340: Line exceeds 78 characters.
2341: Line exceeds 78 characters.
2343: Line exceeds 78 characters.
2345: Line exceeds 78 characters.
2346: Line exceeds 78 characters.
2347: Line exceeds 78 characters.
2348: Line exceeds 78 characters.
2349: Line exceeds 78 characters.
2350: Line exceeds 78 characters.
2352: Line exceeds 78 characters.
2354: Line exceeds 78 characters.
2356: Line exceeds 78 characters.
2358: Line exceeds 78 characters.
2361: Line exceeds 78 characters.
2369: Line exceeds 78 characters.
2374: Line exceeds 78 characters.
2375: Line exceeds 78 characters.
2376: Line exceeds 78 characters.
2382: Line exceeds 78 characters.
2383: Line exceeds 78 characters.
2384: Line exceeds 78 characters.
2385: Line exceeds 78 characters.
2386: Line exceeds 78 characters.
2387: Line exceeds 78 characters.
2388: Line exceeds 78 characters.
2389: Line exceeds 78 characters.
2390: Line exceeds 78 characters.
2394: Line exceeds 78 characters.
2395: Line exceeds 78 characters.
2399: Line exceeds 78 characters.
2400: Line exceeds 78 characters.
2401: Line exceeds 78 characters.
2402: Line exceeds 78 characters.
2403: Line exceeds 78 characters.
2404: Line exceeds 78 characters.
2405: Line exceeds 78 characters.
2406: Line exceeds 78 characters.
2407: Line exceeds 78 characters.
2408: Line exceeds 78 characters.
2409: Line exceeds 78 characters.
2410: Line exceeds 78 characters.
2413: Line exceeds 78 characters.
2415: Line exceeds 78 characters.
2419: Line exceeds 78 characters.
2420: Line exceeds 78 characters.
2421: Line exceeds 78 characters.
2425: Line exceeds 78 characters.
2426: Line exceeds 78 characters.
2427: Line exceeds 78 characters.
2428: Line exceeds 78 characters.
2429: Line exceeds 78 characters.
2430: Line exceeds 78 characters.
2431: Line exceeds 78 characters.
2432: Line exceeds 78 characters.
2434: Line exceeds 78 characters.
2435: Line exceeds 78 characters.
2438: Line exceeds 78 characters.
2440: Line exceeds 78 characters.
2441: Line exceeds 78 characters.
2442: Line exceeds 78 characters.
2443: Line exceeds 78 characters.
2444: Line exceeds 78 characters.
2445: Line exceeds 78 characters.
2446: Line exceeds 78 characters.
2448: Line exceeds 78 characters.
2451: Line exceeds 78 characters.
2453: Line exceeds 78 characters.
2454: Line exceeds 78 characters.
2455: Line exceeds 78 characters.
2456: Line exceeds 78 characters.
2457: Line exceeds 78 characters.
2461: Line exceeds 78 characters.
2463: Line exceeds 78 characters.
2470: Line exceeds 78 characters.
2472: Line exceeds 78 characters.
2474: Line exceeds 78 characters.
2475: Line exceeds 78 characters.
2476: Line exceeds 78 characters.
2480: Line exceeds 78 characters.
2487: Line exceeds 78 characters.
2488: Line exceeds 78 characters.
2489: Line exceeds 78 characters.
2492: Line exceeds 78 characters.
2493: Line exceeds 78 characters.
2494: Line exceeds 78 characters.
2497: Line exceeds 78 characters.
2498: Line exceeds 78 characters.
2499: Line exceeds 78 characters.
2502: Line exceeds 78 characters.
2503: Line exceeds 78 characters.
2504: Line exceeds 78 characters.
2506: Line exceeds 78 characters.
2507: Line exceeds 78 characters.
2509: Line exceeds 78 characters.
2512: Line exceeds 78 characters.
2515: Line exceeds 78 characters.
2516: Line exceeds 78 characters.
2528: Line exceeds 78 characters.
./database/schema/security.cfg
727: Line exceeds 78 characters.
728: Line exceeds 78 characters.
729: Line exceeds 78 characters.
755: Line exceeds 78 characters.
759: Line exceeds 78 characters.
814: Line exceeds 78 characters.
827: Line exceeds 78 characters.
828: Line exceeds 78 characters.
844: Line exceeds 78 characters.
845: Line exceeds 78 characters.
846: Line exceeds 78 characters.
847: Line exceeds 78 characters.
848: Line exceeds 78 characters.
900: Line exceeds 78 characters.
901: Line exceeds 78 characters.
902: Line exceeds 78 characters.
932: Line exceeds 78 characters.
1013: Line exceeds 78 characters.
1023: Line exceeds 78 characters.
1024: Line exceeds 78 characters.
./configs/testrunner/launchpad-lazr.conf
145: Line exceeds 78 characters.
./configs/development/launchpad-lazr.conf
97: Line exceeds 78 characters.
116: Line exceeds 78 characters.
127: Line exceeds 78 characters.
./scripts/rosetta/message-sharing-merge.py
10: '_pythonpath' imported but unused
24: E303 too many blank lines (3)
--
https://code.launchpad.net/~abentley/launchpad/merge-translation-script/+merge/49099
Your team Launchpad code reviewers is requested to review the proposed merge of lp:~abentley/launchpad/merge-translation-script into lp:launchpad/db-devel.
=== modified file 'configs/development/launchpad-lazr.conf'
--- configs/development/launchpad-lazr.conf 2010-12-23 17:14:16 +0000
+++ configs/development/launchpad-lazr.conf 2011-02-09 17:52:58 +0000
@@ -226,6 +226,10 @@
error_dir: /var/tmp/codehosting.test
oops_prefix: DMPJ
+[merge_translations]
+oops_prefix: DMT
+error_dir: /var/tmp/lperr
+
[personalpackagearchive]
root: /var/tmp/ppa/
private_root: /var/tmp/ppa
=== modified file 'configs/testrunner/launchpad-lazr.conf'
--- configs/testrunner/launchpad-lazr.conf 2010-09-17 09:16:27 +0000
+++ configs/testrunner/launchpad-lazr.conf 2011-02-09 17:52:58 +0000
@@ -183,6 +183,10 @@
oops_prefix: TMPJ
error_dir: /var/tmp/codehosting.test
+[merge_translations]
+oops_prefix: TMT
+error_dir: /var/tmp/lperr.test
+
[upgrade_branches]
oops_prefix: TUB
error_dir: /var/tmp/codehosting.test
=== added file 'cronscripts/run_jobs.py'
--- cronscripts/run_jobs.py 1970-01-01 00:00:00 +0000
+++ cronscripts/run_jobs.py 2011-02-09 17:52:58 +0000
@@ -0,0 +1,16 @@
+#!/usr/bin/python -S
+#
+# Copyright 2010 Canonical Ltd. This software is licensed under the
+# GNU Affero General Public License version 3 (see the file LICENSE).
+
+"""Run jobs specified by a config section."""
+
+__metaclass__ = type
+
+import _pythonpath
+
+from lp.services.job.runner import JobCronScript
+
+if __name__ == '__main__':
+ script = JobCronScript(commandline_config=True)
+ script.lock_and_run()
=== modified file 'lib/canonical/config/schema-lazr.conf'
--- lib/canonical/config/schema-lazr.conf 2011-02-03 03:49:36 +0000
+++ lib/canonical/config/schema-lazr.conf 2011-02-09 17:52:58 +0000
@@ -598,6 +598,21 @@
# See [error_reports].
copy_to_zlog: false
+[merge_translations]
+# The database user which will be used by this process.
+# datatype: string
+dbuser: rosettaadmin
+source_interface: lp.translations.interfaces.translationmergejob.ITranslationMergeJobSource
+
+# See [error_reports].
+error_dir: none
+
+# See [error_reports].
+oops_prefix: none
+
+# See [error_reports].
+copy_to_zlog: false
+
[cveupdater]
# The database user which will be used by this process.
=== modified file 'lib/lp/services/job/runner.py'
--- lib/lp/services/job/runner.py 2010-10-26 15:47:24 +0000
+++ lib/lp/services/job/runner.py 2011-02-09 17:52:58 +0000
@@ -284,20 +284,26 @@
response = [('success', amp.Integer()), ('oops_id', amp.String())]
+def import_source(job_source_name):
+ """Return the IJobSource specified by its full name."""
+ module, name = job_source_name.rsplit('.', 1)
+ source_module = __import__(module, fromlist=[name])
+ return getattr(source_module, name)
+
+
class JobRunnerProcess(child.AMPChild):
"""Base class for processes that run jobs."""
def __init__(self, job_source_name, dbuser):
child.AMPChild.__init__(self)
- module, name = job_source_name.rsplit('.', 1)
- source_module = __import__(module, fromlist=[name])
- self.job_source = getattr(source_module, name)
+ self.job_source = import_source(job_source_name)
self.context_manager = self.job_source.contextManager()
# icky, but it's really a global value anyhow.
self.__class__.dbuser = dbuser
@classmethod
def __enter__(cls):
+
def handler(signum, frame):
raise TimeoutError
scripts.execute_zcml_for_scripts(use_web_security=False)
@@ -368,6 +374,7 @@
'Running %r, lease expires %s', job, job.lease_expires)
deferred = self.pool.doWork(
RunJobCommand, job_id = job_id, _deadline=deadline)
+
def update(response):
if response['success']:
self.completed_jobs.append(job)
@@ -377,6 +384,7 @@
self.logger.debug('Incomplete %r', job)
if response['oops_id'] != '':
self._logOopsId(response['oops_id'])
+
def job_raised(failure):
self.incomplete_jobs.append(job)
info = (failure.type, failure.value, failure.tb)
@@ -387,6 +395,7 @@
def getTaskSource(self):
"""Return a task source for all jobs in job_source."""
+
def producer():
while True:
jobs = list(self.job_source.iterReady())
@@ -442,10 +451,16 @@
config_name = None
- def __init__(self, runner_class=JobRunner, test_args=None, name=None):
+ def __init__(self, runner_class=JobRunner, test_args=None, name=None,
+ commandline_config=False):
super(JobCronScript, self).__init__(
name=name, dbuser=None, test_args=test_args)
self._runner_class = runner_class
+ if not commandline_config:
+ return
+ self.config_name = self.args[0]
+ self.source_interface = import_source(
+ self.config_section.source_interface)
@property
def dbuser(self):
=== modified file 'lib/lp/translations/configure.zcml'
--- lib/lp/translations/configure.zcml 2010-12-23 22:12:49 +0000
+++ lib/lp/translations/configure.zcml 2011-02-09 17:52:58 +0000
@@ -623,6 +623,16 @@
provides="lp.translations.interfaces.translationtemplatesbuildjob.ITranslationTemplatesBuildJobSource">
<allow interface="lp.translations.interfaces.translationtemplatesbuildjob.ITranslationTemplatesBuildJobSource"/>
</securedutility>
+ <securedutility
+ component='lp.translations.model.translationmergejob.TranslationMergeJob'
+ provides='lp.translations.interfaces.translationmergejob.ITranslationMergeJobSource'
+ >
+ <allow interface='lp.translations.interfaces.translationmergejob.ITranslationMergeJobSource'/>
+ </securedutility>
+ <class
+ class="lp.translations.model.translationmergejob.TranslationMergeJob">
+ <allow interface='lp.services.job.interfaces.job.IRunnableJob'/>
+ </class>
<utility
component="lp.translations.model.translationtemplatesbuildjob.TranslationTemplatesBuildJob"
provides="lp.buildmaster.interfaces.buildfarmjob.IBuildFarmJob"
=== added file 'lib/lp/translations/interfaces/translationmergejob.py'
--- lib/lp/translations/interfaces/translationmergejob.py 1970-01-01 00:00:00 +0000
+++ lib/lp/translations/interfaces/translationmergejob.py 2011-02-09 17:52:58 +0000
@@ -0,0 +1,7 @@
+from lp.services.job.interfaces.job import (
+ IJobSource,
+ )
+
+
+class ITranslationMergeJobSource(IJobSource):
+ """Marker interface for Translation merge jobs."""
=== modified file 'lib/lp/translations/model/translationmergejob.py'
--- lib/lp/translations/model/translationmergejob.py 2011-02-09 17:52:58 +0000
+++ lib/lp/translations/model/translationmergejob.py 2011-02-09 17:52:58 +0000
@@ -6,10 +6,35 @@
__metaclass__ = type
-from zope.interface import implements
+from lazr.enum import (
+ DBEnumeratedType,
+ DBItem,
+ )
+from storm.locals import (
+ Int,
+ Reference,
+ )
+from zope.interface import (
+ classProvides,
+ implements,
+ )
-from lp.services.job.interfaces.job import IRunnableJob
+from canonical.database.enumcol import EnumCol
+from canonical.launchpad.interfaces.lpstorm import (
+ IStore,
+ )
+from lp.registry.model.distroseries import DistroSeries
+from lp.registry.model.productseries import ProductSeries
+from lp.registry.model.sourcepackagename import SourcePackageName
+from lp.services.database.stormbase import StormBase
+from lp.services.job.interfaces.job import (
+ IRunnableJob,
+ )
+from lp.services.job.model.job import Job
from lp.services.job.runner import BaseRunnableJob
+from lp.translations.interfaces.translationmergejob import (
+ ITranslationMergeJobSource,
+ )
from lp.translations.model.potemplate import POTemplate, POTemplateSubset
from lp.translations.translationmerger import (
TransactionManager,
@@ -19,11 +44,45 @@
__all__ = ['TranslationMergeJob']
-class TranslationMergeJob(BaseRunnableJob):
+class PackagingJobType(DBEnumeratedType):
+ """Types of Packaging Job."""
+
+ TRANSLATION_MERGE = DBItem(0, """
+ Merge translations betweeen productseries and sourcepackage.
+
+ Merge translations betweeen productseries and sourcepackage.
+ """)
+
+
+class TranslationMergeJob(StormBase, BaseRunnableJob):
"""Job for merging translations between a product and sourcepackage."""
+ classProvides(ITranslationMergeJobSource)
+
implements(IRunnableJob)
+ __storm_table__ = 'PackagingJob'
+
+ id = Int(primary=True)
+
+ job_id = Int('job')
+
+ job = Reference(job_id, Job.id)
+
+ job_type = EnumCol(enum=PackagingJobType, notNull=True)
+
+ productseries_id = Int('productseries')
+
+ productseries = Reference(productseries_id, ProductSeries.id)
+
+ distroseries_id = Int('distroseries')
+
+ distroseries = Reference(distroseries_id, DistroSeries.id)
+
+ sourcepackagename_id = Int('sourcepackagename')
+
+ sourcepackagename = Reference(sourcepackagename_id, SourcePackageName.id)
+
def __init__(self, job, productseries, distroseries, sourcepackagename):
""""Constructor.
@@ -33,10 +92,24 @@
:param sourcepackagename: The name of the Packaging sourcepackage.
"""
self.job = job
+ self.job_type = PackagingJobType.TRANSLATION_MERGE
self.distroseries = distroseries
self.sourcepackagename = sourcepackagename
self.productseries = productseries
+ @classmethod
+ def iterReady(cls):
+ """See `IJobSource`."""
+ store = IStore(cls)
+ jobs = store.find(
+ (TranslationMergeJob),
+ TranslationMergeJob.job_type ==
+ PackagingJobType.TRANSLATION_MERGE,
+ TranslationMergeJob.job == Job.id,
+ Job.id.is_in(Job.ready_jobs),
+ )
+ return jobs
+
def run(self):
"""See `IRunnableJob`."""
template_map = dict()
=== added file 'lib/lp/translations/scripts/tests/test_merge_translations.py'
--- lib/lp/translations/scripts/tests/test_merge_translations.py 1970-01-01 00:00:00 +0000
+++ lib/lp/translations/scripts/tests/test_merge_translations.py 2011-02-09 17:52:58 +0000
@@ -0,0 +1,37 @@
+# Copyright 2011 Canonical Ltd. This software is licensed under the
+# GNU Affero General Public License version 3 (see the file LICENSE).
+
+"""Test the merge_translations script."""
+
+
+from textwrap import dedent
+
+import transaction
+
+from canonical.launchpad.scripts.tests import run_script
+from canonical.testing.layers import ZopelessAppServerLayer
+from lp.testing import TestCaseWithFactory
+from lp.translations.tests.test_translationmergejob import (
+ count_translations,
+ make_translation_merge_job,
+ )
+
+
+class TestMergeTranslations(TestCaseWithFactory):
+
+ layer = ZopelessAppServerLayer
+
+ def test_merge_translations(self):
+ job = make_translation_merge_job(self.factory)
+ transaction.commit()
+ retcode, stdout, stderr = run_script(
+ 'cronscripts/run_jobs.py', ['merge_translations'],
+ expect_returncode=0)
+ self.assertEqual(dedent("""\
+ INFO Creating lockfile: /var/lock/launchpad-jobcronscript.lock
+ INFO Running synchronously.
+ INFO Deleted POTMsgSets: 1. TranslationMessages: 1.
+ INFO Ran 1 TranslationMergeJob jobs.
+ """), stderr)
+ self.assertEqual('', stdout)
+ self.assertEqual(1, count_translations(job))
=== modified file 'lib/lp/translations/tests/test_translationmergejob.py'
--- lib/lp/translations/tests/test_translationmergejob.py 2011-02-09 17:52:58 +0000
+++ lib/lp/translations/tests/test_translationmergejob.py 2011-02-09 17:52:58 +0000
@@ -14,91 +14,96 @@
from lp.services.job.model.job import Job
from lp.testing import TestCaseWithFactory
from lp.translations.interfaces.side import TranslationSide
+from lp.translations.interfaces.translationmergejob import (
+ ITranslationMergeJobSource,
+ )
from lp.translations.model.potemplate import POTemplateSubset
from lp.translations.model.translationmergejob import TranslationMergeJob
+def make_translation_merge_job(factory):
+ singular = factory.getUniqueString()
+ upstream_pofile = factory.makePOFile(side=TranslationSide.UPSTREAM)
+ upstream_potmsgset = factory.makePOTMsgSet(
+ upstream_pofile.potemplate, singular, sequence=1)
+ upstream = factory.makeCurrentTranslationMessage(
+ pofile=upstream_pofile, potmsgset=upstream_potmsgset)
+ ubuntu_potemplate = factory.makePOTemplate(
+ side=TranslationSide.UBUNTU, name=upstream_pofile.potemplate.name)
+ ubuntu_pofile = factory.makePOFile(
+ potemplate=ubuntu_potemplate, language=upstream_pofile.language)
+ ubuntu_potmsgset = factory.makePOTMsgSet(
+ ubuntu_pofile.potemplate, singular, sequence=1)
+ ubuntu = factory.makeCurrentTranslationMessage(
+ pofile=ubuntu_pofile, potmsgset=ubuntu_potmsgset,
+ translations=upstream.translations)
+ productseries = upstream_pofile.potemplate.productseries
+ distroseries = ubuntu_pofile.potemplate.distroseries
+ sourcepackagename = ubuntu_pofile.potemplate.sourcepackagename
+ return TranslationMergeJob(
+ job=Job(), productseries=productseries, distroseries=distroseries,
+ sourcepackagename=sourcepackagename)
+
+
+def get_msg_sets(productseries=None, distroseries=None,
+ sourcepackagename=None):
+ msg_sets = []
+ for template in POTemplateSubset(
+ productseries=productseries, distroseries=distroseries,
+ sourcepackagename=sourcepackagename):
+ msg_sets.extend(template.getPOTMsgSets())
+ return msg_sets
+
+
+def get_translations(productseries=None, distroseries=None,
+ sourcepackagename=None):
+ msg_sets = get_msg_sets(
+ productseries=productseries, distroseries=distroseries,
+ sourcepackagename=sourcepackagename)
+ translations = set()
+ for msg_set in msg_sets:
+ translations.update(msg_set.getAllTranslationMessages())
+ return translations
+
+
+def count_translations(job):
+ tm = get_translations(productseries=job.productseries)
+ tm.update(get_translations(
+ sourcepackagename=job.sourcepackagename,
+ distroseries=job.distroseries))
+ return len(tm)
+
+
class TestTranslationMergeJob(TestCaseWithFactory):
layer = LaunchpadZopelessLayer
- def makeTranslationMergeJob(self):
- singular = self.factory.getUniqueString()
- upstream_pofile = self.factory.makePOFile(
- side=TranslationSide.UPSTREAM)
- upstream_potmsgset = self.factory.makePOTMsgSet(
- upstream_pofile.potemplate, singular, sequence=1)
- upstream = self.factory.makeCurrentTranslationMessage(
- pofile=upstream_pofile, potmsgset=upstream_potmsgset)
- ubuntu_potemplate = self.factory.makePOTemplate(
- side=TranslationSide.UBUNTU, name=upstream_pofile.potemplate.name)
- ubuntu_pofile = self.factory.makePOFile(
- potemplate=ubuntu_potemplate, language=upstream_pofile.language)
- ubuntu_potmsgset = self.factory.makePOTMsgSet(
- ubuntu_pofile.potemplate, singular, sequence=1)
- ubuntu = self.factory.makeCurrentTranslationMessage(
- pofile=ubuntu_pofile, potmsgset=ubuntu_potmsgset,
- translations=upstream.translations)
- productseries = upstream_pofile.potemplate.productseries
- distroseries = ubuntu_pofile.potemplate.distroseries
- sourcepackagename = ubuntu_pofile.potemplate.sourcepackagename
- return TranslationMergeJob(
- Job(), productseries, distroseries, sourcepackagename)
-
def test_interface(self):
- """TranslationMergeJob must implement IRunnableJob."""
- job = self.makeTranslationMergeJob()
+ """TranslationMergeJob must implement its interfaces."""
+ verifyObject(ITranslationMergeJobSource, TranslationMergeJob)
+ job = make_translation_merge_job(self.factory)
verifyObject(IRunnableJob, job)
- @staticmethod
- def getMsgSets(productseries=None, distroseries=None,
- sourcepackagename=None):
- msg_sets = []
- for template in POTemplateSubset(
- productseries=productseries, distroseries=distroseries,
- sourcepackagename=sourcepackagename):
- msg_sets.extend(template.getPOTMsgSets())
- return msg_sets
-
- @classmethod
- def getTranslations(cls, productseries=None, distroseries=None,
- sourcepackagename=None):
- msg_sets = cls.getMsgSets(
- productseries=productseries, distroseries=distroseries,
- sourcepackagename=sourcepackagename)
- translations = set()
- for msg_set in msg_sets:
- translations.update(msg_set.getAllTranslationMessages())
- return translations
-
- @classmethod
- def countTranslations(cls, job):
- tm = cls.getTranslations(productseries=job.productseries)
- tm.update(cls.getTranslations(
- sourcepackagename=job.sourcepackagename,
- distroseries=job.distroseries))
- return len(tm)
-
def test_run_merges_msgset(self):
"""Run should merge msgsets."""
- job = self.makeTranslationMergeJob()
+ job = make_translation_merge_job(self.factory)
self.becomeDbUser('rosettaadmin')
- product_msg = self.getMsgSets(productseries=job.productseries)
- package_msg = self.getMsgSets(
+ product_msg = get_msg_sets(productseries=job.productseries)
+ package_msg = get_msg_sets(
sourcepackagename=job.sourcepackagename,
distroseries=job.distroseries)
self.assertNotEqual(package_msg, product_msg)
job.run()
- product_msg = self.getMsgSets(productseries=job.productseries)
- package_msg = self.getMsgSets(
+ product_msg = get_msg_sets(productseries=job.productseries)
+ package_msg = get_msg_sets(
sourcepackagename=job.sourcepackagename,
distroseries=job.distroseries)
self.assertEqual(package_msg, product_msg)
def test_run_merges_translations(self):
"""Run should merge translations."""
- job = self.makeTranslationMergeJob()
+ job = make_translation_merge_job(self.factory)
self.becomeDbUser('rosettaadmin')
- self.assertEqual(2, self.countTranslations(job))
+ self.assertEqual(2, count_translations(job))
job.run()
- self.assertEqual(1, self.countTranslations(job))
+ self.assertEqual(1, count_translations(job))