Пример #1
0
    def test_order_twice(self):
        plan = self.plan1
        app = self.app
        price = plan.price
        amount = 2
        order = Order(price=price, amount=amount, period=plan.period, user=self.user, app=app, plan=plan)
        order.save()
        self.assertTrue(order.state == 0)
        now = timezone.now()
        order.finish()
        userapp = UserApp.objects.get(user=self.user, app=app)

        self.assertTrue(userapp.plan == plan)
        self.assertTrue((userapp.expired_time - now).days == 60)
        self.assertTrue(order.state == 1)
        self.assertTrue(OrderLock.objects.get(order=order))


        #: order again
        order = Order(price=price, amount=amount, period=plan.period, user=self.user, app=app, plan=plan)
        order.save()
        self.assertTrue(order.state == 0)
        order.finish()

        userapp = UserApp.objects.get(user=self.user, app=app)

        self.assertTrue(userapp.plan == plan)
        self.assertTrue((userapp.expired_time - now).days == 120)
        self.assertTrue(order.state == 1)
        self.assertTrue(OrderLock.objects.get(order=order))
Пример #2
0
def checkout(request):

    order = Order()
    i = 0
    total_qty = 0
    total_price = 0.0

    while request.POST.get('productId_' + str(i), None) is not None:
        product_id = request.POST.get('productId_' + str(i))
        qty = int(request.POST.get('qty_' + str(i)))
        total_qty = total_qty + qty
        product = Product.objects.get(pk=product_id)
        total_price = total_price + product.price_sale
        product.qty -= qty
        product.save()
        # Handle database
        # 1- Decrease product count (qty) - read from database [[product = Product.objects.get(pk=product_id)]]
        # 2-  Add Entry (row) or (save) in order-item table and order (Create order )

        i += 1
    order.total_qty = total_qty
    order.total_price = total_price
    order.save()
    del request.session[CART_KEY]
    return home(request)
Пример #3
0
def detail(request, app_key):
    user = request.user
    app = get_object_or_404(App, key=app_key)
    if request.method == 'GET':
        try:
            user_app = UserApp.objects.get(user=user, app__key=app_key)
        except UserApp.DoesNotExist:
            pass
        plans = AppPlan.objects.filter(app=app, available=True)
        context = {}
        context['app'] = app
        context['plans'] = plans

        return render(request, 'market/{}.html'.format(app_key), context)
    else:
        plan_id = request.POST.get('plan')
        amount = int(request.POST.get('amount'))
        plan = AppPlan.objects.get(id=int(plan_id))
        price = plan.price
        days = plan.period * amount

        order = Order(price=price,
                      amount=amount,
                      period=plan.period,
                      user=user,
                      app=app,
                      plan=plan)
        order.save()
        return redirect("market_order", id=order.id)
Пример #4
0
    def post(self, request, format=None):
        o = Order()
        #o.consumer = request.user.userprofile
        o.save()
        for item in request.data.get('products'):
            product = Product.objects.get(pk = item['product'])
            op = OrderProduct()
            op.product = product
            op.order = o
            op.phone = request.data.get('phone')
            op.ammount = item['ammount']
            op.save()

            noty = Notification()
            noty.product = product

            #noty.consumer = request.user.userprofile
            noty.phone = request.data.get('phone')
            noty.provider = product.user
            noty.ammount = item['ammount']
            noty.save()
        
        async_to_sync(channel_layer.group_send)("notifications", {"type": "send_notify"})
            
        return Response(OrderSerializer(o).data)
Пример #5
0
 def post(self, request):
     o = Order()
     o.consumer = request.user.userprofile
     o.save()
     for item in request.data.get('products'):
         product = Product.objects.get(pk=item['product'])
         OrderProduct.objects.create(product=product,
                                     order=o,
                                     amount=item['amount'])
     return Response(OrderSerializer(o).data)
Пример #6
0
    def test_creating_order_requires_a_user_value_only(self):
        """
        Test to check that creating an Order object only requires
        a value for user. delivery_address is optional. date_time should
        be set to current datetime
        """
        new_user = User.objects.create(username="******", email="*****@*****.**", password="******")
        only_user_order = Order(user=new_user)
        only_user_order.save()
        retrieved_order = Order.objects.get(user=new_user)
        self.assertEqual(retrieved_order.date_time.date(), datetime.date.today())

        with self.assertRaises(IntegrityError):
            order_without_user = Order()
            order_without_user.save()
Пример #7
0
    def test_can_get_userpage_values(self):
        """
        Test that get_userpage_values retrieves a dictionary with
        the votes, purchases, coin_history, and SuggestionAdminPages
        for that user
        """
        new_user = User(username="******", email="*****@*****.**", password="******")
        new_user.save()

        suggestion_1 = Suggestion(is_feature=True, user=new_user, title="Userpage suggestion 1",
                                  details="Any old details", delay_submission=False)
        suggestion_1.save()
        suggestion_2 = Suggestion(is_feature=True, user=new_user, title="Userpage suggestion 2",
                                  details="Any old details")
        suggestion_2.save()

        suggestion_admin_1 = SuggestionAdminPage(suggestion=suggestion_1)
        suggestion_admin_1.save()
        suggestion_admin_2 = SuggestionAdminPage(suggestion=suggestion_2)
        suggestion_admin_2.save()

        for i in range(5):
            random_suggestion = choice(Suggestion.objects.all())
            upvote = Upvote(suggestion=random_suggestion, user=new_user)
            upvote.save()

            random_coin_transaction = choice(range(1, 10))
            coin_history_entry = UserCoinHistory(user=new_user, coins_change=1, transaction=random_coin_transaction)
            coin_history_entry.save()

            order = Order(user=new_user)
            order.save()
            random_store_item = choice(StoreItem.objects.all())
            order_item = OrderItem(order=order, item=random_store_item, quantity=1, total_purchase_price=1)
            order_item.save()

        userpage_values = get_userpage_values(new_user)

        self.assertEqual(len(userpage_values["coin_history"]), 5)

        random_purchase = choice(userpage_values["purchases"])
        self.assertTrue(isinstance(random_purchase, Order))
        random_coin_history = choice(userpage_values["coin_history"])
        self.assertTrue(isinstance(random_coin_history, UserCoinHistory))
        random_vote = choice(userpage_values["votes"])
        self.assertTrue(isinstance(random_vote, Upvote))
        random_suggestion_admin = choice(userpage_values["suggestions"])
        self.assertTrue(isinstance(random_suggestion_admin, SuggestionAdminPage))
 def post(self, request):
     order = Order()
     total_price = 0.0
     total_qty = 0
     while request.data.get('product_id'):
         product = request.data.get('product_id')
         qty = request.data.get('qty')
         product_id = Product.objects.get(pk=product)
         total_price = total_price + product_id.sale_price
         total_qty = total_qty + qty
         product_id.qty -= qty
         product.save()
     order.total_qty = total_qty
     order.total_price = total_price
     order.save()
     return Response(status=status.HTTP_201_CREATED)
    def setUpTestData(cls):
        user_1 = User(username="******")
        user_1.save()
        user_2 = User(username="******", email="*****@*****.**")
        user_2.save()
        user_3 = User(username="******", password="******", email="*****@*****.**")
        user_3.save()

        suggestion_1 = Suggestion(is_feature=True, user=user_1, title="Test Suggestion 1", details="Any old details",
                                  delay_submission=False)
        suggestion_1.save()
        suggestion_2 = Suggestion(is_feature=True, user=user_2, title="Test Suggestion 2", details="Any old details",
                                  delay_submission=True)
        suggestion_2.save()
        suggestion_3 = Suggestion.objects.create(is_feature=True, user=user_2, title="Test Suggestion 3",
                                                 details="Any old details", delay_submission=False)
        suggestion_3.save()

        user_1_usercoins = UserCoins(user=user_1, coins=100)
        user_1_usercoins.save()
        user_2_usercoins = UserCoins(user=user_2, coins=500)
        user_2_usercoins.save()
        user_3_usercoins = UserCoins(user=user_3, coins=0)
        user_3_usercoins.save()

        coins_purchase_1 = CoinsPurchase(name="coins purchase 1", coins_price=200)
        coins_purchase_1.save()
        coins_purchase_2 = CoinsPurchase(name="coins purchase 2", coins_price=500)
        coins_purchase_2.save()
        suggestion_coins_purchase = CoinsPurchase(name="Suggestion", coins_price=500)
        suggestion_coins_purchase.save()
        upvote_coins_purchase = CoinsPurchase(name="Upvote", coins_price=100)
        upvote_coins_purchase.save()
        promote_feature_purchase = CoinsPurchase(name="Feature Suggestion Promotion", coins_price=600)
        promote_feature_purchase.save()

        coins_store_item_500 = StoreItem(name="500 coins", price=0, delivery_required=False, is_coins=True,
                                         coins_amount=500)
        coins_store_item_500.save()
        coins_store_item_200 = StoreItem(name="200 coins", price=2, delivery_required=False, is_coins=True,
                                         coins_amount=200)
        coins_store_item_200.save()
        coins_store_item_1000 = StoreItem(name="1000 coins", price=10, delivery_required=False, is_coins=True,
                                          coins_amount=1000)
        coins_store_item_1000.save()

        non_coins_store_item = StoreItem(name="not coins", price=5, delivery_required=True, is_coins=False)
        non_coins_store_item.save()
        non_coins_store_item_2 = StoreItem(name="not coins 2", price=10, delivery_required=True, is_coins=False)
        non_coins_store_item_2.save()
        non_coins_store_item_3 = StoreItem(name="not coins 3", price=99, delivery_required=True, is_coins=False)
        non_coins_store_item_3.save()

        order_1 = Order(user=user_1)
        order_1.save()
        order_2 = Order(user=user_2)
        order_2.save()
        order_3 = Order(user=user_3)
        order_3.save()
Пример #10
0
def order(request):
    template = 'orders.html'
    if request.method == 'POST':
        cart = request.session.get('cart')
        cart = json.dumps(cart)
        user = request.user
        new_order = Order(cart=cart, user=user)
        new_order.make_pretty_cart()
        new_order.save()
        request.session['cart'].clear()
        request.session.modified = True
        context = {
            'orders': '',
            'result': 'Ваш заказ успешно создан',
            'just_ordered': True,
        }
        context.update(auth_check(request))
        return render(request, template, context)
    else:
        user = request.user
        orders = Order.objects.filter(user=user).all()
        context = {'orders': orders}
        context.update(auth_check(request))
        return render(request, template, context)
Пример #11
0
def detail(request, app_key):
    user = request.user
    app = get_object_or_404(App, key=app_key)
    if request.method == 'GET':
        try:
            user_app = UserApp.objects.get(user=user, app__key=app_key)
        except UserApp.DoesNotExist:
            pass
        plans = AppPlan.objects.filter(app=app, available=True)
        context = {}
        context['app'] = app
        context['plans'] = plans

        return render(request, 'market/{}.html'.format(app_key), context)
    else:
        plan_id = request.POST.get('plan')
        amount = int(request.POST.get('amount'))
        plan = AppPlan.objects.get(id=int(plan_id))
        price = plan.price
        days = plan.period * amount

        order = Order(price=price, amount=amount, period=plan.period, user=user, app=app, plan=plan)
        order.save()
        return redirect("market_order", id=order.id)
Пример #12
0
def main():
	context = zmq.Context()
	subscriber = context.socket(zmq.SUB)

	# Connect to the first publicly available relay.
	subscriber.connect('tcp://relay-us-central-1.eve-emdr.com:8050')
	# Disable filtering.
	subscriber.setsockopt(zmq.SUBSCRIBE, "")

	while True:
		# Receive raw market JSON strings.
		market_json = zlib.decompress(subscriber.recv())
		# Un-serialize the JSON data to a Python dict.
		market_data = simplejson.loads(market_json)
		# Dump the market data to stdout. Or, you know, do more fun
		# things here.
		if(market_data["resultType"] == "history"):
			for j in market_data["rowsets"]:
				region = Region.objects.get(id=j['regionID']);
				for i in j['rows']:
					type = Type.objects.get(id=j['typeID']);
					date = datetime.datetime.date(datetime.datetime.strptime(i[0][:-6], "%Y-%m-%dT%H:%M:%S").replace(tzinfo=timezone.utc));
					print "HIS " + type.name + " (" + str(j['typeID']) + ")"\
								": "+ str(date) + " | " + str(i[1]) + " ORD / LOW " + str(i[2]) + " HIGH " + str(i[3]) + " AVG " + str(i[4]) + " VOL " + str(i[5]);
					
					
					
					try:
						old_hist = MarketHistory.objects.get(date = date, type = type, region = region)
						td = old_hist.time.replace(tzinfo=timezone.utc) - datetime.datetime.utcnow().replace(tzinfo=timezone.utc)
						if(td.days <= 1) :
							old_hist.orders = i[1]
							old_hist.low = i[3]
							old_hist.high = i[4]
							old_hist.average = i[5]
							old_hist.quantity = i[2]
							if(old_hist.average < old_hist.low or old_hist.high < old_hist.average or old_hist.low > old_hist.high):
								continue;
							old_hist.save()
					except:
						hist = MarketHistory()
						hist.region = region
						hist.type = type
						hist.date = date
						hist.orders = i[1]
						hist.low = i[3]
						hist.high = i[4]
						hist.average = i[5]
						if(hist.average < hist.low or hist.high < hist.average or hist.low > hist.high):
							continue;
						hist.quantity = i[2]
						hist.time = datetime.datetime.now().replace(tzinfo=timezone.utc);
						hist.save()
					
					
		else:
			for j in market_data["rowsets"]:
				for i in j['rows']:
					if(i[6] == 0):
						action = "ASK";
					else:
						action = "BID"
					
					try:
						print "ORD " + Type.objects.get(id=j['typeID']).name + " (" + str(j['typeID']) + ")"\
									": "+ str(i[0]) + " ISK | VOL " + str(i[1]) + "/" + str(i[4]) + " " + action + " STN " + str(i[9]);
						
						order = Order();
						order.price = i[0];
						order.uid = i[3];
						order.type = Type.objects.get(id=j['typeID']);
						order.station = Station.objects.get(id=i[9]);
						order.solarSystem = SolarSystem.objects.get(id=i[10]);
						order.type = Type.objects.get(id=j['typeID']);
						order.bid = i[6];
						order.volEntered = i[4];
						order.volRemaining = i[1];
						order.range = i[2]
						order.issueDate = datetime.datetime.strptime(i[7][:-6], "%Y-%m-%dT%H:%M:%S").replace(tzinfo=timezone.utc);
						order.minVolume = i[5];
						order.duration = i[8];
						order.time = datetime.datetime.utcnow().replace(tzinfo=timezone.utc);
						order.save();
						
						try:
							old_price = CurrPrice.objects.get(type=j['typeID'], station=i[9], bid=i[6]);
							td = old_price.order.time.replace(tzinfo=timezone.utc) - datetime.datetime.utcnow().replace(tzinfo=timezone.utc);
							if (([0] < old_price) and i[6] == False) or (([0] > old_price) and i[6] == True) or (td.seconds > 2):
								old_price.price = i[0];
								old_price.order = order;
								old_price.save();
						except:
							price = CurrPrice();
							price.order = order;
							price.price = i[0];
							price.station = Station.objects.get(id=i[9]);
							price.type = Type.objects.get(id=j['typeID']);
							price.bid=i[6];
							price.save();
					except:
						pass;