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))
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)
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)
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)
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)
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()
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()
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)
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;