Exemplo n.º 1
0
def subscribe_item(context, region=None, item=None, item_type=None,
                   payment_type=None, resource_uuid=None, resource_name=None,
                   **kwargs):
    """
    """
    # values of product
    values = {
        'project_id': context.project_id,
        'resource_uuid': resource_uuid,
        'resource_name': resource_name,
        }
    try:
        # filter to get product_id
        products = _product_get_all(context, region=region, item=item,
                                    item_type=item_type,
                                    payment_type=payment_type)
        # TODO(lzyeval): check if products size is not 1
        values['product_id'] = products[0]['id']
        values['status'] = "verified"
        print "subscription_create", item, payment_type, values
        app = context.app
        app.info("subscribe_item:proj_id=" + str(context.project_id) + \
                " name:" + str(resource_name) + \
                "/" + str(item) + \
                "/" + str(payment_type) + \
                "/" + str(resource_uuid))
        subscription_ref = db.subscription_create(context, values)
        db.subscription_extend(context,
                               subscription_ref['id'],
                               subscription_ref['created_at'])
        print "item subscribed."
    except Exception, e:
        # TODO(lzyeval): report
        print "subscribe failed:", Exception, e
        raise
Exemplo n.º 2
0
def subscribe_item(context, region=None, item=None, item_type=None,
                   payment_type=None, resource_uuid=None, resource_name=None,
                   **kwargs):
    """
    """
    # values of product
    values = {
        'project_id': context.project_id,
        'resource_uuid': resource_uuid,
        'resource_name': resource_name,
        }
    try:
        # filter to get product_id
        products = _product_get_all(context, region=region, item=item,
                                    item_type=item_type,
                                    payment_type=payment_type)
        # TODO(lzyeval): check if products size is not 1
        values['product_id'] = products[0]['id']
        subscription_ref = db.subscription_create(context, values)
        db.subscription_extend(context,
                               subscription_ref['id'],
                               subscription_ref['created_at'])
    except Exception, e:
        # TODO(lzyeval): report
        raise
Exemplo n.º 3
0
def subscribe_item(context,
                   region=None,
                   item=None,
                   item_type=None,
                   payment_type=None,
                   resource_uuid=None,
                   resource_name=None,
                   **kwargs):
    """
    """
    # values of product
    values = {
        'project_id': context.project_id,
        'resource_uuid': resource_uuid,
        'resource_name': resource_name,
    }
    try:
        # filter to get product_id
        products = _product_get_all(context,
                                    region=region,
                                    item=item,
                                    item_type=item_type,
                                    payment_type=payment_type)
        # TODO(lzyeval): check if products size is not 1
        values['product_id'] = products[0]['id']
        subscription_ref = db.subscription_create(context, values)
        db.subscription_extend(context, subscription_ref['id'],
                               subscription_ref['created_at'])
    except Exception, e:
        # TODO(lzyeval): report
        raise
Exemplo n.º 4
0
Arquivo: api.py Projeto: young8/dough
def subscribe_item(context, region=None, item=None, item_type=None,
                   payment_type=None, resource_uuid=None, resource_name=None,
                   **kwargs):
    """
    """
    # values of product
    values = {
        'project_id': context.project_id,
        'resource_uuid': resource_uuid,
        'resource_name': resource_name,
        }
    try:
        # filter to get product_id
        products = _product_get_all(context, region=region, item=item,
                                    item_type=item_type,
                                    payment_type=payment_type)
        # TODO(lzyeval): check if products size is not 1
        values['product_id'] = products[0]['id']
        values['status'] = "verified"
        print "subscription_create", item, payment_type, values
        app = context.app
        app.info("subscribe_item:proj_id=" + str(context.project_id) + \
                " name:" + str(resource_name) + \
                "/" + str(item) + \
                "/" + str(payment_type) + \
                "/" + str(resource_uuid))
        subscription_ref = db.subscription_create(context, values)
        db.subscription_extend(context,
                               subscription_ref['id'],
                               subscription_ref['created_at'])
        print "item subscribed."
    except Exception, e:
        # TODO(lzyeval): report
        print "subscribe failed:", Exception, e
        raise
Exemplo n.º 5
0
 def test_subscription_create_duplicate(self):
     self.truncate_table("regions")
     self.truncate_table("items")
     self.truncate_table("item_types")
     self.truncate_table("payment_types")
     self.truncate_table("products")
     self.truncate_table("subscriptions")
     region_ref = db.region_create(self.context, {'name': 'a_region'})
     item_ref = db.item_create(self.context, {'name': 'an_item'})
     item_type_ref = db.item_type_create(self.context,
                                         {'name': 'an_item_type'})
     payment_type_ref = db.payment_type_create(
         self.context, {
             'name': 'a_payment_type',
             'interval_unit': 'days',
             'interval_size': 12345,
             'is_prepaid': False
         })
     values = {
         'region_id': region_ref.id,
         'item_id': item_ref.id,
         'item_type_id': item_type_ref.id,
         'payment_type_id': payment_type_ref.id,
         'order_unit': 'some_measure',
         'order_size': 1,
         'price': 11.24,
         'currency': 'CNY',
     }
     product_ref = db.product_create(self.context, values)
     values = {
         'project_id': self.context.project_id,
         'product_id': product_ref.id,
         'resource_uuid': self.resource_uuid,
         'resource_name': self.resource_name,
     }
     db.subscription_create(self.context, values)
     self.assertRaises(Exception, db.subscription_create, self.context,
                       values)
Exemplo n.º 6
0
 def test_subscribe_item(self):
     self.mox.StubOutWithMock(db, 'region_get_by_name')
     self.mox.StubOutWithMock(db, 'item_get_by_name')
     self.mox.StubOutWithMock(db, 'item_type_get_by_name')
     self.mox.StubOutWithMock(db, 'payment_type_get_by_name')
     self.mox.StubOutWithMock(db, 'product_get_all')
     self.mox.StubOutWithMock(db, 'subscription_create')
     self.mox.StubOutWithMock(db, 'subscription_extend')
     db.region_get_by_name(self.context, self.region_name).\
             AndReturn(self.region)
     db.item_get_by_name(self.context, self.item_name).AndReturn(self.item)
     db.item_type_get_by_name(self.context, self.item_type_name).\
             AndReturn(self.item_type)
     db.payment_type_get_by_name(self.context, self.payment_type_name).\
             AndReturn(self.payment_type)
     db.product_get_all(self.context,
                        filters={'region_id': self.region_id,
                                 'item_id': self.item_id,
                                 'item_type_id': self.item_type_id,
                                 'payment_type_id': self.payment_type_id}).\
                                         AndReturn(self.products)
     db.subscription_create(self.context,
                            {'project_id': self.context.project_id,
                             'product_id': self.product_id,
                             'resource_uuid': self.resource_uuid,
                             'resource_name': self.resource_name}).\
                                     AndReturn(self.subscription)
     db.subscription_extend(self.context, self.subscription_id,
                            self.created_at).AndReturn(None)
     self.mox.ReplayAll()
     result = api.subscribe_item(self.context, self.region_name,
                                 self.item_name, self.item_type_name,
                                 self.payment_type_name, self.resource_uuid,
                                 self.resource_name)
     self.mox.VerifyAll()
     self.assertEqual(result, {})
Exemplo n.º 7
0
 def test_subscription_create_duplicate(self):
     self.truncate_table("regions")
     self.truncate_table("items")
     self.truncate_table("item_types")
     self.truncate_table("payment_types")
     self.truncate_table("products")
     self.truncate_table("subscriptions")
     region_ref = db.region_create(self.context, {'name': 'a_region'})
     item_ref = db.item_create(self.context, {'name': 'an_item'})
     item_type_ref = db.item_type_create(self.context,
                                         {'name': 'an_item_type'})
     payment_type_ref = db.payment_type_create(self.context,
                                               {'name': 'a_payment_type',
                                                'interval_unit': 'days',
                                                'interval_size': 12345,
                                                'is_prepaid': False})
     values = {
         'region_id': region_ref.id,
         'item_id': item_ref.id,
         'item_type_id': item_type_ref.id,
         'payment_type_id': payment_type_ref.id,
         'order_unit': 'some_measure',
         'order_size': 1,
         'price': 11.24,
         'currency': 'CNY',
         }
     product_ref = db.product_create(self.context, values)
     values = {
         'project_id': self.context.project_id,
         'product_id': product_ref.id,
         'resource_uuid': self.resource_uuid,
         'resource_name': self.resource_name,
         }
     db.subscription_create(self.context, values)
     self.assertRaises(Exception, db.subscription_create,
                       self.context, values)
Exemplo n.º 8
0
 def test_subscribe_item(self):
     self.mox.StubOutWithMock(db, 'region_get_by_name')
     self.mox.StubOutWithMock(db, 'item_get_by_name')
     self.mox.StubOutWithMock(db, 'item_type_get_by_name')
     self.mox.StubOutWithMock(db, 'payment_type_get_by_name')
     self.mox.StubOutWithMock(db, 'product_get_all')
     self.mox.StubOutWithMock(db, 'subscription_create')
     self.mox.StubOutWithMock(db, 'subscription_extend')
     db.region_get_by_name(self.context, self.region_name).\
             AndReturn(self.region)
     db.item_get_by_name(self.context, self.item_name).AndReturn(self.item)
     db.item_type_get_by_name(self.context, self.item_type_name).\
             AndReturn(self.item_type)
     db.payment_type_get_by_name(self.context, self.payment_type_name).\
             AndReturn(self.payment_type)
     db.product_get_all(self.context,
                        filters={'region_id': self.region_id,
                                 'item_id': self.item_id,
                                 'item_type_id': self.item_type_id,
                                 'payment_type_id': self.payment_type_id}).\
                                         AndReturn(self.products)
     db.subscription_create(self.context,
                            {'project_id': self.context.project_id,
                             'product_id': self.product_id,
                             'resource_uuid': self.resource_uuid,
                             'resource_name': self.resource_name}).\
                                     AndReturn(self.subscription)
     db.subscription_extend(self.context, self.subscription_id,
                            self.created_at).AndReturn(None)
     self.mox.ReplayAll()
     result = api.subscribe_item(self.context, self.region_name,
                                 self.item_name, self.item_type_name,
                                 self.payment_type_name, self.resource_uuid,
                                 self.resource_name)
     self.mox.VerifyAll()
     self.assertEqual(result, {})
Exemplo n.º 9
0
 def test_purchase_get_all_by_subscription_and_timeframe(self):
     self.truncate_table("regions")
     self.truncate_table("items")
     self.truncate_table("item_types")
     self.truncate_table("payment_types")
     self.truncate_table("products")
     self.truncate_table("subscriptions")
     self.truncate_table("purchases")
     region_ref = db.region_create(self.context, {'name': 'a_region'})
     item_ref = db.item_create(self.context, {'name': 'an_item'})
     item_type_ref = db.item_type_create(self.context,
                                         {'name': 'an_item_type'})
     payment_type_ref = db.payment_type_create(
         self.context, {
             'name': 'a_payment_type',
             'interval_unit': 'days',
             'interval_size': 12345,
             'is_prepaid': False
         })
     values = {
         'region_id': region_ref.id,
         'item_id': item_ref.id,
         'item_type_id': item_type_ref.id,
         'payment_type_id': payment_type_ref.id,
         'order_unit': 'some_measure',
         'order_size': 1,
         'price': 11.24,
         'currency': 'CNY',
     }
     product_ref = db.product_create(self.context, values)
     values = {
         'project_id': self.context.project_id,
         'product_id': product_ref.id,
         'resource_uuid': self.resource_uuid,
         'resource_name': self.resource_name,
     }
     subscription_ref = db.subscription_create(self.context, values)
     values = {
         'subscription_id': subscription_ref.id,
         'quantity': 1.56,
         'line_total': 1.56 * product_ref.price,
     }
     expect = db.purchase_create(self.context, values)
     purchases = db.purchase_get_all_by_subscription_and_timeframe(
         self.context, expect.subscription_id,
         datetime.datetime.now() - datetime.timedelta(seconds=3),
         datetime.datetime.now() + datetime.timedelta(seconds=3))
     self.compare_records(expect, purchases[0])
Exemplo n.º 10
0
 def test_purchase_destroy(self):
     self.truncate_table("regions")
     self.truncate_table("items")
     self.truncate_table("item_types")
     self.truncate_table("payment_types")
     self.truncate_table("products")
     self.truncate_table("subscriptions")
     self.truncate_table("purchases")
     region_ref = db.region_create(self.context, {'name': 'a_region'})
     item_ref = db.item_create(self.context, {'name': 'an_item'})
     item_type_ref = db.item_type_create(self.context,
                                         {'name': 'an_item_type'})
     payment_type_ref = db.payment_type_create(
         self.context, {
             'name': 'a_payment_type',
             'interval_unit': 'days',
             'interval_size': 12345,
             'is_prepaid': False
         })
     values = {
         'region_id': region_ref.id,
         'item_id': item_ref.id,
         'item_type_id': item_type_ref.id,
         'payment_type_id': payment_type_ref.id,
         'order_unit': 'some_measure',
         'order_size': 1,
         'price': 11.24,
         'currency': 'CNY',
     }
     product_ref = db.product_create(self.context, values)
     values = {
         'project_id': self.context.project_id,
         'product_id': product_ref.id,
         'resource_uuid': self.resource_uuid,
         'resource_name': self.resource_name,
     }
     subscription_ref = db.subscription_create(self.context, values)
     values = {
         'subscription_id': subscription_ref.id,
         'quantity': 1.56,
         'line_total': 1.56 * product_ref.price,
     }
     expect = db.purchase_create(self.context, values)
     db.purchase_destroy(self.context, expect.id)
     self.assertRaises(exception.PurchaseNotFound, db.purchase_get,
                       self.context, expect.id)
Exemplo n.º 11
0
 def test_purchase_get_all_by_subscription_and_timeframe(self):
     self.truncate_table("regions")
     self.truncate_table("items")
     self.truncate_table("item_types")
     self.truncate_table("payment_types")
     self.truncate_table("products")
     self.truncate_table("subscriptions")
     self.truncate_table("purchases")
     region_ref = db.region_create(self.context, {'name': 'a_region'})
     item_ref = db.item_create(self.context, {'name': 'an_item'})
     item_type_ref = db.item_type_create(self.context,
                                         {'name': 'an_item_type'})
     payment_type_ref = db.payment_type_create(self.context,
                                               {'name': 'a_payment_type',
                                                'interval_unit': 'days',
                                                'interval_size': 12345,
                                                'is_prepaid': False})
     values = {
         'region_id': region_ref.id,
         'item_id': item_ref.id,
         'item_type_id': item_type_ref.id,
         'payment_type_id': payment_type_ref.id,
         'order_unit': 'some_measure',
         'order_size': 1,
         'price': 11.24,
         'currency': 'CNY',
         }
     product_ref = db.product_create(self.context, values)
     values = {
         'project_id': self.context.project_id,
         'product_id': product_ref.id,
         'resource_uuid': self.resource_uuid,
         'resource_name': self.resource_name,
         }
     subscription_ref = db.subscription_create(self.context, values)
     values = {
         'subscription_id': subscription_ref.id,
         'quantity': 1.56,
         'line_total': 1.56 * product_ref.price,
         }
     expect = db.purchase_create(self.context, values)
     purchases = db.purchase_get_all_by_subscription_and_timeframe(
             self.context, expect.subscription_id,
             datetime.datetime.now() - datetime.timedelta(seconds=3),
             datetime.datetime.now() + datetime.timedelta(seconds=3))
     self.compare_records(expect, purchases[0])
Exemplo n.º 12
0
 def test_purchase_destroy(self):
     self.truncate_table("regions")
     self.truncate_table("items")
     self.truncate_table("item_types")
     self.truncate_table("payment_types")
     self.truncate_table("products")
     self.truncate_table("subscriptions")
     self.truncate_table("purchases")
     region_ref = db.region_create(self.context, {'name': 'a_region'})
     item_ref = db.item_create(self.context, {'name': 'an_item'})
     item_type_ref = db.item_type_create(self.context,
                                         {'name': 'an_item_type'})
     payment_type_ref = db.payment_type_create(self.context,
                                               {'name': 'a_payment_type',
                                                'interval_unit': 'days',
                                                'interval_size': 12345,
                                                'is_prepaid': False})
     values = {
         'region_id': region_ref.id,
         'item_id': item_ref.id,
         'item_type_id': item_type_ref.id,
         'payment_type_id': payment_type_ref.id,
         'order_unit': 'some_measure',
         'order_size': 1,
         'price': 11.24,
         'currency': 'CNY',
         }
     product_ref = db.product_create(self.context, values)
     values = {
         'project_id': self.context.project_id,
         'product_id': product_ref.id,
         'resource_uuid': self.resource_uuid,
         'resource_name': self.resource_name,
         }
     subscription_ref = db.subscription_create(self.context, values)
     values = {
         'subscription_id': subscription_ref.id,
         'quantity': 1.56,
         'line_total': 1.56 * product_ref.price,
         }
     expect = db.purchase_create(self.context, values)
     db.purchase_destroy(self.context, expect.id)
     self.assertRaises(exception.PurchaseNotFound,
                       db.purchase_get,
                       self.context, expect.id)
Exemplo n.º 13
0
 def test_subscription_extend(self):
     self.truncate_table("regions")
     self.truncate_table("items")
     self.truncate_table("item_types")
     self.truncate_table("payment_types")
     self.truncate_table("products")
     self.truncate_table("subscriptions")
     region_ref = db.region_create(self.context, {'name': 'a_region'})
     item_ref = db.item_create(self.context, {'name': 'an_item'})
     item_type_ref = db.item_type_create(self.context,
                                         {'name': 'an_item_type'})
     payment_type_ref = db.payment_type_create(
         self.context, {
             'name': 'a_payment_type',
             'interval_unit': 'days',
             'interval_size': 12345,
             'is_prepaid': False
         })
     values = {
         'region_id': region_ref.id,
         'item_id': item_ref.id,
         'item_type_id': item_type_ref.id,
         'payment_type_id': payment_type_ref.id,
         'order_unit': 'some_measure',
         'order_size': 1,
         'price': 11.24,
         'currency': 'CNY',
     }
     product_ref = db.product_create(self.context, values)
     values = {
         'project_id': self.context.project_id,
         'product_id': product_ref.id,
         'resource_uuid': self.resource_uuid,
         'resource_name': self.resource_name,
     }
     expect = db.subscription_create(self.context, values)
     datetime_to = datetime.datetime.now() + datetime.timedelta(days=1)
     db.subscription_extend(self.context, expect.id, datetime_to)
     actual = db.subscription_get(self.context, expect.id)
     self.assertEqual(datetime_to.day, actual['expires_at'].day)
Exemplo n.º 14
0
 def test_subscription_error(self):
     self.truncate_table("regions")
     self.truncate_table("items")
     self.truncate_table("item_types")
     self.truncate_table("payment_types")
     self.truncate_table("products")
     self.truncate_table("subscriptions")
     region_ref = db.region_create(self.context, {'name': 'a_region'})
     item_ref = db.item_create(self.context, {'name': 'an_item'})
     item_type_ref = db.item_type_create(self.context,
                                         {'name': 'an_item_type'})
     payment_type_ref = db.payment_type_create(
         self.context, {
             'name': 'a_payment_type',
             'interval_unit': 'days',
             'interval_size': 12345,
             'is_prepaid': False
         })
     values = {
         'region_id': region_ref.id,
         'item_id': item_ref.id,
         'item_type_id': item_type_ref.id,
         'payment_type_id': payment_type_ref.id,
         'order_unit': 'some_measure',
         'order_size': 1,
         'price': 11.24,
         'currency': 'CNY',
     }
     product_ref = db.product_create(self.context, values)
     values = {
         'project_id': self.context.project_id,
         'product_id': product_ref.id,
         'resource_uuid': self.resource_uuid,
         'resource_name': self.resource_name,
     }
     expect = db.subscription_create(self.context, values)
     db.subscription_error(self.context, expect.id)
     actual = db.subscription_get(self.context, expect.id)
     expect.status = "error"
     self.compare_records(expect, actual)
Exemplo n.º 15
0
 def test_subscription_extend(self):
     self.truncate_table("regions")
     self.truncate_table("items")
     self.truncate_table("item_types")
     self.truncate_table("payment_types")
     self.truncate_table("products")
     self.truncate_table("subscriptions")
     region_ref = db.region_create(self.context, {'name': 'a_region'})
     item_ref = db.item_create(self.context, {'name': 'an_item'})
     item_type_ref = db.item_type_create(self.context,
                                         {'name': 'an_item_type'})
     payment_type_ref = db.payment_type_create(self.context,
                                               {'name': 'a_payment_type',
                                                'interval_unit': 'days',
                                                'interval_size': 12345,
                                                'is_prepaid': False})
     values = {
         'region_id': region_ref.id,
         'item_id': item_ref.id,
         'item_type_id': item_type_ref.id,
         'payment_type_id': payment_type_ref.id,
         'order_unit': 'some_measure',
         'order_size': 1,
         'price': 11.24,
         'currency': 'CNY',
         }
     product_ref = db.product_create(self.context, values)
     values = {
         'project_id': self.context.project_id,
         'product_id': product_ref.id,
         'resource_uuid': self.resource_uuid,
         'resource_name': self.resource_name,
         }
     expect = db.subscription_create(self.context, values)
     datetime_to = datetime.datetime.now() + datetime.timedelta(days=1)
     db.subscription_extend(self.context, expect.id, datetime_to)
     actual = db.subscription_get(self.context, expect.id)
     self.assertEqual(datetime_to.day, actual['expires_at'].day)
Exemplo n.º 16
0
 def test_subscription_error(self):
     self.truncate_table("regions")
     self.truncate_table("items")
     self.truncate_table("item_types")
     self.truncate_table("payment_types")
     self.truncate_table("products")
     self.truncate_table("subscriptions")
     region_ref = db.region_create(self.context, {'name': 'a_region'})
     item_ref = db.item_create(self.context, {'name': 'an_item'})
     item_type_ref = db.item_type_create(self.context,
                                         {'name': 'an_item_type'})
     payment_type_ref = db.payment_type_create(self.context,
                                               {'name': 'a_payment_type',
                                                'interval_unit': 'days',
                                                'interval_size': 12345,
                                                'is_prepaid': False})
     values = {
         'region_id': region_ref.id,
         'item_id': item_ref.id,
         'item_type_id': item_type_ref.id,
         'payment_type_id': payment_type_ref.id,
         'order_unit': 'some_measure',
         'order_size': 1,
         'price': 11.24,
         'currency': 'CNY',
         }
     product_ref = db.product_create(self.context, values)
     values = {
         'project_id': self.context.project_id,
         'product_id': product_ref.id,
         'resource_uuid': self.resource_uuid,
         'resource_name': self.resource_name,
         }
     expect = db.subscription_create(self.context, values)
     db.subscription_error(self.context, expect.id)
     actual = db.subscription_get(self.context, expect.id)
     expect.status = "error"
     self.compare_records(expect, actual)