Snippet List
Your MEDIA_ROOT directories are a mess? FileField save on "upload_to" directories with old/strange/temporary names decided "on the fly" and never fixed down?
SmartFolderFileField is the solution! "upload_to" directory depends only on: app, model and field names. No mess, no ambiguities
Obviously, in case you need a real callable for a dynamic directory name: please use it! and leave apart FixedFolderFileField
Sample:
from django.db import models
from utilities_app.models import SmartFolderFileField
class SampleModel(models.Model):
sample_char_field = models.CharField(max_length=50)
sample_file_field = SmartFolderFileField()
This validator works well with FileField form fields and can validate that an uploaded file has an acceptable mimetype. Place this snippet in your app's `validators.py`.
Requirements:
This snippet uses [python-magic](https://github.com/ahupp/python-magic). To install:
pip install python-magic
Usage (in forms.py):
from validators import MimetypeValidator
class MyForm(forms.Form):
file = forms.FileField(
allow_empty_file=False,
validators=[MimetypeValidator('application/pdf')],
help_text="Upload a PDF file"
)
- validation
- upload
- magic
- mimetype
- FileField
This is extremely simple decorator to add possibility to upload files with name specific in some object field. For example image with same name as object slug.
Sample **model**:
class Test(models.Model):
image = models.ImageField(\
upload_to=upload_to_dest(path='pics/', \
human_readable_field='hrname'))
hrname = models.CharField( \
max_length=128, \
blank=True, default='')
Sample **form** for admin:
FNAME_EXP = re.compile('^[A-Za-z0-9\-\_]+$')
class TestAdminForm(forms.ModelForm):
hrname = forms.RegexField(
label="Human Readable File Name", \
regex=FNAME_EXP, \
help_text="""Allowed only latin alphabet
(upper and lower cases),
underscore and minus
characters. PLEASE, DO NOT INCLUDE
EXTENSION OF THE FILE.
Sample: test-this-file""", \
required=False)
class Meta:
model = Test
Sample *admin.py* for *Test* model:
class TestAdmin(admin.ModelAdmin):
form = TestAdminForm
admin.site.register(Test, TesetAdmin)
- django
- ImageField
- file uploads
- file name
- FileField
3 snippets posted so far.