РосСвязь: Выписка из реестра Российской системы и плана нумерации - подготовленная таблица с очищенными регионами
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
File details
Details for the file django-rossvyaz-1.2.0.tar.gz.
File metadata
- Download URL: django-rossvyaz-1.2.0.tar.gz
- Upload date:
- Size: 9.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b25e1ecbe3281ae0e98aebf8a540a50d6c16d82bbb3adc9e3ca6321633d182ce
|
|
| MD5 |
b7f24dfbdae286931898ab3e8a1daa45
|
|
| BLAKE2b-256 |
b79519b89e7a0ab26f2479c4471315162668f7ce98fe8e818f5d796a47869a24
|