Skip to main content
Info:

Groups and multi-user account management

Version:
0.4.0
Author:

Ben Lopatin (http://benlopatin.com)

Build Status Current PyPI release Download count

Add user-managed, multi-user groups to your Django project. Use django-organizations whether your site needs organizations that function like social groups or multi-user account objects to provide account and subscription functionality beyond the individual user.

  • Relies on django.contrib.auth and does not add or require additional user or authentication functionality

  • Users can be belong to and own more than one organization (account, group)

  • Invitation and registration functionality is designed to be flexible to allow you to integrate existing invitation and registration apps

Documentation is on Read the Docs

Installing

First add the application to your Python path. The easiest way is to use pip:

pip install django-organizations

You should install by downloading the source and running:

$ python setup.py install

Configuring

Make sure you have django.contrib.auth installed, and add the organizations application to your INSTALLED_APPS list:

INSTALLED_APPS = (
    ...
    'django.contrib.auth',
    'organizations',
)

Then ensure that your project URL conf is updated. You should hook in the main application URL conf as well as your chosen invitation backend URLs:

from organizations.backends import invitation_backend

urlpatterns = patterns('',
    ...
    url(r'^accounts/', include('organizations.urls')),
    url(r'^invitations/', include(invitation_backend().get_urls())),
)

You can specify a different invitation backend in your project settings, and the invitation_backend function will provide the URLs defined by that backend:

ORGS_INVITATION_BACKEND = 'myapp.backends.MyInvitationBackend'

There is also a lightly tested way to use your own user model, rather than the default auth.User model. Set the AUTH_USER_MODEL setting to the dotted model name of your custom user model, following the procedure in Django 1.5:

AUTH_USER_MODEL = 'myuserapp.MyUser'

Usage Overview

For most use cases it should be sufficient to include the app views directly using the default URL conf file. You can customize their functionality or access controls by extending the base views.

There are three models:

  • Organization The group object. This is what you would associate your own app’s functionality with, e.g. subscriptions, repositories, projects, etc.

  • OrganizationUser A custom through model for the ManyToMany relationship between the Organization model and the User model. It stores additional information about the user specific to the organization and provides a convenient link for organization ownership.

  • OrganizationOwner The user with rights over the life and death of the organization. This is a one to one relationship with the OrganizationUser model. This allows User objects to own multiple organizations and makes it easy to enforce ownership from within the organization’s membership.

The underlying organizations API is simple:

>>> chris = User.objects.get(username="chris")
>>> soundgarden = create_organization(chris, "Soundgarden")
>>> soundgarden.is_member(chris)
True
>>> soundgarden.is_admin(chris)
True
>>> soundgarden.owner.organization_user
<OrganizationUser: Chris Cornell>
>>> soundgarden.owner.organization_user.user
>>> <User: chris>
>>> audioslave = create_organization(chris, "Audioslave")
>>> tom = User.objects.get(username="tom")
>>> audioslave.add_user(tom, is_admin=True)
<OrganizationUser: Tom Morello>

Custom models

Django-organizations can act as a base library (not installed in your project) and used to create unique organization model sets using custom tables. See the Cooking with Django Organizations section in the documentation for advice on proceeding.

Development & Contributing

Development is on-going. To-do items have been moved to the wiki for the time being.

The basic functionality should not need much extending. Current dev priorities for me and contributors should include:

  • Improving the tests and test coverage (ideally moving them back out of the main module and executable using the setup.py file)

  • Improving the backends and backends concept so that additional invitation and registration backends can be used

  • Documentation

  • Ensuring all application text is translatable

  • Python 3 readiness

Please use the project’s issues tracker to report bugs, doc updates, or other requests/suggestions.

Targets & testing

The codebase is targeted at tested against:

  • Django 1.4.x against Python 2.6 and Python 2.7

  • Django 1.5.x against Python 2.6, Python 2.7, and Python 3.3

  • Django 1.6.x against Python 2.7 and Python 3.3

To run the tests against all target environments, install tox and then execute the command:

tox

Submitting

These submission guidelines will make it more likely your submissions will be reviewed and make it into the project:

  • Ensure they match the project goals and are sufficiently generalized

  • Please try to follow Django coding style. The code base style isn’t all up to par, but I’d like it to move in that direction

  • Also please try to include good commit log messages.

  • Pull requests should include an amount of code and commits that are reasonable to review, are logically grouped, and based off clean feature branches.

Code contributions are expected to pass in all target environments, and pull requests should be made from branches with passing builds on Travis CI.

Project goals

django-organizations should be backend agnostic:

  1. Authentication agnostic

  2. Registration agnostic

  3. Invitation agnostic

  4. User messaging agnostic

Etc.

License

Anyone is free to use or modify this software under ther terms of the BSD license.

History

0.3.0

  • Initial Django 1.7 compatability release

0.2.3

  • Fix issue validating organziation ownership for custom organization models inheriting directly from the Organization class.

0.2.2

  • Packaging fix

0.2.1

  • Packaging fix

0.2.0

  • Abstract base models. These allow for custom organization models without relying on mulit-table inheritence, as well as custom organization user models, all on an app-by-app basis.

0.1.10

  • Packaging fix

0.1.9

  • Restructures tests to remove from installed module, should reduce installed package size

0.1.8

  • Fixes another bug in email invitations

0.1.7

  • Fixes bug in email invitation

0.1.6

  • Extends organizaton name length

  • Increase email field max length

  • Adds get_or_add_user method to Organization

  • Email character escaping

0.1.5

  • Use raw ID fields in admin

  • Fixes template variable names

  • Allow superusers access to all organization views

  • Activate related organizations when activating an owner user

0.1.4a

  • Bug fix for user model import

0.1.4

  • Bugfixes for deleting organization users

  • Removes additional auth.User references in app code

0.1.3b

  • Changes SlugField to an AutoSlugField from django-extensions

  • Base models on TimeStampedModel from django-extensions

  • ForeignKey to user model based on configurable user selection

0.1.3

  • Manage organization models with South

  • Added configurable context variable names to view mixins

  • Added a base backend class which the Invitation and Registration backends extend

  • Lengthed Organization name and slug fields

  • Makes mixin model classes configurable

  • Improved admin display

  • Removes initial passwords

0.1.2

  • Added registration backend

  • Various bug fixes

0.1.1

  • Add RequestContext to default invitation registration view

  • Fix invitations

0.1.0

  • Initial alpha application

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-organizations-0.4.0.tar.gz (26.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_organizations-0.4.0-py2.py3-none-any.whl (41.6 kB view details)

Uploaded Python 2Python 3

File details

Details for the file django-organizations-0.4.0.tar.gz.

File metadata

File hashes

Hashes for django-organizations-0.4.0.tar.gz
Algorithm Hash digest
SHA256 92f7475adde41c6eaa39dfa4f39682ec4bcf2422564b7d64daf0f297e1412ea1
MD5 bc2072dca22273e40705d1cc54d5a69c
BLAKE2b-256 1759d5ab94b57ad3080798602ca99b37d19ae54389d34965f000174bcc752834

See more details on using hashes here.

File details

Details for the file django_organizations-0.4.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for django_organizations-0.4.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 c1c73561b8364b8d5a189ee0e9201760b9c40b509bab4b12288a7b76105235de
MD5 1d87c62d04bbe53da3ac97020c0b446d
BLAKE2b-256 58fa96f6287254defa2378d5437f27217a145d2b7c3804e643f855a261329762

See more details on using hashes here.

Release history Release notifications | RSS feed

2.7.0

2 files

2.6.0

2 files

2.5.0

2 files

2.4.1

2 files

2.3.1

2 files

2.3.0

2 files

2.2.0

2 files

2.1.0

2 files

2.0.2

2 files

2.0.1

2 files

2.0.0

2 files

1.1.2

2 files

1.1.1

2 files

1.1.0

2 files

1.0.0

2 files

0.9.3

2 files

0.9.2

2 files

0.9.1

2 files

0.9.0

2 files

0.8.2

2 files

0.8.1

2 files

0.8.0

2 files

0.7.0

2 files

0.6.1

2 files

0.6.0

2 files

0.5.3

2 files

0.5.2

2 files

0.5.1

2 files

0.5.0

2 files

0.4.3

2 files

0.4.2

2 files

0.4.1

2 files

This release

0.4.0 This release

2 files

0.3.0

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.10

1 file

0.1.9

1 file

0.1.8

1 file

0.1.7

1 file

0.1.6

1 file

0.1.5

1 file

0.1.4

1 file

0.1.3

1 file

0.1.2

1 file

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page