django-nativeshortuuidfield


Namedjango-nativeshortuuidfield JSON
Version 1.4.10 PyPI version JSON
download
home_pagehttps://github.com/foundertherapy/django-nativeshortuuidfield
SummaryA decoder/encoder Field for uuid
upload_time2024-09-09 07:08:37
maintainerNone
docs_urlNone
authorLaith Abu Zainih
requires_python>=3
licenseMIT
keywords shortuuid uuid nativeshortuuid
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # django-nativeshortuuidfield

[![Tests](https://github.com/foundertherapy/django-nativeshortuuidfield/actions/workflows/tests.yml/badge.svg)](https://github.com/foundertherapy/django-nativeshortuuidfield/actions/workflows/tests.yml)
[![Linters](https://github.com/foundertherapy/django-nativeshortuuidfield/actions/workflows/linters.yml/badge.svg)](https://github.com/foundertherapy/django-nativeshortuuidfield/actions/workflows/linters.yml)

Provides a NativeShortUUIDField for your Django models which uses the base-57 "Short UUID" package at https://github.com/stochastic-technologies/shortuuid/ to be used in Python
and store it as full UUID in database.

## Installation

Install it with pip (or easy_install):
```bash
$ pip install django-nativeshortuuidfield
```

## Usage

First you'll need to add a NativeShortUUIDField to your class:
```python
from native_shortuuid import NativeShortUUIDField

class MyModel(models.Model):
    uuid = NativeShortUUIDField(unique=True, default=uuid.uuid4)
```

If you want to add the ability to search by shortuuid in `ModelAdmin` you need to inherit `NativeUUIDSearchMixin`
```python
from native_shortuuid.admin import NativeUUIDSearchMixin

@admin.register(models.MyModel)
class MyModelAdmin(NativeUUIDSearchMixin, admin.ModelAdmin):
    search_fields = ('uuid', )
``` 

If you want to have to ability to write your own uuid search fields list
```python
from native_shortuuid.admin import NativeUUIDSearchMixin

@admin.register(models.MyModel)
class MyModelAdmin(NativeUUIDSearchMixin, admin.ModelAdmin):
    admin_auto_extract_uuid_search_fields = False
    search_fields = ('name', )
    search_uuid_fields = ['uuid', 'foreign_model__uuid']
``` 


Enjoy!

## Settings
* `ADMIN_AUTO_EXTRACT_UUID_SEARCH_FIELDS`: default `True`
    + This setting is to autofill `search_uuid_fields` in the ModelAdmins that inherits `NativeUUIDSearchMixin` 
    with all shortuuid fields that are in the `search_fields` array.
    if you turned it off, you'll need to define `search_uuid_fields` on you ModelAdmin in order to search on shortuuid fields
    
## Notes

* NativeShortUUIDField is a subclass of django.db.models.UUIDField

* You can pass usual Django UUIDField parameters on init, although some of them are added/overwritten:
    + blank=True, editable=False (set auto=False to remove these fields enforcement)

### Contribution Notes

#### Pull Request
* Increase the version number in the `setup.py` to the new version that the new pull request represents.

#### Publishing the Package
After the pull request gets merged into the master branch a new release should be created

* Create a new tag with the same version number you updated the `setup.py` with:
    ```bash
    $ git checkout master
    $ git tag -a 2.1.0 -m 'fix importing order'
    $ git push origin 2.1.0
    ```

* Go to GitHub's releases section and create a new release:
    + Chose the tag version that you just created
    + Fill the release title with the same version number
    + Add a description of the release and publish it

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/foundertherapy/django-nativeshortuuidfield",
    "name": "django-nativeshortuuidfield",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3",
    "maintainer_email": null,
    "keywords": "shortuuid uuid nativeshortuuid",
    "author": "Laith Abu Zainih",
    "author_email": "systems@foundertherapy.co",
    "download_url": "https://files.pythonhosted.org/packages/2e/09/478155a20b9a1af1d2a3c104e5e7d6ff3a64a3f08d6738f087193bc1565b/django_nativeshortuuidfield-1.4.10.tar.gz",
    "platform": null,
    "description": "# django-nativeshortuuidfield\n\n[![Tests](https://github.com/foundertherapy/django-nativeshortuuidfield/actions/workflows/tests.yml/badge.svg)](https://github.com/foundertherapy/django-nativeshortuuidfield/actions/workflows/tests.yml)\n[![Linters](https://github.com/foundertherapy/django-nativeshortuuidfield/actions/workflows/linters.yml/badge.svg)](https://github.com/foundertherapy/django-nativeshortuuidfield/actions/workflows/linters.yml)\n\nProvides a NativeShortUUIDField for your Django models which uses the base-57 \"Short UUID\" package at https://github.com/stochastic-technologies/shortuuid/ to be used in Python\nand store it as full UUID in database.\n\n## Installation\n\nInstall it with pip (or easy_install):\n```bash\n$ pip install django-nativeshortuuidfield\n```\n\n## Usage\n\nFirst you'll need to add a NativeShortUUIDField to your class:\n```python\nfrom native_shortuuid import NativeShortUUIDField\n\nclass MyModel(models.Model):\n    uuid = NativeShortUUIDField(unique=True, default=uuid.uuid4)\n```\n\nIf you want to add the ability to search by shortuuid in `ModelAdmin` you need to inherit `NativeUUIDSearchMixin`\n```python\nfrom native_shortuuid.admin import NativeUUIDSearchMixin\n\n@admin.register(models.MyModel)\nclass MyModelAdmin(NativeUUIDSearchMixin, admin.ModelAdmin):\n    search_fields = ('uuid', )\n``` \n\nIf you want to have to ability to write your own uuid search fields list\n```python\nfrom native_shortuuid.admin import NativeUUIDSearchMixin\n\n@admin.register(models.MyModel)\nclass MyModelAdmin(NativeUUIDSearchMixin, admin.ModelAdmin):\n    admin_auto_extract_uuid_search_fields = False\n    search_fields = ('name', )\n    search_uuid_fields = ['uuid', 'foreign_model__uuid']\n``` \n\n\nEnjoy!\n\n## Settings\n* `ADMIN_AUTO_EXTRACT_UUID_SEARCH_FIELDS`: default `True`\n    + This setting is to autofill `search_uuid_fields` in the ModelAdmins that inherits `NativeUUIDSearchMixin` \n    with all shortuuid fields that are in the `search_fields` array.\n    if you turned it off, you'll need to define `search_uuid_fields` on you ModelAdmin in order to search on shortuuid fields\n    \n## Notes\n\n* NativeShortUUIDField is a subclass of django.db.models.UUIDField\n\n* You can pass usual Django UUIDField parameters on init, although some of them are added/overwritten:\n    + blank=True, editable=False (set auto=False to remove these fields enforcement)\n\n### Contribution Notes\n\n#### Pull Request\n* Increase the version number in the `setup.py` to the new version that the new pull request represents.\n\n#### Publishing the Package\nAfter the pull request gets merged into the master branch a new release should be created\n\n* Create a new tag with the same version number you updated the `setup.py` with:\n    ```bash\n    $ git checkout master\n    $ git tag -a 2.1.0 -m 'fix importing order'\n    $ git push origin 2.1.0\n    ```\n\n* Go to GitHub's releases section and create a new release:\n    + Chose the tag version that you just created\n    + Fill the release title with the same version number\n    + Add a description of the release and publish it\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A decoder/encoder Field for uuid",
    "version": "1.4.10",
    "project_urls": {
        "Homepage": "https://github.com/foundertherapy/django-nativeshortuuidfield"
    },
    "split_keywords": [
        "shortuuid",
        "uuid",
        "nativeshortuuid"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "61557627f0c202720954eac3e86008aeb1a3d2e202c3090deb1bab8143b78f52",
                "md5": "4c22623884a32071b0666a560cdb1299",
                "sha256": "86554a2063da10cb2d5813d025d1c348ee692858d0617f9db2bccb359f2f5102"
            },
            "downloads": -1,
            "filename": "django_nativeshortuuidfield-1.4.10-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "4c22623884a32071b0666a560cdb1299",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3",
            "size": 13479,
            "upload_time": "2024-09-09T07:08:36",
            "upload_time_iso_8601": "2024-09-09T07:08:36.744723Z",
            "url": "https://files.pythonhosted.org/packages/61/55/7627f0c202720954eac3e86008aeb1a3d2e202c3090deb1bab8143b78f52/django_nativeshortuuidfield-1.4.10-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2e09478155a20b9a1af1d2a3c104e5e7d6ff3a64a3f08d6738f087193bc1565b",
                "md5": "b7c2d745be3e4ef8171687f470a2c294",
                "sha256": "13e5098ed550e5b1e43b9664d44df78c00b926428b4ea50b9fc85048d1b557a2"
            },
            "downloads": -1,
            "filename": "django_nativeshortuuidfield-1.4.10.tar.gz",
            "has_sig": false,
            "md5_digest": "b7c2d745be3e4ef8171687f470a2c294",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3",
            "size": 11292,
            "upload_time": "2024-09-09T07:08:37",
            "upload_time_iso_8601": "2024-09-09T07:08:37.659607Z",
            "url": "https://files.pythonhosted.org/packages/2e/09/478155a20b9a1af1d2a3c104e5e7d6ff3a64a3f08d6738f087193bc1565b/django_nativeshortuuidfield-1.4.10.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-09-09 07:08:37",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "foundertherapy",
    "github_project": "django-nativeshortuuidfield",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "django-nativeshortuuidfield"
}
        
Elapsed time: 0.95637s