Compare commits
2 Commits
1f43a00c7a
...
8455d64e31
Author | SHA1 | Date | |
---|---|---|---|
8455d64e31 | |||
57078c10c1 |
@ -54,6 +54,24 @@ 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"
|
||||||
@ -69,6 +87,9 @@ 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,15 +80,27 @@ 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 = ("user", "name", "description", "max_loss_percent", "max_risk_percent", "max_open_trades", "max_open_trades_per_symbol")
|
list_display = (
|
||||||
|
"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
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
import django.db.models.deletion
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
{% 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">
|
||||||
@ -195,8 +197,10 @@
|
|||||||
</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' %}">
|
||||||
@ -310,6 +314,7 @@
|
|||||||
</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,3 +1,5 @@
|
|||||||
|
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
|
||||||
@ -8,7 +10,6 @@ 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__)
|
||||||
|
|
||||||
@ -65,7 +66,9 @@ 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 = "Allows API calls to permit or prohibit trading on defined currency pairs."
|
page_subtitle = (
|
||||||
|
"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,6 +43,8 @@ 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
|
||||||
|
|
||||||
@ -58,6 +60,8 @@ 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
|
||||||
|
|
||||||
@ -98,24 +102,33 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- /var/run/socks
|
- /var/run/socks
|
||||||
|
|
||||||
# redis:
|
# For caching
|
||||||
# image: redis
|
redis:
|
||||||
# command: redis-server /etc/redis.conf
|
image: redis
|
||||||
# ulimits:
|
container_name: redis_fisk
|
||||||
# nproc: 65535
|
command: redis-server /etc/redis.conf
|
||||||
# nofile:
|
ulimits:
|
||||||
# soft: 65535
|
nproc: 65535
|
||||||
# hard: 65535
|
nofile:
|
||||||
# volumes:
|
soft: 65535
|
||||||
# - ${PORTAINER_GIT_DIR}/docker/redis.conf:/etc/redis.conf
|
hard: 65535
|
||||||
# - redis_data:/data
|
volumes:
|
||||||
# volumes_from:
|
- ${PORTAINER_GIT_DIR}/docker/redis.conf:/etc/redis.conf
|
||||||
# - tmp
|
- fisk_redis_data:/data
|
||||||
# healthcheck:
|
volumes_from:
|
||||||
# test: "redis-cli -s /var/run/redis/redis.sock ping"
|
- tmp
|
||||||
# interval: 2s
|
healthcheck:
|
||||||
# timeout: 2s
|
test: "redis-cli -s /var/run/socks/redis.sock ping"
|
||||||
# retries: 15
|
interval: 2s
|
||||||
|
timeout: 2s
|
||||||
|
retries: 15
|
||||||
|
|
||||||
|
# pyroscope:
|
||||||
|
# image: "pyroscope/pyroscope:latest"
|
||||||
|
# ports:
|
||||||
|
# - "4040:4040"
|
||||||
|
# command:
|
||||||
|
# - "server"
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
default:
|
default:
|
||||||
@ -127,3 +140,4 @@ networks:
|
|||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
fisk_static: {}
|
fisk_static: {}
|
||||||
|
fisk_redis_data: {}
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
unixsocket /var/run/redis/redis.sock
|
unixsocket /var/run/socks/redis.sock
|
||||||
unixsocketperm 777
|
unixsocketperm 777
|
@ -22,3 +22,7 @@ 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