Metadata-Version: 1.1
Name: django-rossvyaz
Version: 1.1.2
Summary: РосСвязь: Выписка из реестра Российской системы и плана нумерации - подготовленная таблица с очищенными регионами
Home-page: https://github.com/satels/django-rossvyaz
Author: Ivan Petukhov
Author-email: satels@gmail.com
License: MIT license
Download-URL: https://github.com/satels/django-rossvyaz/zipball/master
Description: 
        django-rossvyaz
        ===============
        
        Приложение содержит:
        
        * Таблица данных привязки номера телефона к региону (только Россия - РФ), взятая из Россвязи (Федеральное агенство связи);
        * Система импорта из разных источников (Сейчас есть только для диапозона DEF);
        * Небольшой QuerySet Manager;
        
        Установка
        ---------
        
        Проделываем в командной строке ::
        
          $ git clone git://github.com/satels/django-rossvyaz.git
          $ cd django-rossvyaz
          $ python setup.py install
        
        Потом следует добавить 'django_rossvyaz' в INSTALLED_APPS и выполнить ::
        
          $ python manage.py syncdb  # Django < 1.7
          $ python manage.py migrate django_rossvyaz  # Django >= 1.7
        
        Настройка
        ---------
        
        Добавить app в settings.py ::
        
          INSTALLED_APPS = [
              ..
              'django_rossvyaz',
              ..
          ]
        
        Необязательные параметры (в settings.py):
        
        * ROSSVYAZ_CODING - дефолтная кодировка файла с таблицей от РосСвязи (по-умолчанию windows-1251).
        * ROSSVYAZ_SOURCE_URLS - ссылки на файлы на сайте-источнике (сейчас по-умолчанию только DEF диапозон)
        * ROSSVYAZ_SEND_MESSAGE_FOR_ERRORS - отправлять ли сообщения об ошибках на почту при обновлении (по-умолчание, True)
        
        Использование
        -------------
        
        Для получения объекта (для определения региона) ::
        
          from __future__ import print_function, unicode_literals
          from django_rossvyaz.logic import clean_phone, CleanPhoneError
          from django_rossvyaz.models import PhoneCode
        
          try:
              phone = clean_phone('89687298907', PhoneCode.PHONE_TYPE_DEF)
          except CleanPhoneError as e:
              raise e
        
          phonecodes = PhoneCode.objects.by_phone(phone)
          if phonecodes.exists():
              for num, phonecode in enumerate(phonecodes.iterators()):
                  print('Найден #{}'.format(num + 1))
                  print(phonecode.first_code)  # 968
                  print(phonecode.from_code, phonecode.to_code)  # Диапозон кодов (В этом примере: '3500000'-'7999999')
                  print(phonecode.block_size)  # Кол-во номеров в диапозоне (4500000)
                  print(phonecode.operator)  # Оператор связи ('ВымпелКом')
                  print(phonecode.region)  # Код региона (или название региона) (77)
                  print(phonecode.phone_type)  # 'def'
        
        Пример использования через Postgres SQL ::
        
                SELECT
                    regioncode.region_name AS region_name
                FROM
                    phones_phone AS phone,
                    django_rossvyaz_phonecode AS phonecode,
                    regions_regioncode AS regioncode
                WHERE
                    regioncode.region_id = phonecode.region AND
                    substring(phone.phone from 3 for 3) = phonecode.first_code AND
                    substring(phone.phone from 6 for 8)::int >= phonecode.from_code::int AND
                    substring(phone.phone from 6 for 8)::int <= phonecode.to_code::int AND
                    phone.id = 5
        
        Обновления базы
        ---------------
        
        Чтобы обновить базу ::
        
          $ python manage.py rossvyaz_update --phone-type=def --clean-region
          
        Рекомендуется обновлять базу с кодами отсюда: https://zniis.ru/bdpn/operators/router-table - скачивается файл XLSX, форматируете в CSV формат (можно использовать этот сервис для форматирования: https://www.kontrolnaya-rabota.ru/convert/xlsx2csv/): **zniis.csv**  ::
        
          $ python manage.py rossvyaz_update --phone-type=def --encoding='utf-8' --filename=/path/to/zniis.csv
        
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Natural Language :: Russian
