Changeset 9019 for django/trunk/django/contrib/formtools
- Timestamp:
- 09/14/08 02:04:40 (4 months ago)
- Files:
-
- django/trunk/django/contrib/formtools/utils.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/trunk/django/contrib/formtools/utils.py
r8715 r9019 3 3 except ImportError: 4 4 import pickle 5 5 6 6 from django.conf import settings 7 7 from django.utils.hashcompat import md5_constructor … … 9 9 10 10 def 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. 13 13 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 19 data = [(bf.name, bf.field.clean(bf.data) or '') for bf in form] 20 data.extend(args) 21 data.append(settings.SECRET_KEY) 22 23 # Use HIGHEST_PROTOCOL because it's the most efficient. It requires 24 # Python 2.3, but Django requires 2.3 anyway, so that's OK. 25 pickled = pickle.dumps(data, pickle.HIGHEST_PROTOCOL) 26 27 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 """ 28 18 19 data = [(bf.name, bf.field.clean(bf.data) or '') for bf in form] 20 data.extend(args) 21 data.append(settings.SECRET_KEY) 22 23 # Use HIGHEST_PROTOCOL because it's the most efficient. It requires 24 # Python 2.3, but Django requires 2.3 anyway, so that's OK. 25 pickled = pickle.dumps(data, pickle.HIGHEST_PROTOCOL) 26 27 return md5_constructor(pickled).hexdigest() 28
