{ "info": { "author": "Ivan Petukhov", "author_email": "satels@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Web Environment", "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: Russian", "Programming Language :: Python", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "\ndjango-rossvyaz\n===============\n\n\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442:\n\n* \u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043d\u043e\u043c\u0435\u0440\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 \u043a \u0440\u0435\u0433\u0438\u043e\u043d\u0443 (\u0442\u043e\u043b\u044c\u043a\u043e \u0420\u043e\u0441\u0441\u0438\u044f - \u0420\u0424), \u0432\u0437\u044f\u0442\u0430\u044f \u0438\u0437 \u0420\u043e\u0441\u0441\u0432\u044f\u0437\u0438 (\u0424\u0435\u0434\u0435\u0440\u0430\u043b\u044c\u043d\u043e\u0435 \u0430\u0433\u0435\u043d\u0441\u0442\u0432\u043e \u0441\u0432\u044f\u0437\u0438);\n* \u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u0438\u043c\u043f\u043e\u0440\u0442\u0430 \u0438\u0437 \u0440\u0430\u0437\u043d\u044b\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 (\u0421\u0435\u0439\u0447\u0430\u0441 \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0434\u0438\u0430\u043f\u043e\u0437\u043e\u043d\u0430 DEF);\n* \u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 QuerySet Manager;\n\n\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430\n---------\n\n\u041f\u0440\u043e\u0434\u0435\u043b\u044b\u0432\u0430\u0435\u043c \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 ::\n\n $ git clone git://github.com/satels/django-rossvyaz.git\n $ cd django-rossvyaz\n $ python setup.py install\n\n\u041f\u043e\u0442\u043e\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c 'django_rossvyaz' \u0432 INSTALLED_APPS \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c ::\n\n $ python manage.py syncdb # Django < 1.7\n $ python manage.py migrate django_rossvyaz # Django >= 1.7\n\n\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\n---------\n\n\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c app \u0432 settings.py ::\n\n INSTALLED_APPS = [\n ..\n 'django_rossvyaz',\n ..\n ]\n\n\u041d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b (\u0432 settings.py):\n\n* ROSSVYAZ_CODING - \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u0430\u044f \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430 \u0444\u0430\u0439\u043b\u0430 \u0441 \u0442\u0430\u0431\u043b\u0438\u0446\u0435\u0439 \u043e\u0442 \u0420\u043e\u0441\u0421\u0432\u044f\u0437\u0438 (\u043f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e windows-1251).\n* ROSSVYAZ_SOURCE_URLS - \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0444\u0430\u0439\u043b\u044b \u043d\u0430 \u0441\u0430\u0439\u0442\u0435-\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0435 (\u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0442\u043e\u043b\u044c\u043a\u043e DEF \u0434\u0438\u0430\u043f\u043e\u0437\u043e\u043d)\n* ROSSVYAZ_SEND_MESSAGE_FOR_ERRORS - \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043b\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u043d\u0430 \u043f\u043e\u0447\u0442\u0443 \u043f\u0440\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 (\u043f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u0435, True)\n\n\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\n-------------\n\n\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 (\u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0440\u0435\u0433\u0438\u043e\u043d\u0430) ::\n\n from __future__ import print_function, unicode_literals\n from django_rossvyaz.logic import clean_phone, CleanPhoneError\n from django_rossvyaz.models import PhoneCode\n\n try:\n phone = clean_phone('89687298907', PhoneCode.PHONE_TYPE_DEF)\n except CleanPhoneError as e:\n raise e\n\n phonecodes = PhoneCode.objects.by_phone(phone)\n if phonecodes.exists():\n for num, phonecode in enumerate(phonecodes.iterator()):\n print('\u041d\u0430\u0439\u0434\u0435\u043d #{}'.format(num + 1))\n print(phonecode.first_code) # 968\n print(phonecode.from_code, phonecode.to_code) # \u0414\u0438\u0430\u043f\u043e\u0437\u043e\u043d \u043a\u043e\u0434\u043e\u0432 (\u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435: '3500000'-'7999999')\n print(phonecode.block_size) # \u041a\u043e\u043b-\u0432\u043e \u043d\u043e\u043c\u0435\u0440\u043e\u0432 \u0432 \u0434\u0438\u0430\u043f\u043e\u0437\u043e\u043d\u0435 (4500000)\n print(phonecode.operator) # \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0441\u0432\u044f\u0437\u0438 ('\u0412\u044b\u043c\u043f\u0435\u043b\u041a\u043e\u043c')\n print(phonecode.region) # \u041a\u043e\u0434 \u0440\u0435\u0433\u0438\u043e\u043d\u0430 (\u0438\u043b\u0438 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0433\u0438\u043e\u043d\u0430) (77)\n print(phonecode.phone_type) # 'def'\n\n\u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 Postgres SQL ::\n\n SELECT\n regioncode.region_name AS region_name\n FROM\n phones_phone AS phone,\n django_rossvyaz_phonecode AS phonecode,\n regions_regioncode AS regioncode\n WHERE\n regioncode.region_id = phonecode.region AND\n substring(phone.phone from 3 for 3) = phonecode.first_code AND\n substring(phone.phone from 6 for 8)::int >= phonecode.from_code::int AND\n substring(phone.phone from 6 for 8)::int <= phonecode.to_code::int AND\n phone.id = 5\n\n\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0431\u0430\u0437\u044b\n---------------\n\n\u0427\u0442\u043e\u0431\u044b \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0431\u0430\u0437\u0443 ::\n\n $ python manage.py rossvyaz_update --phone-type=def --clean-region\n \n\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u0431\u0430\u0437\u0443 \u0441 \u043a\u043e\u0434\u0430\u043c\u0438 \u043e\u0442\u0441\u044e\u0434\u0430: https://zniis.ru/bdpn/operators/router-table - \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0444\u0430\u0439\u043b XLSX, \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0443\u0435\u0442\u0435 \u0432 CSV \u0444\u043e\u0440\u043c\u0430\u0442 (\u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0441\u0435\u0440\u0432\u0438\u0441 \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f: https://www.kontrolnaya-rabota.ru/convert/xlsx2csv/): **zniis.csv** ::\n\n $ python manage.py rossvyaz_update --phone-type=def --encoding='utf-8' --filename=/path/to/zniis.csv\n\n\u0413\u043e\u0442\u043e\u0432\u043e\u0435 API\n-----------\n\n* \u041d\u043e \u043d\u043e\u043c\u0435\u0440\u0443: https://calltools.ru/lk/cabapi_external/api/v1/def_codes/by_phone/?phone=9687298907\n* \u0412\u0441\u044f \u0431\u0430\u0437\u0430: https://calltools.ru/lk/cabapi_external/api/v1/def_codes/all/\n", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/satels/django-rossvyaz/zipball/master", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/satels/django-rossvyaz", "keywords": "", "license": "MIT license", "maintainer": "", "maintainer_email": "", "name": "django-rossvyaz", "package_url": "https://pypi.org/project/django-rossvyaz/", "platform": "", "project_url": "https://pypi.org/project/django-rossvyaz/", "project_urls": { "Download": "https://github.com/satels/django-rossvyaz/zipball/master", "Homepage": "https://github.com/satels/django-rossvyaz" }, "release_url": "https://pypi.org/project/django-rossvyaz/1.2.0/", "requires_dist": null, "requires_python": "", "summary": "\u0420\u043e\u0441\u0421\u0432\u044f\u0437\u044c: \u0412\u044b\u043f\u0438\u0441\u043a\u0430 \u0438\u0437 \u0440\u0435\u0435\u0441\u0442\u0440\u0430 \u0420\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u043f\u043b\u0430\u043d\u0430 \u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u0438 - \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u0441 \u043e\u0447\u0438\u0449\u0435\u043d\u043d\u044b\u043c\u0438 \u0440\u0435\u0433\u0438\u043e\u043d\u0430\u043c\u0438", "version": "1.2.0" }, "last_serial": 3360738, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "5d9787f5fc5d8bf4026f76f6eaed90e1", "sha256": "1a3039c20b8320374564800216d42cff09e662de96c051051e7075248016901a" }, "downloads": -1, "filename": "django-rossvyaz-1.0.0.tar.gz", "has_sig": false, "md5_digest": "5d9787f5fc5d8bf4026f76f6eaed90e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7248, "upload_time": "2017-06-18T13:22:22", "url": "https://files.pythonhosted.org/packages/22/ce/f824d888abbb68da9423b494c1ea7b40464ed90aa5167e2007e6b79d069b/django-rossvyaz-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "2fe8c30c4940104961daef20abea38a0", "sha256": "be1db9ad591e8167997cfc3ff0b51d8e49560e5e17c51d43c82de17f2d8bc4aa" }, "downloads": -1, "filename": "django-rossvyaz-1.0.1.tar.gz", "has_sig": false, "md5_digest": "2fe8c30c4940104961daef20abea38a0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7294, "upload_time": "2017-11-13T12:37:48", "url": "https://files.pythonhosted.org/packages/46/df/1e5b75d2b06bc1d1eb5a2bec65732c4db9f757e95c94ffb5a44650a1f651/django-rossvyaz-1.0.1.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "44dd01249394fcd87a9a3f78c61569b1", "sha256": "b9418aeff4d473eac2b3f53d6b53cf010bcbff6b0b36dce3bae17c6a1196cc08" }, "downloads": -1, "filename": "django-rossvyaz-1.1.0.tar.gz", "has_sig": false, "md5_digest": "44dd01249394fcd87a9a3f78c61569b1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7359, "upload_time": "2017-11-15T10:58:57", "url": "https://files.pythonhosted.org/packages/61/78/7745a5f5c15588bb432506ea43774d8857d263b769fe141b1b8d78aafc26/django-rossvyaz-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "92004b267e915d379f46736ca208a1ae", "sha256": "dc1838eeb1c7b4fc4aa2ecd78441c2dced073fc3d0d55d8a9966825f31d8e560" }, "downloads": -1, "filename": "django-rossvyaz-1.1.1.tar.gz", "has_sig": false, "md5_digest": "92004b267e915d379f46736ca208a1ae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7357, "upload_time": "2017-11-15T11:00:04", "url": "https://files.pythonhosted.org/packages/b9/7b/9adb15ba9924f4a5dd64196d141aa946acffb2710700dde7138425685bbb/django-rossvyaz-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "0e3a1681700b75203f0286395aaf371a", "sha256": "cbc78d91e14532d10e69922cb96f5e4ceda904d385f29a82c7e992ac59452569" }, "downloads": -1, "filename": "django-rossvyaz-1.1.2.tar.gz", "has_sig": false, "md5_digest": "0e3a1681700b75203f0286395aaf371a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7655, "upload_time": "2017-11-15T11:14:06", "url": "https://files.pythonhosted.org/packages/75/62/636f4d59110f77f927f3b4da67762d8a7b3da02282fefac975b9843bfaf6/django-rossvyaz-1.1.2.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "b7f24dfbdae286931898ab3e8a1daa45", "sha256": "b25e1ecbe3281ae0e98aebf8a540a50d6c16d82bbb3adc9e3ca6321633d182ce" }, "downloads": -1, "filename": "django-rossvyaz-1.2.0.tar.gz", "has_sig": false, "md5_digest": "b7f24dfbdae286931898ab3e8a1daa45", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9398, "upload_time": "2017-11-24T12:13:26", "url": "https://files.pythonhosted.org/packages/b7/95/19b89e7a0ab26f2479c4471315162668f7ce98fe8e818f5d796a47869a24/django-rossvyaz-1.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b7f24dfbdae286931898ab3e8a1daa45", "sha256": "b25e1ecbe3281ae0e98aebf8a540a50d6c16d82bbb3adc9e3ca6321633d182ce" }, "downloads": -1, "filename": "django-rossvyaz-1.2.0.tar.gz", "has_sig": false, "md5_digest": "b7f24dfbdae286931898ab3e8a1daa45", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9398, "upload_time": "2017-11-24T12:13:26", "url": "https://files.pythonhosted.org/packages/b7/95/19b89e7a0ab26f2479c4471315162668f7ce98fe8e818f5d796a47869a24/django-rossvyaz-1.2.0.tar.gz" } ] }