fisk/core/forms.py

116 lines
2.5 KiB
Python
Raw Normal View History

2022-10-13 14:26:43 +00:00
from django import forms
from django.contrib.auth.forms import UserCreationForm
2022-10-12 06:22:22 +00:00
from django.forms import ModelForm
2022-10-13 14:26:43 +00:00
from .models import Account, Hook, Strategy, Trade, TradingTime, User
2022-10-13 14:26:43 +00:00
# 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__"
2022-10-12 06:22:22 +00:00
class HookForm(ModelForm):
class Meta:
model = Hook
fields = (
"name",
"hook",
"direction",
2022-10-12 06:22:22 +00:00
)
2022-10-17 17:56:16 +00:00
class AccountForm(ModelForm):
class Meta:
model = Account
fields = (
"name",
2022-10-17 17:56:16 +00:00
"exchange",
"api_key",
"api_secret",
2022-10-17 06:20:30 +00:00
"sandbox",
2022-10-17 17:56:16 +00:00
)
class StrategyForm(ModelForm):
class Meta:
model = Strategy
fields = (
"name",
"description",
"account",
2022-11-25 18:05:02 +00:00
"trading_times",
"order_type",
"time_in_force",
"hooks",
"enabled",
"take_profit_percent",
"stop_loss_percent",
2022-11-15 07:20:17 +00:00
"trailing_stop_loss_percent",
"price_slippage_percent",
"callback_price_deviation_percent",
"trade_size_percent",
)
hooks = forms.ModelMultipleChoiceField(
queryset=Hook.objects.all(), widget=forms.CheckboxSelectMultiple
)
2022-11-25 18:05:02 +00:00
trading_times = forms.ModelMultipleChoiceField(
queryset=TradingTime.objects.all(), widget=forms.CheckboxSelectMultiple
)
2022-10-17 17:56:16 +00:00
class TradeForm(ModelForm):
class Meta:
model = Trade
fields = (
"account",
"symbol",
"type",
"time_in_force",
2022-10-17 17:56:16 +00:00
"amount",
"price",
"stop_loss",
2022-11-15 07:20:17 +00:00
"trailing_stop_loss",
2022-10-17 17:56:16 +00:00
"take_profit",
2022-10-17 06:20:30 +00:00
"direction",
2022-10-17 17:56:16 +00:00
)
class TradingTimeForm(ModelForm):
class Meta:
model = TradingTime
fields = (
"name",
"description",
"start_day",
"start_time",
"end_day",
"end_time",
)