Changes between Initial Version and Version 9 of Ticket #36447


Ignore:
Timestamp:
Jun 11, 2025, 1:04:38 PM (4 months ago)
Author:
Anders Kaseorg
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #36447

    • Property Cc Rodrigo Vieira Jake Howard added
    • Property Keywords preferred media type added
    • Property Triage Stage UnreviewedAccepted
    • Property Severity NormalRelease blocker
    • Property Owner set to Jake Howard
    • Property Status newassigned
    • Property Has patch set
  • Ticket #36447 – Description

    initial v9  
    1 Consider this example from [https://www.rfc-editor.org/rfc/rfc9110.html#section-12.5.1-18 RFC 9110 §12.5.1]:
     1Consider this example from [https://www.rfc-editor.org/rfc/rfc9110.html#section-12.5.1-18 RFC 9110 §12.5.1] (adjusted for [https://www.rfc-editor.org/errata/eid7138 erratum 7138]):
    22
    33  The media type quality factor associated with a given type is determined by finding the media range with the highest precedence that matches the type. For example,
     
    1313  || image/jpeg || 0.5 ||
    1414  || text/plain;format=fixed || 0.4 ||
    15   || text/html;level=3 || 0.7 ||
     15  || text/html;level=3 || 0.3 ||
    1616
    1717Django’s `HttpRequest.get_preferred_type` fails to match this behavior.
     
    2727>>> request.get_preferred_type(['text/html', 'image/jpeg']) # expected image/jpeg (0.3 < 0.5)
    2828'text/html'
    29 >>> request.get_preferred_type(['text/html', 'text/html;level=3']) # expected text/html;level=3 (0.3 < 0.7)
    30 'text/html'
    3129>>> request.get_preferred_type(['image/jpeg', 'text/html']) # expected image/jpeg (0.5 > 0.3)
    3230'text/html'
    3331>>> request.get_preferred_type(['image/jpeg', 'text/plain;format=fixed']) # expected image/jpeg (0.5 > 0.4)
    3432'text/plain;format=fixed'
     33>>> request.get_preferred_type(['image/jpeg', 'text/html;level=3']) # expected image/jpeg (0.5 > 0.3)
     34'text/html;level=3'
    3535>>> request.get_preferred_type(['text/plain;format=fixed', 'text/plain']) # expected text/plain (0.4 < 0.7)
    3636'text/plain;format=fixed'
    3737>>> request.get_preferred_type(['text/plain;format=fixed', 'image/jpeg']) # expected image/jpeg (0.4 < 0.5)
    3838'text/plain;format=fixed'
    39 >>> request.get_preferred_type(['text/plain;format=fixed', 'text/html;level=3']) # expected text/html;level=3 (0.4 < 0.7)
    40 'text/plain;format=fixed'
    41 >>> request.get_preferred_type(['text/html;level=3', 'text/plain;format=fixed']) # expected text/html;level=3 (0.7 > 0.4)
    42 'text/plain;format=fixed'
     39>>> request.get_preferred_type(['text/html;level=3', 'image/jpeg']) # expected image/jpeg (0.3 < 0.5)
     40'text/html;level=3'
    4341}}}
Back to Top