Skip to main content

РосСвязь: Выписка из реестра Российской системы и плана нумерации - подготовленная таблица с очищенными регионами

Project description

Приложение содержит:

  • Таблица данных привязки номера телефона к региону (только Россия - РФ), взятая из Россвязи (Федеральное агенство связи);

  • Система импорта из разных источников (Сейчас есть только для диапозона 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.iterator()):
        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

Готовое API

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-rossvyaz-1.2.0.tar.gz (9.4 kB view details)

Uploaded Source

File details

Details for the file django-rossvyaz-1.2.0.tar.gz.

File metadata

File hashes

Hashes for django-rossvyaz-1.2.0.tar.gz
Algorithm Hash digest
SHA256 b25e1ecbe3281ae0e98aebf8a540a50d6c16d82bbb3adc9e3ca6321633d182ce
MD5 b7f24dfbdae286931898ab3e8a1daa45
BLAKE2b-256 b79519b89e7a0ab26f2479c4471315162668f7ce98fe8e818f5d796a47869a24

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page