Описание
Это универсальный каталог чего угодно. Можно создавать разделы и гибко настраивать их поля (с указание типа поля). Внутри раздела можно создавать карточку, которая будет поддерживать поля которые настроены в разделе. Больше показано ниже в фото. Идея пришла от моей жены, когда я ей сделал каталог её алмазных картин, а она предложила сделать вообще всю опись что есть в доме, потому что постоянно теряется.
Как выглядит
Авторизация: 
Разделы: 
Добавить раздел (гибкая настройка полей раздела, полей может быть сколько угодно): 
Каталог карточек раздела: 
Добавить карточку в каталог: 
Как запустить
-
Используя .venv:
-
Активация:
python3 -m venv venv source venv/bin/activate pip install -r requirements.txt -
Запуск:
source venv/bin/activate (если не вошли в venv ранее) python main.py
-
-
Используя репозитории ALT Linux (тестировалось на p11):
-
Установка зависимостей:
su- preinstall-alt.sh -
Запуск:
start.sh
-
Как настроить:
config.ini- задаётся порт сервера и путь к библиотеке. Если путь к библиотеке не указан, то будет использоваться папка./dataв корне проекта./logs- просто папка с файлами с логами. При ошибке на сайте чаще всего сайт сам скажет об этом и покажет логи, если вы авторизированы
Особенности
Я этот код скопировал и модифицировал со своих других проектов WebAppCatalog и ImaCat, поэтому в HTML, CSS, JS могут быть мусорные строки, которые не используются (в python коде я весь мусор убрал)
Дополнительная настройка на своём сервере
Рекомендуймая конфигурация службы systemd (linux):
[Unit]
Description=Описание службы
[Service]
ExecStart=/путь/до/папки/с/сайтом/start.sh
WorkingDirectory=/путь/до/папки/с/сайтом
[Install]
WantedBy=multi-user.target
Рекомендуемая конфигурация Nginx:
(замените example.com на свой домен)
(ssl_certificate и ssl_certificate_key должны вести на путь к файлам вашего сертификата ssl)
server {
listen 443 ssl;
server_name example.com;
#сертификаты ssl для https
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
#ограничение на максимальный размер загружаемого файла
client_max_body_size 1024M;
location / {
proxy_pass http://127.0.0.1:31205;
#указание реального IP
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
server {
listen 80;
server_name example.com;
return 301 https://example.com$request_uri;
}