django-b2 0.7.0
django backblaze b2 storage using b2sdk
License: MIT
Keywords: django-b2

=============================
django-b2
=============================

.. image:: https://badge.fury.io/py/django-b2.svg
    :target: https://badge.fury.io/py/django-b2

.. image:: https://travis-ci.org/pyutil/django-b2.svg?branch=master
    :target: https://travis-ci.org/pyutil/django-b2

.. image:: https://codecov.io/gh/pyutil/django-b2/branch/master/graph/badge.svg
    :target: https://codecov.io/gh/pyutil/django-b2

django backblaze b2 storage using b2sdk (b2sdk is official backblaze python library)

Documentation
-------------

The full documentation is at https://django-b2.readthedocs.io.

Quickstart
----------

Install django-b2::

    pip install django-b2

Add into your settings:

.. code-block:: python

    MEDIA_URL = '/media/'
    DEFAULT_FILE_STORAGE = 'django_b2.storage.B2Storage'                 # if used without django-tenant-schemas
    # DEFAULT_FILE_STORAGE = 'django_b2.tenant_storage.TenantB2Storage'  # if used with django-tenant-schemas
    B2_APP_KEY_ID = 000xxxxxxxxxxxx000000000n
    B2_APP_KEY = keyvalue
    B2_BUCKET_NAME = bucketname
    # optional, see Usage (docs/usage.rst):
    B2_FORCE_UNIQUE = False
    # optional, see Usage (docs/usage.rst):
    MEDIA_ROOT = ..
    B2_LOCAL_MEDIA = ..  # "", "M", "L", "ML"

Using outside of Django:

.. code-block:: python

    from django_b2.backblaze_b2 import BackBlazeB2
    b2 = BackBlazeB2()
    b2.authorize("production", application_key_id, application_key)
    b2.set_bucket(bucket_name)
    with open(filename, 'rb') as f:
        b2.upload_file(filename, f)
    content = b2.download_file(filename)
    with open(filename2, 'wb') as f:
        f.write(content)


Features
--------

- Django media storage (with storage.py) or general python access to BackBlaze B2 (without usage of storage.py).
- Upload single file to B2 (call backblaze_b2.py as script; new in 0.2.0)
- Backup a postgres database to B2 (use script pgtob2.sh; new in 0.2.0)
- Optionally cache media files locally for immediate access or for long time faster access.

Running Tests
-------------

Does the code actually work?

::

    source <YOURVIRTUALENV>/bin/activate
    (myenv) $ pip install -r requirements_test.txt
    (myenv) $ tox

Credits
-------

Tools used in rendering this package:

*  b2sdk_
*  cookiecutter_
*  `cookiecutter-djangopackage`_

.. _b2sdk: https://github.com/Backblaze/b2-sdk-python
.. _cookiecutter: https://github.com/audreyr/cookiecutter
.. _`cookiecutter-djangopackage`: https://github.com/pydanny/cookiecutter-djangopackage




History
-------

0.7.0 (2020-12-29)
++++++++++++++++++

* new Django setting B2_FORCE_UNIQUE and new underlaying constructor parameter BackBlazeB2(force_unique=True)

0.6.2 (2020-11-04)
++++++++++++++++++

* B2Storage() initializes as the settings.DEFAULT_FILE_STORAGE if 'B2Storage' string is not inside
  can be used together with @override_settings(DEFAULT_FILE_STORAGE='django.core.files.storage.FileSystemStorage')
  see https://github.com/pyutil/django-b2/issues/4

0.6.0 (2020-05-28)
++++++++++++++++++

* lazy loading, to avoid running code during collectstatic,.. - https://github.com/pyutil/django-b2/issues/3

0.5.5 (2020-05-24)
++++++++++++++++++

* bugfix: upload on Windows, thx Same Weaver, https://github.com/pyutil/django-b2/issues/2
* Linux abs filenames: leading "/" will be removed so we can use local abs names 1:1 to upload to b2 (in Windows: C:/.. is valid name)

0.5.0 (2020-02-17)
++++++++++++++++++

* can work with django-tenant schemas, tenant aware storage django_b2.tenant_storage.TenantB2Storage

0.4.0 (2020-02-10)
++++++++++++++++++

* older local media (see B2_LOCAL_MEDIA) can be cleared with management command b2_clear_local_media
* B2_LOCAL_CACHE setting renamed to B2_LOCAL_MEDIA, possible values changed to ="ML"

0.3.0 (2020-02-08) - do not use
+++++++++++++++++++++++++++++++

* !! new B2_LOCAL_MEDIA setting was in 0.3.0 named incompatible as B2_LOCAL_CACHE="FM"
* B2_LOCAL_MEDIA setting to make a local copy of files. So you can have local instances backuped on backblaze.
* B2_LOCAL_MEDIA prevents failures if the django application want immediately reopen the file (imagekits creating thumbnails, Wagtail is an example)

0.2.0 (2020-01-31)
++++++++++++++++++

* backblaze_b2.py can be called as script to upload single file.
* pgtob2.sh script to backup postgres database

0.1.5 (2020-01-02)
++++++++++++++++++

* No code change. Minor docs changes.

0.1.4 (2020-01-02)
++++++++++++++++++

* First release on PyPI.