From 6e7c520b2465e58a10c13b3970dd4ff9a929fc04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Sat, 22 Sep 2018 12:28:02 +0200 Subject: [PATCH] misc: allow lowercase letters in tracking codes (#26429) --- tests/test_form_pages.py | 10 ++++++++++ wcs/sql.py | 4 ++++ wcs/tracking_code.py | 4 ++++ 3 files changed, 18 insertions(+) diff --git a/tests/test_form_pages.py b/tests/test_form_pages.py index 37bb1a16f..d9a2b9d20 100644 --- a/tests/test_form_pages.py +++ b/tests/test_form_pages.py @@ -1296,6 +1296,16 @@ def test_form_tracking_code(pub): resp = resp.forms[0].submit() assert formdef.data_class().get(formdata_id).evolution[-1].comment == 'hello world' + # check we can also use it with lowercase letters. + # check we can still go back to it + app = get_app(pub) + resp = app.get('/') + resp.forms[0]['code'] = tracking_code.lower() + resp = resp.forms[0].submit() + assert resp.location == 'http://example.net/code/%s/load' % tracking_code.lower() + resp = resp.follow() + assert resp.location == 'http://example.net/test/%s' % formdata_id + def test_form_tracking_code_as_user(pub): user = create_user(pub) formdef = create_formdef() diff --git a/wcs/sql.py b/wcs/sql.py index 2235ca6f8..63bd01224 100644 --- a/wcs/sql.py +++ b/wcs/sql.py @@ -1880,6 +1880,10 @@ class TrackingCode(SqlMixin, wcs.tracking_code.TrackingCode): id = None + @classmethod + def get(cls, id, **kwargs): + return super(TrackingCode, cls).get(id.upper(), **kwargs) + @guard_postgres @invalidate_substitution_cache def store(self): diff --git a/wcs/tracking_code.py b/wcs/tracking_code.py index da880ddf4..1a0f29e18 100644 --- a/wcs/tracking_code.py +++ b/wcs/tracking_code.py @@ -34,6 +34,10 @@ class TrackingCode(StorableObject): # self.id set at this point. pass + @classmethod + def get(cls, id, **kwargs): + return super(TrackingCode, cls).get(id.upper(), **kwargs) + @classmethod def get_new_id(cls, create=False): r = random.SystemRandom() -- 2.19.0