Automantic compress files after upload
Project description
Django Compress Storage
=======================
|Build Status| |Latest Version| |BSD License| |Pypi Download|
Custom ZipFileField for Django that auto compact file uploaded
Install
-------
.. code:: bash
pip install django-compress-storage
or by source code
.. code:: bash
git clone https://github.com/valdergallo/django-compress-storage/
python setup.py install
Features
--------
- Compress FileUpload storage file with Zip
- Delete old file that was compressed on zip
- Support for South Migrations
- Support Django 1.2+
- Celery 2.5+ support - async compress file with Celery
- Windows Support
- Linux support
- OSx support
- Support for Python3
- Support for Python2.6+
Motivation
----------
On my job we need save all upload files for 5 year. Losing a lot space
on server with this files, because this I created this application.
Django Settings Configurations
------------------------------
.. code:: python
FILE_COMPRESS_DELETE_OLD_FILE = True # to delete old files after compressed
FILE_COMPRESS_DELETE_OLD_FILE = False # to not delete old files after compressed
# Feature only for version v9.0+
FILE_COMPRESS_QUEUE = 'Celery' # by default queue is Celery, but you can change this with this var on settings
INSTALLED_APPS = (
...
...
'compress_storage',
)
Usage
-----
.. code:: python
# example model.py
from django.db import models
from compress_storage import ZipFileField
class MyContent(models.Model):
name = models.CharField(max_length=150)
create_date = models.DateTimeField(auto_now=True)
upload_file = ZipFileField(upload_to='mycontent/')
def __unicode__(self):
return self.name
Shell
-----
.. code:: python
>>> from example.core import MyContent
>>> m = MyContent.objects.get(id=2)
>>> m.upload_file
<ZipCompressFieldFile: mycontent/test.txt>
>>> m.upload_file.compress()
>>> m.upload_file
<ZipCompressFieldFile: mycontent/test.zip>
Using with Celery
-----------------
If Celery are installed on Site Packages. You just need create one
post\_save on your model to use async compress.
.. code:: python
# listeners.py file
from django.db.models.signals import post_save
def auto_compress_file_on_post_save(sender, instance, **kargs):
instance.upload_file.compress()
post_save.connect(auto_compress_file_on_post_save, sender=MyContent)
If you don´t wanna use Celery async compress:
.. code:: python
def auto_compress_file_on_post_save(sender, instance, **kargs):
instance.upload_file.compress(async=False)
post_save.connect(auto_compress_file_on_post_save, sender=MyContent)
.
=======================
|Build Status| |Latest Version| |BSD License| |Pypi Download|
Custom ZipFileField for Django that auto compact file uploaded
Install
-------
.. code:: bash
pip install django-compress-storage
or by source code
.. code:: bash
git clone https://github.com/valdergallo/django-compress-storage/
python setup.py install
Features
--------
- Compress FileUpload storage file with Zip
- Delete old file that was compressed on zip
- Support for South Migrations
- Support Django 1.2+
- Celery 2.5+ support - async compress file with Celery
- Windows Support
- Linux support
- OSx support
- Support for Python3
- Support for Python2.6+
Motivation
----------
On my job we need save all upload files for 5 year. Losing a lot space
on server with this files, because this I created this application.
Django Settings Configurations
------------------------------
.. code:: python
FILE_COMPRESS_DELETE_OLD_FILE = True # to delete old files after compressed
FILE_COMPRESS_DELETE_OLD_FILE = False # to not delete old files after compressed
# Feature only for version v9.0+
FILE_COMPRESS_QUEUE = 'Celery' # by default queue is Celery, but you can change this with this var on settings
INSTALLED_APPS = (
...
...
'compress_storage',
)
Usage
-----
.. code:: python
# example model.py
from django.db import models
from compress_storage import ZipFileField
class MyContent(models.Model):
name = models.CharField(max_length=150)
create_date = models.DateTimeField(auto_now=True)
upload_file = ZipFileField(upload_to='mycontent/')
def __unicode__(self):
return self.name
Shell
-----
.. code:: python
>>> from example.core import MyContent
>>> m = MyContent.objects.get(id=2)
>>> m.upload_file
<ZipCompressFieldFile: mycontent/test.txt>
>>> m.upload_file.compress()
>>> m.upload_file
<ZipCompressFieldFile: mycontent/test.zip>
Using with Celery
-----------------
If Celery are installed on Site Packages. You just need create one
post\_save on your model to use async compress.
.. code:: python
# listeners.py file
from django.db.models.signals import post_save
def auto_compress_file_on_post_save(sender, instance, **kargs):
instance.upload_file.compress()
post_save.connect(auto_compress_file_on_post_save, sender=MyContent)
If you don´t wanna use Celery async compress:
.. code:: python
def auto_compress_file_on_post_save(sender, instance, **kargs):
instance.upload_file.compress(async=False)
post_save.connect(auto_compress_file_on_post_save, sender=MyContent)
.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Close
Hashes for django-compress-storage-0.9.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | d57143de3334dda06bc4fea45a0aca3650de8a458a228c36fcc8e699edbe8a0b |
|
MD5 | f381d4f8556364d65c5c4b43fcd270df |
|
BLAKE2b-256 | 14b7a2ae769218f3de1a482f4691d8cec3e59896574ba883619d77d8f537e700 |