'Returns 11 character Estonian personal identity code (isikukood, IK).
Age of person is between 16 and 90 years, based on local computer date.
This function assigns random sex to person.
An Estonian Personal identification code consists of 11 digits,
generally given without any whitespace or other delimiters.
The form is GYYMMDDSSSC, where G shows sex and century of birth (odd
number male, even number female, 1-2 19th century, 3-4 20th century,
5-6 21st century), SSS is a serial number separating persons born on
the same date and C a checksum.
https://en.wikipedia.org/wiki/National_identification_number#Estonia'

@classmethod
def ssn(cls):

    age = datetime.timedelta(days=random.randrange(Provider.min_age, Provider.max_age))
    birthday = (datetime.date.today() - age)
    if (birthday.year < 2000):
        ik = random.choice((u'3', u'4'))
    elif (birthday.year < 2100):
        ik = random.choice((u'5', u'6'))
    else:
        ik = random.choice((u'7', u'8'))
    ik += (u'%02d%02d%02d' % ((birthday.year % 100), birthday.month, birthday.day))
    ik += str(random.randrange(0, 999)).zfill(3)
    return (ik + str(checksum([int(ch) for ch in ik])))
