From cdb797405495053871ad00c04c05721c8b78c154 Mon Sep 17 00:00:00 2001 From: Kaspars Sprogis Date: Mon, 8 Feb 2016 22:01:12 +0200 Subject: [PATCH] New setting to specify path to a method for avatar file path handling. Solves problems related to custom deployments and directory paths: #10 #9. --- avatar/conf.py | 1 + avatar/models.py | 6 ++++-- docs/index.txt | 4 ++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/avatar/conf.py b/avatar/conf.py index 2a74e25..de814fd 100644 --- a/avatar/conf.py +++ b/avatar/conf.py @@ -8,6 +8,7 @@ class AvatarConf(AppConf): DEFAULT_SIZE = 80 RESIZE_METHOD = Image.ANTIALIAS STORAGE_DIR = 'avatars' + PATH_HANDLER = 'avatar.models.avatar_path_handler' GRAVATAR_BASE_URL = 'https://www.gravatar.com/avatar/' GRAVATAR_FIELD = 'email' GRAVATAR_BACKUP = True diff --git a/avatar/models.py b/avatar/models.py index 1463df0..facfb07 100644 --- a/avatar/models.py +++ b/avatar/models.py @@ -7,6 +7,7 @@ from django.db import models from django.core.files import File from django.core.files.base import ContentFile from django.core.files.storage import get_storage_class +from django.utils.module_loading import import_string from django.utils.translation import ugettext as _ from django.utils import six from django.db.models import signals @@ -22,8 +23,7 @@ except ImportError: avatar_storage = get_storage_class(settings.AVATAR_STORAGE)() - -def avatar_file_path(instance=None, filename=None, size=None, ext=None): +def avatar_path_handler(instance=None, filename=None, size=None, ext=None): tmppath = [settings.AVATAR_STORAGE_DIR] if settings.AVATAR_HASH_USERDIRNAMES: tmp = hashlib.md5(get_username(instance.user)).hexdigest() @@ -51,6 +51,8 @@ def avatar_file_path(instance=None, filename=None, size=None, ext=None): tmppath.append(os.path.basename(filename)) return os.path.join(*tmppath) +avatar_file_path = import_string(settings.AVATAR_PATH_HANDLER) + def find_extension(format): format = format.lower() diff --git a/docs/index.txt b/docs/index.txt index a22cfd1..96f8b5c 100644 --- a/docs/index.txt +++ b/docs/index.txt @@ -135,6 +135,10 @@ AVATAR_GRAVATAR_FIELD AVATAR_MAX_SIZE File size limit for avatar upload. Default is ``1024 * 1024`` (1mb). +AVATAR_PATH_HANDLER + Path to a method for avatar file path handling. Default is + ``avatar.models.avatar_path_handler``. + Management Commands -------------------