def test_concat_navigation(self):
        res = resolve('1|group.name', self.i16_1)
        self.assertEqual('1GEP_DEV1_01', res)

        res = resolve('1|group.name|3', self.i16_1)
        self.assertEqual('1GEP_DEV1_013', res)

        res = resolve('group.name|2', self.i16_1)
        self.assertEqual('GEP_DEV1_012', res)
    def test_concat_navigation(self):
        res = resolve('1|group.name', self.i16_1)
        self.assertEqual('1GEP_DEV1_01', res)

        res = resolve('1|group.name|3', self.i16_1)
        self.assertEqual('1GEP_DEV1_013', res)

        res = resolve('group.name|2', self.i16_1)
        self.assertEqual('GEP_DEV1_012', res)
Beispiel #3
0
def value_instance_graph_fields(instance, force=False):
    """Only values fields depending on another instance. Should be called once the instance relations are set"""
    if not instance.description:
        raise Exception ('cannot value an instance without structure')
    impl = instance.description

    for field in impl.field_set.all():
        if not field.default:
            continue
        existing = ComponentInstanceField.objects.get_or_none(instance_id=instance.id, field_id=field.id)
        new_val = existing.value or field.default

        if field.default and (existing is None or force or existing.value == field.default or re_counter_item.search(existing.value)):
            for match in reversed([i for i in re_counter_item.finditer(new_val)]):
                scope_pivot = resolve(match.groups()[3], instance)
                c = ConventionCounter.objects.get_or_create(scope_project=None, scope_application=None, scope_environment=None, scope_type=instance.description, scope_instance=scope_pivot)[0]
                new_val = __counter(match, new_val, c, False)

        if field.default and (existing is None or not existing.value or force or re_navigation.search(existing.value)):
            for match in reversed([i for i in re_navigation.finditer(new_val)]):
                scope_pivot = resolve(match.groups()[1], instance)
                new_val = new_val[0:match.start()] + str(scope_pivot) + new_val[match.end():]

        ## Maths?
        if re_maths.search(new_val):
            try:
                new_val = eval(new_val)
            except:
                pass

        if not existing is None:
            existing.value = new_val
            existing.save()
        else:
            n = ComponentInstanceField(value=new_val, field=field, instance=instance)
            n.save()
 def test_alternative_first(self):
     res = resolve("1?2?3", self.i16_1)
     self.assertEqual(1, res)
 def test_operation_simple_div(self):
     res = resolve('50/10', self.i16_1)
     self.assertEqual(5, res)
 def test_alternative_concat_protection(self):
     res = resolve('1|2?3', None)
     self.assertEqual("12", res)
 def test_navigation_simple(self):
     res = resolve('name', self.i16_1)
     self.assertEqual("GEP_DEV1_APP1", res)
 def test_operation_simple_minus(self):
     res = resolve('50-10', self.i16_1)
     self.assertEqual(40, res)
 def test_concat_two(self):
     res = resolve('1|2', None)
     self.assertEqual('12', res)
Beispiel #10
0
 def test_concat_three_expr(self):
     res = resolve('1|2|(3|4)', None)
     self.assertEqual('1234', res)
Beispiel #11
0
 def test_operation_simple_div(self):
     res = resolve('50/10', self.i16_1)
     self.assertEqual(5, res)
Beispiel #12
0
 def test_operation_with_navigation(self):
     res = resolve('group.domain.base_http_port+100', self.i16_1)
     self.assertEqual(8180, res)
Beispiel #13
0
 def test_operation_simple_minus(self):
     res = resolve('50-10', self.i16_1)
     self.assertEqual(40, res)
Beispiel #14
0
 def test_operation_simple_mult(self):
     res = resolve('50*10', self.i16_1)
     self.assertEqual(500, res)
Beispiel #15
0
 def test_operation_simple_plus(self):
     res = resolve('50+10', self.i16_1)
     self.assertEqual(60, res)
Beispiel #16
0
 def test_string(self):
     res = resolve('"houbahop"', self.i16_1)
     self.assertEqual("houbahop", res)
Beispiel #17
0
 def test_navigation_dotted(self):
     res = resolve('group.domain.name', self.i16_1)
     self.assertEqual("domain1", res)
Beispiel #18
0
 def test_alternative_second(self):
     res = resolve("group.profile?2?3", self.i16_1)
     self.assertEqual(2, res)
Beispiel #19
0
 def test_alternative_concat_protection(self):
     res = resolve('1|2?3', None)
     self.assertEqual("12", res)
Beispiel #20
0
 def test_alternative_third(self):
     res = resolve("group.profile?group.profile?3", self.i16_1)
     self.assertEqual(3, res)
Beispiel #21
0
 def test_navigation_simple(self):
     res = resolve('name', self.i16_1)
     self.assertEqual("GEP_DEV1_APP1", res)
Beispiel #22
0
 def test_concat_three(self):
     res = resolve('1|2|3', None)
     self.assertEqual('123', res)
Beispiel #23
0
 def test_string(self):
     res = resolve('"houbahop"', self.i16_1)
     self.assertEqual("houbahop", res)
Beispiel #24
0
 def test_alternative_first(self):
     res = resolve("1?2?3", self.i16_1)
     self.assertEqual(1, res)
Beispiel #25
0
 def test_parsing_real_1(self):
     pattern = 'client_url?("http://"|(group.dns_to_use?group.domain.name)|":"|(group.domain.base_http_port+10))'
     res = resolve(pattern, self.i16_1)
     self.assertEqual("http://marsu.pl:8090", res)
Beispiel #26
0
 def test_parsing_real_1(self):
     pattern = 'client_url?("http://"|(group.dns_to_use?group.domain.name)|":"|(group.domain.base_http_port+10))'
     res = resolve(pattern, self.i16_1)
     self.assertEqual("http://marsu.pl:8090", res)
Beispiel #27
0
 def test_alternative_second(self):
     res = resolve("group.profile?2?3", self.i16_1)
     self.assertEqual(2, res)
Beispiel #28
0
 def test_navigation_dotted(self):
     res = resolve('group.domain.name', self.i16_1)
     self.assertEqual("domain1", res)
Beispiel #29
0
 def test_alternative_third(self):
     res = resolve("group.profile?group.profile?3", self.i16_1)
     self.assertEqual(3, res)
Beispiel #30
0
 def test_operation_simple_plus(self):
     res = resolve('50+10', self.i16_1)
     self.assertEqual(60, res)
Beispiel #31
0
 def test_concat_two(self):
     res = resolve('1|2', None)
     self.assertEqual('12', res)
Beispiel #32
0
 def test_operation_simple_mult(self):
     res = resolve('50*10', self.i16_1)
     self.assertEqual(500, res)
Beispiel #33
0
 def test_concat_three(self):
     res = resolve('1|2|3', None)
     self.assertEqual('123', res)
Beispiel #34
0
 def test_operation_with_navigation(self):
     res = resolve('group.domain.base_http_port+100', self.i16_1)
     self.assertEqual(8180, res)
Beispiel #35
0
 def test_concat_three_expr(self):
     res = resolve('1|2|(3|4)', None)
     self.assertEqual('1234', res)