garpix-company


Namegarpix-company JSON
Version 2.8.3 PyPI version JSON
download
home_pagehttps://github.com/garpixcms/garpix_company
Summary
upload_time2023-05-22 15:07:09
maintainer
docs_urlNone
authorGarpix LTD
requires_python
licenseMIT
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Garpix Company

Company module for Django/DRF projects.


## Quickstart

Install with pip:

```bash
pip install garpix_company
```

Add the `garpix_company` to your `INSTALLED_APPS`:

```python
# settings.py

# ...
INSTALLED_APPS = [
    # ...
    'garpix_company',
]
```

and to migration modules:

```python
# settings.py

# ...
MIGRATION_MODULES = {
    'garpix_company': 'app.migrations.garpix_company',
}
```

Add to `urls.py`:

```python

# ...
urlpatterns = [
    # ...
    # garpix_company
    path('', include(('garpix_company.urls', 'garpix_company'), namespace='garpix_company')),

]
```

Add Company model to your project using abstract `AbstractCompany` from the model:
```python
from garpix_company.models import AbstractCompany


class Company(AbstractCompany):
    pass

```

Add UserCompanyRole model to your project using abstract `AbstractUserCompanyRole` from the model:
```python
from garpix_company.models import AbstractUserCompanyRole


class UserCompanyRole(AbstractUserCompanyRole):
    pass


```

Add `GARPIX_COMPANY_MODEL`, `GARPIX_USER_COMPANY_MODEL` and `GARPIX_COMPANY_ROLE_MODEL` to `settings.py`:

```python
# settings.py

GARPIX_COMPANY_MODEL = 'app.Company'
GARPIX_COMPANY_ROLE_MODEL = 'app.UserCompanyRole'
GARPIX_USER_COMPANY_MODEL = 'garpix_company.UserCompany'

```

Use `CompanyAdmin` as base in your admin panel:
```python
from django.contrib import admin

from app.models import Company
from garpix_company.admin import CompanyAdmin


@admin.register(Company)
class CompanyAdmin(CompanyAdmin):
    pass

```

## Invite and create user

You can add fields to `company_invite/create_and_invite` endpoint.  

To do it override `CreateAndInviteToCompanySerializer` by adding field and add it to `settings`:

```python
# settings.py

GARPIX_COMPANY_CREATE_AND_INVITE_SERIALIZER = 'app.serializers.CustomInviteCompanySerializer'

```

```python
# app.serializers.py

from rest_framework import serializers

from garpix_company.serializers import CreateAndInviteToCompanySerializer


class CustomInviteCompanySerializer(CreateAndInviteToCompanySerializer):
    username = serializers.CharField(write_only=True)

    class Meta(CreateAndInviteToCompanySerializer.Meta):
        fields = CreateAndInviteToCompanySerializer.Meta.fields + ('username',)


```

You also can override `UserSerializer` and `CompanyRoleSerializer` to add custom fields to `user` and `role` fields of `/company/{pk}/user/` endpoints:

```python
# settings.py

GARPIX_COMPANY_USER_SERIALIZER = 'app.serializers.UserSerializer'
GARPIX_COMPANY_ROLE_SERIALIZER = 'app.serializers.CompanyRoleSerializer'

```

You can also set `GARPIX_COMPANY_INVITE_NOT_USERS` setting to True (False is default) to allow to invite not registered users

## Companies count limit

If you need to add some limitations on companies count the user can be a part of, you can override `check_user_companies_limit` class method of `Company` class:

```python
from garpix_company.models import AbstractCompany, get_user_company_model


class Company(AbstractCompany):

    @classmethod
    def check_user_companies_limit(cls, user):
        UserCompany = get_user_company_model()
        return UserCompany.objects.filter(user=user).count() < 1

```

See `garpix_company/tests/test_company.py` for examples.

# Changelog

Смотри [CHANGELOG.md](CHANGELOG.md).

# Contributing

Смотри [CONTRIBUTING.md](CONTRIBUTING.md).

# License

[MIT](LICENSE)

---

Developed by Garpix / [https://garpix.com](https://garpix.com)

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/garpixcms/garpix_company",
    "name": "garpix-company",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "",
    "author": "Garpix LTD",
    "author_email": "info@garpix.com",
    "download_url": "https://files.pythonhosted.org/packages/f1/18/bd533daef09e5f1fb3e123a0a8e6cf1a1dfba9cae05f9f565d49eac4f5e2/garpix_company-2.8.3.tar.gz",
    "platform": null,
    "description": "# Garpix Company\n\nCompany module for Django/DRF projects.\n\n\n## Quickstart\n\nInstall with pip:\n\n```bash\npip install garpix_company\n```\n\nAdd the `garpix_company` to your `INSTALLED_APPS`:\n\n```python\n# settings.py\n\n# ...\nINSTALLED_APPS = [\n    # ...\n    'garpix_company',\n]\n```\n\nand to migration modules:\n\n```python\n# settings.py\n\n# ...\nMIGRATION_MODULES = {\n    'garpix_company': 'app.migrations.garpix_company',\n}\n```\n\nAdd to `urls.py`:\n\n```python\n\n# ...\nurlpatterns = [\n    # ...\n    # garpix_company\n    path('', include(('garpix_company.urls', 'garpix_company'), namespace='garpix_company')),\n\n]\n```\n\nAdd Company model to your project using abstract `AbstractCompany` from the model:\n```python\nfrom garpix_company.models import AbstractCompany\n\n\nclass Company(AbstractCompany):\n    pass\n\n```\n\nAdd UserCompanyRole model to your project using abstract `AbstractUserCompanyRole` from the model:\n```python\nfrom garpix_company.models import AbstractUserCompanyRole\n\n\nclass UserCompanyRole(AbstractUserCompanyRole):\n    pass\n\n\n```\n\nAdd `GARPIX_COMPANY_MODEL`, `GARPIX_USER_COMPANY_MODEL` and `GARPIX_COMPANY_ROLE_MODEL` to `settings.py`:\n\n```python\n# settings.py\n\nGARPIX_COMPANY_MODEL = 'app.Company'\nGARPIX_COMPANY_ROLE_MODEL = 'app.UserCompanyRole'\nGARPIX_USER_COMPANY_MODEL = 'garpix_company.UserCompany'\n\n```\n\nUse `CompanyAdmin` as base in your admin panel:\n```python\nfrom django.contrib import admin\n\nfrom app.models import Company\nfrom garpix_company.admin import CompanyAdmin\n\n\n@admin.register(Company)\nclass CompanyAdmin(CompanyAdmin):\n    pass\n\n```\n\n## Invite and create user\n\nYou can add fields to `company_invite/create_and_invite` endpoint.  \n\nTo do it override `CreateAndInviteToCompanySerializer` by adding field and add it to `settings`:\n\n```python\n# settings.py\n\nGARPIX_COMPANY_CREATE_AND_INVITE_SERIALIZER = 'app.serializers.CustomInviteCompanySerializer'\n\n```\n\n```python\n# app.serializers.py\n\nfrom rest_framework import serializers\n\nfrom garpix_company.serializers import CreateAndInviteToCompanySerializer\n\n\nclass CustomInviteCompanySerializer(CreateAndInviteToCompanySerializer):\n    username = serializers.CharField(write_only=True)\n\n    class Meta(CreateAndInviteToCompanySerializer.Meta):\n        fields = CreateAndInviteToCompanySerializer.Meta.fields + ('username',)\n\n\n```\n\nYou also can override `UserSerializer` and `CompanyRoleSerializer` to add custom fields to `user` and `role` fields of `/company/{pk}/user/` endpoints:\n\n```python\n# settings.py\n\nGARPIX_COMPANY_USER_SERIALIZER = 'app.serializers.UserSerializer'\nGARPIX_COMPANY_ROLE_SERIALIZER = 'app.serializers.CompanyRoleSerializer'\n\n```\n\nYou can also set `GARPIX_COMPANY_INVITE_NOT_USERS` setting to True (False is default) to allow to invite not registered users\n\n## Companies count limit\n\nIf you need to add some limitations on companies count the user can be a part of, you can override `check_user_companies_limit` class method of `Company` class:\n\n```python\nfrom garpix_company.models import AbstractCompany, get_user_company_model\n\n\nclass Company(AbstractCompany):\n\n    @classmethod\n    def check_user_companies_limit(cls, user):\n        UserCompany = get_user_company_model()\n        return UserCompany.objects.filter(user=user).count() < 1\n\n```\n\nSee `garpix_company/tests/test_company.py` for examples.\n\n# Changelog\n\n\u0421\u043c\u043e\u0442\u0440\u0438 [CHANGELOG.md](CHANGELOG.md).\n\n# Contributing\n\n\u0421\u043c\u043e\u0442\u0440\u0438 [CONTRIBUTING.md](CONTRIBUTING.md).\n\n# License\n\n[MIT](LICENSE)\n\n---\n\nDeveloped by Garpix / [https://garpix.com](https://garpix.com)\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "",
    "version": "2.8.3",
    "project_urls": {
        "Homepage": "https://github.com/garpixcms/garpix_company"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a9f31f22bc43a09b7b66c68e4ddbb12f26f3963e830102fd764b17505628c310",
                "md5": "034b8158a663d8f76f94b3125d41d917",
                "sha256": "ffcd67b7de4b0672d0d8fb17596d0e4f93b2fa76b4756aee496b6f57cf38792c"
            },
            "downloads": -1,
            "filename": "garpix_company-2.8.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "034b8158a663d8f76f94b3125d41d917",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 29779,
            "upload_time": "2023-05-22T15:07:06",
            "upload_time_iso_8601": "2023-05-22T15:07:06.113594Z",
            "url": "https://files.pythonhosted.org/packages/a9/f3/1f22bc43a09b7b66c68e4ddbb12f26f3963e830102fd764b17505628c310/garpix_company-2.8.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f118bd533daef09e5f1fb3e123a0a8e6cf1a1dfba9cae05f9f565d49eac4f5e2",
                "md5": "41d03d62b7bc76ec639d32cfd99df9ad",
                "sha256": "914d281ce46c58a78170fb8c57878c0a7681320525bf87d9994ba230b9e78abf"
            },
            "downloads": -1,
            "filename": "garpix_company-2.8.3.tar.gz",
            "has_sig": false,
            "md5_digest": "41d03d62b7bc76ec639d32cfd99df9ad",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 17164,
            "upload_time": "2023-05-22T15:07:09",
            "upload_time_iso_8601": "2023-05-22T15:07:09.203994Z",
            "url": "https://files.pythonhosted.org/packages/f1/18/bd533daef09e5f1fb3e123a0a8e6cf1a1dfba9cae05f9f565d49eac4f5e2/garpix_company-2.8.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-05-22 15:07:09",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "garpixcms",
    "github_project": "garpix_company",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "garpix-company"
}
        
Elapsed time: 0.20397s