Skip to main content

Provides basic multi-tenancy features for OpenWISP 2 (using the Django web-framework)

Project description

https://travis-ci.org/openwisp/openwisp-users.svg https://coveralls.io/repos/openwisp/openwisp-users/badge.svg Requirements Status https://badge.fury.io/py/openwisp-users.svg

Provides basic multi-tenancy features for OpenWISP 2 (using the Django web-framework).



Deploy it in production

An automated installer is available at ansible-openwisp2.

Install stable version from pypi

Install from pypi:

pip install openwisp-users

Install development version

Install tarball:

pip install https://github.com/openwisp/openwisp-users/tarball/master

Alternatively you can install via pip using git:

pip install -e git+git://github.com/openwisp/openwisp-users#egg=openwisp_users

If you want to contribute, install your cloned fork:

git clone git@github.com:<your_fork>/openwisp-users.git
cd openwisp-users
python setup.py develop

Setup (integrate in an existing django project)

INSTALLED_APPS in settings.py should look like the following:

INSTALLED_APPS = [
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.admin',
    'django.contrib.sites',
    'django_extensions',
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'openwisp_users',
]

also add AUTH_USER_MODEL and SITE_ID to your settings.py:

AUTH_USER_MODEL = 'openwisp_users.User'
SITE_ID = 1

urls.py:

from django.conf.urls import include, url
from django.contrib import admin
from django.contrib.staticfiles.urls import staticfiles_urlpatterns

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^accounts/', include('allauth.urls')),
]

urlpatterns += staticfiles_urlpatterns()

For additional steps to properly configure allauth in your project, please refer to their documentation: allauth documentation installation section.

Installing for development

Install sqlite:

sudo apt-get install sqlite3 libsqlite3-dev openssl libssl-dev

Install your forked repo:

git clone git://github.com/<your_fork>/openwisp-users
cd openwisp-users/
python setup.py develop

Install test requirements:

pip install -r requirements-test.txt

Create database:

cd tests/
./manage.py migrate
./manage.py createsuperuser

Set EMAIL_PORT in settings.py to a port number (eg: 1025):

EMAIL_PORT = '1025'

Launch development server and SMTP debugging server:

./manage.py runserver
# open another terminal and run
python -m smtpd -n -c DebuggingServer localhost:1025

You can access the admin interface at http://127.0.0.1:8000/admin/.

Run tests with:

./runtests.py

Settings

OPENWISP_ORGANIZATON_USER_ADMIN

type:

boolean

default:

False

Indicates whether the admin section for managing OrganizationUser items is enabled or not.

It is disabled by default because these items can be managed via inline items in the user administration section.

OPENWISP_ORGANIZATON_OWNER_ADMIN

type:

boolean

default:

False

Indicates whether the admin section for managing OrganizationOwner items is enabled or not.

It is disabled by default because OpenWISP does not use this feature of django-organizations yet.

Multitenancy mixins

  • MultitenantAdminMixin: adding this mixin to a ModelAdmin class will make it multitenant. Set multitenant_shared_relations to the list of parameters you wish to have only organization specific options.

  • MultitenantOrgFilter: admin filter that shows only organizations the current user is associated with in its available choices.

  • MultitenantRelatedOrgFilter: similar MultitenantOrgFilter but shows only objects which have a relation with one of the organizations the current user is associated with.

Contributing

  1. Announce your intentions in the OpenWISP Mailing List

  2. Fork this repo and install it

  3. Follow PEP8, Style Guide for Python Code

  4. Write code

  5. Write tests for your code

  6. Ensure all tests pass

  7. Ensure test coverage does not decrease

  8. Document your changes

  9. Send pull request

Changelog

See CHANGES.

License

See LICENSE.

Support

See OpenWISP Support Channels.

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

openwisp-users-0.1.12.tar.gz (26.0 kB view details)

Uploaded Source

Built Distribution

openwisp_users-0.1.12-py2.py3-none-any.whl (29.8 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file openwisp-users-0.1.12.tar.gz.

File metadata

  • Download URL: openwisp-users-0.1.12.tar.gz
  • Upload date:
  • Size: 26.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.0.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.7.5

File hashes

Hashes for openwisp-users-0.1.12.tar.gz
Algorithm Hash digest
SHA256 39ec59c789b72a377b7880ac39c27c795ae7d121e1dae182444fa61219453e68
MD5 46c4b6c61654acb74ec594598886342c
BLAKE2b-256 abbdb3cb684fc7f584077440322224023cadc3ee3c4511b1d13d94e46f057da8

See more details on using hashes here.

Provenance

File details

Details for the file openwisp_users-0.1.12-py2.py3-none-any.whl.

File metadata

  • Download URL: openwisp_users-0.1.12-py2.py3-none-any.whl
  • Upload date:
  • Size: 29.8 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.0.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.7.5

File hashes

Hashes for openwisp_users-0.1.12-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 96979b2a80acc40d2aa56bd2db321c049cae8109a33114799fe3b0cfc58fb378
MD5 c0c1283b6c4bf0f261fc89294f7f6f6f
BLAKE2b-256 0a57f9ef42b40fe5fefbbd4add618c2406745930b33f8476aff6ebe1ac777466

See more details on using hashes here.

Provenance

Supported by

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