# 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"
}