From b12385a24bd3f7254ed418b1f864c9a17ea2ece8 Mon Sep 17 00:00:00 2001 From: Denis Tereshkin Date: Tue, 7 Mar 2017 20:08:07 +0700 Subject: [PATCH] Manual trades creation --- forms.py | 2 +- templates/dashboard/closed_trades.html | 20 ++++++++++++++++++++ templates/dashboard/trades.html | 5 +++-- urls.py | 2 +- views.py | 24 +++++++++++++++++++++++- 5 files changed, 48 insertions(+), 5 deletions(-) create mode 100644 templates/dashboard/closed_trades.html diff --git a/forms.py b/forms.py index 1def45d..02443a1 100644 --- a/forms.py +++ b/forms.py @@ -7,7 +7,7 @@ class NewTradeForm(forms.Form): operation = forms.ChoiceField(choices=[('buy', 'Buy'), ('sell', 'Sell')]) price = forms.DecimalField() quantity = forms.IntegerField() - volume = forms.DateField() + volume = forms.DecimalField() volumeCurrency = forms.CharField(max_length=10) strategyId = forms.CharField(max_length=64) signalId = forms.CharField(max_length=64) diff --git a/templates/dashboard/closed_trades.html b/templates/dashboard/closed_trades.html new file mode 100644 index 0000000..3a839dd --- /dev/null +++ b/templates/dashboard/closed_trades.html @@ -0,0 +1,20 @@ +{% extends "dashboard/base.html" %} +{% load bootstrap3 %} +{% load mathfilters %} + +{% block content %} + + + + + + + + + + +{% for closed_trade in closed_trades %} +{% endfor %} +
AccountSecurityEntryTimeExitTimeProfitStrategy ID
+{% endblock %} + diff --git a/templates/dashboard/trades.html b/templates/dashboard/trades.html index 8a1b064..2ff476b 100644 --- a/templates/dashboard/trades.html +++ b/templates/dashboard/trades.html @@ -4,8 +4,9 @@ {% block content %}
-
-
+
+ + {% csrf_token %} {% bootstrap_form new_trade_form %} {% bootstrap_button button_type='submit' content='Submit' %} diff --git a/urls.py b/urls.py index 3faf375..858005e 100644 --- a/urls.py +++ b/urls.py @@ -8,6 +8,6 @@ urlpatterns = [ url(r'^add_instance$', views.add_instance, name='add_instance'), url(r'^delete_instance/(?P[^/]+)$', views.delete_instance, name='delete_instance'), url(r'^trades/$', views.trades_index, name='trades_index'), + url(r'^add_trade/$', views.add_trade, name='add_trade'), url(r'^delete_trade/(?P[^/]+)$', views.delete_trade, name='delete_trade'), - ] diff --git a/views.py b/views.py index 994750d..0306ead 100644 --- a/views.py +++ b/views.py @@ -1,5 +1,5 @@ -from django.http import HttpResponse, HttpResponseRedirect +from django.http import HttpResponse, HttpResponseRedirect, Http404 from django.template import loader from django.shortcuts import render, get_object_or_404 from django.urls import reverse @@ -87,3 +87,25 @@ def delete_trade(request, trade_id): trade.delete() return HttpResponseRedirect(reverse('trades_index')) +def add_trade(request): + if request.method == 'POST': + form = NewTradeForm(request.POST) + if form.is_valid(): + d = form.cleaned_data + quantity_multiplier = 1 + if d['operation'] == 'sell': + quantity_multiplier = -1 + trade = Trade(account=d['account'], security=d['security'], price=d['price'], quantity=quantity_multiplier * d['quantity'], + volume=d['volume'], volumeCurrency=d['volumeCurrency'], strategyId=d['strategyId'], signalId=d['signalId'], timestamp=d['timestamp'], balanced=False) + trade.save() + return HttpResponseRedirect(reverse('trades_index')) + else: + trades = Trade.objects.all() + template = loader.get_template('dashboard/trades.html') + context = { + 'trades' : trades, + 'new_trade_form' : form + } + return HttpResponse(template.render(context, request)) + raise Http404("Invalid method") +