Skip to content

Commit 46d2371

Browse files
committed
Add configurable storage
Superseeds #156
1 parent 295a922 commit 46d2371

File tree

3 files changed

+21
-3
lines changed

3 files changed

+21
-3
lines changed

docs-src/customization.md

+12
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,18 @@ MARKDOWNX_IMAGE_MAX_SIZE = {
232232
}
233233
```
234234

235+
### `MARKDOWNX_IMAGE_STORAGE`
236+
237+
Default: `None`
238+
239+
Specify the default file storage for markdownx image upload. If `None`, follow
240+
[`DJANGO_FILE_STORAGE`](https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-DEFAULT_FILE_STORAGE).
241+
Example which uses S3 storage backend:
242+
243+
```python
244+
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
245+
```
246+
235247
### `MARKDOWNX_SVG_JAVASCRIPT_PROTECTION`
236248

237249
Default: `True`

markdownx/forms.py

+7-3
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,25 @@
44
from collections import namedtuple
55

66
from django import forms
7-
from django.core.files.storage import default_storage
7+
from django.core.files.storage import get_storage_class
88
from django.core.files.uploadedfile import InMemoryUploadedFile
99

1010
from .utils import scale_and_crop, xml_has_javascript
1111
from .exceptions import MarkdownxImageUploadError
1212

1313
from .settings import (
1414
MARKDOWNX_IMAGE_MAX_SIZE,
15+
MARKDOWNX_IMAGE_STORAGE,
1516
MARKDOWNX_MEDIA_PATH,
1617
MARKDOWNX_UPLOAD_CONTENT_TYPES,
1718
MARKDOWNX_UPLOAD_MAX_SIZE,
1819
MARKDOWNX_SVG_JAVASCRIPT_PROTECTION
1920
)
2021

2122

23+
image_storage = get_storage_class(MARKDOWNX_IMAGE_STORAGE)()
24+
25+
2226
class ImageForm(forms.Form):
2327
"""
2428
Used for the handling of images uploaded using the editor through :guilabel:`AJAX`.
@@ -104,8 +108,8 @@ def _save(self, image, file_name, commit):
104108
full_path = path.join(MARKDOWNX_MEDIA_PATH, unique_file_name)
105109

106110
if commit:
107-
default_storage.save(full_path, image)
108-
return default_storage.url(full_path)
111+
image_storage.save(full_path, image)
112+
return image_storage.url(full_path)
109113

110114
# If `commit is False`, return the path and in-memory image.
111115
image_data = namedtuple('image_data', ['path', 'image'])

markdownx/settings.py

+2
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ def _mdx(var, default):
6868

6969
MARKDOWNX_IMAGE_MAX_SIZE = _mdx('IMAGE_MAX_SIZE', dict(size=(IM_WIDTH, IM_HEIGHT), quality=NINETY_DPI))
7070

71+
MARKDOWNX_IMAGE_STORAGE = _mdx('IMAGE_STORAGE', None)
72+
7173
MARKDOWNX_SVG_JAVASCRIPT_PROTECTION = True
7274

7375

0 commit comments

Comments
 (0)