Django

Code

Show
Ignore:
Timestamp:
07/10/08 15:47:18 (6 months ago)
Author:
brosner
Message:

newforms-admin: Merged from trunk up to [7877].

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/branches/newforms-admin

    • Property svnmerge-integrated changed from /django/trunk:1-4345,4350-4357,4359-4365,4371-4372,4374-4377,4380-4386,4388,4390-4391,4400-4402,4404-4408,4410,4412-4419,4426-4427,4430-4432,4434,4441,4443-4444,4446-4447,4450,4452-4453,4455-4458,4476,4503,4546,4564-4569,4580-4586,4617,4630,4641-6390,6392-7852 to /django/trunk:1-4345,4350-4357,4359-4365,4371-4372,4374-4377,4380-4386,4388,4390-4391,4400-4402,4404-4408,4410,4412-4419,4426-4427,4430-4432,4434,4441,4443-4444,4446-4447,4450,4452-4453,4455-4458,4476,4503,4546,4564-4569,4580-4586,4617,4630,4641-6390,6392-7880
  • django/branches/newforms-admin/django/http/multipartparser.py

    r7815 r7881  
    137137                    # we hit the next boundary/part of the multipart content. 
    138138                    self.handle_file_complete(old_field_name, counters) 
     139                    old_field_name = None 
    139140 
    140141                try: 
  • django/branches/newforms-admin/django/http/utils.py

    r7351 r7881  
    3232        response.content = '' 
    3333    return response 
     34 
     35def fix_IE_for_attach(request, response): 
     36    """ 
     37    This function will prevent Django from serving a Content-Disposition header 
     38    while expecting the browser to cache it (only when the browser is IE). This 
     39    leads to IE not allowing the client to download. 
     40    """ 
     41    if 'MSIE' not in request.META.get('HTTP_USER_AGENT', '').upper(): 
     42        return response 
     43 
     44    offending_headers = ('no-cache', 'no-store') 
     45    if response.has_header('Content-Disposition'): 
     46        try: 
     47            del response['Pragma'] 
     48        except KeyError: 
     49            pass 
     50        if response.has_header('Cache-Control'): 
     51            cache_control_values = [value.strip() for value in 
     52                    response['Cache-Control'].split(',') 
     53                    if value.strip().lower() not in offending_headers] 
     54 
     55            if not len(cache_control_values): 
     56                del response['Cache-Control'] 
     57            else: 
     58                response['Cache-Control'] = ', '.join(cache_control_values) 
     59 
     60    return response 
     61 
     62def fix_IE_for_vary(request, response): 
     63    """ 
     64    This function will fix the bug reported at 
     65    http://support.microsoft.com/kb/824847/en-us?spid=8722&sid=global 
     66    by clearing the Vary header whenever the mime-type is not safe 
     67    enough for Internet Explorer to handle.  Poor thing. 
     68    """ 
     69    if 'MSIE' not in request.META.get('HTTP_USER_AGENT', '').upper(): 
     70        return response 
     71 
     72    # These mime-types that are decreed "Vary-safe" for IE: 
     73    safe_mime_types = ('text/html', 'text/plain', 'text/sgml') 
     74 
     75    # The first part of the Content-Type field will be the MIME type, 
     76    # everything after ';', such as character-set, can be ignored. 
     77    if response['Content-Type'].split(';')[0] not in safe_mime_types: 
     78        try: 
     79            del response['Vary'] 
     80        except KeyError: 
     81            pass 
     82 
     83    return response 
     84