Files @ 2b709f61e022
Branch filter:

Location: website/conservancy/__init__.py

bsturmfels
Make bin/deploy abort if there's an error with `git push`

For example, your push failed because there's upstream changes.
import hashlib

from django.conf import settings


class ParameterValidator:
    def __init__(self, given_hash_or_params, params_hash_key=None):
        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