trex-model 1.6.11__tar.gz → 1.6.13__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.13}/PKG-INFO +1 -1
  2. {trex_model-1.6.11 → trex_model-1.6.13}/setup.py +1 -1
  3. {trex_model-1.6.11 → trex_model-1.6.13}/trex_model.egg-info/PKG-INFO +1 -1
  4. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/customer_models.py +8 -3
  5. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/helper/reward_transaction_helper.py +4 -1
  6. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/user_models.py +3 -1
  7. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/merchant_helpers.py +71 -58
  8. {trex_model-1.6.11 → trex_model-1.6.13}/LICENSE +0 -0
  9. {trex_model-1.6.11 → trex_model-1.6.13}/MANIFEST.in +0 -0
  10. {trex_model-1.6.11 → trex_model-1.6.13}/README.md +0 -0
  11. {trex_model-1.6.11 → trex_model-1.6.13}/setup.cfg +0 -0
  12. {trex_model-1.6.11 → trex_model-1.6.13}/trex_model.egg-info/SOURCES.txt +0 -0
  13. {trex_model-1.6.11 → trex_model-1.6.13}/trex_model.egg-info/dependency_links.txt +0 -0
  14. {trex_model-1.6.11 → trex_model-1.6.13}/trex_model.egg-info/requires.txt +0 -0
  15. {trex_model-1.6.11 → trex_model-1.6.13}/trex_model.egg-info/top_level.txt +0 -0
  16. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/__init__.py +0 -0
  17. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/conf.py +0 -0
  18. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/__init__.py +0 -0
  19. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/__init__.py +0 -0
  20. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/admin_models.py +0 -0
  21. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/analytic_models.py +0 -0
  22. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/app_models.py +0 -0
  23. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/coporate_models.py +0 -0
  24. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/customer_model_helpers.py +0 -0
  25. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/fb_subsriber_models.py +0 -0
  26. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/helper/__init__.py +0 -0
  27. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/helper/reward_model_helpers.py +0 -0
  28. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/helper/sales_transaction_helpers.py +0 -0
  29. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/import_models.py +0 -0
  30. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/inventory_model.py +0 -0
  31. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/loyalty_models.py +0 -0
  32. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/lucky_draw_models.py +0 -0
  33. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/marketing_models.py +0 -0
  34. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/membership_models.py +0 -0
  35. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/merchant_models.py +0 -0
  36. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/merchant_promotion_models.py +0 -0
  37. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/message_model_helper.py +0 -0
  38. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/message_models.py +0 -0
  39. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/model_decorators.py +0 -0
  40. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/ndb_models.py +0 -0
  41. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/partnership_models.py +0 -0
  42. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/pos_models.py +0 -0
  43. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/prepaid_models.py +0 -0
  44. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/product_models.py +0 -0
  45. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/program_models.py +0 -0
  46. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/rating_models.py +0 -0
  47. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/recruit_models.py +0 -0
  48. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/redeem_models.py +0 -0
  49. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/redemption_catalogue_models.py +0 -0
  50. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/referral_program_model.py +0 -0
  51. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/reward_models.py +0 -0
  52. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/spending_base_program_model.py +0 -0
  53. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/support_models.py +0 -0
  54. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/system_models.py +0 -0
  55. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/task_models.py +0 -0
  56. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/test_models.py +0 -0
  57. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/transaction_models.py +0 -0
  58. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/datastore/voucher_models.py +0 -0
  59. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/model_decorator.py +0 -0
  60. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/models/prepaid_helpers.py +0 -0
  61. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/pos_conf.py +0 -0
  62. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/program_conf.py +0 -0
  63. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/utils/__init__.py +0 -0
  64. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/utils/gcloud/__init__.py +0 -0
  65. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/utils/gcloud/datastore_util.py +0 -0
  66. {trex_model-1.6.11 → trex_model-1.6.13}/trexmodel/utils/model/__init__.py +0 -0
  67. {trex_model-1.6.11 → trex_model-1.6.13}/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.13
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.13',
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.13
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
 
@@ -240,9 +240,12 @@ def give_reward_from_sales_transaction(customer, sales_transaction, for_testing=
240
240
  return customer_transaction
241
241
 
242
242
  customer_transaction = CustomerTransaction.get_by_transaction_id(sales_transaction.transaction_id)
243
+ logger.debug('customer_transaction=%s', customer_transaction)
244
+
243
245
  if customer_transaction is None:
244
246
  customer_transaction = __start_transaction(customer, sales_transaction)
245
-
247
+ else:
248
+ logger.info('customer transaction have been created thus ignore to give reward')
246
249
  return customer_transaction
247
250
 
248
251
 
@@ -452,6 +452,7 @@ class User(UserBase):
452
452
  is_found = False
453
453
  for device_details_by_platform in found_device_details_list_by_platform:
454
454
  device_token_by_platform = device_details_by_platform.get('device_token')
455
+ logger.info('device_token_by_platform=%s', device_token_by_platform)
455
456
  if device_token_by_platform:
456
457
  device_details_by_platform['last_updated_datetime'] = datetime.utcnow().strftime("%d-%m-%Y %H:%M:%S")
457
458
  is_found = True
@@ -466,7 +467,8 @@ class User(UserBase):
466
467
  )
467
468
 
468
469
  else:
469
- device_details_by_platform['device_token'] = device_token
470
+ device_details_by_platform['device_token'] = device_token
471
+ device_details_by_platform['last_updated_datetime'] = datetime.utcnow().strftime("%d-%m-%Y %H:%M:%S"),
470
472
  else:
471
473
  self.device_details[platform] = [
472
474
  {
@@ -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