Files
@ c795e1799c86
Branch filter:
Location: website/conservancy/__init__.py - annotation
c795e1799c86
1.2 KiB
text/x-python
Move secrets.json to top-level
ce6be591bde2 ce6be591bde2 ce6be591bde2 ce6be591bde2 d0464e870c1a ce6be591bde2 ce6be591bde2 ce6be591bde2 ce6be591bde2 813446c568bd ce6be591bde2 ce6be591bde2 ce6be591bde2 ce6be591bde2 ce6be591bde2 ce6be591bde2 ce6be591bde2 ce6be591bde2 ce6be591bde2 ce6be591bde2 ce6be591bde2 ce6be591bde2 ce6be591bde2 ce6be591bde2 ce6be591bde2 ce6be591bde2 ce6be591bde2 ce6be591bde2 ce6be591bde2 ce6be591bde2 ce6be591bde2 ce6be591bde2 ce6be591bde2 ce6be591bde2 ce6be591bde2 ce6be591bde2 ce6be591bde2 ce6be591bde2 ce6be591bde2 ce6be591bde2 | import hashlib
class ParameterValidator:
def __init__(self, given_hash_or_params, params_hash_key=None):
from django.conf import settings
if params_hash_key is None:
self.given_hash = given_hash_or_params
else:
self.given_hash = given_hash_or_params.get(params_hash_key)
seed = settings.SECRET_KEY.encode('utf-8')
self.hasher = hashlib.sha256(seed)
if isinstance(self.given_hash, str):
self.hash_type = type(self.given_hash)
else:
self.hash_type = type(self.hasher.hexdigest())
self.valid = None
if not (self.given_hash and seed):
self.fail()
def __enter__(self):
self.valid = self.valid and None
return self
def __exit__(self, exc_type, exc_value, exc_tb):
if exc_type is None:
self.check()
else:
self.fail()
def validate(self, data):
self.valid = self.valid and None
self.hasher.update(data)
def check(self):
if self.valid or (self.valid is None):
self.valid = self.hash_type(self.hasher.hexdigest()) == self.given_hash
return self.valid
def fail(self):
self.valid = False
|