Ticket #8570: formtools_fix_indentation_r8596.diff

File formtools_fix_indentation_r8596.diff, 2.8 KB (added by Manuel Saelices, 16 years ago)

Now it's a right patch

  • django/contrib/formtools/utils.py

     
    88from django.forms import BooleanField
    99
    1010def security_hash(request, form, *args):
    11         """
    12         Calculates a security hash for the given Form instance.
     11    """
     12    Calculates a security hash for the given Form instance.
    1313
    14         This creates a list of the form field names/values in a deterministic
    15         order, pickles the result with the SECRET_KEY setting, then takes an md5
    16         hash of that.
    17         """
    18         # Ensure that the hash does not change when a BooleanField's bound
    19         # data is a string `False' or a boolean False.
    20         # Rather than re-coding this special behaviour here, we
    21         # create a dummy BooleanField and call its clean method to get a
    22         # boolean True or False verdict that is consistent with
    23         # BooleanField.clean()
    24         dummy_bool = BooleanField(required=False)
    25         def _cleaned_data(bf):
    26             if isinstance(bf.field, BooleanField):
    27                 return dummy_bool.clean(bf.data)
    28             return bf.data
    29        
    30         data = [(bf.name, _cleaned_data(bf) or '') for bf in form]
    31         data.extend(args)
    32         data.append(settings.SECRET_KEY)
    33        
    34         # Use HIGHEST_PROTOCOL because it's the most efficient. It requires
    35         # Python 2.3, but Django requires 2.3 anyway, so that's OK.
    36         pickled = pickle.dumps(data, pickle.HIGHEST_PROTOCOL)
    37        
    38         return md5_constructor(pickled).hexdigest()
     14    This creates a list of the form field names/values in a deterministic
     15    order, pickles the result with the SECRET_KEY setting, then takes an md5
     16    hash of that.
     17    """
     18    # Ensure that the hash does not change when a BooleanField's bound
     19    # data is a string `False' or a boolean False.
     20    # Rather than re-coding this special behaviour here, we
     21    # create a dummy BooleanField and call its clean method to get a
     22    # boolean True or False verdict that is consistent with
     23    # BooleanField.clean()
     24    dummy_bool = BooleanField(required=False)
     25    def _cleaned_data(bf):
     26        if isinstance(bf.field, BooleanField):
     27            return dummy_bool.clean(bf.data)
     28        return bf.data
    3929
     30    data = [(bf.name, _cleaned_data(bf) or '') for bf in form]
     31    data.extend(args)
     32    data.append(settings.SECRET_KEY)
     33
     34    # Use HIGHEST_PROTOCOL because it's the most efficient. It requires
     35    # Python 2.3, but Django requires 2.3 anyway, so that's OK.
     36    pickled = pickle.dumps(data, pickle.HIGHEST_PROTOCOL)
     37
     38    return md5_constructor(pickled).hexdigest()
     39 Sin fin-de-línea al final del archivo
Back to Top