#34575 closed New feature (wontfix)
Storage Signals
| Reported by: | Darrel O'Pry | Owned by: | nobody |
|---|---|---|---|
| Component: | File uploads/storage | Version: | 4.2 |
| Severity: | Normal | Keywords: | storage signals |
| Cc: | Darrel O'Pry | Triage Stage: | Unreviewed |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
It would be nice if Storage emitted signals on file operations, so file related processes can be implemented without tight coupling.
Use cases:
- purging files in CDNs
- generating derivative assets
- virus scanning
Proposed Signals:
- post_save
- post_delete
My initial thoughts on the implementation would be to modify Storage.delete to delegate to ._delete like .save and to put the signal triggering in .save and .delete. Alternatively, it could be implemented in a Mixin like we are doing in our project.
storage_post_save = Signal()
storage_post_delete = Signal()
class SignalingStorageMixin:
def save(self, name, content, max_length=None):
super().save(name, content, max_length)
# send a signal so we can react as files are uploaded in order to purge the cache.
storage_post_save.send(sender=self.__class__, name=name)
def delete(self, name):
"""
Delete the specified file from the storage system.
"""
super().delete(name)
storage_post_delete.send(sender=self.__class__, name=name)
Change History (3)
comment:1 by , 2 years ago
| Cc: | added |
|---|---|
| Component: | Uncategorized → File uploads/storage |
| Keywords: | storage signals added |
| Type: | Uncategorized → New feature |
comment:2 by , 2 years ago
| Resolution: | → wontfix |
|---|---|
| Status: | new → closed |
comment:3 by , 2 years ago
Thanks for the feedback. I'm sorry but I'm not interested in yet another a login on yet another site.
Note:
See TracTickets
for help on using tickets.
Hello Darrel! The current procedure to propose/request new features is to post a new message to the Django Forum to reach a wider audience and to get community consensus there. Once there is an agreement and desire to include the proposed feature in Django, this ticket can be re-opened. Thank you!