Small application that simplifies naming of uploaded files
Project description
dj-upload-to
Synopsis
Small application that simplifies naming of uploaded files. License is MIT.
Installation
You can get dj-upload-to release version from pypi with pip:
$ pip install dj-upload-to
or development one from github:
$ pip install -e git+https://github.com/marazmiki/dj-upload-to#egg=dj-upload-url
You’re not need include it into your INSTALLED_APPS
Usage
Assumes you have model:
from django.db import models from dj_upload_to import UploadTo upload_to = UploadTo() class Model(models.Model): file = models.ImageField(upload_to=upload_to)
As you see, UploadTo generates callable object (with __call__ methodfor passing into upload_to attribute of FileField (see django upload_to docs for details)
When you save model with image originally named myphoto.JPG, file
will be saved with name such as:
model/ab/cd/abcdabcd-0123-4567-8901-234567890ab.jpg
where:
- model is prefix automatically generated from model class. You can override it
- ab is the first 2 char segment of filename
- cd is the second 2 char segment of filename
- abcdabcd-0123-4567-8901-234567890ab autogenerated with uuid filename
- .jpg is a lower cased extension taken from original file
Customize
You can customize behavior of UploadTo with options in constructor:
- prefix: prefix of filename. Default is dj_upload_to.not_provided. If None, prefix will be missed. If not explicitly set, will be generated automatically based on model class name
- num_seg: number of parts of segmentation. Default is 2
- seg_size: length of segment in chars. Default is 2
- save_name: use original name without autogeneration. Default is False
There are some examples:
>>> model_instance = Model() >>> # Disable prefix >>> UploadTo(prefix=None)(model_instance, 'file.jpg') u'c0/17/c01745b4-e70b-4dd8-a5f7-76fec32fcb83.jpg' >>> # Explicitly given prefix >>> UploadTo(prefix='my_files')(model_instance, 'file.jpg') u'my_files/d9/a4/d9a4ef25-11b0-41bb-a543-baaac6553024.jpg' >>> # Four segment and automatically generated prefix >>> UploadTo(num_seg=4)(model_instance, 'file.jpg') u'model/36/52/99/f6/365299f6-8dc5-4ca2-848d-965f002a9b72.jpg' >>> # Segment length is 4 chars >>> UploadTo(seg_size=4)(model_instance, 'file.jpg') u'model/3142/f2ef/3142f2ef-2680-4a99-82fc-3c8d9d3179dc.jpg' >>> # Save original filename >>> UploadTo(save_name=True)(model_instance, 'file.jpg') u'model/file.jpg' >>> # Save original filename without prefix >>> UploadTo(save_name=True, prefix=None)(model_instance, 'file.jpg') u'file.jpg'
Contributing
Ideas, bugfixes, pull requests are welcome on GitHub
CHANGELOG
1.1
- Add deconstruct() support
1.0.2
- Fix sad setup.py bug
1.0.1
- Add prefix disabling
- Add changelog
- Updated docs
1.0.0
Initial release
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size dj_upload_to-1.1-py3-none-any.whl (6.0 kB) | File type Wheel | Python version 3.4 | Upload date | Hashes View |
Filename, size dj-upload-to-1.1.tar.bz2 (4.4 kB) | File type Source | Python version None | Upload date | Hashes View |
Filename, size dj-upload-to-1.1.tar.gz (4.1 kB) | File type Source | Python version None | Upload date | Hashes View |
Filename, size dj-upload-to-1.1.zip (8.9 kB) | File type Source | Python version None | Upload date | Hashes View |
Hashes for dj_upload_to-1.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 85c4c599b06b3ba2b23d22748a759286a8aa10c230aa35cecf90aea0a237043f |
|
MD5 | 33cb9dadd93670cb4c11a33fd2999632 |
|
BLAKE2-256 | 505582ebae108388c4356072de944a39d43bbfb7eb9a378092e6c7a9f17f3cd7 |