__init__.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. # coding=utf-8
  2. from .. import BaseProvider
  3. import itertools
  4. class Provider(BaseProvider):
  5. """
  6. This provider is a collection of functions to generate personal profiles and identities.
  7. """
  8. def simple_profile(self, sex=None):
  9. """
  10. Generates a basic profile with personal informations
  11. """
  12. SEX = ["F", "M"]
  13. if sex not in SEX:
  14. sex = self.random_element(SEX)
  15. if sex == 'F':
  16. name = self.generator.name_female()
  17. elif sex == 'M':
  18. name = self.generator.name_male()
  19. return {
  20. "username": self.generator.user_name(),
  21. "name": name,
  22. "sex": sex,
  23. "address": self.generator.address(),
  24. "mail": self.generator.free_email(),
  25. #"password":self.generator.password()
  26. "birthdate": self.generator.date_of_birth(),
  27. }
  28. def profile(self, fields=None, sex=None):
  29. """
  30. Generates a complete profile.
  31. If "fields" is not empty, only the fields in the list will be returned
  32. """
  33. if fields is None:
  34. fields = []
  35. d = {
  36. "job": self.generator.job(),
  37. "company": self.generator.company(),
  38. "ssn": self.generator.ssn(),
  39. "residence": self.generator.address(),
  40. "current_location": (self.generator.latitude(), self.generator.longitude()),
  41. "blood_group": "".join(self.random_element(list(itertools.product(["A", "B", "AB", "O"], ["+", "-"])))),
  42. "website": [self.generator.url() for _ in range(1, self.random_int(2, 5))]
  43. }
  44. d = dict(d, **self.generator.simple_profile(sex))
  45. # field selection
  46. if len(fields) > 0:
  47. d = dict((k, v) for (k, v) in d.items() if k in fields)
  48. return d