Compare commits
No commits in common. "8455d64e311031beecc1165a941d12d92bfc08c6" and "1f43a00c7a826f8770715f383e9f2dd534a108a2" have entirely different histories.
8455d64e31
...
1f43a00c7a
@ -54,24 +54,6 @@ INSTALLED_APPS = [
|
|||||||
# "otp_yubikey",
|
# "otp_yubikey",
|
||||||
"mixins",
|
"mixins",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
# Performance optimisations
|
|
||||||
CACHES = {
|
|
||||||
"default": {
|
|
||||||
"BACKEND": "django.core.cache.backends.redis.RedisCache",
|
|
||||||
"LOCATION": "unix:///var/run/socks/redis.sock",
|
|
||||||
"OPTIONS": {
|
|
||||||
"db": "10",
|
|
||||||
"parser_class": "redis.connection.PythonParser",
|
|
||||||
"pool_class": "redis.BlockingConnectionPool",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
# CACHE_MIDDLEWARE_ALIAS
|
|
||||||
# CACHE_MIDDLEWARE_SECONDS
|
|
||||||
# CACHE_MIDDLEWARE_KEY_PREFIX
|
|
||||||
|
|
||||||
CRISPY_TEMPLATE_PACK = "bulma"
|
CRISPY_TEMPLATE_PACK = "bulma"
|
||||||
CRISPY_ALLOWED_TEMPLATE_PACKS = ("bulma",)
|
CRISPY_ALLOWED_TEMPLATE_PACKS = ("bulma",)
|
||||||
DJANGO_TABLES2_TEMPLATE = "django-tables2/bulma.html"
|
DJANGO_TABLES2_TEMPLATE = "django-tables2/bulma.html"
|
||||||
@ -87,9 +69,6 @@ MIDDLEWARE = [
|
|||||||
"django.contrib.messages.middleware.MessageMiddleware",
|
"django.contrib.messages.middleware.MessageMiddleware",
|
||||||
"django.middleware.clickjacking.XFrameOptionsMiddleware",
|
"django.middleware.clickjacking.XFrameOptionsMiddleware",
|
||||||
"django_htmx.middleware.HtmxMiddleware",
|
"django_htmx.middleware.HtmxMiddleware",
|
||||||
# 'django.middleware.cache.UpdateCacheMiddleware',
|
|
||||||
# 'django.middleware.common.CommonMiddleware',
|
|
||||||
# 'django.middleware.cache.FetchFromCacheMiddleware',
|
|
||||||
]
|
]
|
||||||
|
|
||||||
ROOT_URLCONF = "app.urls"
|
ROOT_URLCONF = "app.urls"
|
||||||
|
@ -4,19 +4,19 @@ from django.contrib.auth.admin import UserAdmin
|
|||||||
from .forms import CustomUserCreationForm
|
from .forms import CustomUserCreationForm
|
||||||
from .models import (
|
from .models import (
|
||||||
Account,
|
Account,
|
||||||
AssetGroup,
|
|
||||||
AssetRestriction,
|
|
||||||
Callback,
|
Callback,
|
||||||
Hook,
|
Hook,
|
||||||
NotificationSettings,
|
|
||||||
Plan,
|
Plan,
|
||||||
RiskModel,
|
|
||||||
Session,
|
Session,
|
||||||
Signal,
|
Signal,
|
||||||
Strategy,
|
Strategy,
|
||||||
Trade,
|
Trade,
|
||||||
TradingTime,
|
TradingTime,
|
||||||
User,
|
User,
|
||||||
|
NotificationSettings,
|
||||||
|
RiskModel,
|
||||||
|
AssetGroup,
|
||||||
|
AssetRestriction,
|
||||||
)
|
)
|
||||||
|
|
||||||
# admin.site.__class__ = OTPAdminSite
|
# admin.site.__class__ = OTPAdminSite
|
||||||
@ -80,27 +80,15 @@ class StrategyAdmin(admin.ModelAdmin):
|
|||||||
class NotificationSettingsAdmin(admin.ModelAdmin):
|
class NotificationSettingsAdmin(admin.ModelAdmin):
|
||||||
list_display = ("user", "ntfy_topic", "ntfy_url")
|
list_display = ("user", "ntfy_topic", "ntfy_url")
|
||||||
|
|
||||||
|
|
||||||
class RiskModelAdmin(admin.ModelAdmin):
|
class RiskModelAdmin(admin.ModelAdmin):
|
||||||
list_display = (
|
list_display = ("user", "name", "description", "max_loss_percent", "max_risk_percent", "max_open_trades", "max_open_trades_per_symbol")
|
||||||
"user",
|
|
||||||
"name",
|
|
||||||
"description",
|
|
||||||
"max_loss_percent",
|
|
||||||
"max_risk_percent",
|
|
||||||
"max_open_trades",
|
|
||||||
"max_open_trades_per_symbol",
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class AssetGroupAdmin(admin.ModelAdmin):
|
class AssetGroupAdmin(admin.ModelAdmin):
|
||||||
list_display = ("user", "name", "description", "account")
|
list_display = ("user", "name", "description", "account")
|
||||||
|
|
||||||
|
|
||||||
class AssetRestrictionAdmin(admin.ModelAdmin):
|
class AssetRestrictionAdmin(admin.ModelAdmin):
|
||||||
list_display = ("user", "name", "description", "webhook_id", "group")
|
list_display = ("user", "name", "description", "webhook_id", "group")
|
||||||
|
|
||||||
|
|
||||||
admin.site.register(User, CustomUserAdmin)
|
admin.site.register(User, CustomUserAdmin)
|
||||||
admin.site.register(Plan)
|
admin.site.register(Plan)
|
||||||
admin.site.register(Session)
|
admin.site.register(Session)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# Generated by Django 4.1.6 on 2023-02-10 22:57
|
# Generated by Django 4.1.6 on 2023-02-10 22:57
|
||||||
|
|
||||||
import django.db.models.deletion
|
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
{% load static %}
|
{% load static %}
|
||||||
{% load has_plan %}
|
{% load has_plan %}
|
||||||
{% load cache %}
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en-GB">
|
<html lang="en-GB">
|
||||||
{% cache 600 head %}
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
@ -197,10 +195,8 @@
|
|||||||
</script>
|
</script>
|
||||||
<!-- End Piwik Code -->
|
<!-- End Piwik Code -->
|
||||||
</head>
|
</head>
|
||||||
{% endcache %}
|
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
{% cache 600 nav request.user.id %}
|
|
||||||
<nav class="navbar" role="navigation" aria-label="main navigation">
|
<nav class="navbar" role="navigation" aria-label="main navigation">
|
||||||
<div class="navbar-brand">
|
<div class="navbar-brand">
|
||||||
<a class="navbar-item" href="{% url 'home' %}">
|
<a class="navbar-item" href="{% url 'home' %}">
|
||||||
@ -314,7 +310,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
{% endcache %}
|
|
||||||
<script>
|
<script>
|
||||||
let deferredPrompt;
|
let deferredPrompt;
|
||||||
const addBtn = document.querySelector('.add-button');
|
const addBtn = document.querySelector('.add-button');
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
import json
|
|
||||||
|
|
||||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||||
from django.http import HttpResponse
|
from django.http import HttpResponse
|
||||||
from mixins.views import AbortSave, ObjectCreate, ObjectDelete, ObjectList, ObjectUpdate
|
from mixins.views import AbortSave, ObjectCreate, ObjectDelete, ObjectList, ObjectUpdate
|
||||||
@ -10,6 +8,7 @@ from rest_framework.views import APIView
|
|||||||
from core.forms import AssetGroupForm, AssetRestrictionForm
|
from core.forms import AssetGroupForm, AssetRestrictionForm
|
||||||
from core.models import AssetGroup, AssetRestriction
|
from core.models import AssetGroup, AssetRestriction
|
||||||
from core.util import logs
|
from core.util import logs
|
||||||
|
import json
|
||||||
|
|
||||||
log = logs.get_logger(__name__)
|
log = logs.get_logger(__name__)
|
||||||
|
|
||||||
@ -66,9 +65,7 @@ class AssetRestrictionList(
|
|||||||
list_template = "partials/assetrestriction-list.html"
|
list_template = "partials/assetrestriction-list.html"
|
||||||
model = AssetRestriction
|
model = AssetRestriction
|
||||||
page_title = "List of asset restrictions. Linked to asset groups."
|
page_title = "List of asset restrictions. Linked to asset groups."
|
||||||
page_subtitle = (
|
page_subtitle = "Allows API calls to permit or prohibit trading on defined currency pairs."
|
||||||
"Allows API calls to permit or prohibit trading on defined currency pairs."
|
|
||||||
)
|
|
||||||
|
|
||||||
list_url_name = "assetrestrictions"
|
list_url_name = "assetrestrictions"
|
||||||
list_url_args = ["type", "group"]
|
list_url_args = ["type", "group"]
|
||||||
|
@ -43,8 +43,6 @@ services:
|
|||||||
- ${PORTAINER_GIT_DIR}:/code
|
- ${PORTAINER_GIT_DIR}:/code
|
||||||
- ${APP_DATABASE_FILE}:/conf/db.sqlite3
|
- ${APP_DATABASE_FILE}:/conf/db.sqlite3
|
||||||
- fisk_static:${STATIC_ROOT}
|
- fisk_static:${STATIC_ROOT}
|
||||||
volumes_from:
|
|
||||||
- tmp
|
|
||||||
env_file:
|
env_file:
|
||||||
- stack.env
|
- stack.env
|
||||||
|
|
||||||
@ -60,8 +58,6 @@ services:
|
|||||||
- ${PORTAINER_GIT_DIR}:/code
|
- ${PORTAINER_GIT_DIR}:/code
|
||||||
- ${APP_DATABASE_FILE}:/conf/db.sqlite3
|
- ${APP_DATABASE_FILE}:/conf/db.sqlite3
|
||||||
- fisk_static:${STATIC_ROOT}
|
- fisk_static:${STATIC_ROOT}
|
||||||
volumes_from:
|
|
||||||
- tmp
|
|
||||||
env_file:
|
env_file:
|
||||||
- stack.env
|
- stack.env
|
||||||
|
|
||||||
@ -102,33 +98,24 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- /var/run/socks
|
- /var/run/socks
|
||||||
|
|
||||||
# For caching
|
# redis:
|
||||||
redis:
|
# image: redis
|
||||||
image: redis
|
# command: redis-server /etc/redis.conf
|
||||||
container_name: redis_fisk
|
# ulimits:
|
||||||
command: redis-server /etc/redis.conf
|
# nproc: 65535
|
||||||
ulimits:
|
# nofile:
|
||||||
nproc: 65535
|
# soft: 65535
|
||||||
nofile:
|
# hard: 65535
|
||||||
soft: 65535
|
# volumes:
|
||||||
hard: 65535
|
# - ${PORTAINER_GIT_DIR}/docker/redis.conf:/etc/redis.conf
|
||||||
volumes:
|
# - redis_data:/data
|
||||||
- ${PORTAINER_GIT_DIR}/docker/redis.conf:/etc/redis.conf
|
# volumes_from:
|
||||||
- fisk_redis_data:/data
|
# - tmp
|
||||||
volumes_from:
|
# healthcheck:
|
||||||
- tmp
|
# test: "redis-cli -s /var/run/redis/redis.sock ping"
|
||||||
healthcheck:
|
# interval: 2s
|
||||||
test: "redis-cli -s /var/run/socks/redis.sock ping"
|
# timeout: 2s
|
||||||
interval: 2s
|
# retries: 15
|
||||||
timeout: 2s
|
|
||||||
retries: 15
|
|
||||||
|
|
||||||
# pyroscope:
|
|
||||||
# image: "pyroscope/pyroscope:latest"
|
|
||||||
# ports:
|
|
||||||
# - "4040:4040"
|
|
||||||
# command:
|
|
||||||
# - "server"
|
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
default:
|
default:
|
||||||
@ -140,4 +127,3 @@ networks:
|
|||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
fisk_static: {}
|
fisk_static: {}
|
||||||
fisk_redis_data: {}
|
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
unixsocket /var/run/socks/redis.sock
|
unixsocket /var/run/redis/redis.sock
|
||||||
unixsocketperm 777
|
unixsocketperm 777
|
@ -22,7 +22,3 @@ oandapyV20
|
|||||||
glom
|
glom
|
||||||
elasticsearch
|
elasticsearch
|
||||||
git+https://git.zm.is/XF/django-crud-mixins
|
git+https://git.zm.is/XF/django-crud-mixins
|
||||||
# pyroscope-io
|
|
||||||
# For caching
|
|
||||||
redis
|
|
||||||
hiredis
|
|
||||||
|
Loading…
Reference in New Issue
Block a user