dcs
django-compress-storage
pypi i django-compress-storage
dcs

django-compress-storage

Custom ZipFileField for Django that auto compact file uploaded

by Valder Gallo

0.9.1 (see all)License:FREEBSD
pypi i django-compress-storage
Readme

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)

.

GitHub Stars

19

LAST COMMIT

2yrs ago

MAINTAINERS

1

CONTRIBUTORS

2

OPEN ISSUES

0

OPEN PRs

0
VersionTagPublished
0.9.1
8yrs ago
0.9.0
8yrs ago
0.8.1
8yrs ago
0.7.9
8yrs ago
No alternatives found
No tutorials found
Add a tutorial