Don't show all signals on strategy page
This commit is contained in:
parent
baed991eca
commit
2ee5f7b937
|
@ -11,9 +11,14 @@ from .models import Account, Hook, Signal, Strategy, Trade, TradingTime, User
|
||||||
class RestrictedFormMixin:
|
class RestrictedFormMixin:
|
||||||
"""
|
"""
|
||||||
This mixin is used to restrict the queryset of a form to the current user.
|
This mixin is used to restrict the queryset of a form to the current user.
|
||||||
The request object is passed from the view."""
|
The request object is passed from the view.
|
||||||
|
Fieldargs is used to pass additional arguments to the queryset filter.
|
||||||
|
"""
|
||||||
|
|
||||||
|
fieldargs = {}
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
|
# self.fieldargs = {}
|
||||||
self.request = kwargs.pop("request")
|
self.request = kwargs.pop("request")
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
for field in self.fields:
|
for field in self.fields:
|
||||||
|
@ -27,7 +32,7 @@ class RestrictedFormMixin:
|
||||||
model._meta.get_field("user")
|
model._meta.get_field("user")
|
||||||
# Add the user to the queryset filters
|
# Add the user to the queryset filters
|
||||||
self.fields[field].queryset = model.objects.filter(
|
self.fields[field].queryset = model.objects.filter(
|
||||||
user=self.request.user
|
user=self.request.user, **self.fieldargs.get(field, {})
|
||||||
)
|
)
|
||||||
except FieldDoesNotExist:
|
except FieldDoesNotExist:
|
||||||
pass
|
pass
|
||||||
|
@ -67,10 +72,12 @@ class HookForm(RestrictedFormMixin, ModelForm):
|
||||||
fields = (
|
fields = (
|
||||||
"name",
|
"name",
|
||||||
"hook",
|
"hook",
|
||||||
|
"type",
|
||||||
)
|
)
|
||||||
help_texts = {
|
help_texts = {
|
||||||
"name": "Name of the hook. Informational only.",
|
"name": "Name of the hook. Informational only.",
|
||||||
"hook": "The URL slug to use for the hook. Make it unique.",
|
"hook": "The URL slug to use for the hook. Make it unique.",
|
||||||
|
"type": "Whether the hook is used for entering or exiting trades, or determining the trend.",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -111,6 +118,12 @@ class AccountForm(RestrictedFormMixin, ModelForm):
|
||||||
|
|
||||||
|
|
||||||
class StrategyForm(RestrictedFormMixin, ModelForm):
|
class StrategyForm(RestrictedFormMixin, ModelForm):
|
||||||
|
fieldargs = {
|
||||||
|
"entry_signals": {"hook__type": "entry"},
|
||||||
|
"exit_signals": {"hook__type": "exit"},
|
||||||
|
"trend_signals": {"hook__type": "trend"},
|
||||||
|
}
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Strategy
|
model = Strategy
|
||||||
fields = (
|
fields = (
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
# Generated by Django 4.1.3 on 2022-12-07 09:57
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('core', '0044_strategy_trends'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='hook',
|
||||||
|
name='type',
|
||||||
|
field=models.CharField(choices=[('entry', 'Entry'), ('exit', 'Exit'), ('trend', 'Trend')], default='entry', max_length=255),
|
||||||
|
preserve_default=False,
|
||||||
|
),
|
||||||
|
]
|
|
@ -35,6 +35,11 @@ DAY_CHOICES = (
|
||||||
(6, "Saturday"),
|
(6, "Saturday"),
|
||||||
(7, "Sunday"),
|
(7, "Sunday"),
|
||||||
)
|
)
|
||||||
|
HOOK_TYPE_CHOICES = (
|
||||||
|
("entry", "Entry"),
|
||||||
|
("exit", "Exit"),
|
||||||
|
("trend", "Trend"),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class Plan(models.Model):
|
class Plan(models.Model):
|
||||||
|
@ -169,6 +174,7 @@ class Hook(models.Model):
|
||||||
name = models.CharField(max_length=1024)
|
name = models.CharField(max_length=1024)
|
||||||
hook = models.CharField(max_length=255, unique=True) # hook URL
|
hook = models.CharField(max_length=255, unique=True) # hook URL
|
||||||
received = models.IntegerField(default=0)
|
received = models.IntegerField(default=0)
|
||||||
|
type = models.CharField(choices=HOOK_TYPE_CHOICES, max_length=255)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"{self.name} ({self.hook})"
|
return f"{self.name} ({self.hook})"
|
||||||
|
|
Loading…
Reference in New Issue