Metadata-Version: 2.0
Name: django-binaryfield
Version: 0.3.2
Summary: a generic app to provide a way to handle database binary data in django
Home-page: https://bitbucket.org/slafs/django-binaryfield/
Author: Slawek Ehlert
Author-email: slafs@op.pl
License: BSD
Platform: UNKNOWN
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.2
Classifier: Programming Language :: Python :: 3.3
Classifier: Topic :: Utilities

===================
Django Binaryfield
===================


.. image:: https://drone.io/bitbucket.org/slafs/django-binaryfield/status.png
       :target: https://drone.io/bitbucket.org/slafs/django-binaryfield/latest


A generic app to provide a way to handle database binary data in django.

Introduction
=============

This is a total rip-off of `BinaryField` class from Django 1.6+ sourcecode with some tweaks to make it work under Django 1.4+.

Installation
==============

    pip install django-binaryfield


Usage
=======

Use BinaryField to bind your binary database columns on a django model. Like so::

    from binaryfield import BinaryField

    class ExampleModel(models.Model):

        short_data = BinaryField(max_length=10, default=b'\x08')
        data = BinaryField()


Configuration
==============

syncdb
---------

Django-binaryfield works out-of-the-box with existing binary database columns that are correctly mapped in your models.
If you want BinaryField to work with `syncdb` management command
there's one setting called ``BINARYFIELD_HACK_ENGINES``
that can be used to **hack** Django database backend. Use it like this::

    BINARYFIELD_HACK_ENGINES = (
        'django.db.backends.sqlite3',
    )

It's a list of django backends (as an "importable" strings) to mangle in order to `syncdb` could work properly.
Did I mention that it is a **hack**?


Oracle issues
------------------

There are some issues with Oracle when handling parameteres in a query in Django < 1.6.
You can see this link (https://github.com/django/django/commit/8aefd30379eba9aa7e5afcc69cc352adf0d23489)
to see what changed in `django.db.backends.oracle.base.OracleParam` class regarding this feature.

There are two settings to control a fix to this issue:

* ``BINARYFIELD_HACK_ORACLE_PARAM`` - determines whether or not apply the fix - **Default**: ``False``
* ``BINARYFIELD_HACK_ORACLE_PARAM_BACKENDS`` - an iterable of backend engines as an "importable" strings to apply the fix. - **Default**: ``[ settings.DATABASES['default']['ENGINE'] ]``

TODO
=======

* Some more tests maybe?
* An example view to show how to serve a file from database


