Comments (8)
I created a pull request with a possibility to change avatar file path handler.
Now users can specify their own file paths based on different criteria.
For example i am usually sepearating in subdivisions by last 2 or 3 numbers from instance ID, to make sure files are +/- similarly distributed. For example this is how I extended current path handler:
# settings.py:
AVATAR_PATH_HANDLER = 'user.avatars.my_avatar_path_handler'
# user/avatars.py
from avatar.models import avatar_path_handler
def my_avatar_path_handler(instance=None, filename=None, size=None, ext=None):
path = avatar_path_handler(instance, filename, size, ext)
parts = path.split('/')
parts[1] = str(instance.user_id)[-2:]
return '/'.join(parts)
# Final path:
# avatars/21/file-name...
# avatars/02/file-name...
# avatars/73/file-name...
from django-avatar.
I wrote it with 2 levels of hashing because I didn't need more, but you're right, it can get out of control with enough users.
I think it would be better to make AVATAR_HASH_USERDIRNAMES an integer with the lebels of hash subdivisions needed. strftime based folder structures are not really practical to browse in my opinion. I'll try implement this if I get some time this week.
from django-avatar.
I agree. As a solution it would great if avatar_file_path
method could be configurable.
https://github.com/grantmcconnaughey/django-avatar/blob/master/avatar/models.py#L26
There is no perfect solution for everyone. If users could define their own callback, they could customise path whatever way they want. What do you think?
from django-avatar.
I've merged @darklow's fix into master. I'll release 3.0 soon.
from django-avatar.
@grantmcconnaughey thanks!
from django-avatar.
Sorry if this is not the right place to ask but,
This AVATAR_PATH_HANDLER looks like a good solution for my multi-tenants + avatars problem:
http://stackoverflow.com/questions/41530171/django-tenant-schemas-avatars
Only issue now is: how to get access to the 'request' within that AVATAR_PATH_HANDLER?
If I can get access to the request, I can make a tenant specific path to store the avatar.
from django-avatar.
@jacopsd, the AVATAR_PATH_HANDLER
function is not passed a request object, so the only way to get this would be through the current thread's request.
Try this blog post: http://nedbatchelder.com/blog/201008/global_django_requests.html
from django-avatar.
great, thx
from django-avatar.
Related Issues (20)
- Fix RemovedInDjango40Warning warnings to support Django 4.0 HOT 3
- Migration to Django4.0 : TypeError: __init__() got an unexpected keyword argument 'providing_args' HOT 4
- Resized avatar getting double rotation in Safari HOT 4
- Cut a release/move to jazzband HOT 3
- Implement Jazzband guidelines for django-avatar HOT 21
- update readme links
- ANTIALIAS is deprecated and will be removed in Pillow 10 (2023-07-01). Use Resampling.LANCZOS instead. HOT 2
- update links
- version in multiple places
- AVATAR_GRAVATAR_FIELD is optional and code fails when not given
- Avatar initial set-up; ReadMe Specificity
- get_primary_avatar() fails when given an int
- Add support for STORAGES settings introduced in Django 4.2 HOT 1
- BUG Custom User Model in Django E039 HOT 1
- Error: Reverse for 'avatar_change' not found HOT 4
- django-avatar readthedocs are not updated
- ResourceWarning: unclosed file in create_thumbnail
- RemovedInDjango51Warning: The DEFAULT_FILE_STORAGE setting is deprecated
- Initials Avatar
- Serialize avatars list along with User model
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from django-avatar.