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()
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, ".*")
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, "")
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, ".*")
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'"''' )
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:"((?:@:\(|\{)[^\)\}]+(?:\)|\}))"')
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"], )
def test_values(self): flags = Flags("placeholders:bar:baz") self.assertEqual(flags.get_value("placeholders"), ["bar", "baz"])
def test_escaped_values(self): flags = Flags(r"""placeholders:"\\":"\"" """) self.assertEqual(flags.get_value("placeholders"), ["\\", '"'])
def test_newline(self): flags = Flags(r"""placeholders:"\n" """) self.assertEqual(flags.get_value("placeholders"), ["\n"])