Skip to main content

Garpix Company

Company module for Django/DRF projects.

Quickstart

Install with pip:

pip install garpix_company

Add the garpix_company to your INSTALLED_APPS:

# settings.py

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

and to migration modules:

# settings.py

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

Add to urls.py:

# ...
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:

from garpix_company.models import AbstractCompany


class Company(AbstractCompany):
    pass

Add UserCompanyRole model to your project using abstract AbstractUserCompanyRole from the model:

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:

# 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:

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:

# settings.py

GARPIX_COMPANY_CREATE_AND_INVITE_SERIALIZER = 'app.serializers.CustomInviteCompanySerializer'
# 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:

# 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:

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.

Contributing

Смотри CONTRIBUTING.md.

License

MIT


Developed by Garpix / https://garpix.com

Metadata

Release files for garpix-company 2.8.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for garpix-company 2.8.3
File Size Uploaded
garpix_company-2.8.3.tar.gz 17.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for garpix-company 2.8.3
File Interpreter ABI Platform
garpix_company-2.8.3-py3-none-any.whl Python 3 none any Details

Total release size: 46.9 kB

Release files / garpix_company-2.8.3.tar.gz

Download URL garpix_company-2.8.3.tar.gz
Size 17.2 kB
Tags Source
SHA-256 checksum
How to use checksums
914d281ce46c58a78170fb8c57878c0a7681320525bf87d9994ba230b9e78abf
BLAKE2b-256 checksum
How to use checksums
f118bd533daef09e5f1fb3e123a0a8e6cf1a1dfba9cae05f9f565d49eac4f5e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/6.0.0 pkginfo/1.9.6 requests/2.28.2 requests-toolbelt/0.10.1 tqdm/4.64.1 CPython/3.8.9

Release files / garpix_company-2.8.3-py3-none-any.whl

Download URL garpix_company-2.8.3-py3-none-any.whl
Size 29.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ffcd67b7de4b0672d0d8fb17596d0e4f93b2fa76b4756aee496b6f57cf38792c
BLAKE2b-256 checksum
How to use checksums
a9f31f22bc43a09b7b66c68e4ddbb12f26f3963e830102fd764b17505628c310
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/6.0.0 pkginfo/1.9.6 requests/2.28.2 requests-toolbelt/0.10.1 tqdm/4.64.1 CPython/3.8.9

Release history Release notifications | RSS feed

This release

2.8.3 This release

2 release files

2.8.2

2 release files

2.8.1

2 release files

2.8.0

2 release files

2.7.3

2 release files

2.7.2

2 release files

2.7.1

2 release files

2.7.0

2 release files

2.6.1

2 release files

2.6.0

2 release files

2.5.0

2 release files

2.4.1

2 release files

2.4.0

2 release files

2.3.0

2 release files

2.2.0

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.0

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.1

2 release files

1.0.0

2 release 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