Files
@ 9b48cc94e651
Branch filter:
Location: website/www/conservancy/__init__.py - annotation
9b48cc94e651
1.5 KiB
text/x-python
Continuing saga of the sizing chart problems for original shirts
Gildan removed the sizing chart entirely from their website again
after yet another redesign. Originally, we deep-linked into files in
their CDN for the charts, but it appears that in 5c72071 that I
introduced cut-and-paste error on the sizing charts. I cannot find
the original links, but finally I simply decided we'd mirror the
files in our CDN, which is where these now link to.
I suspect that I didn't do this to start for worrying about copyright
infringement, but upon second thought, I think it's very reasonably
fair use for us to distribute these images. We bought a lot of
t-shirts from Gildan and just trying to sell through.
Gildan removed the sizing chart entirely from their website again
after yet another redesign. Originally, we deep-linked into files in
their CDN for the charts, but it appears that in 5c72071 that I
introduced cut-and-paste error on the sizing charts. I cannot find
the original links, but finally I simply decided we'd mirror the
files in our CDN, which is where these now link to.
I suspect that I didn't do this to start for worrying about copyright
infringement, but upon second thought, I think it's very reasonably
fair use for us to distribute these images. We bought a lot of
t-shirts from Gildan and just trying to sell through.
31e51a774223 6fe13959a3b3 6fe13959a3b3 6fe13959a3b3 8fec6023e964 8fec6023e964 66dbfac066b0 66dbfac066b0 66dbfac066b0 66dbfac066b0 4fa0f8343c20 4fa0f8343c20 4fa0f8343c20 4fa0f8343c20 4fa0f8343c20 4fa0f8343c20 69725698aeae 4fa0f8343c20 4fa0f8343c20 4fa0f8343c20 4fa0f8343c20 4fa0f8343c20 4fa0f8343c20 4fa0f8343c20 4fa0f8343c20 4fa0f8343c20 4fa0f8343c20 4fa0f8343c20 4fa0f8343c20 4fa0f8343c20 4fa0f8343c20 4fa0f8343c20 4fa0f8343c20 4fa0f8343c20 4fa0f8343c20 4fa0f8343c20 4fa0f8343c20 4fa0f8343c20 4fa0f8343c20 4fa0f8343c20 4fa0f8343c20 4fa0f8343c20 4fa0f8343c20 4fa0f8343c20 4fa0f8343c20 4fa0f8343c20 4fa0f8343c20 | from builtins import object
import hashlib
from django.conf import settings
from django.template import RequestContext
# This is backwards compatibilty support for a custom function we wrote
# ourselves that is no longer necessary in modern Django.
from django.shortcuts import render as render_template_with_context
class ParameterValidator(object):
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 = getattr(settings, 'CONSERVANCY_SECRET_KEY', '').encode('utf-8')
self.hasher = hashlib.sha256(seed)
if isinstance(self.given_hash, basestring):
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
|