trex-model 1.6.11__tar.gz → 1.6.12__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of trex-model might be problematic. Click here for more details.

Files changed (67) hide show
  1. {trex_model-1.6.11 → trex_model-1.6.12}/PKG-INFO +1 -1
  2. {trex_model-1.6.11 → trex_model-1.6.12}/setup.py +1 -1
  3. {trex_model-1.6.11 → trex_model-1.6.12}/trex_model.egg-info/PKG-INFO +1 -1
  4. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/customer_models.py +8 -3
  5. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/merchant_helpers.py +71 -58
  6. {trex_model-1.6.11 → trex_model-1.6.12}/LICENSE +0 -0
  7. {trex_model-1.6.11 → trex_model-1.6.12}/MANIFEST.in +0 -0
  8. {trex_model-1.6.11 → trex_model-1.6.12}/README.md +0 -0
  9. {trex_model-1.6.11 → trex_model-1.6.12}/setup.cfg +0 -0
  10. {trex_model-1.6.11 → trex_model-1.6.12}/trex_model.egg-info/SOURCES.txt +0 -0
  11. {trex_model-1.6.11 → trex_model-1.6.12}/trex_model.egg-info/dependency_links.txt +0 -0
  12. {trex_model-1.6.11 → trex_model-1.6.12}/trex_model.egg-info/requires.txt +0 -0
  13. {trex_model-1.6.11 → trex_model-1.6.12}/trex_model.egg-info/top_level.txt +0 -0
  14. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/__init__.py +0 -0
  15. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/conf.py +0 -0
  16. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/__init__.py +0 -0
  17. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/__init__.py +0 -0
  18. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/admin_models.py +0 -0
  19. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/analytic_models.py +0 -0
  20. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/app_models.py +0 -0
  21. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/coporate_models.py +0 -0
  22. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/customer_model_helpers.py +0 -0
  23. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/fb_subsriber_models.py +0 -0
  24. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/helper/__init__.py +0 -0
  25. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/helper/reward_model_helpers.py +0 -0
  26. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/helper/reward_transaction_helper.py +0 -0
  27. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/helper/sales_transaction_helpers.py +0 -0
  28. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/import_models.py +0 -0
  29. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/inventory_model.py +0 -0
  30. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/loyalty_models.py +0 -0
  31. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/lucky_draw_models.py +0 -0
  32. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/marketing_models.py +0 -0
  33. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/membership_models.py +0 -0
  34. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/merchant_models.py +0 -0
  35. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/merchant_promotion_models.py +0 -0
  36. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/message_model_helper.py +0 -0
  37. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/message_models.py +0 -0
  38. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/model_decorators.py +0 -0
  39. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/ndb_models.py +0 -0
  40. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/partnership_models.py +0 -0
  41. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/pos_models.py +0 -0
  42. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/prepaid_models.py +0 -0
  43. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/product_models.py +0 -0
  44. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/program_models.py +0 -0
  45. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/rating_models.py +0 -0
  46. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/recruit_models.py +0 -0
  47. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/redeem_models.py +0 -0
  48. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/redemption_catalogue_models.py +0 -0
  49. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/referral_program_model.py +0 -0
  50. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/reward_models.py +0 -0
  51. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/spending_base_program_model.py +0 -0
  52. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/support_models.py +0 -0
  53. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/system_models.py +0 -0
  54. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/task_models.py +0 -0
  55. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/test_models.py +0 -0
  56. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/transaction_models.py +0 -0
  57. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/user_models.py +0 -0
  58. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/voucher_models.py +0 -0
  59. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/model_decorator.py +0 -0
  60. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/prepaid_helpers.py +0 -0
  61. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/pos_conf.py +0 -0
  62. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/program_conf.py +0 -0
  63. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/utils/__init__.py +0 -0
  64. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/utils/gcloud/__init__.py +0 -0
  65. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/utils/gcloud/datastore_util.py +0 -0
  66. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/utils/model/__init__.py +0 -0
  67. {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/utils/model/model_util.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: trex_model
3
- Version: 1.6.11
3
+ Version: 1.6.12
4
4
  Summary: TRex database module package
5
5
  Home-page: https://bitbucket.org/lokjac/trex-model
6
6
  Author: Jack Lok
@@ -3,7 +3,7 @@ with open("README.md", "r") as fh:
3
3
  long_description = fh.read()
4
4
  setuptools.setup(
5
5
  name='trex_model',
6
- version='1.6.11',
6
+ version='1.6.12',
7
7
  author="Jack Lok",
8
8
  author_email="sglok77@gmail.com",
9
9
  description="TRex database module package",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: trex-model
3
- Version: 1.6.11
3
+ Version: 1.6.12
4
4
  Summary: TRex database module package
5
5
  Home-page: https://bitbucket.org/lokjac/trex-model
6
6
  Author: Jack Lok
@@ -84,7 +84,7 @@ class Customer(BaseNModel, DictModel, FullTextSearchable):
84
84
  'entitled_birthday_reward_summary', 'tier_membership_key',
85
85
  'registered_outlet_key', 'merchant_account_key',
86
86
  'registered_datetime', 'modified_datetime',
87
- 'registered_user_acct','referral_code',
87
+ 'registered_user_acct','referral_code', 'is_referred_by_friend',
88
88
 
89
89
  ]
90
90
 
@@ -157,7 +157,11 @@ class Customer(BaseNModel, DictModel, FullTextSearchable):
157
157
  def tier_membership_entity(self):
158
158
  if self.tier_membership:
159
159
  return MerchantTierMembership.fetch(self.tier_membership.urlsafe())
160
-
160
+
161
+ @property
162
+ def is_referred_by_friend(self):
163
+ return self.referrer_code is not None and is_not_empty(self.referrer_code)
164
+
161
165
  @staticmethod
162
166
  def update_KPI(customer_acct, tags_list=None, memberships_list=None, tier_membership_key=None):
163
167
  if isinstance(tags_list, string_types):
@@ -380,7 +384,7 @@ class Customer(BaseNModel, DictModel, FullTextSearchable):
380
384
  customer.put()
381
385
 
382
386
  @classmethod
383
- def create_from_user(cls, outlet, user_acct, merchant_reference_code=None, merchant_acct=None):
387
+ def create_from_user(cls, outlet, user_acct, merchant_reference_code=None, merchant_acct=None, referrer_code=None):
384
388
  registered_merchant_acct = outlet.merchant_acct_entity if merchant_acct is None else merchant_acct
385
389
  created_customer = cls(
386
390
  parent=user_acct.create_ndb_key(),
@@ -396,6 +400,7 @@ class Customer(BaseNModel, DictModel, FullTextSearchable):
396
400
  birth_date_date_str = user_acct.birth_date_date_str,
397
401
  birth_day_in_year = user_acct.birth_day_in_year,
398
402
  merchant_reference_code = merchant_reference_code,
403
+ referrer_code = referrer_code,
399
404
  merchant_acct = registered_merchant_acct.create_ndb_key()
400
405
  )
401
406
 
@@ -10,30 +10,30 @@ from trexlib.utils.crypto_util import aes_encrypt_json
10
10
 
11
11
  logger = logging.getLogger('helper')
12
12
 
13
- def construct_merchant_acct_info(merchant_acct, referrer_code=None):
13
+ def construct_merchant_acct_info(merchant_acct, referrer_code=None, read_minimum=False):
14
14
  account_settings = {
15
15
  'account_code' : merchant_acct.account_code,
16
16
  'currency' : merchant_acct.currency_code,
17
17
  'locale' : merchant_acct.locale,
18
18
  'gmt_hour' : merchant_acct.gmt_hour,
19
19
  }
20
-
21
- outlet_list = Outlet.list_by_merchant_acct(merchant_acct)
22
- outlet_json_list = []
23
- for o in outlet_list:
24
- if o.is_physical_store:
25
- outlet_info = construct_outlet_info(o)
26
- outlet_info['industry_type'] = merchant_acct.industry
27
- outlet_json_list.append(outlet_info)
20
+ if read_minimum==False:
21
+ outlet_list = Outlet.list_by_merchant_acct(merchant_acct)
22
+ outlet_json_list = []
23
+ for o in outlet_list:
24
+ if o.is_physical_store:
25
+ outlet_info = construct_outlet_info(o)
26
+ outlet_info['industry_type'] = merchant_acct.industry
27
+ outlet_json_list.append(outlet_info)
28
28
 
29
+ if read_minimum==False:
30
+ banner_file_listing = BannerFile.list_by_merchant_acct(merchant_acct)
31
+ banner_listing = []
32
+ if banner_file_listing:
33
+ for banner_file in banner_file_listing:
34
+ banner_listing.append(banner_file.banner_file_public_url)
35
+
29
36
 
30
- banner_file_listing = BannerFile.list_by_merchant_acct(merchant_acct)
31
- banner_listing = []
32
- if banner_file_listing:
33
- for banner_file in banner_file_listing:
34
- banner_listing.append(banner_file.banner_file_public_url)
35
-
36
-
37
37
  invoice_no_generation = InvoiceNoGeneration.getByMerchantAcct(merchant_acct)
38
38
 
39
39
  if invoice_no_generation:
@@ -41,49 +41,55 @@ def construct_merchant_acct_info(merchant_acct, referrer_code=None):
41
41
  'invoice_no_generators' : invoice_no_generation.generators_list,
42
42
 
43
43
  }
44
- referral_program_settings = None
45
- if merchant_acct.program_settings is not None:
46
- referral_program_settings = merchant_acct.program_settings.get('referral_program', {})
44
+ if read_minimum==False:
45
+ referral_program_settings = None
46
+ if merchant_acct.program_settings is not None:
47
+ referral_program_settings = merchant_acct.program_settings.get('referral_program', {})
47
48
 
48
49
 
49
50
 
50
- merchant_news_list=[]
51
51
 
52
- if merchant_acct.published_news_configuration:
53
- merchant_news_list = merchant_acct.published_news_configuration['news']
54
-
55
- for news in merchant_news_list:
56
- logger.debug('news public url=%s', news.get('news_public_url'))
52
+ merchant_news_list=[]
57
53
 
58
- published_redemption_catalogue_configuration = merchant_acct.published_redemption_catalogue_configuration
59
- catalogues_list = []
60
- if published_redemption_catalogue_configuration:
61
- catalogues_list = published_redemption_catalogue_configuration.get('catalogues')
54
+ if read_minimum==False:
55
+ if merchant_acct.published_news_configuration:
56
+ merchant_news_list = merchant_acct.published_news_configuration['news']
57
+
58
+ for news in merchant_news_list:
59
+ logger.debug('news public url=%s', news.get('news_public_url'))
62
60
 
63
- if len(catalogues_list)>0:
64
- for catalogue in catalogues_list:
65
- catalogue['items'] = __resolve_catalogue_items_details(catalogue.get('items'), merchant_acct.published_voucher_configuration.get('vouchers'))
66
-
61
+ if read_minimum==False:
62
+ published_redemption_catalogue_configuration = merchant_acct.published_redemption_catalogue_configuration
63
+ catalogues_list = []
64
+ if published_redemption_catalogue_configuration:
65
+ catalogues_list = published_redemption_catalogue_configuration.get('catalogues')
66
+
67
+ if len(catalogues_list)>0:
68
+ for catalogue in catalogues_list:
69
+ catalogue['items'] = __resolve_catalogue_items_details(catalogue.get('items'), merchant_acct.published_voucher_configuration.get('vouchers'))
70
+
67
71
 
68
- partner_redemption_catalogue_configuration = merchant_acct.partner_redemption_catalogue_configuration
69
-
70
- if partner_redemption_catalogue_configuration:
71
- partner_catalogues_list = partner_redemption_catalogue_configuration.get('catalogues')
72
+ if read_minimum==False:
73
+ partner_redemption_catalogue_configuration = merchant_acct.partner_redemption_catalogue_configuration
74
+
75
+ if partner_redemption_catalogue_configuration:
76
+ partner_catalogues_list = partner_redemption_catalogue_configuration.get('catalogues')
77
+
78
+ if len(partner_catalogues_list)>0:
79
+ for catalogue in partner_catalogues_list:
80
+ catalogue['from_partner'] = True
81
+ partner_merchant_account = MerchantAcct.get_or_read_from_cache(catalogue['merchant_acct_key'])
82
+ catalogue['items'] = __resolve_catalogue_items_details(catalogue.get('items'), partner_merchant_account.published_voucher_configuration.get('vouchers'))
72
83
 
73
- if len(partner_catalogues_list)>0:
74
- for catalogue in partner_catalogues_list:
75
- catalogue['from_partner'] = True
76
- partner_merchant_account = MerchantAcct.get_or_read_from_cache(catalogue['merchant_acct_key'])
77
- catalogue['items'] = __resolve_catalogue_items_details(catalogue.get('items'), partner_merchant_account.published_voucher_configuration.get('vouchers'))
78
-
79
- catalogues_list.extend(partner_catalogues_list)
84
+ catalogues_list.extend(partner_catalogues_list)
80
85
 
81
86
  partner_merchants_list = []
82
87
 
83
- approved_partner_merchant_configuration = merchant_acct.approved_partner_merchant_configuration
84
- if approved_partner_merchant_configuration and approved_partner_merchant_configuration.get('partners'):
85
- partner_merchants_list = list(approved_partner_merchant_configuration.get('partners').values())
86
-
88
+ if read_minimum==False:
89
+ approved_partner_merchant_configuration = merchant_acct.approved_partner_merchant_configuration
90
+ if approved_partner_merchant_configuration and approved_partner_merchant_configuration.get('partners'):
91
+ partner_merchants_list = list(approved_partner_merchant_configuration.get('partners').values())
92
+
87
93
 
88
94
 
89
95
  info = {
@@ -136,6 +142,12 @@ def construct_merchant_acct_info(merchant_acct, referrer_code=None):
136
142
  referrer_code = referrer_code,
137
143
  )
138
144
 
145
+ referrer_merchant_and_friend_code = conf.REFERRER_MERCHANT_AND_FRIEND_CODE.format(
146
+ #referrer_data = encrypted_referrer_data
147
+ merchant_acct_code = merchant_acct.account_code,
148
+ referrer_code = referrer_code,
149
+ )
150
+
139
151
  logger.debug('refer_a_friend_deep_link=%s', refer_a_friend_deep_link)
140
152
 
141
153
  refer_a_friend_message = refer_a_friend_message.format(
@@ -146,16 +158,17 @@ def construct_merchant_acct_info(merchant_acct, referrer_code=None):
146
158
  logger.debug('refer_a_friend_message=%s', refer_a_friend_message)
147
159
 
148
160
  info['referral_program_settings'] = {
149
- 'program_count' : merchant_acct.effective_referral_program_count,
150
- 'referrer_promote_title' : referral_program_settings.get('referrer_promote_title'),
151
- 'referrer_promote_desc' : referral_program_settings.get('referrer_promote_desc'),
152
- 'referrer_promote_image' : referral_program_settings.get('referrer_promote_image', conf.REFERRAL_DEFAULT_PROMOTE_IMAGE),
153
- 'referee_promote_title' : referral_program_settings.get('referee_promote_title'),
154
- 'referee_promote_desc' : referral_program_settings.get('referee_promote_desc'),
155
- 'referee_promote_image' : referral_program_settings.get('referee_promote_image'),
156
- 'refer_a_friend_url' : refer_a_friend_url,
157
- 'refer_a_friend_message' : refer_a_friend_message,
158
- 'refer_a_friend_deep_link' : refer_a_friend_deep_link,
161
+ 'program_count' : merchant_acct.effective_referral_program_count,
162
+ 'referrer_promote_title' : referral_program_settings.get('referrer_promote_title'),
163
+ 'referrer_promote_desc' : referral_program_settings.get('referrer_promote_desc'),
164
+ 'referrer_promote_image' : referral_program_settings.get('referrer_promote_image', conf.REFERRAL_DEFAULT_PROMOTE_IMAGE),
165
+ 'referee_promote_title' : referral_program_settings.get('referee_promote_title'),
166
+ 'referee_promote_desc' : referral_program_settings.get('referee_promote_desc'),
167
+ 'referee_promote_image' : referral_program_settings.get('referee_promote_image'),
168
+ 'refer_a_friend_url' : refer_a_friend_url,
169
+ 'refer_a_friend_message' : refer_a_friend_message,
170
+ 'refer_a_friend_deep_link' : refer_a_friend_deep_link,
171
+ 'referrer_merchant_and_friend_code' : referrer_merchant_and_friend_code,
159
172
  }
160
173
 
161
174
 
File without changes
File without changes
File without changes
File without changes