diff --git a/djing/settings.py b/djing/settings.py index 3b354db..1089d52 100644 --- a/djing/settings.py +++ b/djing/settings.py @@ -58,6 +58,7 @@ INSTALLED_APPS = [ 'messenger', 'msg_app', 'group_app', + 'new_customers', 'guardian', 'pinax_theme_bootstrap', 'bootstrapform', diff --git a/djing/urls.py b/djing/urls.py index fb8a3f7..a1dab3a 100644 --- a/djing/urls.py +++ b/djing/urls.py @@ -19,6 +19,7 @@ urlpatterns = [ path('ip_pool/', include('ip_pool.urls', namespace='ip_pool')), path('messenger/', include('messenger.urls', namespace='messenger')), path('gw/', include('gw_app.urls', namespace='gw_app')), + path('new_customers/', include('new_customers.urls', namespace='new_customers')), path('fin/', include('finapp.urls', namespace='finapp')) # Switch language diff --git a/new_customers/__init__.py b/new_customers/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/new_customers/admin.py b/new_customers/admin.py new file mode 100644 index 0000000..a2528b5 --- /dev/null +++ b/new_customers/admin.py @@ -0,0 +1,5 @@ +from django.contrib import admin +from new_customers.models import PotentialSubscriber + + +admin.site.register(PotentialSubscriber) diff --git a/new_customers/apps.py b/new_customers/apps.py new file mode 100644 index 0000000..5360d9c --- /dev/null +++ b/new_customers/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class NewCustomersConfig(AppConfig): + name = 'new_customers' diff --git a/new_customers/forms.py b/new_customers/forms.py new file mode 100644 index 0000000..2d00eea --- /dev/null +++ b/new_customers/forms.py @@ -0,0 +1,8 @@ +from django import forms +from new_customers.models import PotentialSubscriber + + +class CustomerModelForm(forms.ModelForm): + class Meta: + model = PotentialSubscriber + exclude = ('make_data',) diff --git a/new_customers/locale/ru/LC_MESSAGES/django.po b/new_customers/locale/ru/LC_MESSAGES/django.po new file mode 100644 index 0000000..a473243 --- /dev/null +++ b/new_customers/locale/ru/LC_MESSAGES/django.po @@ -0,0 +1,98 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Dmitry Novikov nerosketch@gmail.com, 2019. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-06-17 00:43+0300\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Dmitry Novikov nerosketch@gmail.com\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n" +"%100>=11 && n%100<=14)? 2 : 3);\n" + +#: models.py:11 +msgid "fio" +msgstr "ФИО" + +#: models.py:14 +msgid "Telephone" +msgstr "Номер телефона" + +#: models.py:24 +msgid "User group" +msgstr "Группа нового абонента" + +#: models.py:27 +msgid "Town" +msgstr "Посёлок" + +#: models.py:28 +msgid "Town, if group does not already exist" +msgstr "Населённый пункт, если группа ещё не существует" + +#: models.py:31 +msgid "Street" +msgstr "Улица" + +#: models.py:33 +msgid "House" +msgstr "Дом" + +#: models.py:39 +msgid "Comment" +msgstr "Комментарий" + +#: models.py:43 +msgid "Create date" +msgstr "Дата создания" + +#: models.py:45 +msgid "Deadline connection" +msgstr "Планируемая дата подключения" + +#: models.py:46 +msgid "Date when connection must be finished" +msgstr "Дата, до которой подключение должно быть завершено" + +#: models.py:55 +msgid "Potential customer" +msgstr "Новый абонент" + +#: models.py:56 +msgid "Potential customers" +msgstr "Новые абоненты" + +#: templates/new_customers/potentialsubscriber_form.html:5 +msgid "Create potential client" +msgstr "Создать заявку на подключение" + +#: templates/new_customers/potentialsubscriber_form.html:13 +#: templates/new_customers/potentialsubscriber_list.html:45 +msgid "Add" +msgstr "Добавить" + +#: templates/new_customers/potentialsubscriber_list.html:8 +#: templates/new_customers/potentialsubscriber_list.html:14 +msgid "Potential subscribers" +msgstr "Заявки на подключение" + +#: templates/new_customers/potentialsubscriber_list.html:21 +msgid "New subscribers" +msgstr "Новые абоненты" + +#: templates/new_customers/potentialsubscriber_list.html:22 +msgid "People that may be clients" +msgstr "Подключки. Клиенты, которые должны стать абонентами" + +#: templates/new_customers/potentialsubscriber_list.html:38 +msgid "Not have new subscribers" +msgstr "Нет новых подключек" diff --git a/new_customers/migrations/0001_initial.py b/new_customers/migrations/0001_initial.py new file mode 100644 index 0000000..dbf8fbe --- /dev/null +++ b/new_customers/migrations/0001_initial.py @@ -0,0 +1,38 @@ +# Generated by Django 2.0 on 2019-06-17 00:17 + +import django.core.validators +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('group_app', '0003_auto_20180808_1236'), + ] + + operations = [ + migrations.CreateModel( + name='PotentialSubscriber', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('fio', models.CharField(max_length=256, verbose_name='fio')), + ('telephone', models.CharField(blank=True, max_length=16, validators=[django.core.validators.RegexValidator('^(\\+[7,8,9,3]\\d{10,11})?$')], verbose_name='Telephone')), + ('town', models.CharField(blank=True, max_length=127, null=True, verbose_name='Town')), + ('street', models.CharField(blank=True, max_length=127, null=True, verbose_name='Street')), + ('house', models.CharField(blank=True, max_length=12, null=True, verbose_name='House')), + ('description', models.TextField(blank=True, null=True, verbose_name='Comment')), + ('make_data', models.DateTimeField(auto_now_add=True, verbose_name='Create date')), + ('deadline', models.DateField(blank=True, null=True, verbose_name='Deadline connection')), + ('group', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='group_app.Group', verbose_name='User group')), + ], + options={ + 'verbose_name': 'Potential customer', + 'verbose_name_plural': 'Potential customers', + 'db_table': 'new_customers', + 'ordering': ('-id',), + }, + ), + ] diff --git a/new_customers/migrations/__init__.py b/new_customers/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/new_customers/models.py b/new_customers/models.py new file mode 100644 index 0000000..9cdc761 --- /dev/null +++ b/new_customers/models.py @@ -0,0 +1,57 @@ +from django.shortcuts import resolve_url +from django.utils.translation import gettext_lazy as _ +from django.db import models +from django.conf import settings +from django.core.validators import RegexValidator + +from group_app.models import Group + + +class PotentialSubscriber(models.Model): + fio = models.CharField(_('fio'), max_length=256) + telephone = models.CharField( + max_length=16, + verbose_name=_('Telephone'), + blank=True, + validators=(RegexValidator( + getattr(settings, 'TELEPHONE_REGEXP', r'^(\+[7893]\d{10,11})?$') + ),) + ) + group = models.ForeignKey( + Group, + on_delete=models.SET_NULL, + blank=True, null=True, + verbose_name=_('User group') + ) + town = models.CharField( + _('Town'), + help_text=_('Town, if group does not already exist'), + max_length=127, blank=True, null=True + ) + street = models.CharField(_('Street'), max_length=127, blank=True, null=True) + house = models.CharField( + _('House'), + max_length=12, + null=True, + blank=True + ) + description = models.TextField( + _('Comment'), + null=True, + blank=True + ) + make_data = models.DateTimeField(_('Create date'), auto_now_add=True) + deadline = models.DateField( + _('Deadline connection'), + help_text=_('Date when connection must be finished'), + blank=True, null=True + ) + + def get_absolute_url(self): + return resolve_url('new_customers:user', uid=self.pk) + + class Meta: + db_table = 'new_customers' + verbose_name = _('Potential customer') + verbose_name_plural = _('Potential customers') + ordering = '-id', diff --git a/new_customers/templates/new_customers/potentialsubscriber_form.html b/new_customers/templates/new_customers/potentialsubscriber_form.html new file mode 100644 index 0000000..fe14db4 --- /dev/null +++ b/new_customers/templates/new_customers/potentialsubscriber_form.html @@ -0,0 +1,17 @@ +{% load i18n bootstrap3 %} +
diff --git a/new_customers/templates/new_customers/potentialsubscriber_list.html b/new_customers/templates/new_customers/potentialsubscriber_list.html new file mode 100644 index 0000000..4b74f69 --- /dev/null +++ b/new_customers/templates/new_customers/potentialsubscriber_list.html @@ -0,0 +1,51 @@ +{% extends request.is_ajax|yesno:'bajax.html,base.html' %} +{% load i18n %} + + +{% block breadcrumb %} + +{% endblock %} + + +{% block page_header %} +{% trans 'Not have new subscribers' %}
+ + {% endfor %} +