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)
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)
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
def test_it_works(self): result = replace("$A is $B", {"$A": "aaa", "$B": "bbb"}) self.assertEqual(result, "aaa is bbb")
def test_it_preserves_non_placeholder_dollar_signs(self): result = replace("$3.50", {"$A": "text"}) self.assertEqual(result, "$3.50")
def test_it_ignores_overlapping_placeholders(self): result = replace("$$AB", {"$A": "", "$B": "text"}) self.assertEqual(result, "$B")
def test_it_ignores_placeholders_in_values(self): result = replace("$A is $B", {"$A": "$B", "$B": "$A"}) self.assertEqual(result, "$B is $A")