{ "info": { "author": "Federico Capoano", "author_email": "nemesis@ninux.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Web Environment", "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Operating System :: OS Independent", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4", "Topic :: Internet :: WWW/HTTP", "Topic :: System :: Networking" ], "description": "openwisp-controller\n===================\n\n.. image:: https://travis-ci.org/openwisp/openwisp-controller.svg\n :target: https://travis-ci.org/openwisp/openwisp-controller\n\n.. image:: https://coveralls.io/repos/openwisp/openwisp-controller/badge.svg\n :target: https://coveralls.io/r/openwisp/openwisp-controller\n\n.. image:: https://requires.io/github/openwisp/openwisp-controller/requirements.svg?branch=master\n :target: https://requires.io/github/openwisp/openwisp-controller/requirements/?branch=master\n :alt: Requirements Status\n\n.. image:: https://badge.fury.io/py/openwisp-controller.svg\n :target: http://badge.fury.io/py/openwisp-controller\n\n------------\n\nOpenWISP 2 controller module (built using Python and the Django web-framework).\n\n------------\n\n.. contents:: **Table of Contents**:\n :backlinks: none\n :depth: 3\n\n------------\n\nDeploy it in production\n-----------------------\n\nAn automated installer is available at `ansible-openwisp2 `_.\n\nDependencies\n------------\n\n* Python 2.7 or Python >= 3.4\n* OpenSSL\n\nInstall stable version from pypi\n--------------------------------\n\nInstall from pypi:\n\n.. code-block:: shell\n\n pip install openwisp-controller\n\nInstall development version\n---------------------------\n\nInstall tarball:\n\n.. code-block:: shell\n\n pip install https://github.com/openwisp/openwisp-controller/tarball/master\n\nAlternatively you can install via pip using git:\n\n.. code-block:: shell\n\n pip install -e git+git://github.com/openwisp/openwisp-controller#egg=openwisp_controller\n\nIf you want to contribute, install your cloned fork:\n\n.. code-block:: shell\n\n git clone git@github.com:/openwisp-controller.git\n cd openwisp_controller\n python setup.py develop\n\nSetup (integrate in an existing django project)\n-----------------------------------------------\n\n``INSTALLED_APPS`` and ``EXTENDED_APPS`` (an internal openwisp2 setting) in ``settings.py``\nshould look like the following (ordering is important):\n\n.. code-block:: python\n\n INSTALLED_APPS = [\n 'django.contrib.auth',\n 'django.contrib.contenttypes',\n 'django.contrib.sessions',\n 'django.contrib.messages',\n 'django.contrib.staticfiles',\n 'django.contrib.gis',\n # all-auth\n 'django.contrib.sites',\n 'allauth',\n 'allauth.account',\n 'allauth.socialaccount',\n 'django_extensions',\n # openwisp2 modules\n 'openwisp_users',\n 'openwisp_controller.pki',\n 'openwisp_controller.config',\n 'openwisp_controller.geo',\n # admin\n 'openwisp_utils.admin_theme',\n 'django.contrib.admin',\n # other dependencies\n 'sortedm2m',\n 'reversion',\n 'leaflet',\n # rest framework\n 'rest_framework',\n 'rest_framework_gis',\n # channels\n 'channels',\n ]\n\n EXTENDED_APPS = ('django_netjsonconfig', 'django_x509', 'django_loci',)\n\nEnsure you are using one of the available geodjango backends, eg:\n\n.. code-block:: python\n\n DATABASES = {\n 'default': {\n 'ENGINE': 'django.contrib.gis.db.backends.spatialite',\n 'NAME': 'openwisp-controller.db',\n }\n }\n\nAdd ``openwisp_utils.staticfiles.DependencyFinder`` to ``STATICFILES_FINDERS`` in your ``settings.py``:\n\n.. code-block:: python\n\n STATICFILES_FINDERS = [\n 'django.contrib.staticfiles.finders.FileSystemFinder',\n 'django.contrib.staticfiles.finders.AppDirectoriesFinder',\n 'openwisp_utils.staticfiles.DependencyFinder',\n ]\n\nAdd ``openwisp_utils.loaders.DependencyLoader`` to ``TEMPLATES`` in your ``settings.py``\n\n.. code-block:: python\n\n TEMPLATES = [\n {\n 'BACKEND': 'django.template.backends.django.DjangoTemplates',\n 'OPTIONS': {\n 'loaders': [\n 'django.template.loaders.filesystem.Loader',\n 'django.template.loaders.app_directories.Loader',\n 'openwisp_utils.loaders.DependencyLoader',\n ],\n 'context_processors': [\n 'django.template.context_processors.debug',\n 'django.template.context_processors.request',\n 'django.contrib.auth.context_processors.auth',\n 'django.contrib.messages.context_processors.messages',\n ],\n },\n }\n ]\n\nAdd the following settings to ``settings.py``:\n\n.. code-block:: python\n\n FORM_RENDERER = 'django.forms.renderers.TemplatesSetting'\n\n CHANNEL_LAYERS = {\n 'default': {\n 'BACKEND': 'asgiref.inmemory.ChannelLayer',\n 'ROUTING': 'openwisp_controller.geo.channels.routing.channel_routing',\n },\n }\n\n LOGIN_REDIRECT_URL = 'admin:index'\n ACCOUNT_LOGOUT_REDIRECT_URL = LOGIN_REDIRECT_URL\n\n``urls.py``:\n\n.. code-block:: python\n\n from django.conf import settings\n from django.conf.urls import include, url\n from django.contrib.staticfiles.urls import staticfiles_urlpatterns\n\n from openwisp_utils.admin_theme.admin import admin, openwisp_admin\n\n openwisp_admin()\n\n urlpatterns = [\n url(r'^admin/', include(admin.site.urls)),\n url(r'', include('openwisp_controller.urls')),\n ]\n\n urlpatterns += staticfiles_urlpatterns()\n\nInstalling for development\n--------------------------\n\nInstall sqlite:\n\n.. code-block:: shell\n\n sudo apt-get install sqlite3 libsqlite3-dev openssl libssl-dev\n sudo apt-get install gdal-bin libproj-dev libgeos-dev libspatialite-dev\n\nInstall your forked repo:\n\n.. code-block:: shell\n\n git clone git://github.com//openwisp-controller\n cd openwisp-controller/\n python setup.py develop\n\nInstall test requirements:\n\n.. code-block:: shell\n\n pip install -r requirements-test.txt\n\nCreate database:\n\n.. code-block:: shell\n\n cd tests/\n ./manage.py migrate\n ./manage.py createsuperuser\n\nLaunch development server:\n\n.. code-block:: shell\n\n ./manage.py runserver 0.0.0.0:8000\n\nYou can access the admin interface at http://127.0.0.1:8000/admin/.\n\nRun tests with:\n\n.. code-block:: shell\n\n ./runtests.py\n\nInstall and run on docker\n--------------------------\n\nBuild from the Dockerfile:\n\n.. code-block:: shell\n\n \u00a0 sudo docker build -t openwisp/controller .\n\nRun the docker container:\n\n.. code-block:: shell\n\n \u00a0 sudo docker run -it -p 8000:8000 openwisp/controller\n\nTalks\n-----\n\n- `OpenWISP2 - a self hosted solution to control OpenWRT/LEDE devices\n `_ (FOSDEM 2017)\n\nContributing\n------------\n\n1. Announce your intentions in the `OpenWISP Mailing List `_\n2. Fork this repo and install it\n3. Follow `PEP8, Style Guide for Python Code`_\n4. Write code\n5. Write tests for your code\n6. Ensure all tests pass\n7. Ensure test coverage does not decrease\n8. Document your changes\n9. Send pull request\n\n.. _PEP8, Style Guide for Python Code: http://www.python.org/dev/peps/pep-0008/\n\nChangelog\n---------\n\nSee `CHANGES `_.\n\nLicense\n-------\n\nSee `LICENSE `_.\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/openwisp/openwisp-controller/releases", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://openwisp.org", "keywords": "django,netjson,openwrt,networking,openwisp", "license": "GPL3", "maintainer": "", "maintainer_email": "", "name": "openwisp-controller", "package_url": "https://pypi.org/project/openwisp-controller/", "platform": "Platform Indipendent", "project_url": "https://pypi.org/project/openwisp-controller/", "project_urls": { "Download": "https://github.com/openwisp/openwisp-controller/releases", "Homepage": "http://openwisp.org" }, "release_url": "https://pypi.org/project/openwisp-controller/0.3.2/", "requires_dist": [ "django-netjsonconfig (<0.9.0,>=0.8.0)", "openwisp-utils[users] (<0.3)", "django-loci (<0.3.0,>=0.1.1)", "djangorestframework-gis (<0.13.0,>=0.12.0)" ], "requires_python": "", "summary": "OpenWISP 2 Controller", "version": "0.3.2" }, "last_serial": 3596042, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "2541fb75f988fcde4618f8527d250210", "sha256": "4e0e4dd1f027cf3b8a064916f4586a9cdbf56ee48d974a1c51d628b336fa9351" }, "downloads": -1, "filename": "openwisp_controller-0.1.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "2541fb75f988fcde4618f8527d250210", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 36210, "upload_time": "2017-03-08T13:06:01", "url": "https://files.pythonhosted.org/packages/20/69/4dccea2bf59b4628a161e9fcbaeadf514459962ae72e073256e78f0b30a4/openwisp_controller-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9e6bd71b21239e89daf28f9904e4af3f", "sha256": "a1fde63c972f51a8e6294fa4d61e0476ac4154b2e9f41dcbcf93bc854b83f637" }, "downloads": -1, "filename": "openwisp-controller-0.1.0.tar.gz", "has_sig": true, "md5_digest": "9e6bd71b21239e89daf28f9904e4af3f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34561, "upload_time": "2017-03-08T13:05:59", "url": "https://files.pythonhosted.org/packages/d3/ab/c21178df62b7ac704677dd34632788dfa3fc0cab1af8dbc57e66a5ff2e9f/openwisp-controller-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "a8df89b7012c9734461d366f6f9409d4", "sha256": "b8d3cfaa6e88250e2a04aaf5d50c8caf03b762bc6af89a9684cdae45b604dda3" }, "downloads": -1, "filename": "openwisp_controller-0.1.1-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "a8df89b7012c9734461d366f6f9409d4", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 37238, "upload_time": "2017-03-10T11:38:17", "url": "https://files.pythonhosted.org/packages/89/3a/ef1e6cda34008d859b0e3a2beabc29986b258b9c16bc3b08dce6ad0bc6a0/openwisp_controller-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dcd9719bdef99aafe8c79ea14822d365", "sha256": "26332baf75477d29a90efb3323297d560f850a745a69d1ab8bb43e2da784aa48" }, "downloads": -1, "filename": "openwisp-controller-0.1.1.tar.gz", "has_sig": true, "md5_digest": "dcd9719bdef99aafe8c79ea14822d365", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34825, "upload_time": "2017-03-10T11:38:14", "url": "https://files.pythonhosted.org/packages/ec/e7/be4542ef7a1ee44fb1227105a39adde5a0bb5f2856d5ee847fa64188215d/openwisp-controller-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "10891586fda8fabaf4fecbc8edbb8d08", "sha256": "0f44bb62fea039fd0df4debaa3f8955dfda80df9622dfa14c788fa5194e81e0d" }, "downloads": -1, "filename": "openwisp_controller-0.1.2-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "10891586fda8fabaf4fecbc8edbb8d08", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 37943, "upload_time": "2017-03-15T18:07:22", "url": "https://files.pythonhosted.org/packages/f4/c2/17f9a4f7f5c3d198a80f1671599ecbdcfdd346915604f3c0d284ee79e47c/openwisp_controller-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a031c503baf11630a1178de37c576f2f", "sha256": "470be86fe7ae77e6ebbed25e9c52a1f3ab569af75434617a3b1eb1d723a4ddc5" }, "downloads": -1, "filename": "openwisp-controller-0.1.2.tar.gz", "has_sig": true, "md5_digest": "a031c503baf11630a1178de37c576f2f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35222, "upload_time": "2017-03-15T18:07:20", "url": "https://files.pythonhosted.org/packages/04/ea/b5bef99cd49c538b338a6a96b75a74ee8b71e5a43fc80a3d7b73cf7fadeb/openwisp-controller-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "2805badfbaeefdc8850e91a47f73a67c", "sha256": "2c9da2c6fe21538174c6f0750db74b25faab28cc890f2352966cb2e7ab429e7f" }, "downloads": -1, "filename": "openwisp_controller-0.1.3-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "2805badfbaeefdc8850e91a47f73a67c", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 37955, "upload_time": "2017-04-11T14:29:07", "url": "https://files.pythonhosted.org/packages/31/dc/1151c8c67bfedac275cf03c8d1d4f2b16628382279b47c53fb4bd4b4de3d/openwisp_controller-0.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "584fc694a70176c3b1faf8d0f99816bd", "sha256": "5ab397402516a8f58b16830d6a1c66d5da7a360312744f215312533cc431f725" }, "downloads": -1, "filename": "openwisp-controller-0.1.3.tar.gz", "has_sig": true, "md5_digest": "584fc694a70176c3b1faf8d0f99816bd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35301, "upload_time": "2017-04-11T14:29:05", "url": "https://files.pythonhosted.org/packages/89/54/ab2a04af18998366b5294790a13d31adb5d3c11aa18aadfa6db64f3f8e92/openwisp-controller-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "47985844974e137661adb9d87a5d84d7", "sha256": "f445a1e36522f841b44ce4e54575463ccc72b8ed40aaefbc1f5275fe19838652" }, "downloads": -1, "filename": "openwisp_controller-0.1.4-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "47985844974e137661adb9d87a5d84d7", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 38094, "upload_time": "2017-04-21T16:21:55", "url": "https://files.pythonhosted.org/packages/19/d9/0e4ae59ff9ded8e58ddf087e0002688666d66b14a4bead4e9ccd89e27d50/openwisp_controller-0.1.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "266db7cba55a1c833a3d61ad9460eb7a", "sha256": "d89e1f8c73c2b7d53c94e9dff83e80431c8c3c6fa1291d1d76f995a126660581" }, "downloads": -1, "filename": "openwisp-controller-0.1.4.tar.gz", "has_sig": true, "md5_digest": "266db7cba55a1c833a3d61ad9460eb7a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35427, "upload_time": "2017-04-21T16:21:52", "url": "https://files.pythonhosted.org/packages/d4/13/d1728b61ddb649381e3b9988e26a8f9c7aedf0c057d0a3a5215c9b361b22/openwisp-controller-0.1.4.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "c440cfca8a1037eb875e5b579d4395c6", "sha256": "61fdc5e340ee0387b76a68b73e500af8ccadf0b3750181ee00452cf341b2bad9" }, "downloads": -1, "filename": "openwisp_controller-0.2.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "c440cfca8a1037eb875e5b579d4395c6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 44680, "upload_time": "2017-05-24T20:39:34", "url": "https://files.pythonhosted.org/packages/53/76/66025a65973d0e76a48280ee621076982a6841da1ac32341e0e75dd661ff/openwisp_controller-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f07efda079f9344bbd2b48359dfd95ff", "sha256": "c2d7cd0aba0aa71c5fac7f7707d290804aedbf4a1de327bbf496e4f12e5d54a0" }, "downloads": -1, "filename": "openwisp-controller-0.2.0.tar.gz", "has_sig": true, "md5_digest": "f07efda079f9344bbd2b48359dfd95ff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38262, "upload_time": "2017-05-24T20:39:36", "url": "https://files.pythonhosted.org/packages/3e/cc/138cc356a6a5ed62082ecd5b97262248e05c0831cf00cdf63881facb05dd/openwisp-controller-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "97a833e1d74b7ad0a10c98ec672e0704", "sha256": "57fb9633a4e1081a08c59b0787a6615a17656d2e4eaadc2b9b6ee9f3c761bc80" }, "downloads": -1, "filename": "openwisp_controller-0.2.1-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "97a833e1d74b7ad0a10c98ec672e0704", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 43604, "upload_time": "2017-07-05T11:44:35", "url": "https://files.pythonhosted.org/packages/1b/ac/63728cc063d296470e5dfe1d8649315059709853b4f16feed2e083fccbae/openwisp_controller-0.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e914bb5208b4953102683372a5776044", "sha256": "68f41158f447ed732e884bc1b68d4fb4e5c68ee64837ddca791e28b737efe70f" }, "downloads": -1, "filename": "openwisp-controller-0.2.1.tar.gz", "has_sig": true, "md5_digest": "e914bb5208b4953102683372a5776044", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38001, "upload_time": "2017-07-05T11:44:32", "url": "https://files.pythonhosted.org/packages/52/34/2d41618a6d43a3369477f1fd39a9750adb35874e8e8e948497d17648ad1d/openwisp-controller-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "2c1a5cddde7f81be31378ef56e990f23", "sha256": "318c6cbec5e4360f5560d0c40f6e7c54548acb7a30342cfe01fa76d6dafd08ec" }, "downloads": -1, "filename": "openwisp_controller-0.2.2-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "2c1a5cddde7f81be31378ef56e990f23", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 43297, "upload_time": "2017-07-10T16:10:04", "url": "https://files.pythonhosted.org/packages/ce/b8/4023a6e255b4a4e0a7b50e3879d8dcc37feb48878c4bb276d1d759c68613/openwisp_controller-0.2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9edbe07d5072db7758a8cd59c152888b", "sha256": "948d4774e55f2c8156f6505f76f47dac2f653a33b165cd7518199be46f157e78" }, "downloads": -1, "filename": "openwisp-controller-0.2.2.tar.gz", "has_sig": true, "md5_digest": "9edbe07d5072db7758a8cd59c152888b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37987, "upload_time": "2017-07-10T16:10:02", "url": "https://files.pythonhosted.org/packages/66/4b/c1bef5c502ae227ace1c767a8d867751aeace1d2cc727ca2933d6afd39b3/openwisp-controller-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "08eb1e8cae56ac35ccdc22f0eb781c42", "sha256": "0e8b2445acfec510e7b0dc4b383020f67ed4f0330698c7e0d98ce8f924d0143d" }, "downloads": -1, "filename": "openwisp_controller-0.2.3-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "08eb1e8cae56ac35ccdc22f0eb781c42", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 41916, "upload_time": "2017-08-29T12:51:59", "url": "https://files.pythonhosted.org/packages/93/07/d0a6e5c5ddf59484b397b22b953e9808465f981f05b9568c270e33f66eea/openwisp_controller-0.2.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "67b2e345d0d4e17c6b45ffa1d82b09a2", "sha256": "445d37ae4cd752bc0b38dc6cd0be55b5c2e694d8dccdc84fa9411a482bee3fb5" }, "downloads": -1, "filename": "openwisp-controller-0.2.3.tar.gz", "has_sig": true, "md5_digest": "67b2e345d0d4e17c6b45ffa1d82b09a2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37558, "upload_time": "2017-08-29T12:51:57", "url": "https://files.pythonhosted.org/packages/58/6b/189987c97762c6064a037c3b4eb996259329e24e51f4905fd16a4a7764e2/openwisp-controller-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "f387ddf16223e2606d6e9573fbb55f70", "sha256": "061c6f7d0a65b0455fabb591b47898e4849f5d6540c2f00e33f5c90d9c217e3f" }, "downloads": -1, "filename": "openwisp_controller-0.2.4-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "f387ddf16223e2606d6e9573fbb55f70", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 43235, "upload_time": "2017-11-07T15:58:56", "url": "https://files.pythonhosted.org/packages/40/91/16782146d861f65be0b5c9d94b79926578d80b88e036c64ddf4380c5d392/openwisp_controller-0.2.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8c5147a1a21fddc1c0e5199635c40389", "sha256": "154b541888a79c77fab183fd3faceed6548a2029476250abac9e545db57f8ae0" }, "downloads": -1, "filename": "openwisp-controller-0.2.4.tar.gz", "has_sig": true, "md5_digest": "8c5147a1a21fddc1c0e5199635c40389", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38131, "upload_time": "2017-11-07T15:58:53", "url": "https://files.pythonhosted.org/packages/a6/92/48af99cab84556b0d284125614d9e3796ad954cd9738a8ae6a2137417979/openwisp-controller-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "5858c1c0edbac0bb72290dd3da4ab75c", "sha256": "b45d105175784aa2d5c5604a80d88894352acff70edab42ef2e2581974fd0a3e" }, "downloads": -1, "filename": "openwisp_controller-0.2.5-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "5858c1c0edbac0bb72290dd3da4ab75c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 44000, "upload_time": "2017-12-02T20:56:19", "url": "https://files.pythonhosted.org/packages/cd/60/3197757f75b4ff80ec96ddad001a68f4484088527d7cbd13f684de016ba7/openwisp_controller-0.2.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2907179abdf5012cf8d877d07395a1e2", "sha256": "2e87c0bab70b6c4326a6a99305153879e39db3547d66fc45c2d2ac97ddfeafea" }, "downloads": -1, "filename": "openwisp-controller-0.2.5.tar.gz", "has_sig": true, "md5_digest": "2907179abdf5012cf8d877d07395a1e2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38659, "upload_time": "2017-12-02T20:56:15", "url": "https://files.pythonhosted.org/packages/a6/4b/adb7409e9b48fdd29494491989626934224948deace8d71663912089379a/openwisp-controller-0.2.5.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "eb23c85dcaf2471bb9ea15b61f2538a7", "sha256": "23344c4a387d19e913491197f66c8d69847035abe61bb7d288427a66ecb8e3ae" }, "downloads": -1, "filename": "openwisp_controller-0.3-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "eb23c85dcaf2471bb9ea15b61f2538a7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 55918, "upload_time": "2017-12-17T17:14:02", "url": "https://files.pythonhosted.org/packages/56/be/2e53958f13b818409e01ed057cfd2d0443003b79246b7a3382769b72b86a/openwisp_controller-0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "eb14ba38bc3bedcab77d6ba6d9fab7d5", "sha256": "22ca8fda87fed894fcde60f3398e7299e11411b21b783d992d1732ec958fe23d" }, "downloads": -1, "filename": "openwisp-controller-0.3.tar.gz", "has_sig": true, "md5_digest": "eb14ba38bc3bedcab77d6ba6d9fab7d5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44863, "upload_time": "2017-12-17T17:14:00", "url": "https://files.pythonhosted.org/packages/21/2a/4f669191334c520394f61360eb058e8ec66bfc610f1bcbaa000373c55721/openwisp-controller-0.3.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "c7d7bfe7db09f27f9a705159987e7ec6", "sha256": "b9bdfab64a998ccb4c1ed778d9d91d9718e1b53723f059ba5b9649bee1505209" }, "downloads": -1, "filename": "openwisp_controller-0.3.1-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "c7d7bfe7db09f27f9a705159987e7ec6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 56049, "upload_time": "2017-12-20T16:59:56", "url": "https://files.pythonhosted.org/packages/9e/92/ce2408c0228fd75dac392d4396bc6d91a7d85bb35f8e8eb99fe88750accf/openwisp_controller-0.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9531cda08707d579d3ccd5659e390b5f", "sha256": "52b75710e1ccbf5287b01e71f4376e6bd4032922ce03d45d7fc6fbaf5df10e13" }, "downloads": -1, "filename": "openwisp-controller-0.3.1.tar.gz", "has_sig": true, "md5_digest": "9531cda08707d579d3ccd5659e390b5f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45048, "upload_time": "2017-12-20T16:59:53", "url": "https://files.pythonhosted.org/packages/07/9d/53b9f158080b701dfcf17828baeaa12798279dbae69c159a07b15677f162/openwisp-controller-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "4afeba31b5964db01dd7a420ffe2d685", "sha256": "3ead4b88fdb8fb87824deb791a3db811c28da214f09a28ba67e557767413b79a" }, "downloads": -1, "filename": "openwisp_controller-0.3.2-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "4afeba31b5964db01dd7a420ffe2d685", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 58552, "upload_time": "2018-02-19T14:34:03", "url": "https://files.pythonhosted.org/packages/b7/ff/daf25381199e9c8b05ccdcc2c8db218c68f621e9e00d884e99cc4a3d669a/openwisp_controller-0.3.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "264b0346e1db7575b71d7339608d37b7", "sha256": "715fb3be9f77c722380286175af2b1900d045c84382c042998f593c352c3bf91" }, "downloads": -1, "filename": "openwisp-controller-0.3.2.tar.gz", "has_sig": true, "md5_digest": "264b0346e1db7575b71d7339608d37b7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45696, "upload_time": "2018-02-19T14:34:18", "url": "https://files.pythonhosted.org/packages/69/a8/212f6d2450196f428fc8b43dd7622972886253ae07d877860b450dcaa1bd/openwisp-controller-0.3.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4afeba31b5964db01dd7a420ffe2d685", "sha256": "3ead4b88fdb8fb87824deb791a3db811c28da214f09a28ba67e557767413b79a" }, "downloads": -1, "filename": "openwisp_controller-0.3.2-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "4afeba31b5964db01dd7a420ffe2d685", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 58552, "upload_time": "2018-02-19T14:34:03", "url": "https://files.pythonhosted.org/packages/b7/ff/daf25381199e9c8b05ccdcc2c8db218c68f621e9e00d884e99cc4a3d669a/openwisp_controller-0.3.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "264b0346e1db7575b71d7339608d37b7", "sha256": "715fb3be9f77c722380286175af2b1900d045c84382c042998f593c352c3bf91" }, "downloads": -1, "filename": "openwisp-controller-0.3.2.tar.gz", "has_sig": true, "md5_digest": "264b0346e1db7575b71d7339608d37b7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 45696, "upload_time": "2018-02-19T14:34:18", "url": "https://files.pythonhosted.org/packages/69/a8/212f6d2450196f428fc8b43dd7622972886253ae07d877860b450dcaa1bd/openwisp-controller-0.3.2.tar.gz" } ] }