def avatar_file_path(instance=None, filename=None, size=None, ext=None): tmppath = [settings.AVATAR_STORAGE_DIR] if settings.AVATAR_HASH_USERDIRNAMES: dirname = hashlib.md5(force_bytes(get_username(instance.user))).hexdigest() tmppath.append(dirname) else: tmppath.append(get_username(instance.user)) if not filename: # Filename already stored in database filename = instance.avatar.name if ext and settings.AVATAR_HASH_FILENAMES: # An extension was provided, probably because the thumbnail # is in a different format than the file. Use it. Because it's # only enabled if AVATAR_HASH_FILENAMES is true, we can trust # it won't conflict with another filename (root, oldext) = os.path.splitext(filename) filename = root + "." + ext else: # File doesn't exist yet if settings.AVATAR_HASH_FILENAMES: (root, ext) = os.path.splitext(filename) filename = hashlib.md5(force_bytes(filename)).hexdigest() filename = filename + ext if size: tmppath.extend(['resized', str(size)]) tmppath.append(os.path.basename(filename)) return os.path.join(*tmppath)
def avatar_file_path(instance=None, filename=None, size=None, ext=None): tmppath = [settings.AVATAR_STORAGE_DIR] if settings.AVATAR_HASH_USERDIRNAMES: tmp = hashlib.md5(get_code_name(instance.contact)).hexdigest() tmppath.extend([tmp[0], tmp[1], get_code_name(instance.contact)]) else: tmppath.append(get_code_name(instance.contact)) if not filename: # Filename already stored in database filename = instance.avatar.name if ext and settings.AVATAR_HASH_FILENAMES: # An extension was provided, probably because the thumbnail # is in a different format than the file. Use it. Because it's # only enabled if AVATAR_HASH_FILENAMES is true, we can trust # it won't conflict with another filename (root, oldext) = os.path.splitext(filename) filename = root + "." + ext else: # File doesn't exist yet if settings.AVATAR_HASH_FILENAMES: (root, ext) = os.path.splitext(filename) filename = hashlib.md5(force_bytes(filename)).hexdigest() filename = filename + ext if size: tmppath.extend(['resized', str(size)]) tmppath.append(os.path.basename(filename)) return os.path.join(*tmppath)
def avatar_file_path(instance=None, filename=None, width=None, height=None, ext=None): tmppath = [settings.AVATAR_STORAGE_DIR] if settings.AVATAR_HASH_USERDIRNAMES: tmp = hashlib.md5(get_username(instance.user).encode('utf8')).hexdigest() tmppath.extend([tmp[0], tmp[1], get_username(instance.user)]) else: tmppath.append(get_username(instance.user)) if not filename: # Filename already stored in database filename = instance.avatar.name if ext and settings.AVATAR_HASH_FILENAMES: # An extension was provided, probably because the thumbnail # is in a different format than the file. Use it. Because it's # only enabled if AVATAR_HASH_FILENAMES is true, we can trust # it won't conflict with another filename (root, oldext) = os.path.splitext(filename) filename = root + "." + ext.lower() else: # File doesn't exist yet if settings.AVATAR_HASH_FILENAMES: (root, ext) = os.path.splitext(filename) filename = hashlib.md5(force_bytes(filename)).hexdigest() filename = filename + ext.lower() if width or height: assert width and height tmppath.extend(['resized', str(width), str(height)]) tmppath.append(os.path.basename(filename)) tmppath = [smart_unicode(i) for i in tmppath] return os.path.join(*tmppath)
def get_cache_key(user_or_username, size, prefix): """ Returns a cache key consisten of a username and image size. """ if isinstance(user_or_username, get_user_model()): user_or_username = get_username(user_or_username) key = six.u('%s_%s_%s') % (prefix, user_or_username, size) return six.u('%s_%s') % (slugify(key)[:100], hashlib.md5(force_bytes(key)).hexdigest())
def avatar_url(user, size=settings.AVATAR_DEFAULT_SIZE): avatar = get_primary_avatar(user, size=size) if avatar: return avatar.avatar_url(size) if settings.AVATAR_GRAVATAR_BACKUP: params = {'s': str(size)} if settings.AVATAR_GRAVATAR_DEFAULT: params['d'] = settings.AVATAR_GRAVATAR_DEFAULT path = "%s/?%s" % (hashlib.md5(force_bytes( user.email)).hexdigest(), urlencode(params)) return urljoin(settings.AVATAR_GRAVATAR_BASE_URL, path) return get_default_avatar_url()
def avatar_url(user, size=settings.AVATAR_DEFAULT_SIZE): avatar = get_primary_avatar(user, size=size) if avatar: return avatar.avatar_url(size) if settings.AVATAR_GRAVATAR_BACKUP: params = {'s': str(size)} if settings.AVATAR_GRAVATAR_DEFAULT: params['d'] = settings.AVATAR_GRAVATAR_DEFAULT path = "%s/?%s" % (hashlib.md5(force_bytes(user.email)).hexdigest(), urlencode(params)) return urljoin(settings.AVATAR_GRAVATAR_BASE_URL, path) return get_default_avatar_url()
def avatar_url(user, width=settings.AVATAR_DEFAULT_SIZE, height=False): if not height: height = width avatar = get_primary_avatar(user, width=width, height=height) if avatar: return avatar.avatar_url(width, height) if settings.AVATAR_GRAVATAR_BACKUP: params = {"s": str(width)} if settings.AVATAR_GRAVATAR_DEFAULT: params["d"] = settings.AVATAR_GRAVATAR_DEFAULT path = "%s/?%s" % (hashlib.md5(force_bytes(user.email)).hexdigest(), urlencode(params)) return urljoin(settings.AVATAR_GRAVATAR_BASE_URL, path) return get_default_avatar_url()
def avatar_file_path(instance=None, filename=None, size=None, ext=None, new=False): tmppath = [settings.AVATAR_STORAGE_DIR] if settings.AVATAR_HASH_USERDIRNAMES: tmp = hashlib.md5(get_username(instance.user)).hexdigest() tmppath.extend([tmp[0], tmp[1], get_username(instance.user)]) else: tmppath.append(get_username(instance.user)) if not filename: # Filename already stored in database filename = instance.avatar.name if ext and settings.AVATAR_HASH_FILENAMES: # An extension was provided, probably because the thumbnail # is in a different format than the file. Use it. Because it's # only enabled if AVATAR_HASH_FILENAMES is true, we can trust # it won't conflict with another filename (root, oldext) = os.path.splitext(filename) filename = root + "." + ext else: # File doesn't exist yet if settings.AVATAR_HASH_FILENAMES: (root, oldext) = os.path.splitext(filename) filename = hashlib.md5(force_bytes(filename)).hexdigest() filename = filename + oldext if size: tmppath.extend(["resized", str(size)]) tmppath.append(os.path.basename(filename)) filename = os.path.join("sites", connection.schema_name, *tmppath) # ext overrides current extension (root, oldext) = os.path.splitext(filename) if ext and ext != oldext: filename = root + "." + ext if new: # file does not yet exist, avoid filename collision if instance is not None: filename = instance.avatar.storage.get_available_name(filename) else: pass # Not sure how to avoid collisions without storage return filename
def avatar_url(user, size=settings.AVATAR_DEFAULT_SIZE): avatar = get_primary_avatar(user, size=size) if avatar: return avatar.avatar_url(size) if settings.AVATAR_FACEBOOK_BACKUP: fb_id = get_facebook_id(user) if fb_id: return 'https://graph.facebook.com/{fb_id}/picture?type=square&width={size}&height={size}'.format( fb_id=fb_id, size=size ) if settings.AVATAR_GRAVATAR_BACKUP: params = {'s': str(size)} if settings.AVATAR_GRAVATAR_DEFAULT: params['d'] = settings.AVATAR_GRAVATAR_DEFAULT path = "%s/?%s" % (hashlib.md5(force_bytes(user.email)).hexdigest(), urlencode(params)) return urljoin(settings.AVATAR_GRAVATAR_BASE_URL, path) return get_default_avatar_url()
def get_avatar_for_user(user): # fix this to correct call from django_bb avatar = None try: avatar_container = get_primary_avatar(user, 72) if avatar_container: avatar = avatar_container.avatar_url(72) else: if settings.AVATAR_GRAVATAR_BACKUP: params = {'s': "72"} if settings.AVATAR_GRAVATAR_DEFAULT: params['d'] = settings.AVATAR_GRAVATAR_DEFAULT path = "%s/?%s" % (hashlib.md5(force_bytes(user.email)).hexdigest(), urlencode(params)) avatar = urljoin(settings.AVATAR_GRAVATAR_BASE_URL, path) except: pass if avatar == None: avatar = '' return avatar