Metadata-Version: 1.1
Name: djangorestframework-files
Version: 1.1.0
Summary: File download and upload support for Django REST framework
Home-page: https://github.com/evansmurithi/django-rest-framework-files
Author: Evans Murithi
Author-email: murithievans80@gmail.com
License: MIT License
Description: REST framework files
        ====================
        
        |build-status-image| |coverage-status-image|
        
        **File download and upload support for Django REST framework.**
        
        --------------
        
        Overview
        ========
        
        REST framework files allows you to download a file in the format used to
        render the response and also allows creation of model instances by
        uploading a file containing the model fields.
        
        Requirements
        ============
        
        -  Python (2.7, 3.5, 3.6)
        -  Django REST framework (3.4, 3.5, 3.6, 3.7, 3.8)
        
        Installation
        ============
        
        Install using ``pip``:
        
        ::
        
            pip install djangorestframework-files
        
        Example
        =======
        
        *models.py*
        
        .. code:: python
        
            from django.db import models
        
            class ABC(models.Model):
                name = models.CharField(max_length=255)
        
        *serializers.py*
        
        .. code:: python
        
            from rest_framework import serializers
        
            from .models import ABC
        
            class ABCSerializer(serializers.ModelSerializer):
                class Meta:
                    model = ABC
                    fields = '__all__'
        
        *views.py*
        
        .. code:: python
        
            from rest_framework.parsers import JSONParser, MultiPartParser
            from rest_framework_files.viewsets import ImportExportModelViewSet
        
            from .models import ABC
            from .serializers import ABCSerializer
        
            class ABCViewSet(ImportExportModelViewSet):
                queryset = ABC.objects.all()
                serializer_class = ABCSerializer
                # if filename is not provided, the view name will be used as the filename
                filename = 'ABC'
                # renderer classes used to render your content. will determine the file type of the download
                renderer_classes = (JSONParser, )
                parser_classes = (MultiPartParser, )
                # parser classes used to parse the content of the uploaded file
                file_content_parser_classes = (JSONParser, )
        
        Some third party packages that offer media type support:
        
        -  `Parsers <http://www.django-rest-framework.org/api-guide/parsers/#third-party-packages>`__
        -  `Renderers <http://www.django-rest-framework.org/api-guide/renderers/#third-party-packages>`__
        
        *urls.py*
        
        .. code:: python
        
            from rest_framework import routers
        
            from .views import ABCViewSet
        
            router = routers.ImportExportRouter()
            router.register(r'abc', ABCViewSet)
        
            urlpatterns = router.urls
        
        Downloading
        -----------
        
        To download a ``json`` file you can go to the url ``/abc/?format=json``.
        The ``format`` query parameter specifies the media type you want your
        response represented in. To download an ``xml`` file, your url would be
        ``/abc/?format=xml``. For this to work, make sure you have the
        respective ``renderers`` to render your response.
        
        Uploading
        ---------
        
        To create model instances from a file, upload a file to the url
        ``/abc/``. Make sure the content of the file can be parsed by the
        parsers specified in the ``file_content_parser_classes`` or else it will
        return a ``HTTP_415_UNSUPPORTED_MEDIA_TYPE`` error.
        
        For sample file examples you can upload, check the `assets
        folder <https://github.com/evansmurithi/django-rest-framework-files/tree/master/tests/assets>`__
        
        For more examples on how to use the viewsets or generic views, check the
        `test
        application <https://github.com/evansmurithi/django-rest-framework-files/tree/master/tests/test_app>`__
        
        .. |build-status-image| image:: https://travis-ci.org/evansmurithi/django-rest-framework-files.svg?branch=master
           :target: https://travis-ci.org/evansmurithi/django-rest-framework-files
        .. |coverage-status-image| image:: https://codecov.io/gh/evansmurithi/django-rest-framework-files/branch/master/graph/badge.svg
           :target: https://codecov.io/gh/evansmurithi/django-rest-framework-files
        
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Framework :: Django :: 1.11
Classifier: Framework :: Django :: 2.0
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: Internet :: WWW/HTTP
