145 lines
6.2 KiB
Python
145 lines
6.2 KiB
Python
# coding: utf-8
|
|
|
|
from django.conf import settings
|
|
from django.utils.translation import gettext_lazy as _
|
|
import re
|
|
|
|
|
|
# Main FileBrowser Directory. Relative to site.storage.location.
|
|
# DO NOT USE A SLASH AT THE BEGINNING, DO NOT FORGET THE TRAILING SLASH AT THE END.
|
|
DIRECTORY = getattr(settings, "FILEBROWSER_DIRECTORY", 'uploads/')
|
|
|
|
# EXTENSIONS AND FORMATS
|
|
# Allowed Extensions for File Upload. Lower case is important.
|
|
EXTENSIONS = getattr(settings, "FILEBROWSER_EXTENSIONS", {
|
|
'Image': ['.jpg', '.jpeg', '.gif', '.png', '.tif', '.tiff'],
|
|
'Document': ['.pdf', '.doc', '.rtf', '.txt', '.xls', '.csv', '.docx'],
|
|
'Video': ['.mov', '.mp4', '.m4v', '.webm', '.wmv', '.mpeg', '.mpg', '.avi', '.rm'],
|
|
'Audio': ['.mp3', '.wav', '.aiff', '.midi', '.m4p']
|
|
})
|
|
# Define different formats for allowed selections.
|
|
# This has to be a subset of EXTENSIONS.
|
|
# e.g., add ?type=image to the browse-URL ...
|
|
SELECT_FORMATS = getattr(settings, "FILEBROWSER_SELECT_FORMATS", {
|
|
'file': ['Image', 'Document', 'Video', 'Audio'],
|
|
'image': ['Image'],
|
|
'document': ['Document'],
|
|
'media': ['Video', 'Audio'],
|
|
})
|
|
|
|
# VERSIONS
|
|
|
|
# Directory to Save Image Versions (and Thumbnails). Relative to site.storage.location.
|
|
# If no directory is given, versions are stored within the Image directory.
|
|
# VERSION URL: VERSIONS_BASEDIR/original_path/originalfilename_versionsuffix.extension
|
|
VERSIONS_BASEDIR = getattr(
|
|
settings, 'FILEBROWSER_VERSIONS_BASEDIR', '_versions')
|
|
# Versions Format. Available Attributes: verbose_name, width, height, opts
|
|
VERSIONS = getattr(settings, "FILEBROWSER_VERSIONS", {
|
|
'admin_thumbnail': {'verbose_name': 'Admin Thumbnail', 'width': 60, 'height': 60, 'opts': 'crop'},
|
|
'thumbnail': {'verbose_name': 'Thumbnail (1 col)', 'width': 60, 'height': 60, 'opts': 'crop'},
|
|
'small': {'verbose_name': 'Small (2 col)', 'width': 140, 'height': '', 'opts': ''},
|
|
'medium': {'verbose_name': 'Medium (4col )', 'width': 300, 'height': '', 'opts': ''},
|
|
'big': {'verbose_name': 'Big (6 col)', 'width': 460, 'height': '', 'opts': ''},
|
|
'large': {'verbose_name': 'Large (8 col)', 'width': 680, 'height': '', 'opts': ''},
|
|
})
|
|
# Quality of saved versions
|
|
VERSION_QUALITY = getattr(settings, 'FILEBROWSER_VERSION_QUALITY', 90)
|
|
# Versions available within the Admin-Interface.
|
|
ADMIN_VERSIONS = getattr(settings, 'FILEBROWSER_ADMIN_VERSIONS', [
|
|
'thumbnail', 'small', 'medium', 'big', 'large'])
|
|
# Which Version should be used as Admin-thumbnail.
|
|
ADMIN_THUMBNAIL = getattr(
|
|
settings, 'FILEBROWSER_ADMIN_THUMBNAIL', 'admin_thumbnail')
|
|
|
|
VERSION_PROCESSORS = getattr(settings, 'FILEBROWSER_VERSION_PROCESSORS', [
|
|
'filebrowser.utils.scale_and_crop',
|
|
])
|
|
VERSION_NAMER = getattr(settings, 'FILEBROWSER_VERSION_NAMER',
|
|
'filebrowser.namers.VersionNamer')
|
|
|
|
# PLACEHOLDER
|
|
|
|
# Path to placeholder image (relative to storage location)
|
|
PLACEHOLDER = getattr(settings, "FILEBROWSER_PLACEHOLDER", "")
|
|
# Show Placeholder if the original image does not exist
|
|
SHOW_PLACEHOLDER = getattr(settings, "FILEBROWSER_SHOW_PLACEHOLDER", False)
|
|
# Always show placeholder (even if the original image exists)
|
|
FORCE_PLACEHOLDER = getattr(settings, "FILEBROWSER_FORCE_PLACEHOLDER", False)
|
|
|
|
# EXTRA SETTINGS
|
|
|
|
# If set to True, the FileBrowser will not try to import a mis-installed PIL.
|
|
STRICT_PIL = getattr(settings, 'FILEBROWSER_STRICT_PIL', False)
|
|
# PIL's Error "Suspension not allowed here" work around:
|
|
# s. http://mail.python.org/pipermail/image-sig/1999-August/000816.html
|
|
IMAGE_MAXBLOCK = getattr(settings, 'FILEBROWSER_IMAGE_MAXBLOCK', 1024 * 1024)
|
|
# Exclude files matching any of the following regular expressions
|
|
# Default is to exclude 'thumbnail' style naming of image-thumbnails.
|
|
EXTENSION_LIST = []
|
|
for exts in EXTENSIONS.values():
|
|
EXTENSION_LIST += [re.escape(ext) for ext in exts if ext]
|
|
EXCLUDE = getattr(settings, 'FILEBROWSER_EXCLUDE',
|
|
(r'_(%(exts)s)_.*_q\d{1,3}\.(%(exts)s)' % {'exts': ('|'.join(EXTENSION_LIST))},))
|
|
# Max. Upload Size in Bytes.
|
|
MAX_UPLOAD_SIZE = getattr(settings, "FILEBROWSER_MAX_UPLOAD_SIZE", 10485760)
|
|
# Normalize filename and remove all non-alphanumeric characters
|
|
# except for underscores, spaces & dashes.
|
|
NORMALIZE_FILENAME = getattr(settings, "FILEBROWSER_NORMALIZE_FILENAME", False)
|
|
# Convert Filename (replace spaces and convert to lowercase)
|
|
CONVERT_FILENAME = getattr(settings, "FILEBROWSER_CONVERT_FILENAME", True)
|
|
# Max. Entries per Page
|
|
# Loading a Sever-Directory with lots of files might take a while
|
|
# Use this setting to limit the items shown
|
|
LIST_PER_PAGE = getattr(settings, "FILEBROWSER_LIST_PER_PAGE", 50)
|
|
# Default Sorting
|
|
# Options: date, filesize, filename_lower, filetype_checked
|
|
DEFAULT_SORTING_BY = getattr(
|
|
settings, "FILEBROWSER_DEFAULT_SORTING_BY", "date")
|
|
# Sorting Order: asc, desc
|
|
DEFAULT_SORTING_ORDER = getattr(
|
|
settings, "FILEBROWSER_DEFAULT_SORTING_ORDER", "desc")
|
|
# regex to clean dir names before creation
|
|
FOLDER_REGEX = getattr(settings, "FILEBROWSER_FOLDER_REGEX", r'^[\w._\ /-]+$')
|
|
# Traverse directories when searching
|
|
SEARCH_TRAVERSE = getattr(settings, "FILEBROWSER_SEARCH_TRAVERSE", False)
|
|
# Default Upload and Version Permissions
|
|
DEFAULT_PERMISSIONS = getattr(
|
|
settings, "FILEBROWSER_DEFAULT_PERMISSIONS", 0o755)
|
|
# Overwrite existing files on upload
|
|
OVERWRITE_EXISTING = getattr(settings, "FILEBROWSER_OVERWRITE_EXISTING", True)
|
|
# Add fake model to show filebrowser in admin dashboard
|
|
SHOW_IN_DASHBOARD = getattr(settings, "FILEBROWSER_SHOW_IN_DASHBOARD", True)
|
|
|
|
# UPLOAD
|
|
|
|
# Directory to Save temporary uploaded files (FileBrowseUploadField)
|
|
# Relative to site.storage.location.
|
|
UPLOAD_TEMPDIR = getattr(settings, 'FILEBROWSER_UPLOAD_TEMPDIR', '_temp')
|
|
|
|
# EXTRA TRANSLATION STRINGS
|
|
|
|
# The following strings are not available within views or templates
|
|
_('Folder')
|
|
_('Image')
|
|
_('Video')
|
|
_('Document')
|
|
_('Audio')
|
|
|
|
|
|
# Overwrite admin_site.
|
|
# Example:
|
|
# in file: apps.core.admin define this code.
|
|
|
|
# from django.contrib import admin
|
|
# class CustomAdmin(admin.AdminSite):
|
|
# site_header = site_title = 'Custom Admin'
|
|
# index_title = 'Custom Administration'
|
|
|
|
# admin_general = CustomAdmin(name='admin_general')
|
|
|
|
# In settings:
|
|
# FILEBROWSER_CUSTOM_ADMIN = 'apps.core.admin.admin_general'
|
|
|
|
ADMIN_CUSTOM = getattr(settings, 'FILEBROWSER_CUSTOM_ADMIN', None)
|