Advertisement
Guest User

Untitled

a guest
Mar 25th, 2019
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.73 KB | None | 0 0
  1. from mimesis import Generic
  2. from mimesis.builtins import UkraineSpecProvider
  3. from mimesis.enums import Gender
  4. from mimesis_factory import MimesisField
  5. from mimesis.builtins import UkraineSpecProvider, BrazilSpecProvider, RussiaSpecProvider
  6. from faker import Faker
  7. from datetime import date
  8.  
  9. from mimesis.enums import Gender
  10. from mimesis_factory import MimesisField
  11.  
  12. from helpers.date_helper import DateHelper
  13. from transliterate import translit
  14. import factory.fuzzy
  15. from data.test_data import gender as patient_gender_data, ua_patronymic
  16.  
  17.  
  18. class Patient:
  19. """ Party (staff) model """
  20.  
  21. def __init__(
  22. self,
  23. h24_id="",
  24. name="",
  25. midname="",
  26. lastname="",
  27. email="",
  28. password="",
  29. eh_password="",
  30. phone_type="",
  31. phone="",
  32. gender="",
  33. birth_date="",
  34. birth_country="",
  35. birth_city="",
  36. secret_word="",
  37. preferred_way_communication="",
  38. # emergency_contact=None,
  39. ):
  40. self.h24_id = h24_id
  41. self.name = name
  42. self.midname = midname
  43. self.lastname = lastname
  44. self.email = email
  45. self.phone_type = phone_type
  46. self.phone = phone
  47. self.password = password
  48. self.eh_password = eh_password
  49. self.gender = gender
  50. self.birth_date = birth_date
  51. self.birth_country = birth_country
  52. self.birth_city = birth_city
  53. self.secret_word = secret_word
  54. self.preferred_way_communication = preferred_way_communication
  55. # if emergency_contact:
  56. # self.emergency_contact = EmergencyContact(**education)
  57.  
  58. @property
  59. def user_name(self):
  60. return self.name + " " + self.lastname
  61.  
  62. @property
  63. def full_name(self):
  64. return self.lastname + " " + self.name + " " + self.midname
  65.  
  66. @property
  67. def age(self):
  68. date_h = DateHelper()
  69. full_age = date_h.calculate_age(self.birth_date)
  70. if full_age.years < 1:
  71. return full_age.months
  72. return full_age.years
  73.  
  74. def __repr__(self):
  75. return f"{self.__class__}: h24_id={self.h24_id}, " \
  76. f"name={self.name}, midname={self.midname}, lastname={self.lastname}, " \
  77. f"email={self.email}, phone_type={self.phone_type}, phone={self.phone}, " \
  78. f"gender={self.gender}, " \
  79. f"{'birth_date=' + self.birth_date if self.birth_date else ''}, " \
  80. f"{'age=' + str(self.age) if self.birth_date else ''}, "
  81.  
  82. generic = Generic('uk')
  83. generic.add_provider(UkraineSpecProvider)
  84. uk = UkraineSpecProvider()
  85.  
  86.  
  87. # начинаем адский эксперимент
  88. class PatientFactory(factory.Factory):
  89. class Meta:
  90. model = Patient
  91.  
  92. name = MimesisField('person.name', gender=Gender.FEMALE, locale='uk')
  93. midname = factory.LazyAttribute(
  94. lambda instance: uk.patronymic(gender=Gender.FEMALE)
  95. )
  96. lastname = MimesisField('person.surname', gender=Gender.FEMALE, locale='uk')
  97. gender = factory.fuzzy.FuzzyChoice(patient_gender_data)
  98.  
  99. @factory.lazy_attribute
  100. def birth_date(self):
  101. date_h = DateHelper()
  102. b_date = fake.date_time_between_dates(
  103. datetime_start=date(1978, 1, 1),
  104. datetime_end=date(2010, 1, 1)
  105. ).date()
  106. str_date = date_h.date_to_str(b_date)
  107. return str_date
  108.  
  109. email = factory.LazyAttribute(
  110. lambda instance:
  111. f'{translit(instance.name, reversed=True).lower()}.'\
  112. f'{translit(instance.lastname, reversed=True).lower()}@yopmail.com'
  113. )
  114.  
  115.  
  116. patient1 = PatientBaseFactory()
  117. patient2 = PatientBaseFactory()
  118. patient3 = PatientBaseFactory()
  119. patient4 = PatientBaseFactory()
  120.  
  121. print(patient1)
  122. print(patient2)
  123. print(patient3)
  124. print(patient4)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement