Beispiel #1
0
    def update_variants(self):
        old_flags = Flags(self.old_unit.extra_flags, self.old_unit.flags)
        new_flags = Flags(self.extra_flags, self.flags)

        old_variant = None
        if old_flags.has_value("variant"):
            old_variant = old_flags.get_value("variant")
        new_variant = None
        if new_flags.has_value("variant"):
            new_variant = new_flags.get_value("variant")

        # Check for relevant changes
        if old_variant == new_variant:
            return

        # Delete stale variant
        if old_variant:
            for variant in self.defined_variants.all():
                variant.defining_units.remove(self)
                if variant.defining_units.count() == 0:
                    variant.delete()
                else:
                    variant.unit_set.filter(id_hash=self.id_hash).update(
                        variant=None)

        # Add new variant
        if new_variant:
            variant = Variant.objects.get_or_create(
                key=new_variant, component=self.translation.component)[0]
            variant.defining_units.add(self)

        # Update variant links
        self.translation.component.update_variants()
Beispiel #2
0
 def test_regex(self):
     flags = Flags("regex:.*")
     regex = flags.get_value("regex")
     self.assertEqual(regex.pattern, ".*")
     flags = Flags('regex:r".*"')
     regex = flags.get_value("regex")
     self.assertEqual(regex.pattern, ".*")
Beispiel #3
0
 def test_empty_value(self):
     flags = Flags("regex:")
     regex = flags.get_value("regex")
     self.assertEqual(regex.pattern, "")
     flags = Flags("regex:,bar")
     regex = flags.get_value("regex")
     self.assertEqual(regex.pattern, "")
Beispiel #4
0
 def test_regex_value(self):
     flags = Flags("placeholders:r")
     self.assertEqual(flags.get_value("placeholders"), ["r"])
     flags = Flags("placeholders:r:r")
     self.assertEqual(flags.get_value("placeholders"), ["r", "r"])
     flags = Flags("placeholders:r,r")
     self.assertEqual(flags.get_value("placeholders"), ["r"])
     flags = Flags('placeholders:r".*"')
     values = flags.get_value("placeholders")
     self.assertEqual(len(values), 1)
     self.assertEqual(values[0].pattern, ".*")
Beispiel #5
0
 def test_quoted_values(self):
     flags = Flags(r"""placeholders:"bar: \"value\"":'baz \'value\''""")
     self.assertEqual(
         flags.get_value("placeholders"), ['bar: "value"', "baz 'value'"]
     )
     self.assertEqual(
         flags.format(), r'''placeholders:"bar: \"value\"":"baz 'value'"'''
     )
Beispiel #6
0
 def test_quoted_values(self):
     flags = Flags(r"""placeholders:"bar: \"value\"":'baz \'value\''""")
     self.assertEqual(flags.get_value("placeholders"),
                      ['bar: "value"', "baz 'value'"])
     self.assertEqual(flags.format(),
                      r'''placeholders:"bar: \"value\"":"baz 'value'"''')
     flags = Flags(r'regex:"((?:@:\(|\{)[^\)\}]+(?:\)|\}))"')
     self.assertEqual(flags.format(),
                      r'regex:"((?:@:\(|\{)[^\)\}]+(?:\)|\}))"')
Beispiel #7
0
 def test_replacements(
     self,
     text='replacements:{COLOR-GREY}:"":{COLOR-GARNET}:"":{VARIABLE-01}:99'
 ):
     flags = Flags(text)
     self.assertEqual(
         flags.items(),
         {(
             "replacements",
             "{COLOR-GREY}",
             "",
             "{COLOR-GARNET}",
             "",
             "{VARIABLE-01}",
             "99",
         )},
     )
     self.assertEqual(
         flags.get_value("replacements"),
         ["{COLOR-GREY}", "", "{COLOR-GARNET}", "", "{VARIABLE-01}", "99"],
     )
Beispiel #8
0
 def test_values(self):
     flags = Flags("placeholders:bar:baz")
     self.assertEqual(flags.get_value("placeholders"), ["bar", "baz"])
Beispiel #9
0
 def test_escaped_values(self):
     flags = Flags(r"""placeholders:"\\":"\"" """)
     self.assertEqual(flags.get_value("placeholders"), ["\\", '"'])
Beispiel #10
0
 def test_newline(self):
     flags = Flags(r"""placeholders:"\n" """)
     self.assertEqual(flags.get_value("placeholders"), ["\n"])