Metadata-Version: 1.1
Name: django-selectel
Version: 1.1.0
Summary: The file store in the Selectel cloud store for Django
Home-page: https://github.com/KokocGroup/django_selectel
Author: KokocGroup
Author-email: dev@kokoc.com
License: BSD
Download-URL: https://github.com/KokocGroup/django_selectel/tarball/v1.1.0
Description-Content-Type: UNKNOWN
Description: django\_selectel
        ================
        
        The file store in the `Selectel cloud
        store <https://selectel.ru/services/cloud/storage/>`__ for Django
        
        Storage and CDN creation
        ------------------------
        
        -  Log in to your personal `account <https://my.selectel.ru/login/>`__
           in Selectel.
        -  Create a `new user <https://my.selectel.ru/storage/users>`__ to work
           with the store.
        -  `Create a new <https://my.selectel.ru/storage/containers>`__ private
           or public container.
        
        Installation
        ------------
        
        Install using ``pip``...
        
        ::
        
            pip install django_selectel
        
        In ``settings.py`` add the following:
        
        ::
        
            INSTALLED_APPS = (
                ...
                'django_selectel',
            )
        
        Settings
        --------
        
        All settings are optional, you can specify them when initializing the
        storage class
        
        ::
        
            SELECTEL_STORAGE = {
                "USER": "",
                "PASSWORD": "",
                "DOMAINS": {},
                "OVERWRITE_FILES": False,
                "USE_GZ": False,
                "AUTH_URL": "https://auth.selcdn.ru/",
                "API_THRESHOLD": 30 * 60,
                "API_MAX_RETRY": 3,
                "API_RETRY_DELAY": 0.1
            }
        
            # or
        
            from django_selectel.storages import ApiStorage
        
            cdn_storage = ApiStorage(
                user="",
                password="",
                domains={},
                use_gz=False,
                overwrite_files=False
            )
        
        **USER**
        ^^^^^^^^
        
        The username of the storage that is available
        
        **PASSWORD**
        ^^^^^^^^^^^^
        
        Password from the user
        
        **DOMAINS**
        ^^^^^^^^^^^
        
        Associate a domain with a specific container. You can bind the domain in
        the container settings
        
        Example:
        
        ::
        
            "DOMAINS": {
                "my_public_container": "https://cdn.mysite.com"
            }
        
        **OVERWRITE\_FILES**
        ^^^^^^^^^^^^^^^^^^^^
        
        Allows you to overwrite files when the name is repeated
        
        **USE\_GZ**
        ^^^^^^^^^^^
        
        For the storage of files will use the algorithm of compression
        `Gzip <http://www.gzip.org/zlib/rfc-gzip.html>`__. This will reduce the
        volume of the container and transmitted traffic
        
            **Warning:** It is **not recommended for use in public containers**,
            since the files that will be downloaded directly from the CDN
            without processing will be in Gzip format
        
        **AUTH\_URL**
        ^^^^^^^^^^^^^
        
        URL to get a token to work with the API
        
        **API\_THRESHOLD**
        ^^^^^^^^^^^^^^^^^^
        
        If the token expires less than the specified time (in seconds), it
        automatically updates
        
        **API\_MAX\_RETRY**
        ^^^^^^^^^^^^^^^^^^^
        
        The maximum number of attempts to download the file. Helps avoid errors
        when the connection is not stable.
        
        **API\_RETRY\_DELAY**
        ^^^^^^^^^^^^^^^^^^^^^
        
        Delay in seconds between attempts
        
        Using
        -----
        
        In ``settings.py`` add the following:
        
        ::
        
            SELECTEL_STORAGE = {
                "USER": "MyUserName",
                "PASSWORD": "MyPassword",
            }
        
        The remaining settings can be omitted, because are not required, they
        will be used as default values if they are not passed as a class
        parameter
        
        Create a model with a file field that will work with the cloud-based
        file system
        
        ::
        
            from django.db import models
            from django_selectel.storages import ApiStorage
            from django.core.files.base import ContentFile
        
            class Image(models.Model):
                ...
                # for a public container
                file = models.FileField(upload_to='my_public_container', storage=ApiStorage()) 
                # for a private container
                file = models.FileField(upload_to='my_private_contrainer', storage=ApiStorage(use_gz=True))
        
            with open("my_image.jpg") as fh:
                Image.objects.create(
                    ...
                    file=fh
                )
            image = Image.objects.first()
            print image.file.read()
            print image.size
            image.file.delete()
        
        The first directory in the upload\_to path describes which container the
        record will be written to. So you can use an unlimited number of
        containers. You can specify a function that will return the path
        
        ::
        
            from datetime import date
            from django.db import models
            from django_selectel.storages import ApiStorage
        
            def image_upload_to(instance, filename):
                return "my_container/{:%Y-%m-%d}/{}".format(date.today(), filename)
        
            class Image(models.Model):
                ...
                file = models.FileField(upload_to=image_upload_to, storage=ApiStorage())
        
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Topic :: Internet :: WWW/HTTP
