Apiqa user storage backend for django projects
Project description
apiqa-storage
This project aim is to provide user storage backend on minio for all apiqa django projects.
HowToUse
- Add
apiqa-storage
torequirements.txt
.
# Minio file storage
git+https://github.com/pik-software/apiqa-storage.git#egg=apiqa-storage
- Add
apiqa_storage
toINSTALLED_APPS
in settings file.
INSTALLED_APPS = [
'django.contrib.admin',
...,
'apiqa_storage'
]
- Add mixin
ModelWithAttachmentsMixin
to any model. Make and run migrations.
from apiqa_storage.models import ModelWithAttachmentsMixin
class UserFile(ModelWithAttachmentsMixin, ...):
...
- Add serializer mixin at the beginning and add
attachments
,attachment_ids
to fields.
from apiqa_storage.serializers import AttachmentsSerializerMixin
class ModelWithAttachmentsSerializer(AttachmentsSerializerMixin, ...):
...
class Meta:
...
fields = (..., 'attachments', 'attachment_ids')
- Add download and upload file urls to urlpatterns.
from django.urls import path, include
urlpatterns = [
path('attachments/', include('apiqa_storage.urls')),
]
- Or add staff download file url to urlpatterns.
from django.urls import path, include
urlpatterns = [ # noqa
path('attachments/', include('apiqa_storage.staff_urls')),
]
- Add clean files task to celery beat config.
from celery.schedules import crontab
beat_schedule = {
# apiqa-storage clean files
'purge_attachments': {
'task': 'apiqa_storage.tasks.purge_attachments',
'schedule': crontab(hour=5)
},
}
- Add required minio settings. Create bucket on minio! django minio storage usage
MINIO_STORAGE_ENDPOINT = 'minio:9000'
MINIO_STORAGE_ACCESS_KEY = ...
MINIO_STORAGE_SECRET_KEY = ...
MINIO_STORAGE_BUCKET_NAME = 'local-static'
-
Other settings
- MINIO_STORAGE_MAX_FILE_SIZE: File size limit for upload, humanfriendly value. See https://humanfriendly.readthedocs.io/en/latest/readme.html#a-note-about-size-units. Default 100M
- MINIO_STORAGE_MAX_FILE_NAME_LEN: File name length limit. Use for database char limit. Default 100
- MINIO_STORAGE_MAX_FILES_COUNT: Limit of files in one object. For example 5 files in ticket. None - is unlimited. Default None
- MINIO_STORAGE_USE_HTTPS: Use https for connect to minio. Default False
- MINIO_STORAGE_CLEAN_PERIOD: Delete files without related objects after N days. Default 30
-
Run test
pip install -r requirements.txt
pip install -r requirements.dev.txt
docker-compose up
pytest --cov .
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
apiqa-storage-2.10.0.tar.gz
(13.9 kB
view details)
Built Distribution
File details
Details for the file apiqa-storage-2.10.0.tar.gz
.
File metadata
- Download URL: apiqa-storage-2.10.0.tar.gz
- Upload date:
- Size: 13.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.9.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 829ac284fc54d13eb4050d2031acfab69967bb6c89f8d338dfc1105f127693ce |
|
MD5 | 21c38573ff6d7217b8bad37c55d86670 |
|
BLAKE2b-256 | f8d9ce0c81bd5edd1b0882c37a9da21779fdff06b9018c27f8203eebaf7025b9 |
File details
Details for the file apiqa_storage-2.10.0-py3-none-any.whl
.
File metadata
- Download URL: apiqa_storage-2.10.0-py3-none-any.whl
- Upload date:
- Size: 20.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.9.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 298be156fb5ffcb4416ac7a66ba0e26b36966a8803b50c50f6c1331528256e4a |
|
MD5 | aa7fae815a742f19a12ce7866def9b47 |
|
BLAKE2b-256 | e4c77d617e4d388bda5c7f2a086196cbaae2adb74bf66ede7de66df485004c54 |