diff --git a/abonapp/admin.py b/abonapp/admin.py index d0d64c0..bd5771b 100644 --- a/abonapp/admin.py +++ b/abonapp/admin.py @@ -14,3 +14,4 @@ admin.site.register(models.AbonRawPassword) admin.site.register(models.ExtraFieldsModel) admin.site.register(models.AllPayLog) admin.site.register(models.Opt82) +admin.site.register(models.PassportInfo) diff --git a/abonapp/forms.py b/abonapp/forms.py index 4d3e3e0..cb32d01 100644 --- a/abonapp/forms.py +++ b/abonapp/forms.py @@ -1,4 +1,5 @@ # -*- coding: utf-8 -*- +from datetime import datetime from django.utils.translation import ugettext as _ from django import forms from django.contrib.auth.hashers import make_password @@ -96,3 +97,18 @@ class AbonGroupForm(forms.ModelForm): 'title': forms.TextInput(attrs={'class': 'form-control'}), 'profiles': forms.TextInput(attrs={'class': 'form-control'}) } + + +class PassportForm(forms.ModelForm): + class Meta: + model = models.PassportInfo + exclude = ['abon'] + widgets = { + 'series': forms.TextInput(attrs={'class': 'form-control', 'required': '', 'pattern': '^\d{4}$'}), + 'number': forms.TextInput(attrs={'class': 'form-control', 'required': '', 'pattern': '^\d{6}$'}), + 'distributor': forms.TextInput(attrs={'class': 'form-control', 'required': ''}), + 'date_of_acceptance': forms.DateInput(attrs={'class': 'form-control', 'required': ''}) + } + initials = { + 'date_of_acceptance': datetime(year=2014, month=6, day=1) + } diff --git a/abonapp/locale/ru/LC_MESSAGES/django.po b/abonapp/locale/ru/LC_MESSAGES/django.po index d6bccb8..b8ec190 100644 --- a/abonapp/locale/ru/LC_MESSAGES/django.po +++ b/abonapp/locale/ru/LC_MESSAGES/django.po @@ -717,3 +717,18 @@ msgstr "Ошибка в SNMP на устройстве" msgid "No streets found for that group" msgstr "Не найдены улицы для группы" + +msgid "Date of acceptance" +msgstr "Дата выдачи" + +msgid "Passport information has been saved" +msgstr "Информация о паспорте сохранена" + +msgid "Abon does not exist" +msgstr "Абонент не найден" + +msgid "Passport info for the user does not exist" +msgstr "Для абонента не найдены паспортные данные" + +msgid "currency" +msgstr "руб" diff --git a/abonapp/migrations/0015_auto_20170410_1737.py b/abonapp/migrations/0015_auto_20170410_1737.py deleted file mode 100644 index 66a2f79..0000000 --- a/abonapp/migrations/0015_auto_20170410_1737.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by Django 1.9 on 2017-04-10 14:37 -from __future__ import unicode_literals - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('abonapp', '0014_auto_20170330_1452'), - ] - - operations = [ - migrations.AlterField( - model_name='abon', - name='opt82', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='abonapp.Opt82'), - ), - ] diff --git a/abonapp/migrations/0015_passportinfo.py b/abonapp/migrations/0015_passportinfo.py new file mode 100644 index 0000000..5207173 --- /dev/null +++ b/abonapp/migrations/0015_passportinfo.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9 on 2017-04-11 10:43 +from __future__ import unicode_literals + +import django.core.validators +from django.db import migrations, models +import django.db.models.deletion +import re + + +class Migration(migrations.Migration): + + dependencies = [ + ('abonapp', '0014_auto_20170330_1452'), + ] + + operations = [ + migrations.CreateModel( + name='PassportInfo', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('series', models.CharField(max_length=4, validators=[django.core.validators.RegexValidator(re.compile('^-?\\d+\\Z', 32), code='invalid', message='Enter a valid integer.')])), + ('number', models.CharField(max_length=6, validators=[django.core.validators.RegexValidator(re.compile('^-?\\d+\\Z', 32), code='invalid', message='Enter a valid integer.')])), + ('distributor', models.CharField(max_length=64)), + ('date_of_acceptance', models.DateField()), + ('abon', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='abonapp.Abon')), + ], + ), + migrations.AlterField( + model_name='abon', + name='opt82', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, + to='abonapp.Opt82'), + ) + ] diff --git a/abonapp/models.py b/abonapp/models.py index 312e87f..011acf2 100644 --- a/abonapp/models.py +++ b/abonapp/models.py @@ -335,6 +335,17 @@ class Abon(UserProfile): return AbonStruct(self.pk, user_ip, agent_trf, bool(self.is_active)) +class PassportInfo(models.Model): + series = models.CharField(max_length=4, validators=[validators.integer_validator]) + number = models.CharField(max_length=6, validators=[validators.integer_validator]) + distributor = models.CharField(max_length=64) + date_of_acceptance = models.DateField() + abon = models.OneToOneField(Abon, on_delete=models.SET_NULL, blank=True, null=True) + + def __unicode__(self): + return "%s %s" % (self.series, self.number) + + class InvoiceForPayment(models.Model): abon = models.ForeignKey(Abon) status = models.BooleanField(default=False) diff --git a/abonapp/templates/abonapp/group_tariffs.html b/abonapp/templates/abonapp/group_tariffs.html index 160415b..c8b4d0d 100644 --- a/abonapp/templates/abonapp/group_tariffs.html +++ b/abonapp/templates/abonapp/group_tariffs.html @@ -21,7 +21,7 @@ {% else %} {% endif %} - {{ tariff.title }} + {{ tariff.title }}, {{ tariff.amount }}{% trans 'currency' %}, {{ tariff.speedOut }}Mbit/s | {{ tariff.speedIn }}Mbit/s {% endfor %} diff --git a/abonapp/templates/abonapp/passport_view.html b/abonapp/templates/abonapp/passport_view.html index 8ae91a8..71bf846 100644 --- a/abonapp/templates/abonapp/passport_view.html +++ b/abonapp/templates/abonapp/passport_view.html @@ -9,31 +9,39 @@