本文整理汇总了Python中the_tale.finances.bank.prototypes.InvoicePrototype类的典型用法代码示例。如果您正苦于以下问题:Python InvoicePrototype类的具体用法?Python InvoicePrototype怎么用?Python InvoicePrototype使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了InvoicePrototype类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: initialize
def initialize(self):
self.initialized = True
self.next_invoice_process_time = datetime.datetime.now()
InvoicePrototype.reset_all()
self.logger.info('BANK PROCESSOR INITIALIZED')
示例2: handle
def handle(self, *args, **options):
actions = set(AccountPrototype._db_exclude(action_id=None).values_list('action_id', flat=True).order_by('action_id').distinct())
for action_id in actions:
print()
print('----%s----' % action_id)
registered_ids = set(AccountPrototype._db_filter(action_id=action_id, is_fast=False).values_list('id', flat=True))
print('registrations: %d' % len(registered_ids))
payers_ids = set(InvoicePrototype._db_filter(models.Q(state=INVOICE_STATE.CONFIRMED)|models.Q(state=INVOICE_STATE.FORCED),
sender_type=ENTITY_TYPE.XSOLLA,
currency=CURRENCY_TYPE.PREMIUM).values_list('recipient_id', flat=True))
payers_ids &= registered_ids
print('payers: %d' % len(payers_ids))
amounts = InvoicePrototype._db_filter(models.Q(state=INVOICE_STATE.CONFIRMED)|models.Q(state=INVOICE_STATE.FORCED),
sender_type=ENTITY_TYPE.XSOLLA,
recipient_id__in=payers_ids,
currency=CURRENCY_TYPE.PREMIUM).values_list('amount', flat=True)
amount = sum(amounts)
print('total gold: %d' % amount)
if registered_ids:
print('per account: %.2f' % (float(amount) / len(registered_ids)))
if payers_ids:
print('per payer: %.2f' % (float(amount) / len(payers_ids)))
示例3: test_process__processed
def test_process__processed(self):
self.assertEqual(BankInvoicePrototype._db_count(), 0)
invoice = self.create_invoice(worker_call_count=1)
self.assertEqual(invoice.bank_invoice_id, None)
invoice.process()
invoice.reload()
self.assertEqual(BankInvoicePrototype._db_count(), 1)
self.assertTrue(invoice.state.is_PROCESSED)
bank_invoice = BankInvoicePrototype._db_get_object(0)
self.assertEqual(bank_invoice.id, invoice.bank_invoice_id)
self.assertTrue(bank_invoice.recipient_type.is_GAME_ACCOUNT)
self.assertEqual(bank_invoice.recipient_id, self.fabric.account_id)
self.assertTrue(bank_invoice.sender_type.is_XSOLLA)
self.assertEqual(bank_invoice.sender_id, 0)
self.assertTrue(bank_invoice.state.is_FORCED)
self.assertTrue(bank_invoice.currency.is_PREMIUM)
self.assertTrue(bank_invoice.amount, int(self.fabric.payment_sum))
self.assertEqual(bank_invoice.operation_uid, 'bank-xsolla')
示例4: test_get_unprocessed_invoice_success
def test_get_unprocessed_invoice_success(self):
for state in INVOICE_STATE.records:
if not (state.is_REQUESTED or state.is_FORCED):
continue
invoice = self.create_invoice(state=state)
self.assertEqual(InvoicePrototype.get_unprocessed_invoice().id, invoice.id)
InvoicePrototype._db_all().delete()
示例5: test_check_frozen_expired_invoices__wrong_state
def test_check_frozen_expired_invoices__wrong_state(self):
for state in INVOICE_STATE.records:
if state.is_FROZEN:
continue
self.create_invoice(state=state)
self.assertFalse(InvoicePrototype.check_frozen_expired_invoices())
InvoicePrototype._db_all().delete()
示例6: test_process__test
def test_process__test(self):
self.assertEqual(BankInvoicePrototype._db_count(), 0)
invoice = self.create_invoice(worker_call_count=1, test='1')
invoice.process()
invoice.reload()
self.assertEqual(BankInvoicePrototype._db_count(), 0)
self.assertTrue(invoice.state.is_SKIPPED_BECOUSE_TEST)
示例7: test_reset_all
def test_reset_all(self):
for state in INVOICE_STATE.records:
invoice = self.create_invoice()
invoice.state = state
invoice.save()
InvoicePrototype.reset_all()
self.assertEqual(InvoicePrototype._model_class.objects.filter(state=INVOICE_STATE.RESETED).count(), len(INVOICE_STATE.records) - 4)
self.assertEqual(InvoicePrototype._model_class.objects.filter(state=INVOICE_STATE.CONFIRMED).count(), 1)
self.assertEqual(InvoicePrototype._model_class.objects.filter(state=INVOICE_STATE.CANCELED).count(), 1)
self.assertEqual(InvoicePrototype._model_class.objects.filter(state=INVOICE_STATE.REJECTED).count(), 1)
self.assertEqual(InvoicePrototype._model_class.objects.filter(state=INVOICE_STATE.FORCED).count(), 1)
示例8: setUp
def setUp(self):
super(_BaseBuyPosponedTaskTests, self).setUp()
create_test_map()
self.initial_amount = 500
self.amount = 130
result, account_id, bundle_id = register_user('test_user', '[email protected]', '111111')
self.account = AccountPrototype.get_by_id(account_id)
self.bank_account = BankAccountPrototype.create(entity_type=ENTITY_TYPE.GAME_ACCOUNT,
entity_id=self.account.id,
currency=CURRENCY_TYPE.PREMIUM)
self.bank_account.amount = self.initial_amount
self.bank_account.save()
self.invoice = InvoicePrototype.create(recipient_type=ENTITY_TYPE.GAME_ACCOUNT,
recipient_id=self.account.id,
sender_type=ENTITY_TYPE.GAME_LOGIC,
sender_id=0,
currency=CURRENCY_TYPE.PREMIUM,
amount=-self.amount,
description_for_sender='transaction-description-for-sender',
description_for_recipient='transaction-description-for-recipient',
operation_uid='transaction-operation-ui')
self.transaction = Transaction(self.invoice.id)
self.task = None
self.storage = None
self.cmd_update_with_account_data__call_count = 1
self.accounts_manages_worker = True
self.supervisor_worker = False
示例9: setUp
def setUp(self):
super(_BaseBuyPosponedTaskTests, self).setUp()
create_test_map()
self.initial_amount = 500
self.amount = 130
self.account = self.accounts_factory.create_account()
self.bank_account = BankAccountPrototype.create(
entity_type=ENTITY_TYPE.GAME_ACCOUNT, entity_id=self.account.id, currency=CURRENCY_TYPE.PREMIUM
)
self.bank_account.amount = self.initial_amount
self.bank_account.save()
self.invoice = InvoicePrototype.create(
recipient_type=ENTITY_TYPE.GAME_ACCOUNT,
recipient_id=self.account.id,
sender_type=ENTITY_TYPE.GAME_LOGIC,
sender_id=0,
currency=CURRENCY_TYPE.PREMIUM,
amount=-self.amount,
description_for_sender="transaction-description-for-sender",
description_for_recipient="transaction-description-for-recipient",
operation_uid="transaction-operation-ui",
)
self.transaction = Transaction(self.invoice.id)
self.task = None
self.storage = None
self.cmd_update_with_account_data__call_count = 1
self.accounts_manages_worker = True
self.supervisor_worker = False
示例10: test_buy
def test_buy(self):
self.assertEqual(PostponedTaskPrototype._model_class.objects.all().count(), 0)
self.assertEqual(InvoicePrototype._model_class.objects.all().count(), 0)
with mock.patch('the_tale.common.postponed_tasks.prototypes.PostponedTaskPrototype.cmd_wait') as cmd_wait:
self.purchase.buy(account=self.account)
self.assertEqual(cmd_wait.call_count, 1)
self.assertEqual(PostponedTaskPrototype._model_class.objects.all().count(), 1)
self.assertEqual(InvoicePrototype._model_class.objects.all().count(), 1)
postponed_logic = PostponedTaskPrototype._db_get_object(0).internal_logic
self.assertTrue(isinstance(postponed_logic, BuyPremium))
self.assertEqual(postponed_logic.account_id, self.account.id)
self.assertEqual(postponed_logic.days, self.days)
invoice = InvoicePrototype.get_by_id(postponed_logic.transaction.invoice_id)
self.assertEqual(invoice.recipient_type, ENTITY_TYPE.GAME_ACCOUNT)
self.assertEqual(invoice.recipient_id, self.account.id)
self.assertEqual(invoice.sender_type, ENTITY_TYPE.GAME_LOGIC)
self.assertEqual(invoice.sender_id, 0)
self.assertEqual(invoice.currency, CURRENCY_TYPE.PREMIUM)
self.assertEqual(invoice.amount, -self.cost)
self.assertEqual(invoice.description_for_sender, 'premium-days-transaction-description')
self.assertEqual(invoice.description_for_recipient, 'premium-days-transaction-description')
示例11: test_history
def test_history(self):
self.create_bank_account(self.account.id)
history = self.create_entity_history(self.account.id)
invoices = BankInvoicePrototype._db_all()
histroy_ids = [invoice.id for invoice in history]
texts = [('pgf-no-history-message', 0)]
for invoice in invoices:
if invoice.id in histroy_ids:
continue
if invoice.recipient_id == self.account.id:
texts.append((invoice.description_for_recipient, 0))
else:
texts.append((invoice.description_for_sender, 0))
for invoice in history:
if invoice.recipient_id == self.account.id:
texts.append((invoice.description_for_recipient, 1))
texts.append((invoice.description_for_sender, 0))
else:
texts.append((invoice.description_for_recipient, 0))
texts.append((invoice.description_for_sender, 1))
self.check_html_ok(self.request_html(self.page_url), texts=texts)
示例12: test_get_unprocessed_invoice__no_invoice
def test_get_unprocessed_invoice__no_invoice(self):
for state in INVOICE_STATE.records:
if state.is_REQUESTED or state.is_FORCED:
continue
self.create_invoice(state=state)
self.assertEqual(InvoicePrototype.get_unprocessed_invoice(), None)
示例13: get_value
def get_value(self, date):
query = AccountPrototype._db_filter(is_fast=False, is_bot=False)
# do not use accounts registered before payments turn on
query = query.filter(self.db_date_interval('created_at', date=date, days=-self.PERIOD),
self.db_date_gte('created_at', date=statistics_settings.PAYMENTS_START_DATE.date()))
accounts = dict(query.values_list('id', 'created_at'))
invoices = list(InvoicePrototype._db_filter(ACCEPTED_INVOICE_FILTER,
sender_type=ENTITY_TYPE.XSOLLA,
currency=CURRENCY_TYPE.PREMIUM,
recipient_id__in=list(accounts.keys())).values_list('created_at', 'recipient_id'))
account_ids = [id_ for created_at, id_ in invoices]
if not account_ids:
return 0
delays = {account_id: min([(created_at - accounts[account_id])
for created_at, id_ in invoices
if id_==account_id])
for account_id in account_ids}
total_time = reduce(lambda s, v: s+v, list(delays.values()), datetime.timedelta(seconds=0))
days = float(total_time.total_seconds()) / len(account_ids) / (24*60*60)
return days
示例14: create_invoice
def create_invoice(self,
recipient_type=ENTITY_TYPE.GAME_ACCOUNT,
recipient_id=3,
sender_type=ENTITY_TYPE.GAME_LOGIC,
sender_id=8,
currency=CURRENCY_TYPE.PREMIUM,
amount=317,
state=None,
description_for_sender='invoice-description-for-sender',
description_for_recipient='invoice-description-for-recipient',
operation_uid='test-uid',
force=False):
invoice = InvoicePrototype.create(recipient_type=recipient_type,
recipient_id=recipient_id,
sender_type=sender_type,
sender_id=sender_id,
currency=currency,
amount=amount,
description_for_sender=description_for_sender,
description_for_recipient=description_for_recipient,
operation_uid=operation_uid,
force=force)
if state is not None:
invoice.state = state
invoice.save()
return invoice
示例15: test_success
def test_success(self):
self.assertEqual(BankInvoicePrototype._db_count(), 0)
response = self.post_ajax_json(url('shop:give-money', account=self.account.id), self.post_data(amount=5))
self.assertEqual(BankInvoicePrototype._db_count(), 1)
invoice = BankInvoicePrototype._db_get_object(0)
self.assertTrue(invoice.recipient_type.is_GAME_ACCOUNT)
self.assertEqual(invoice.recipient_id, self.account.id)
self.assertTrue(invoice.sender_type.is_GAME_MASTER)
self.assertEqual(invoice.sender_id, self.superuser.id)
self.assertTrue(invoice.currency.is_PREMIUM)
self.assertEqual(invoice.amount, 5)
self.assertEqual(invoice.description_for_recipient, u'bla-bla')
self.assertTrue(invoice.state.is_FORCED)
self.check_ajax_ok(response)