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