trex-model 1.5.16__tar.gz → 1.5.18__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 (63) hide show
  1. {trex-model-1.5.16 → trex-model-1.5.18}/PKG-INFO +1 -1
  2. {trex-model-1.5.16 → trex-model-1.5.18}/setup.py +1 -1
  3. {trex-model-1.5.16 → trex-model-1.5.18}/trex_model.egg-info/PKG-INFO +1 -1
  4. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/customer_models.py +2 -2
  5. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/lucky_draw_models.py +3 -3
  6. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/merchant_models.py +8 -2
  7. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/prepaid_models.py +30 -0
  8. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/redeem_models.py +45 -15
  9. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/reward_models.py +35 -4
  10. {trex-model-1.5.16 → trex-model-1.5.18}/LICENSE +0 -0
  11. {trex-model-1.5.16 → trex-model-1.5.18}/MANIFEST.in +0 -0
  12. {trex-model-1.5.16 → trex-model-1.5.18}/README.md +0 -0
  13. {trex-model-1.5.16 → trex-model-1.5.18}/setup.cfg +0 -0
  14. {trex-model-1.5.16 → trex-model-1.5.18}/trex_model.egg-info/SOURCES.txt +0 -0
  15. {trex-model-1.5.16 → trex-model-1.5.18}/trex_model.egg-info/dependency_links.txt +0 -0
  16. {trex-model-1.5.16 → trex-model-1.5.18}/trex_model.egg-info/requires.txt +0 -0
  17. {trex-model-1.5.16 → trex-model-1.5.18}/trex_model.egg-info/top_level.txt +0 -0
  18. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/__init__.py +0 -0
  19. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/conf.py +0 -0
  20. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/__init__.py +0 -0
  21. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/__init__.py +0 -0
  22. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/admin_models.py +0 -0
  23. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/analytic_models.py +0 -0
  24. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/app_models.py +0 -0
  25. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/coporate_models.py +0 -0
  26. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/customer_model_helpers.py +0 -0
  27. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/fb_subsriber_models.py +0 -0
  28. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/helper/__init__.py +0 -0
  29. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/helper/reward_model_helpers.py +0 -0
  30. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/helper/reward_transaction_helper.py +0 -0
  31. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/import_models.py +0 -0
  32. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/inventory_model.py +0 -0
  33. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/loyalty_models.py +0 -0
  34. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/marketing_models.py +0 -0
  35. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/membership_models.py +0 -0
  36. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/message_model_helper.py +0 -0
  37. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/message_models.py +0 -0
  38. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/model_decorators.py +0 -0
  39. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/ndb_models.py +0 -0
  40. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/pos_models.py +0 -0
  41. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/product_models.py +0 -0
  42. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/program_models.py +0 -0
  43. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/rating_models.py +0 -0
  44. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/recruit_models.py +0 -0
  45. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/redemption_catalogue_models.py +0 -0
  46. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/referral_program_model.py +0 -0
  47. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/spending_base_program_model.py +0 -0
  48. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/system_models.py +0 -0
  49. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/task_models.py +0 -0
  50. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/test_models.py +0 -0
  51. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/transaction_models.py +0 -0
  52. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/user_models.py +0 -0
  53. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/datastore/voucher_models.py +0 -0
  54. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/merchant_helpers.py +0 -0
  55. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/model_decorator.py +0 -0
  56. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/models/prepaid_helpers.py +0 -0
  57. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/pos_conf.py +0 -0
  58. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/program_conf.py +0 -0
  59. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/utils/__init__.py +0 -0
  60. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/utils/gcloud/__init__.py +0 -0
  61. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/utils/gcloud/datastore_util.py +0 -0
  62. {trex-model-1.5.16 → trex-model-1.5.18}/trexmodel/utils/model/__init__.py +0 -0
  63. {trex-model-1.5.16 → trex-model-1.5.18}/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.5.16
3
+ Version: 1.5.18
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.5.16',
6
+ version='1.5.18',
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.5.16
3
+ Version: 1.5.18
4
4
  Summary: TRex database module package
5
5
  Home-page: https://bitbucket.org/lokjac/trex-model
6
6
  Author: Jack Lok
@@ -768,7 +768,7 @@ class CustomerMembership(BaseNModel, DictModel):
768
768
  renewed_outlet = ndb.KeyProperty(name="renewed_outlet", kind=Outlet)
769
769
 
770
770
  dict_properties =[
771
- 'customer', 'merchant_membership_entity', 'entitled_date', 'expiry_date'
771
+ 'customer', 'merchant_membership_entity', 'entitled_date', 'expiry_date', 'merchant_membership_key'
772
772
  ]
773
773
 
774
774
  @property
@@ -1001,7 +1001,7 @@ class CustomerTierMembership(BaseNModel, DictModel):
1001
1001
  valid = ndb.BooleanProperty(required=True, default=True)
1002
1002
 
1003
1003
  dict_properties =[
1004
- 'customer', 'merchant_tier_membership_entity', 'entitled_date', 'expiry_date', 'valid'
1004
+ 'customer', 'merchant_tier_membership_entity', 'entitled_date', 'expiry_date', 'valid', 'merchant_tier_membership_key',
1005
1005
  ]
1006
1006
 
1007
1007
 
@@ -569,11 +569,11 @@ class LuckyDrawTicket(BaseNModel, DictModel):
569
569
  return LuckyDrawTicket.query(ndb.AND(LuckyDrawTicket.merchant_acct==merchant_acct.create_ndb_key())).count(limit=model_conf.MAX_FETCH_RECORD)
570
570
 
571
571
  @staticmethod
572
- def list_by_merchant_acct_with_cursor(merchant_acct, offset=0, limit=50, start_cursor=None):
572
+ def list_by_merchant_acct(merchant_acct, offset=0, limit=50, start_cursor=None, return_with_cursor=True):
573
573
  query = LuckyDrawTicket.query(ndb.AND(LuckyDrawTicket.merchant_acct==merchant_acct.create_ndb_key(),))
574
- (result, next_cursor) = LuckyDrawTicket.list_all_with_condition_query(query, start_cursor=start_cursor, return_with_cursor=True, offset=offset, limit=limit)
574
+ return LuckyDrawTicket.list_all_with_condition_query(query, start_cursor=start_cursor, return_with_cursor=return_with_cursor, offset=offset, limit=limit)
575
+
575
576
 
576
- return (result, next_cursor)
577
577
 
578
578
  @staticmethod
579
579
  def create_for_customer_from_sales_amount(customer_acct, sales_amount=None, merchant_acct=None, transact_outlet=None):
@@ -1328,8 +1328,14 @@ class MerchantAcct(MerchantMin):
1328
1328
 
1329
1329
 
1330
1330
  @staticmethod
1331
- def list(offset=0, limit=10):
1332
- return MerchantAcct.query().order(-MerchantAcct.registered_datetime).fetch(offset=offset, limit=limit)
1331
+ def list(offset=None, start_cursor=None, return_with_cursor=False, limit = model_conf.MAX_FETCH_RECORD):
1332
+ if return_with_cursor:
1333
+ query = MerchantAcct.query()
1334
+ (result, next_cursor) = MerchantAcct.list_all_with_condition_query(query, start_cursor=start_cursor, return_with_cursor=True, limit=limit)
1335
+
1336
+ return (result, next_cursor)
1337
+ else:
1338
+ return MerchantAcct.query().order(-MerchantAcct.registered_datetime).fetch(offset=offset, limit=limit)
1333
1339
 
1334
1340
  def delete_and_related(self):
1335
1341
 
@@ -640,4 +640,34 @@ class CustomerPrepaidReward(BaseNModel,DictModel):
640
640
  def delete_all_by_customer(customer):
641
641
  query = CustomerPrepaidReward.query(ancestor=customer.create_ndb_key())
642
642
  CustomerPrepaidReward.delete_multiples(query)
643
+
644
+ @staticmethod
645
+ def list_by_merchant_acct(merchant_acct, datetime_range_start=None, datetime_range_end=None, offset=0, limit=50, start_cursor=None, return_with_cursor=True):
646
+ if is_not_empty(datetime_range_start) and is_not_empty(datetime_range_end):
647
+ query = CustomerPrepaidReward.query(ndb.AND(
648
+ CustomerPrepaidReward.merchant_acct==merchant_acct.create_ndb_key(),
649
+ CustomerPrepaidReward.topup_datetime>=datetime_range_start,
650
+ CustomerPrepaidReward.topup_datetime<datetime_range_end,
651
+ ))
652
+ else:
653
+ query = CustomerPrepaidReward.query(ndb.AND(
654
+ CustomerPrepaidReward.merchant_acct==merchant_acct.create_ndb_key(),
655
+ ))
656
+
657
+ return CustomerPrepaidReward.list_all_with_condition_query(query, start_cursor=start_cursor, return_with_cursor=return_with_cursor, offset=offset, limit=limit)
658
+
659
+ @staticmethod
660
+ def count_by_merchant_acct(merchant_acct, datetime_range_start=None, datetime_range_end=None, limit=conf.MAX_FETCH_RECORD,):
661
+ if is_not_empty(datetime_range_start) and is_not_empty(datetime_range_end):
662
+ query = CustomerPrepaidReward.query(ndb.AND(
663
+ CustomerPrepaidReward.merchant_acct==merchant_acct.create_ndb_key(),
664
+ CustomerPrepaidReward.topup_datetime>=datetime_range_start,
665
+ CustomerPrepaidReward.topup_datetime<datetime_range_end,
666
+ ))
667
+ else:
668
+ query = CustomerPrepaidReward.query(ndb.AND(
669
+ CustomerPrepaidReward.merchant_acct==merchant_acct.create_ndb_key(),
670
+ ))
671
+
672
+ return CustomerPrepaidReward.count_with_condition_query(query, limit)
643
673
 
@@ -20,6 +20,7 @@ from trexmodel.models.datastore.transaction_models import CustomerTransaction
20
20
  from trexmodel.models.datastore.prepaid_models import CustomerPrepaidReward
21
21
  from trexmodel.models.datastore.redemption_catalogue_models import RedemptionCatalogue
22
22
  from trexmodel.models.datastore import user_models
23
+ from _ast import Is
23
24
 
24
25
 
25
26
  logger = logging.getLogger('debug')
@@ -188,18 +189,47 @@ class CustomerRedemption(BaseNModel, DictModel):
188
189
 
189
190
  def to_voucher_upstream_info_list(self):
190
191
  upstream_info_list = []
191
- for merchant_voucher_key, voucher_redeemed_details in self.redeemed_summary.get(program_conf.REWARD_FORMAT_VOUCHER).get('vouchers').items():
192
- upstream_info_list.append(CustomerRedeemedItemUpstream(
193
- customer_key = self.redeemed_customer_key,
194
- merchant_key = self.redeemed_merchant_acct_key,
195
- redeemed_outlet_key = self.redeemed_outlet_key,
196
- transaction_id = self.transaction_id,
197
- reward_format = self.reward_format,
198
- redeemed_datetime = self.redeemed_datetime,
199
- redeemed_amount = voucher_redeemed_details.get('amount'),
200
- voucher_key = merchant_voucher_key,
201
- ))
202
- return upstream_info_list
192
+ try:
193
+ if self.redeemed_summary.get(program_conf.REWARD_FORMAT_VOUCHER) is not None:
194
+
195
+ for merchant_voucher_key, voucher_redeemed_details in self.redeemed_summary.get(program_conf.REWARD_FORMAT_VOUCHER).get('vouchers').items():
196
+ amount = 1
197
+ if isinstance(voucher_redeemed_details, int):
198
+ amount = voucher_redeemed_details
199
+ elif isinstance(voucher_redeemed_details, dict):
200
+ amount = voucher_redeemed_details.get('amount')
201
+
202
+
203
+ upstream_info_list.append(CustomerRedeemedItemUpstream(
204
+ customer_key = self.redeemed_customer_key,
205
+ merchant_key = self.redeemed_merchant_acct_key,
206
+ redeemed_outlet_key = self.redeemed_outlet_key,
207
+ transaction_id = self.transaction_id,
208
+ reward_format = self.reward_format,
209
+ redeemed_datetime = self.redeemed_datetime,
210
+ redeemed_amount = amount,
211
+ voucher_key = merchant_voucher_key,
212
+ ))
213
+ else:
214
+ for merchant_voucher_key, amount in self.redeemed_summary.get('vouchers').items():
215
+ upstream_info_list.append(CustomerRedeemedItemUpstream(
216
+ customer_key = self.redeemed_customer_key,
217
+ merchant_key = self.redeemed_merchant_acct_key,
218
+ redeemed_outlet_key = self.redeemed_outlet_key,
219
+ transaction_id = self.transaction_id,
220
+ reward_format = self.reward_format,
221
+ redeemed_datetime = self.redeemed_datetime,
222
+ redeemed_amount = amount,
223
+ voucher_key = merchant_voucher_key,
224
+ ))
225
+
226
+ return upstream_info_list
227
+
228
+ except:
229
+ logger.error('failed to process redeem summary where self.redeemed_summary=%s', self.redeemed_summary)
230
+ raise
231
+
232
+
203
233
 
204
234
  def revert(self, reverted_by, reverted_datetime=None):
205
235
  self.status = program_conf.REWARD_STATUS_REVERTED
@@ -244,7 +274,7 @@ class CustomerRedemption(BaseNModel, DictModel):
244
274
  return result
245
275
 
246
276
  @staticmethod
247
- def list_by_merchant_acct_with_cursor(merchant_acct, datetime_ranage_start=None, datetime_range_end=None, offset=0, limit=50, start_cursor=None):
277
+ def list_by_merchant_acct(merchant_acct, datetime_ranage_start=None, datetime_range_end=None, offset=0, limit=50, start_cursor=None, return_with_cursor=True):
248
278
  if is_not_empty(datetime_ranage_start) and is_not_empty(datetime_range_end):
249
279
  query = CustomerRedemption.query(ndb.AND(
250
280
  CustomerRedemption.merchant_acct==merchant_acct.create_ndb_key(),
@@ -255,9 +285,9 @@ class CustomerRedemption(BaseNModel, DictModel):
255
285
  query = CustomerRedemption.query(ndb.AND(
256
286
  CustomerRedemption.merchant_acct==merchant_acct.create_ndb_key(),
257
287
  ))
258
- (result, next_cursor) = CustomerRedemption.list_all_with_condition_query(query, start_cursor=start_cursor, return_with_cursor=True, offset=offset, limit=limit)
288
+ return CustomerRedemption.list_all_with_condition_query(query, start_cursor=start_cursor, return_with_cursor=return_with_cursor, offset=offset, limit=limit)
259
289
 
260
- return (result, next_cursor)
290
+ #return (result, next_cursor)
261
291
 
262
292
  @staticmethod
263
293
  def list_merchant_transaction(merchant_acct, offset=0, limit=conf.PAGINATION_SIZE, start_cursor=None, return_with_cursor=False, reverse_order=True):
@@ -151,6 +151,37 @@ class CustomerEntitledReward(RewardEntitlement):
151
151
  def delete_all_by_customer(cls, customer):
152
152
  query = cls.query(ancestor=customer.create_ndb_key())
153
153
  cls.delete_multiples(query)
154
+
155
+ @staticmethod
156
+ def count_by_merchant_acct(cls, merchant_acct, datetime_ranage_start=None, datetime_range_end=None):
157
+ if datetime_ranage_start and datetime_range_end:
158
+ result = cls.query(ndb.AND(
159
+ cls.merchant_acct==merchant_acct.create_ndb_key(),
160
+ cls.rewarded_datetime>=datetime_ranage_start,
161
+ cls.rewarded_datetime<datetime_range_end,
162
+ )).count(limit=conf.MAX_FETCH_RECORD)
163
+ else:
164
+ result = cls.query(ndb.AND(
165
+ cls.merchant_acct==merchant_acct.create_ndb_key(),
166
+ )).count(limit=conf.MAX_FETCH_RECORD)
167
+
168
+
169
+ return result
170
+
171
+ @classmethod
172
+ def list_by_merchant_acct(cls, merchant_acct, datetime_range_start=None, datetime_range_end=None, offset=0, limit=50, start_cursor=None, return_with_cursor=True):
173
+ if is_not_empty(datetime_range_start) and is_not_empty(datetime_range_end):
174
+ query = cls.query(ndb.AND(
175
+ cls.merchant_acct==merchant_acct.create_ndb_key(),
176
+ cls.rewarded_datetime>=datetime_range_start,
177
+ cls.rewarded_datetime<datetime_range_end,
178
+ ))
179
+ else:
180
+ query = cls.query(ndb.AND(
181
+ cls.merchant_acct==merchant_acct.create_ndb_key(),
182
+ ))
183
+ return cls.list_all_with_condition_query(query, start_cursor=start_cursor, return_with_cursor=return_with_cursor, offset=offset, limit=limit)
184
+
154
185
 
155
186
  class CustomerCountableReward(CustomerEntitledReward):
156
187
  reward_amount = ndb.FloatProperty(required=True, default=0)
@@ -400,7 +431,7 @@ class CustomerEntitledVoucher(CustomerEntitledReward):
400
431
 
401
432
 
402
433
  return result
403
-
434
+ '''
404
435
  @staticmethod
405
436
  def list_by_merchant_acct(merchant_acct, datetime_range_start=None, datetime_range_end=None, offset=0, limit=50,):
406
437
  if is_not_empty(datetime_range_start) and is_not_empty(datetime_range_end):
@@ -417,7 +448,7 @@ class CustomerEntitledVoucher(CustomerEntitledReward):
417
448
 
418
449
 
419
450
  @staticmethod
420
- def list_by_merchant_acct_with_cursor(merchant_acct, datetime_range_start=None, datetime_range_end=None, offset=0, limit=50, start_cursor=None):
451
+ def list_by_merchant_acct_with_cursor(merchant_acct, datetime_range_start=None, datetime_range_end=None, offset=0, limit=50, start_cursor=None, return_with_cursor=True):
421
452
  if is_not_empty(datetime_range_start) and is_not_empty(datetime_range_end):
422
453
  query = CustomerEntitledVoucher.query(ndb.AND(
423
454
  CustomerEntitledVoucher.merchant_acct==merchant_acct.create_ndb_key(),
@@ -428,10 +459,10 @@ class CustomerEntitledVoucher(CustomerEntitledReward):
428
459
  query = CustomerEntitledVoucher.query(ndb.AND(
429
460
  CustomerEntitledVoucher.merchant_acct==merchant_acct.create_ndb_key(),
430
461
  ))
431
- (result, next_cursor) = CustomerEntitledVoucher.list_all_with_condition_query(query, start_cursor=start_cursor, return_with_cursor=True, offset=offset, limit=limit)
462
+ (result, next_cursor) = CustomerEntitledVoucher.list_all_with_condition_query(query, start_cursor=start_cursor, return_with_cursor=return_with_cursor, offset=offset, limit=limit)
432
463
 
433
464
  return (result, next_cursor)
434
-
465
+ '''
435
466
  @staticmethod
436
467
  def count_redeemed_by_merchant_voucher_and_passed_redeemed_datetime(customer, merchant_voucher, passed_redeemed_datetime):
437
468
 
File without changes
File without changes
File without changes
File without changes