Browse Source

Make telephone number validate by pattern or empty by default

devel
bashmak 8 years ago
parent
commit
5eeaa9ef9d
  1. 6
      abonapp/forms.py
  2. 2
      abonapp/models.py
  3. 25
      abonapp/templates/abonapp/addAbon.html
  4. 21
      accounts_app/migrations/0003_auto_20180425_1135.py
  5. 4
      accounts_app/models.py
  6. 3
      djing/local_settings.py.template
  7. 2
      docs/install.md

6
abonapp/forms.py

@ -8,7 +8,7 @@ from . import models
from django.conf import settings from django.conf import settings
from djing import IP_ADDR_REGEX from djing import IP_ADDR_REGEX
TELEPHONE_REGEXP = getattr(settings, 'TELEPHONE_REGEXP', r'^\+[7,8,9,3]\d{10,11}$')
TELEPHONE_REGEXP = getattr(settings, 'TELEPHONE_REGEXP', r'^(\+[7,8,9,3]\d{10,11})?$')
def generate_random_chars(length=6, chars=digits, split=2, delimiter=''): def generate_random_chars(length=6, chars=digits, split=2, delimiter=''):
@ -73,9 +73,7 @@ class AbonForm(forms.ModelForm):
}), }),
'telephone': forms.TextInput(attrs={ 'telephone': forms.TextInput(attrs={
'placeholder': _('telephone placeholder'), 'placeholder': _('telephone placeholder'),
'pattern': TELEPHONE_REGEXP,
'required': '',
'class': 'form-control'
'pattern': TELEPHONE_REGEXP
}), }),
'description': forms.Textarea(attrs={'rows': '4'}), 'description': forms.Textarea(attrs={'rows': '4'}),
'is_active': forms.NullBooleanSelect(attrs={'class': 'form-control'}) 'is_active': forms.NullBooleanSelect(attrs={'class': 'form-control'})

2
abonapp/models.py

@ -19,7 +19,7 @@ from djing import IP_ADDR_REGEX
from tariff_app.models import Tariff, PeriodicPay from tariff_app.models import Tariff, PeriodicPay
from bitfield import BitField from bitfield import BitField
TELEPHONE_REGEXP = getattr(settings, 'TELEPHONE_REGEXP', r'^\+[7,8,9,3]\d{10,11}$')
TELEPHONE_REGEXP = getattr(settings, 'TELEPHONE_REGEXP', r'^(\+[7,8,9,3]\d{10,11})?$')
class AbonLog(models.Model): class AbonLog(models.Model):

25
abonapp/templates/abonapp/addAbon.html

@ -39,19 +39,20 @@
{% bootstrap_icon 'home' as ic %} {% bootstrap_icon 'home' as ic %}
{% bootstrap_field form.house addon_before=ic %} {% bootstrap_field form.house addon_before=ic %}
<div class="form-group">
<label for="id_password">{% trans 'Password' %}</label>
{# password field #}
{% bootstrap_icon 'lock' as ic %}
{% bootstrap_button '' button_type='button' icon='eye-open' button_class='btn-default' id='passwdtoggler' size='sm' as bt %}
{% bootstrap_field form.password form_group_class='form-group-sm' addon_after_class='input-group-btn' addon_after=bt addon_before=ic %}
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></span>
{{ form.password }}{{ form.password.errors }}
<span class="input-group-btn">
<button type="button" class="btn btn-default" onmousedown="document.getElementById('id_password').type='text'" onmouseup="document.getElementById('id_password').type='password'">
<span class="glyphicon glyphicon-eye-open"></span>
</button>
</span>
</div>
</div>
<script type="text/javascript">
$(function () {
$('#passwdtoggler').on('mousedown', function(){
document.getElementById("{{ form.password.id_for_label }}").type='text';
}).on('mouseup', function(){
document.getElementById("{{ form.password.id_for_label }}").type='password';
});
});
</script>
<div class="btn-group"> <div class="btn-group">
<button type="submit" class="btn btn-sm btn-primary"> <button type="submit" class="btn btn-sm btn-primary">

21
accounts_app/migrations/0003_auto_20180425_1135.py

@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11 on 2018-04-25 11:35
from __future__ import unicode_literals
import django.core.validators
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('accounts_app', '0002_auto_20180413_1839'),
]
operations = [
migrations.AlterField(
model_name='baseaccount',
name='telephone',
field=models.CharField(blank=True, max_length=16, validators=[django.core.validators.RegexValidator('^(\\+[7,8,9,3]\\d{10,11})?$')], verbose_name='Telephone'),
),
]

4
accounts_app/models.py

@ -9,7 +9,7 @@ from django.conf import settings
from group_app.models import Group from group_app.models import Group
DEFAULT_PICTURE = getattr(settings, 'DEFAULT_PICTURE', '/static/img/user_ava.gif') DEFAULT_PICTURE = getattr(settings, 'DEFAULT_PICTURE', '/static/img/user_ava.gif')
TELEPHONE_REGEXP = getattr(settings, 'TELEPHONE_REGEXP', r'^\+[7,8,9,3]\d{10,11}$')
TELEPHONE_REGEXP = getattr(settings, 'TELEPHONE_REGEXP', r'^(\+[7,8,9,3]\d{10,11})?$')
class MyUserManager(BaseUserManager): class MyUserManager(BaseUserManager):
@ -59,7 +59,7 @@ class BaseAccount(AbstractBaseUser, PermissionsMixin):
telephone = models.CharField( telephone = models.CharField(
max_length=16, max_length=16,
verbose_name=_('Telephone'), verbose_name=_('Telephone'),
# unique=True,
blank=True,
validators=[RegexValidator(TELEPHONE_REGEXP)] validators=[RegexValidator(TELEPHONE_REGEXP)]
) )

3
djing/local_settings.py.template

@ -44,7 +44,8 @@ DEFAULT_SNMP_PASSWORD = 'public'
TELEGRAM_BOT_TOKEN = 'bot token' TELEGRAM_BOT_TOKEN = 'bot token'
TELEPHONE_REGEXP = r'^\+[7,8,9,3]\d{10,11}$'
# Telephone or empty
TELEPHONE_REGEXP = r'^(\+[7,8,9,3]\d{10,11})?$'
ASTERISK_MANAGER_AUTH = { ASTERISK_MANAGER_AUTH = {
'username': 'admin', 'username': 'admin',

2
docs/install.md

@ -270,7 +270,7 @@ Password (again):
Superuser created successfully. Superuser created successfully.
``` ```
Обратите внимание на то что номер телефона это обязательное поле для заполнения. Обратите внимание на то что номер телефона это обязательное поле для заполнения.
Если у вас не выходит указать номер телефона, то проверте чтоб ваш телефон соответствовал регулярному выражению **^\+[7,8,9,3]\d{10,11}$**.
Если у вас не выходит указать номер телефона, то проверте чтоб ваш телефон соответствовал регулярному выражению **^(\+[7,8,9,3]\d{10,11})?$**.
Если регулярное выражение вам не подхожит, то вы можете изенить его в настройках, см. опции в настройках выше. Если регулярное выражение вам не подхожит, то вы можете изенить его в настройках, см. опции в настройках выше.
После изменения настроек они не сразу вступят в силу, нужно перезагрузить код django, для этого перезапустите **uwsgi**: После изменения настроек они не сразу вступят в силу, нужно перезагрузить код django, для этого перезапустите **uwsgi**:
> \# systemctl restart uwsgi > \# systemctl restart uwsgi

Loading…
Cancel
Save