Ejemplo n.º 1
0
    def prepare(self, template, check):
        """ Replace placeholders with actual values. """

        ctx = {
            "$CODE": str(check.code),
            "$STATUS": check.status,
            "$NOW": timezone.now().replace(microsecond=0).isoformat(),
            "$NAME": check.name,
            "$TAGS": check.tags,
        }

        for i, tag in enumerate(check.tags_list()):
            ctx["$TAG%d" % (i + 1)] = tag

        return replace(template, ctx)
Ejemplo n.º 2
0
    def prepare(self, template, check, urlencode=False):
        """ Replace variables with actual values. """
        def safe(s):
            return quote(s) if urlencode else s

        ctx = {
            "$CODE": str(check.code),
            "$STATUS": check.status,
            "$NOW": safe(timezone.now().replace(microsecond=0).isoformat()),
            "$NAME": safe(check.name),
            "$TAGS": safe(check.tags),
        }

        for i, tag in enumerate(check.tags_list()):
            ctx["$TAG%d" % (i + 1)] = safe(tag)

        return replace(template, ctx)
Ejemplo n.º 3
0
    def prepare(self, template: str, check, urlencode=False, latin1=False) -> str:
        """Replace variables with actual values."""

        def safe(s: str) -> str:
            return quote(s) if urlencode else s

        ctx = {
            "$CODE": str(check.code),
            "$STATUS": check.status,
            "$NOW": safe(timezone.now().replace(microsecond=0).isoformat()),
            "$NAME": safe(check.name),
            "$TAGS": safe(check.tags),
        }

        for i, tag in enumerate(check.tags_list()):
            ctx["$TAG%d" % (i + 1)] = safe(tag)

        result = replace(template, ctx)
        if latin1:
            # Replace non-latin-1 characters with XML character references.
            result = result.encode("latin-1", "xmlcharrefreplace").decode("latin-1")

        return result
Ejemplo n.º 4
0
 def test_it_works(self):
     result = replace("$A is $B", {"$A": "aaa", "$B": "bbb"})
     self.assertEqual(result, "aaa is bbb")
Ejemplo n.º 5
0
 def test_it_preserves_non_placeholder_dollar_signs(self):
     result = replace("$3.50", {"$A": "text"})
     self.assertEqual(result, "$3.50")
Ejemplo n.º 6
0
 def test_it_ignores_overlapping_placeholders(self):
     result = replace("$$AB", {"$A": "", "$B": "text"})
     self.assertEqual(result, "$B")
Ejemplo n.º 7
0
 def test_it_ignores_placeholders_in_values(self):
     result = replace("$A is $B", {"$A": "$B", "$B": "$A"})
     self.assertEqual(result, "$B is $A")