From: Guillaume Pellerin Date: Fri, 4 Aug 2017 22:20:32 +0000 (+0200) Subject: Add a regex based validator to Resource.code (fix #187) X-Git-Tag: 1.6.4^2~10 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=9a401ea1a417f7cc4c120137a8ef0766700a775a;p=telemeta.git Add a regex based validator to Resource.code (fix #187) --- diff --git a/app/settings.py b/app/settings.py index 227edca5..37eef63e 100644 --- a/app/settings.py +++ b/app/settings.py @@ -215,6 +215,7 @@ COLLECTION_PUBLISHED_CODE_REGEX = '[A-Za-z0-9._-]*' COLLECTION_UNPUBLISHED_CODE_REGEX = '[A-Za-z0-9._-]*' ITEM_PUBLISHED_CODE_REGEX = COLLECTION_PUBLISHED_CODE_REGEX + '' ITEM_UNPUBLISHED_CODE_REGEX = COLLECTION_UNPUBLISHED_CODE_REGEX + '' +RESOURCE_CODE_REGEX = '[A-Za-z0-9._-]*' AUTH_PROFILE_MODULE = 'telemeta.userprofile' SESSION_EXPIRE_AT_BROWSER_CLOSE = False diff --git a/telemeta/models/resource.py b/telemeta/models/resource.py index 07454b8a..195b7848 100644 --- a/telemeta/models/resource.py +++ b/telemeta/models/resource.py @@ -27,6 +27,9 @@ from telemeta.models.core import * from telemeta.models.system import * +resource_code_regex = getattr(settings, 'RESOURCE_CODE_REGEX', '[A-Za-z0-9._-]*') + + class MediaResource(ModelCore): "Base class of all media objects" @@ -57,10 +60,16 @@ class MediaResource(ModelCore): class MediaBaseResource(MediaResource): "Describe a media base resource" + def is_valid_resource_code(value): + "Check if the resource code is well formed" + regex = '^' + resource_code_regex + '$' + if not re.match(regex, value): + raise ValidationError(u'%s is not a valid resource code' % value) + title = CharField(_('title'), required=True) description = CharField(_('description_old')) descriptions = TextField(_('description')) - code = CharField(_('code'), unique=True, required=True) + code = CharField(_('code'), unique=True, required=True, validators=[is_valid_resource_code]) public_access = CharField(_('public access'), choices=PUBLIC_ACCESS_CHOICES, max_length=16, default="metadata") def __unicode__(self): diff --git a/telemeta/templates/telemeta/inc/resource_list.html b/telemeta/templates/telemeta/inc/resource_list.html index d5c15200..72a908e0 100644 --- a/telemeta/templates/telemeta/inc/resource_list.html +++ b/telemeta/templates/telemeta/inc/resource_list.html @@ -30,4 +30,3 @@ {% else %}

{% trans "No resource" %}

{% endif %} -