Diff for "Translations/Specs/UpstreamImportIntoUbuntu/FixingIsImported/setCurrentTranslation"

Not logged in - Log In / Register

Differences between revisions 4 and 5
Revision 4 as of 2010-03-25 22:48:46
Size: 2941
Editor: jtv
Comment:
Revision 5 as of 2010-03-25 22:54:28
Size: 2743
Editor: jtv
Comment:
Deletions are marked like this. Additions are marked like this.
Line 39: Line 39:
3. create TM 'new'
   new.is_current = True
   POLICY/PRIVILEGES determine if current.is_other goes into new.is_other
Line 48: Line 44:
6. new.is_current = True
   POLICY/PRIVILEGES determine if current.is_other goes into new.is_other
Line 54: Line 47:
8. new.is_current = True
   new.potemplate = None (watch for existing identical TM)
   POLICY/PRIVILEGES determine if current.is_other goes into new.is_other
⊕. MERGING POLICY determines if we need to do:
   Look for shared translation with the is_other flag set: 'other'
   If found:
       other.is_other = False
       new.is_other = True
Line 58: Line 53:
⊕. MERGING POLICY determines if we need to do:
   Get other, current, shared translation 'other'
   other.is_other = False
   new.is_other = True
By default, the policy should approve the change on is_other if working
on upstream; ''or'' if working on Ubuntu but with privileges to edit both.
Line 78: Line 72:
 | T | upstream | B1⊕ | B4⊕ | B7⊕  | ∅ |  | T | upstream | B1⊕ | B4⊕ | B7⊕ | ∅ |

Setting a translation

Assumptions

We're not setting a translation that's identical to the current one.

We've checked that lock_timestamp is newer than the last update date.

A diverged message cannot be both the current Ubuntu message and the current upstream message. Those would be diverged in different templates.

When we look for an "identical" message, we look for ones that are either shared or diverged in the same template that we're looking at. We completely ignore messages that are diverged to other templates.

What happens to the existing current message

A: Deactivate & converge.

  • If there is already an identical shared message:
    • current.delete()
    else:
    • current.is_current = False current.potemplate = None

B: Deactivate.

  • current.is_current = False

What happens to the new current message

1. create TM 'new'

  • new.is_current = True

2. create TM 'new'

  • new.is_current = True new.potemplate = current.potemplate

4. new.is_current = True

5. if new.is_current: pass

  • else: (2)

7. new.potemplate = None (watch for existing identical TM)

  • new.is_current = True

⊕. MERGING POLICY determines if we need to do:

  • Look for shared translation with the is_other flag set: 'other' If found:
    • other.is_other = False new.is_other = True

By default, the policy should approve the change on is_other if working on upstream; or if working on Ubuntu but with privileges to edit both.

Execution matrix

                +-------------------------------------+
                |     IDENTICAL EXISTING TM 'new'     |
                +------+--------+----------+----------+
                |      |        |          | upstream |
                | None | shared | diverged |  shared  |
 +---+----------+---------------+----------+----------+
 | C |  None    |  Z1⊕ |   Z4⊕  |    Z7⊕   |    Z4⊕   |
 | U +----------+------+--------+----------+----------+
 | R |  shared  |  B1  |   B4   |    B7    |    B4    |
 | R +----------+------+--------+----------+----------+
 | E | diverged |  A2  |   A5   |    A4    |    A5    |
 | N +----------+------+--------+----------+----------+
 | T | upstream |  B1⊕ |  B4⊕   |    B7⊕ |    ∅     |
 |   |  shared  |      |        |          |          |
 +---+----------+------+--------+----------+----------+

Notes

A diverged message can mask a similar shared message as well. We tried to take this into account throughout, and believe we covered it. Conditionals in the numbered parts ("what happens to the new current message") may warrant splitting rows or columns later.

Karma is being handled.

Translations/Specs/UpstreamImportIntoUbuntu/FixingIsImported/setCurrentTranslation (last edited 2010-06-19 03:51:36 by jtv)