def gen_giftcard_secret(length): charset = list('ABCDEFGHJKLMNPQRSTUVWXYZ3789') while True: code = get_random_string(length=length, allowed_chars=charset) if not banned(code) and not GiftCard.objects.filter( secret=code).exists(): return code
def _generate_random_code(prefix=None): charset = list('ABCDEFGHKLMNPQRSTUVWXYZ23456789') rnd = None while not rnd or banned(rnd): rnd = get_random_string(length=settings.ENTROPY['voucher_code'], allowed_chars=charset) if prefix: return prefix + rnd return rnd
def assign_identifier(self): charset = list('ABCDEFGHJKLMNPQRSTUVWXYZ23456789') iteration = 0 length = settings.ENTROPY['customer_identifier'] while True: code = get_random_string(length=length, allowed_chars=charset) iteration += 1 if banned(code): continue if not Customer.objects.filter(identifier=code).exists(): self.identifier = code return if iteration > 20: # Safeguard: If we don't find an unused and non-banlisted code within 20 iterations, we increase # the length. length += 1 iteration = 0