Jelajahi Sumber

Merge branch 'dev' of github.com:coderedcorp/coderedcms into dev

Vince Salvino 4 tahun lalu
induk
melakukan
9b89a6de0c

+ 2 - 1
coderedcms/templatetags/coderedcms_tags.py

@@ -40,7 +40,8 @@ def coderedcms_version():
 
 @register.simple_tag
 def generate_random_id():
-    return ''.join(random.choice(string.ascii_letters + string.digits) for n in range(20))
+    value = ''.join(random.choice(string.ascii_letters + string.digits) for n in range(20))
+    return "cr-{}".format(value)
 
 
 @register.simple_tag(takes_context=True)

+ 29 - 0
coderedcms/tests/test_templatetags.py

@@ -0,0 +1,29 @@
+import re
+
+from django.template import engines
+from django.test import TestCase
+
+
+django_engine = engines['django']
+html_id_re = re.compile(r"^[A-Za-z][A-Za-z0-9_:\.-]*$")
+
+
+class TemplateTagTests(TestCase):
+    def test_coderedcms_generate_random_id(self):
+        count = 1000
+        t = django_engine.from_string(
+            "{% load coderedcms_tags %}{% generate_random_id as rid %}{{rid}}"
+        )
+        ids = set([])
+        for i in range(count):
+            ids.add(t.render())
+
+        # ensure we are reasonably unique
+        self.assertEqual(len(ids), count)
+
+        # ensure ids are valid
+        for i, value in enumerate(ids, start=1):
+            self.assertTrue(
+                html_id_re.match(value),
+                'ID #%s "%s" did not match regex %r' % (i, value, html_id_re),
+            )