'Returns a 9 digits Dutch SSN called "burgerservicenummer (BSN)".
the Dutch "burgerservicenummer (BSN)" needs to pass the "11-proef",
which is a check digit approach; this function essentially reverses
the checksum steps to create a random valid BSN (which is 9 digits).'

@classmethod
def ssn(cls):

    def _checksum(digits):
        factors = (9, 8, 7, 6, 5, 4, 3, 2, (-1))
        s = 0
        for i in range(len(digits)):
            s += (digits[i] * factors[i])
        return s
    while True:
        digits = random.sample(range(10), 8)
        s = _checksum(digits)
        digits.append(((s % 11) % 10))
        if (0 == (_checksum(digits) % 11)):
            break
    bsn = u''.join([str(e) for e in digits])
    return bsn
