From 66f22285efe05831d635d23865d3dc687901f682 Mon Sep 17 00:00:00 2001 From: erjemin Date: Wed, 21 Jan 2026 01:22:59 +0300 Subject: [PATCH] =?UTF-8?q?add:=20=D1=81=D0=B1=D0=BE=D1=80=20=D1=81=D1=82?= =?UTF-8?q?=D0=B0=D1=82=D0=B8=D1=81=D1=82=D0=B8=D0=BA=D0=B8=20=D0=B8=20?= =?UTF-8?q?=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4=20=D0=B0=D0=B3=D1=80=D0=B5=D0=B3?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=BD=D1=8B=D1=85=20=D0=B4?= =?UTF-8?q?=D0=B0=D0=BD=D0=BD=D1=8B=D1=85=20=D0=BD=D0=B0=20=D0=B3=D0=BB?= =?UTF-8?q?=D0=B0=D0=B2=D0=BD=D1=83=D1=8E=20(=D0=B2=20=D1=84=D1=83=D1=82?= =?UTF-8?q?=D0=B5=D1=80)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.prod.yml | 5 +- etpgrf_site/typograph/admin.py | 32 ++++- .../typograph/templates/typograph/base.html | 16 ++- .../templates/typograph/stats_summary.html | 12 ++ etpgrf_site/typograph/urls.py | 6 +- etpgrf_site/typograph/views.py | 110 +++++++++++++++--- public/static/js/index.js | 17 ++- 7 files changed, 170 insertions(+), 28 deletions(-) create mode 100644 etpgrf_site/typograph/templates/typograph/stats_summary.html diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index a8ffacb..d1d9956 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -12,8 +12,8 @@ services: labels: - "com.centurylinklabs.watchtower.scope=etpgrf" - # Запускаем collectstatic перед стартом - command: sh -c "python etpgrf_site/manage.py collectstatic --noinput && gunicorn --bind 0.0.0.0:8000 --chdir /app/etpgrf_site etpgrf_site.wsgi" + # Запускаем миграции, потом collectstatic, потом сервер + command: sh -c "python etpgrf_site/manage.py migrate --noinput && python etpgrf_site/manage.py collectstatic --noinput && gunicorn --bind 0.0.0.0:8000 --chdir /app/etpgrf_site etpgrf_site.wsgi" volumes: # База данных (папка data должна быть создана на хосте) @@ -72,7 +72,6 @@ services: # Берем учетные данные из .env файла - REPO_USER=${REPO_USER} - REPO_PASS=${REPO_PASS} - - WATCHTOWER_REGISTRY_URL=git.cube2.ru # Ограничиваем область видимости только этим проектом - WATCHTOWER_SCOPE=etpgrf # Если нужно указать реестр явно (обычно watchtower сам понимает из имени образа) diff --git a/etpgrf_site/typograph/admin.py b/etpgrf_site/typograph/admin.py index 8c38f3f..b30ac9a 100644 --- a/etpgrf_site/typograph/admin.py +++ b/etpgrf_site/typograph/admin.py @@ -1,3 +1,33 @@ from django.contrib import admin +from .models import DailyStat -# Register your models here. +@admin.register(DailyStat) +class DailyStatAdmin(admin.ModelAdmin): + list_display = ( + 'date', + 'index_views', + 'process_requests', + 'copy_count', + 'chars_in', + 'chars_out', + 'chars_copied', + 'avg_processing_time_ms_formatted', + ) + list_filter = ('date',) + search_fields = ('date',) + ordering = ('-date',) + + # Делаем поля только для чтения + readonly_fields = [field.name for field in DailyStat._meta.fields] + + def has_add_permission(self, request): + # Запрещаем добавлять записи вручную + return False + + def has_delete_permission(self, request, obj=None): + # Запрещаем удалять записи + return False + + @admin.display(description='Среднее время (мс)', ordering='total_processing_time_ms') + def avg_processing_time_ms_formatted(self, obj): + return f"{obj.avg_processing_time_ms:.2f}" diff --git a/etpgrf_site/typograph/templates/typograph/base.html b/etpgrf_site/typograph/templates/typograph/base.html index a29f13c..0c45b9b 100644 --- a/etpgrf_site/typograph/templates/typograph/base.html +++ b/etpgrf_site/typograph/templates/typograph/base.html @@ -62,10 +62,18 @@ {# Футер #} -