All Projects → bennylope → Django Organizations

bennylope / Django Organizations

Licence: bsd-2-clause
👫 Multi-user accounts for Django projects

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Django Organizations

Django Admin Interface
django's default admin interface made customizable. popup windows replaced by modals. :mage: ⚡️
Stars: ✭ 717 (-11.81%)
Mutual labels:  django
Eventsourcing
A library for event sourcing in Python.
Stars: ✭ 760 (-6.52%)
Mutual labels:  django
Django Admin Bootstrap
Responsive Theme for Django Admin With Sidebar Menu
Stars: ✭ 787 (-3.2%)
Mutual labels:  django
List All Programming Telegram Group
List of All Programming Telegram Group
Stars: ✭ 724 (-10.95%)
Mutual labels:  groups
Promgen
Promgen is a configuration file generator for Prometheus
Stars: ✭ 754 (-7.26%)
Mutual labels:  django
Django Admin Honeypot
🍯 A fake Django admin login screen page.
Stars: ✭ 768 (-5.54%)
Mutual labels:  django
Django Avatar
A Django app for handling user avatars.
Stars: ✭ 720 (-11.44%)
Mutual labels:  django
Django Rosetta
Rosetta is a Django application that eases the translation process of your Django projects
Stars: ✭ 806 (-0.86%)
Mutual labels:  django
Izone
django+bootstrap4 个人博客
Stars: ✭ 757 (-6.89%)
Mutual labels:  django
Funpyspidersearchengine
Word2vec 千人千面 个性化搜索 + Scrapy2.3.0(爬取数据) + ElasticSearch7.9.1(存储数据并提供对外Restful API) + Django3.1.1 搜索
Stars: ✭ 782 (-3.81%)
Mutual labels:  django
Django Recaptcha
Django reCAPTCHA form field/widget integration app.
Stars: ✭ 742 (-8.73%)
Mutual labels:  django
Cmdb
CMDB 配置管理系统 资产管理系统
Stars: ✭ 747 (-8.12%)
Mutual labels:  django
Edge
A Django project skeleton that is modern and cutting edge.
Stars: ✭ 773 (-4.92%)
Mutual labels:  django
Acra
Database security suite. Database proxy with field-level encryption, search through encrypted data, SQL injections prevention, intrusion detection, honeypots. Supports client-side and proxy-side ("transparent") encryption. SQL, NoSQL.
Stars: ✭ 726 (-10.7%)
Mutual labels:  django
Django Cachalot
No effort, no worry, maximum performance.
Stars: ✭ 790 (-2.83%)
Mutual labels:  django
Nsupdate.info
Dynamic DNS service
Stars: ✭ 720 (-11.44%)
Mutual labels:  django
Try Django
Learn Django bit by bit in this series
Stars: ✭ 767 (-5.66%)
Mutual labels:  django
Booktype
Booktype is a free, open source platform that produces beautiful, engaging books formatted for print, Amazon, iBooks and almost any ereader within minutes.
Stars: ✭ 810 (-0.37%)
Mutual labels:  django
Django Summernote
Simply integrate Summernote editor with Django project.
Stars: ✭ 797 (-1.97%)
Mutual labels:  django
Imooc Django
高仿慕课网:py3.5 + Django1.10 + xadmin 搭建的在线课程教育平台
Stars: ✭ 774 (-4.8%)
Mutual labels:  django

==================== django-organizations

.. start-table

.. list-table:: :stub-columns: 1

* - Summary
  - Groups and multi-user account management
* - Author
  - Ben Lopatin (http://benlopatin.com / https://wellfire.co)
* - Status
  - |docs| |travis| |version| |wheel| |supported-versions| |supported-implementations|

.. |docs| image:: https://readthedocs.org/projects/django-organizations/badge/?style=flat :target: https://readthedocs.org/projects/django-organizations :alt: Documentation Status

.. |travis| image:: https://travis-ci.org/bennylope/django-organizations.svg?branch=master :alt: Travis-CI Build Status :target: https://travis-ci.org/bennylope/django-organizations

.. |version| image:: https://img.shields.io/pypi/v/django-organizations.svg?style=flat :alt: PyPI Package latest release :target: https://pypi.python.org/pypi/django-organizations

.. |wheel| image:: https://img.shields.io/pypi/wheel/django-organizations.svg?style=flat :alt: PyPI Wheel :target: https://pypi.python.org/pypi/django-organizations

.. |supported-versions| image:: https://img.shields.io/pypi/pyversions/django-organizations.svg?style=flat :alt: Supported versions :target: https://pypi.python.org/pypi/django-organizations

.. |supported-implementations| image:: https://img.shields.io/pypi/implementation/django-organizations.svg?style=flat :alt: Supported implementations :target: https://pypi.python.org/pypi/django-organizations

.. end-table

Separate individual user identity from accounts and subscriptions. Django Organizations adds 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.

  • Works with your existing user model, whether django.contrib.auth or a custom model. No additional user or authentication functionality required.
  • Users can be belong to and own more than one organization (account, group)
  • Invitation and registration functionality works out of the box for many situations and can be extended as need to fit specific requirements.
  • Start with the base models or use your own for greater customization.

Documentation is on Read the Docs <http://django-organizations.readthedocs.org/en/latest/index.html>_

Development & Contributing

The master branch represents version 2 development. For updates related to 1.x versions of django-organizations pull requests should be made against the version-1.x branch.

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

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

Targets & testing

The codebase is targeted and tested against:

  • Django 2.2.x against Python 3.5, 3.6, 3.7, 3.8
  • Django 3.0.x against Python 3.6, 3.7, 3.8
  • Django 3.1.x against Python 3.6, 3.7, 3.8

To run the tests against all target environments, install tox <https://testrun.org/tox/latest/>_ and then execute the command::

tox

Fast testing

Testing each change on all the environments takes some time, you may want to test faster and avoid slowing down development by using pytest against your current environment::

pip install -r requirements-test.txt
py.test

Supply the -x option for failfast mode::

py.test -x

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 <https://docs.djangoproject.com/en/stable/internals/contributing/writing-code/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 <http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html>_.
  • 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 <https://travis-ci.org/bennylope/django-organizations>_.

Project goals

django-organizations should be backend agnostic:

  1. Authentication agnostic
  2. Registration agnostic
  3. Invitation agnostic
  4. User messaging agnostic

Etc.

Installing

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

pip install django-organizations

Check the Release History tab <https://pypi.org/project/django-organizations/#history>_ on the PyPI package page for pre-release versions. These can be downloaded by specifying the version.

You can also install by downloading the source and running::

$ python setup.py install

By default you will need to install django-extensions or comparable libraries if you plan on adding Django Organizations as an installed app to your Django project. See below on configuring.

Configuring

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

.. code-block:: python

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:

.. code-block:: python

from organizations.backends import invitation_backend

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

Auto slug field


The standard way of using Django Organizations is to use it as an installed app
in your Django project. Django Organizations will need to use an auto slug
field which are not included. By default it will try to import these from
django-extensions, but you can configure your own in settings. The default:

.. code-block:: python

    ORGS_SLUGFIELD = 'django_extensions.db.fields.AutoSlugField'

Alternative:

.. code-block:: python

    ORGS_SLUGFIELD = 'autoslug.fields.AutoSlugField'

Previous versions allowed you to specify an `ORGS_TIMESTAMPED_MODEL` path. This
is now ignored and the functionality satisifed by a vendored solution. A
warning will be given but this *should not* have any effect on your code.

- `django-extensions <http://django-extensions.readthedocs.org/en/latest/>`_
- `Django AutoSlug <https://github.com/justinmayer/django-autoslug/>`_
- `django-slugger <https://gitlab.com/dspechnikov/django-slugger/>`_

Registration & invitation backends

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

.. code-block:: python

INVITATION_BACKEND = 'myapp.backends.MyInvitationBackend'

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:

.. code-block:: python

>>> from organizations.utils import create_organization
>>> chris = User.objects.get(username="chris")
>>> soundgarden = create_organization(chris, "Soundgarden", org_user_defaults={'is_admin': True})
>>> 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 <http://django-organizations.readthedocs.org/en/latest/cookbook.html#advanced-customization>_ section in the documentation for advice on proceeding.

License

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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].