fisk/core/forms.py

116 lines
2.5 KiB
Python

from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.forms import ModelForm
from .models import Account, Hook, Strategy, Trade, TradingTime, User
# Create your forms here.
class NewUserForm(UserCreationForm):
email = forms.EmailField(required=True)
class Meta:
model = User
fields = (
"username",
"email",
"first_name",
"last_name",
"password1",
"password2",
)
def save(self, commit=True):
user = super(NewUserForm, self).save(commit=False)
user.email = self.cleaned_data["email"]
if commit:
user.save()
return user
class CustomUserCreationForm(UserCreationForm):
class Meta:
model = User
fields = "__all__"
class HookForm(ModelForm):
class Meta:
model = Hook
fields = (
"name",
"hook",
"direction",
)
class AccountForm(ModelForm):
class Meta:
model = Account
fields = (
"name",
"exchange",
"api_key",
"api_secret",
"sandbox",
)
class StrategyForm(ModelForm):
class Meta:
model = Strategy
fields = (
"name",
"description",
"account",
"trading_times",
"order_type",
"time_in_force",
"hooks",
"enabled",
"take_profit_percent",
"stop_loss_percent",
"trailing_stop_loss_percent",
"price_slippage_percent",
"callback_price_deviation_percent",
"trade_size_percent",
)
hooks = forms.ModelMultipleChoiceField(
queryset=Hook.objects.all(), widget=forms.CheckboxSelectMultiple
)
trading_times = forms.ModelMultipleChoiceField(
queryset=TradingTime.objects.all(), widget=forms.CheckboxSelectMultiple
)
class TradeForm(ModelForm):
class Meta:
model = Trade
fields = (
"account",
"symbol",
"type",
"time_in_force",
"amount",
"price",
"stop_loss",
"trailing_stop_loss",
"take_profit",
"direction",
)
class TradingTimeForm(ModelForm):
class Meta:
model = TradingTime
fields = (
"name",
"description",
"start_day",
"start_time",
"end_day",
"end_time",
)