Compare commits

..

No commits in common. "8455d64e311031beecc1165a941d12d92bfc08c6" and "1f43a00c7a826f8770715f383e9f2dd534a108a2" have entirely different histories.

8 changed files with 296 additions and 355 deletions

View File

@ -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"

View File

@ -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)

View File

@ -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):

View File

@ -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');

View File

@ -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"]

View File

@ -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: {}

View File

@ -1,2 +1,2 @@
unixsocket /var/run/socks/redis.sock unixsocket /var/run/redis/redis.sock
unixsocketperm 777 unixsocketperm 777

View File

@ -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