Skip to main content

A library that allows easy management of "Content-Disposition" details of HTTP responses.

Project description

Content Disposition

PyPI version Run linter and tests Codecov

A library that allows easy management of 'Content-Disposition' details of HTTP responses.

So far it provides:

Installation

  1. Install using pip:
pip install content-disposition

Usage

Use the rfc5987_content_disposition function to set an HTTP response's 'Content-Type' field in any endpoint, e.g.:

# within views.py

from django.http import FileResponse
from rest_framework import viewsets
from rest_framework.decorators import action

from content_disposition import rfc5987_content_disposition

class MyViewSet(viewsets.ModelViewSet):
    ...

    @action(
        detail=True,
        methods="get",
        url_path=r"download",
    )
    def download_route(self, request, pk=None):
        """
        Assuming that self.get_object() returns a model defining
        'name = models.CharField(...)', 'file = models.FileField(...)' and 'mime = models.CharField(...)'
        whereas 'mime' represents the correct mime_type related to 'file'
        """
        instance = self.get_object()

        response = FileResponse(
            instance.file,
            content_type=instance.mime,
        )
        response["Content-Disposition"] = rfc5987_content_disposition(instance.name)

        return response
    ...

Run tests in PyCharm

The package comes with a Django test app to verify functionalities in a realistic environment. To locally run the provided test cases, e.g. in your IntelliJ IDEA, you can:

  1. Configure the interpreter
    1. Go to File -> Settings -> Project: content-disposition -> Python interpreter
    2. Add a Virtualenv Environment and configure the correct Location and check Inherit global site-packages:
      1. python interpreter config
  2. Configure the Django framework
    1. Go to File -> Settings -> Languages & Frameworks -> Django
    2. Check Enable Django Support and configure the correct project root, settings and manage script location:
      1. django_config
  3. Install the requirements by running: pip install -r requirements.txt in a terminal within your venv
  4. Right click on the tests folder and select Run 'Test:'
  5. The "Run" window should list all (successfully) executed test cases:
    1. test_results

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

content-disposition-1.2.0.tar.gz (3.8 kB view hashes)

Uploaded Source

Built Distribution

content_disposition-1.2.0-py3-none-any.whl (4.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page