Merge lp:~jtv/launchpad/recife-retire-traits-helpers into lp:~launchpad/launchpad/recife

Proposed by Jeroen T. Vermeulen
Status: Merged
Approved by: Jeroen T. Vermeulen
Approved revision: no longer in the source branch.
Merged at revision: 9162
Proposed branch: lp:~jtv/launchpad/recife-retire-traits-helpers
Merge into: lp:~launchpad/launchpad/recife
Diff against target: 242 lines (+18/-135)
2 files modified
lib/lp/translations/model/potmsgset.py (+18/-77)
lib/lp/translations/tests/test_potmsgset.py (+0/-58)
To merge this branch: bzr merge lp:~jtv/launchpad/recife-retire-traits-helpers
Reviewer Review Type Date Requested Status
Henning Eggers (community) code Approve
Review via email: mp+33491@code.launchpad.net

Commit message

Retire MessageSideHelper

Description of the change

= Retire MessageSideHelper =

For the Recife feature branch. Retire the last remnants of MessageSideHelper; its main function has already been extracted into MessageSideTraits.

To test:
{{{
./bin/test -vvc -m lp.translations.tests.test_potmsgset
}}}

Jeroen

To post a comment you must log in.
Revision history for this message
Henning Eggers (henninge) wrote :

Yeah for removing code! :-D

review: Approve (code)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'lib/lp/translations/model/potmsgset.py'
2--- lib/lp/translations/model/potmsgset.py 2010-08-20 04:15:11 +0000
3+++ lib/lp/translations/model/potmsgset.py 2010-08-24 07:42:48 +0000
4@@ -5,7 +5,6 @@
5
6 __metaclass__ = type
7 __all__ = [
8- 'make_message_side_helpers',
9 'POTMsgSet',
10 ]
11
12@@ -90,67 +89,6 @@
13 incumbent_unknown = object()
14
15
16-class MessageSideHelper:
17- """Helper for manipulating messages on one `TranslationSide`.
18-
19- Does some caching so that the caller doesn't need to worry about
20- unnecessary queries e.g. when disabling a previously current
21- message.
22- """
23-
24- # The TranslationSideTraits that this helper is for.
25- traits = None
26-
27- # MessageSideHelper for this message on the "other side."
28- other_side = None
29-
30- _incumbent = incumbent_unknown
31-
32- def __init__(self, side, potmsgset, potemplate=None, language=None):
33- self.traits = getUtility(ITranslationSideTraitsSet).getTraits(side)
34- self.potmsgset = potmsgset
35- self.potemplate = potemplate
36- self.language = language
37-
38- @property
39- def incumbent_message(self):
40- """Message that currently has the flag."""
41- if self._incumbent == incumbent_unknown:
42- self._incumbent = self.traits.getCurrentMessage(
43- self.potmsgset, self.potemplate, self.language)
44- return self._incumbent
45-
46- def setFlag(self, translationmessage, value):
47- """Set or clear a message's "current" flag for this side."""
48- if value == self.traits.getFlag(translationmessage):
49- return
50-
51- if value:
52- if self.incumbent_message is not None:
53- Store.of(self.incumbent_message).add_flush_order(
54- self.incumbent_message, translationmessage)
55- self.setFlag(self.incumbent_message, False)
56- self._incumbent = translationmessage
57- else:
58- self._incumbent = incumbent_unknown
59-
60- self.traits.setFlag(translationmessage, value)
61-
62-
63-def make_message_side_helpers(side, potmsgset, potemplate, language):
64- """Create `MessageSideHelper` object of the appropriate subtype."""
65- upstream = MessageSideHelper(
66- TranslationSide.UPSTREAM, potmsgset, potemplate, language)
67- ubuntu = MessageSideHelper(
68- TranslationSide.UBUNTU, potmsgset, potemplate, language)
69- upstream.other_side = ubuntu
70- ubuntu.other_side = upstream
71- mapping = dict(
72- (helper.traits.side, helper)
73- for helper in (ubuntu, upstream))
74- return mapping[side]
75-
76-
77 class POTMsgSet(SQLBase):
78 implements(IPOTMsgSet)
79
80@@ -1129,12 +1067,12 @@
81
82 twin = identical_message
83
84- translation_side = pofile.potemplate.translation_side
85- helper = make_message_side_helpers(
86- translation_side, self, pofile.potemplate, pofile.language)
87+ traits = getUtility(ITranslationSideTraitsSet).getTraits(
88+ pofile.potemplate.translation_side)
89
90 # The current message on this translation side, if any.
91- incumbent_message = helper.incumbent_message
92+ incumbent_message = traits.getCurrentMessage(
93+ self, pofile.potemplate, pofile.language)
94
95 # Summary of the matrix:
96 # * If the incumbent message is diverged and we're setting a
97@@ -1178,8 +1116,8 @@
98 }
99
100 incumbent_state = "incumbent_%s" % self._nameMessageStatus(
101- incumbent_message, helper.traits)
102- twin_state = "twin_%s" % self._nameMessageStatus(twin, helper.traits)
103+ incumbent_message, traits)
104+ twin_state = "twin_%s" % self._nameMessageStatus(twin, traits)
105
106 decisions = decision_matrix[incumbent_state][twin_state]
107 assert re.match('[ABZ]?[124567]?[+*]?$', decisions), (
108@@ -1189,11 +1127,11 @@
109 if character == 'A':
110 # Deactivate & converge.
111 # There may be an identical shared message.
112- helper.traits.setFlag(incumbent_message, False)
113+ traits.setFlag(incumbent_message, False)
114 incumbent_message.shareIfPossible()
115 elif character == 'B':
116 # Deactivate.
117- helper.setFlag(incumbent_message, False)
118+ traits.setFlag(incumbent_message, False)
119 elif character == 'Z':
120 # There is no incumbent message, so do nothing to it.
121 assert incumbent_message is None, (
122@@ -1214,14 +1152,14 @@
123 # (If not, it's already active and has been unmasked by
124 # our deactivating the incumbent).
125 message = twin
126- if not helper.traits.getFlag(twin):
127- assert not helper.other_side.traits.getFlag(twin), (
128+ if not traits.getFlag(twin):
129+ assert not traits.other_side_traits.getFlag(twin), (
130 "Trying to diverge a message that is current on the "
131 "other side.")
132 message.potemplate = pofile.potemplate
133 elif character == '6':
134 # If other is not active, fork a diverged message.
135- if helper.traits.getFlag(twin):
136+ if traits.getFlag(twin):
137 message = twin
138 else:
139 # The twin is used on the other side, so we can't
140@@ -1236,11 +1174,14 @@
141 message.shareIfPossible()
142 elif character == '*':
143 if share_with_other_side:
144- if helper.other_side.incumbent_message is None:
145- helper.other_side.setFlag(message, True)
146+ other_incumbent = (
147+ traits.other_side_traits.getCurrentMessage(
148+ self, pofile.potemplate, pofile.language))
149+ if other_incumbent is None:
150+ traits.other_side_traits.setFlag(message, True)
151 elif character == '+':
152 if share_with_other_side:
153- helper.other_side.setFlag(message, True)
154+ traits.other_side_traits.setFlag(message, True)
155 else:
156 raise AssertionError(
157 "Bad character in decision string: %s" % character)
158@@ -1248,7 +1189,7 @@
159 if decisions == '':
160 message = twin
161
162- helper.setFlag(message, True)
163+ traits.setFlag(message, True)
164
165 return message
166
167
168=== modified file 'lib/lp/translations/tests/test_potmsgset.py'
169--- lib/lp/translations/tests/test_potmsgset.py 2010-08-17 09:55:30 +0000
170+++ lib/lp/translations/tests/test_potmsgset.py 2010-08-24 07:42:48 +0000
171@@ -25,7 +25,6 @@
172 from lp.translations.interfaces.translationmessage import (
173 RosettaTranslationOrigin, TranslationConflict)
174 from lp.translations.interfaces.side import TranslationSide
175-from lp.translations.model.potmsgset import make_message_side_helpers
176 from lp.translations.model.translationmessage import (
177 DummyTranslationMessage)
178
179@@ -1597,63 +1596,6 @@
180 pofile.potemplate, pofile.language))
181 self.assertEqual(origin, message.origin)
182
183- def test_make_message_side_helpers(self):
184- # make_message_side_helpers is a factory for helpers that help
185- # setCurrentTranslations deal with the dichotomy between
186- # upstream and Ubuntu translations.
187- pofile, potmsgset = self._makePOFileAndPOTMsgSet()
188- sides = (TranslationSide.UPSTREAM, TranslationSide.UBUNTU)
189- for side in sides:
190- helper = make_message_side_helpers(
191- side, potmsgset, pofile.potemplate, pofile.language)
192- self.assertEqual(side, helper.traits.side)
193- self.assertNotEqual(side, helper.other_side.traits.side)
194- self.assertIn(helper.other_side.traits.side, sides)
195- self.assertIs(helper, helper.other_side.other_side)
196-
197- def test_UpstreamSideTraits_upstream(self):
198- pofile, potmsgset = self._makePOFileAndPOTMsgSet()
199- message = self.factory.makeTranslationMessage(
200- pofile=pofile, potmsgset=potmsgset)
201-
202- helper = make_message_side_helpers(
203- TranslationSide.UPSTREAM, potmsgset, pofile.potemplate,
204- pofile.language)
205-
206- self.assertEqual('is_current_upstream', helper.traits.flag_name)
207-
208- self.assertFalse(helper.traits.getFlag(message))
209- self.assertFalse(message.is_current_upstream)
210- self.assertEquals(None, helper.incumbent_message)
211-
212- helper.setFlag(message, True)
213-
214- self.assertTrue(helper.traits.getFlag(message))
215- self.assertTrue(message.is_current_upstream)
216- self.assertEquals(message, helper.incumbent_message)
217-
218- def test_UpstreamSideTraits_ubuntu(self):
219- pofile, potmsgset = self._makePOFileAndPOTMsgSet()
220- message = self.factory.makeTranslationMessage(
221- pofile=pofile, potmsgset=potmsgset)
222- message.makeCurrentUbuntu(False)
223-
224- helper = make_message_side_helpers(
225- TranslationSide.UBUNTU, potmsgset, pofile.potemplate,
226- pofile.language)
227-
228- self.assertEqual('is_current_ubuntu', helper.traits.flag_name)
229-
230- self.assertFalse(helper.traits.getFlag(message))
231- self.assertFalse(message.is_current_ubuntu)
232- self.assertEquals(None, helper.incumbent_message)
233-
234- helper.setFlag(message, True)
235-
236- self.assertTrue(helper.traits.getFlag(message))
237- self.assertTrue(message.is_current_ubuntu)
238- self.assertEquals(message, helper.incumbent_message)
239-
240 def test_identical(self):
241 # Setting the same message twice leaves the original as-is.
242 pofile, potmsgset = self._makePOFileAndPOTMsgSet()

Subscribers

People subscribed via source and target branches