policy.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #
  2. # Sample Policy class definition
  3. #
  4. from polzybackend.mediators import Policy
  5. import pms
  6. class SamplePolicy(Policy):
  7. def get_partner(self, partner):
  8. result = {}
  9. if partner['is_person']:
  10. result = {
  11. 'First Name': partner['first_name'],
  12. 'Last Name': partner['last_name'],
  13. 'Birthday': partner['birthdate'],
  14. 'Occupation': partner['occupation'],
  15. 'Occupation from': partner['occupation_from'],
  16. 'Previous Occupation': partner['previous_occupation'],
  17. 'Sports': ', '.join(partner['sports']),
  18. 'Health Condition': partner['health_condition'],
  19. }
  20. else:
  21. result = {
  22. 'Company Name': partner.get('company_name'),
  23. }
  24. result.update({
  25. 'Address': partner['address'],
  26. 'City': partner['city'],
  27. 'Country': partner['country'],
  28. 'Postal Code': partner['postal_code'],
  29. 'E-mail': partner['email'],
  30. 'Phone (primary)': partner['primary_phone'],
  31. 'Phone (secondary)': partner['secondary_phone'],
  32. })
  33. return result
  34. def get_insured_object(self, insured_object):
  35. if insured_object['is_person']:
  36. result = {'Type': 'Person'}
  37. result.update(self.get_partner(insured_object['partner']))
  38. else:
  39. result = {'Type': insured_object['type']}
  40. result.update(insured_object['attributes'])
  41. return result
  42. def reshape_data(self, data):
  43. self.data = {key: data[key] for key in data if not key in ['number', 'premium_payer', 'insured_object']}
  44. self.data['policy_number'] = data['number']
  45. self.data['premium_payer'] = self.get_partner(data['premium_payer'])
  46. self.data['insured_object'] = self.get_insured_object(data['insured_object'])
  47. self.data['possible_activities'] = pms.get_activities(self.data['status'])
  48. def fetch(self):
  49. # fetch policy data from Policy Management System
  50. data = pms.get(self.number, self.effective_date)
  51. if data:
  52. # update attributes
  53. self.number = data['number']
  54. self.effective_date = data['effective_date']
  55. # reshape data if needed
  56. self.reshape_data(data)
  57. return True
  58. return False
  59. def executeActivity(self, data):
  60. print(f'*** EXECUTE ACTIVITY:\n{data}')
  61. return pms.execute_activity(self.number, data)