Advertisement
Guest User

Untitled

a guest
Jan 20th, 2019
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.72 KB | None | 0 0
  1. class Rijksregisternummer:
  2.  
  3. def __init__(self, nummer):
  4. assert isinstance(nummer, str), 'ongeldig type'
  5. self.nummer1 = ''
  6. lengte = 0
  7. for teken in nummer:
  8. if teken.isdigit():
  9. self.nummer1 += teken
  10. lengte += 1
  11. self.nummer2 = list(self.nummer1)
  12. if lengte != 1:
  13. mv = 's'
  14. else:
  15. mv = ''
  16. assert lengte == 11, f'ongeldig formaat ({lengte} cijfer{mv})'
  17.  
  18. def __repr__(self):
  19. return f"Rijksregisternummer('{self.nummer1}')"
  20.  
  21. def __str__(self):
  22. for i in (4, 2, -2):
  23. self.nummer2.insert(i, '.')
  24. self.nummer2.insert(8, '-')
  25. return ''.join(self.nummer2)
  26.  
  27. def geslacht(self):
  28. return 'man' if int(self.nummer1[6: 9]) % 2 else 'vrouw'
  29.  
  30. def controlegetal(self, y2k=False):
  31. n = int('2' + self.nummer1[:-2]) if y2k else int(self.nummer1[:-2])
  32. return 97 - (n % 97)
  33.  
  34. def geboortedatum(self):
  35. import datetime
  36.  
  37. year = f'20{self.nummer1[:2]}' if self.controlegetal(y2k=True) == int(self.nummer1[-2:]) \
  38. else f'19{self.nummer1[:2]}'
  39.  
  40. try:
  41. datum = datetime.date(int(year), int(self.nummer1[2:4]), int(self.nummer1[4:6]))
  42. except ValueError:
  43. datum = False
  44. assert datum, 'ongeldige geboortedatum'
  45.  
  46. return datum
  47.  
  48. def geldig(self):
  49. if not (self.controlegetal() == int(self.nummer1[-2:])
  50. or self.controlegetal(y2k=True) == int(self.nummer1[-2:])):
  51. return False
  52.  
  53. try:
  54. self.geboortedatum()
  55. except AssertionError:
  56. return False
  57.  
  58. return True
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement