Projet

Général

Profil

0001-profile-add-extra-validation-to-profile-field-names-.patch

Frédéric Péters, 23 juin 2019 12:10

Télécharger (3,3 ko)

Voir les différences:

Subject: [PATCH] profile: add extra validation to profile field names (#33849)

 hobo/profile/migrations/0001_initial.py |  8 +++++++-
 hobo/profile/models.py                  | 11 ++++++++++-
 2 files changed, 17 insertions(+), 2 deletions(-)
hobo/profile/migrations/0001_initial.py
1 1
# -*- coding: utf-8 -*-
2 2
from __future__ import unicode_literals
3 3

  
4
import django.core.validators
4 5
from django.db import models, migrations
5 6

  
6 7

  
......
16 17
                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
17 18
                ('label', models.CharField(unique=True, max_length=63, verbose_name='label')),
18 19
                ('description', models.TextField(verbose_name='description', blank=True)),
19
                ('name', models.SlugField(unique=True, max_length=256, verbose_name='name')),
20
                ('name', models.SlugField(unique=True, max_length=256, verbose_name='name',
21
                    error_messages={b'unique': 'Field names must be unique.'},
22
                    validators=[django.core.validators.RegexValidator(
23
                        b'^[a-z][a-z0-9_]*\\Z',
24
                        'Enter valid variable name starting with a letter and consisting of letters, numbers, or underscores.')]
25
                    )),
20 26
                ('required', models.BooleanField(default=False, verbose_name='required')),
21 27
                ('asked_on_registration', models.BooleanField(default=False, verbose_name='asked on registration')),
22 28
                ('user_editable', models.BooleanField(default=True, verbose_name='user editable')),
hobo/profile/models.py
14 14
# You should have received a copy of the GNU Affero General Public License
15 15
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 16

  
17
from django.core.validators import RegexValidator
17 18
from django.db import models
18 19
from django.utils.translation import ugettext_lazy as _
19 20

  
20 21

  
22
validate_attribute_name = RegexValidator(
23
    r'^[a-z][a-z0-9_]*\Z',
24
    _('Enter valid variable name starting with a letter and consisting of letters, numbers, or underscores.'),
25
)
26

  
27

  
21 28
class AttributeDefinition(models.Model):
22 29
    label = models.CharField(verbose_name=_('label'),
23 30
            max_length=63, unique=True)
24 31
    description = models.TextField(verbose_name=_('description'),
25 32
            blank=True)
26 33
    name = models.SlugField(verbose_name=_('name'),
27
            max_length=256, unique=True)
34
            max_length=256, unique=True,
35
            validators=[validate_attribute_name],
36
            error_messages={'unique': _('Field names must be unique.')})
28 37
    required = models.BooleanField(verbose_name=_('required'),
29 38
            blank=True, default=False)
30 39
    asked_on_registration = models.BooleanField(verbose_name=_('asked on registration'),
31
-