Metadata-Version: 2.1
Name: django-item-owner-model
Version: 0.3.0
Summary: Data item has owner and can be shared to other users. Login user can only see owned or shared data items. User with permit_all permission can see all data items.
Home-page: https://github.com/zencore-cn/zencore-issues
Author: zencore
Author-email: dobetter@zencore.cn
License: MIT
Description: # django-admin-item-owner
        
        Data item has owner and can be shared to other users. Login user can only see owned or shared data items. User with permit_all permission can see all data items.
        
        ## Install
        
        ```bash
        pip install django-admin-item-owner
        ```
        
        ## Installed utils
        
        - django_item_owner_model.models.DjangoItemManager
        - django_item_owner_model.models.DjangoItemOwnerModel
            - extra permissions: `("django_item_owner_model_permit_all", _("Permit All")),`
        - django_item_owner_model.models.DjangoItemShareModel
            - extra permissions: `("django_item_share_model_permit_all", _("Permit All")),`
        
        **Note:**
        
        - DjangoItemOwnerModel and DjangoItemShareModel use the same custom manager: DjangoItemManager.
        
        ## Usage
        
        **pro/settings.py**
        
        ```python
        
        INSTALLED_APPS = [
            ....
            "django_middleware_global_request",
            "django_admin_item_owner",
            ...
        ]
        
        MIDDLEWARE = [
            ...
            "django_middleware_global_request.middleware.GlobalRequestMiddleware",
            ...
        ]
        ```
        
        - We requires `request` instance in Model's Manager, so we have to use django_middleware_global_request to get request instance. See detail about `django_middleware_global_request` at https://pypi.org/project/django-middleware-global-request/.
        
        **app/models.py**
        
        ```python
        from django.db import models
        from django_admin_item_owner.models import DjangoAdminItemOwnerModel
        from django_admin_item_owner.models import DjangoAdminItemShareModel
        
        class Category(DjangoAdminItemOwnerModel, models.Model):
            title = models.CharField(max_length=32)
        
            def __str__(self):
                return self.title
        
        class Book(DjangoAdminItemOwnerModel, DjangoAdminItemShareModel, models.Model):
            category = models.ForeignKey(Category, on_delete=models.SET_NULL, null=True, blank=True, related_name="books")
            title = models.CharField(max_length=32)
        
            def __str__(self):
                return self.title
        
        
        ```
        
        **app/admin.py**
        
        
        ```python
        from django.contrib import admin
        from django import forms
        from .models import Category
        from .models import Book
        
        class BookInline(admin.TabularInline):
            model = Book
        
        class CategoryAdmin(admin.ModelAdmin):
            allow_super_user_see_all_items = True
            list_display = ["title"]
            inlines = [
                BookInline,
            ]
        
        class BookAdmin(admin.ModelAdmin):
            list_display = ["title", "owner", "share_users_display"]
        
            def share_users_display(self, obj):
                users = [str(x) for x in obj.share_users.all()]
                return ",".join(users)
        
        admin.site.register(Category, CategoryAdmin)
        admin.site.register(Book, BookAdmin)
        
        ```
        
        ## Bug report
        
        Please report any issues at https://github.com/zencore-cn/zencore-issues.
        
        ## Releases
        
        ### v0.3.0 2020-06-22
        
        - Change app's name from `django-admin-item-owner` to `django-item-owner-model`.
        - Use custom model Manager to control item access.
        - Note: `New version changes a lot.`
        
        ### v0.2.0 2020-01-08
        
        - Add ItemShareMixin for models and admins.
        
        ### v0.1.0 2019-12-01
        
        - First release.
        
Keywords: django-admin-item-owner
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Description-Content-Type: text/markdown
