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.
- {trex_model-1.6.11 → trex_model-1.6.12}/PKG-INFO +1 -1
- {trex_model-1.6.11 → trex_model-1.6.12}/setup.py +1 -1
- {trex_model-1.6.11 → trex_model-1.6.12}/trex_model.egg-info/PKG-INFO +1 -1
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/customer_models.py +8 -3
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/merchant_helpers.py +71 -58
- {trex_model-1.6.11 → trex_model-1.6.12}/LICENSE +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/MANIFEST.in +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/README.md +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/setup.cfg +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trex_model.egg-info/SOURCES.txt +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trex_model.egg-info/dependency_links.txt +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trex_model.egg-info/requires.txt +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trex_model.egg-info/top_level.txt +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/__init__.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/conf.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/__init__.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/__init__.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/admin_models.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/analytic_models.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/app_models.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/coporate_models.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/customer_model_helpers.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/fb_subsriber_models.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/helper/__init__.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/helper/reward_model_helpers.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/helper/reward_transaction_helper.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/helper/sales_transaction_helpers.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/import_models.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/inventory_model.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/loyalty_models.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/lucky_draw_models.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/marketing_models.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/membership_models.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/merchant_models.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/merchant_promotion_models.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/message_model_helper.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/message_models.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/model_decorators.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/ndb_models.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/partnership_models.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/pos_models.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/prepaid_models.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/product_models.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/program_models.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/rating_models.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/recruit_models.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/redeem_models.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/redemption_catalogue_models.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/referral_program_model.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/reward_models.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/spending_base_program_model.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/support_models.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/system_models.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/task_models.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/test_models.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/transaction_models.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/user_models.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/voucher_models.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/model_decorator.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/prepaid_helpers.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/pos_conf.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/program_conf.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/utils/__init__.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/utils/gcloud/__init__.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/utils/gcloud/datastore_util.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/utils/model/__init__.py +0 -0
- {trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/utils/model/model_util.py +0 -0
|
@@ -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
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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
|
-
|
|
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
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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
|
-
|
|
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
|
-
|
|
84
|
-
|
|
85
|
-
|
|
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'
|
|
150
|
-
'referrer_promote_title'
|
|
151
|
-
'referrer_promote_desc'
|
|
152
|
-
'referrer_promote_image'
|
|
153
|
-
'referee_promote_title'
|
|
154
|
-
'referee_promote_desc'
|
|
155
|
-
'referee_promote_image'
|
|
156
|
-
'refer_a_friend_url'
|
|
157
|
-
'refer_a_friend_message'
|
|
158
|
-
'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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/customer_model_helpers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/helper/reward_model_helpers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/merchant_promotion_models.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/redemption_catalogue_models.py
RENAMED
|
File without changes
|
{trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/referral_program_model.py
RENAMED
|
File without changes
|
|
File without changes
|
{trex_model-1.6.11 → trex_model-1.6.12}/trexmodel/models/datastore/spending_base_program_model.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|