2024-01-06 01:05:07 +00:00
|
|
|
"""
|
|
|
|
project: lollms_webui
|
|
|
|
file: lollms_webui_infos.py
|
|
|
|
author: ParisNeo
|
|
|
|
description:
|
|
|
|
This module contains a set of FastAPI routes that provide information about the Lord of Large Language and Multimodal Systems (LoLLMs) Web UI
|
|
|
|
application. These routes allow users to retrieve details such as the current version number, a list of available databases, and options for
|
|
|
|
updating or restarting the software.
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
from fastapi import APIRouter, Request
|
|
|
|
import pkg_resources
|
|
|
|
from lollms_webui import LOLLMSWebUI
|
|
|
|
from ascii_colors import ASCIIColors
|
|
|
|
from lollms.utilities import load_config
|
|
|
|
from pathlib import Path
|
|
|
|
from typing import List
|
|
|
|
import sys
|
2024-01-13 23:42:18 +00:00
|
|
|
import socketio
|
2024-01-09 22:26:41 +00:00
|
|
|
# ----------------------- Defining router and main class ------------------------------
|
|
|
|
|
2024-01-06 01:05:07 +00:00
|
|
|
# Create an instance of the LoLLMSWebUI class
|
2024-01-13 09:31:43 +00:00
|
|
|
lollmsElfServer:LOLLMSWebUI = LOLLMSWebUI.get_instance()
|
2024-01-06 01:05:07 +00:00
|
|
|
router = APIRouter()
|
|
|
|
|
|
|
|
@router.get("/get_lollms_webui_version")
|
|
|
|
async def get_lollms_webui_version():
|
|
|
|
"""Get the version of the LoLLMs Web UI application."""
|
|
|
|
# Return the version string
|
|
|
|
return lollmsElfServer.version
|
|
|
|
|
|
|
|
|
|
|
|
@router.get("/restart_program")
|
|
|
|
async def restart_program():
|
|
|
|
"""Restart the program."""
|
|
|
|
# Stop the socketIO server
|
2024-01-16 23:06:38 +00:00
|
|
|
lollmsElfServer.sio.shutdown()
|
2024-01-06 01:05:07 +00:00
|
|
|
# Sleep for 1 second before rebooting
|
2024-01-16 23:06:38 +00:00
|
|
|
lollmsElfServer.sio.sleep(1)
|
2024-01-06 01:05:07 +00:00
|
|
|
# Reboot the program
|
2024-01-16 23:06:38 +00:00
|
|
|
lollmsElfServer.sio.reboot = True
|
2024-01-06 01:05:07 +00:00
|
|
|
|
|
|
|
@router.get("/update_software")
|
|
|
|
async def update_software():
|
|
|
|
"""Update the software."""
|
|
|
|
# Display an informative message
|
|
|
|
ASCIIColors.info("")
|
|
|
|
ASCIIColors.info("")
|
|
|
|
ASCIIColors.info("")
|
|
|
|
ASCIIColors.info("╔══════════════════════════════════════════════════╗")
|
|
|
|
ASCIIColors.info("║ Updating backend ║")
|
|
|
|
ASCIIColors.info("╚══════════════════════════════════════════════════╝")
|
|
|
|
ASCIIColors.info("")
|
|
|
|
ASCIIColors.info("")
|
|
|
|
ASCIIColors.info("")
|
|
|
|
# Stop the socketIO server
|
2024-01-16 23:06:38 +00:00
|
|
|
lollmsElfServer.sio.shutdown()
|
2024-01-13 23:42:18 +00:00
|
|
|
|
2024-01-06 01:05:07 +00:00
|
|
|
# Run the update script using the provided arguments
|
|
|
|
lollmsElfServer.run_update_script(lollmsElfServer.args)
|
|
|
|
# Exit the program after successful update
|
|
|
|
sys.exit()
|
|
|
|
|
|
|
|
|
|
|
|
@router.get("/check_update")
|
|
|
|
def check_update():
|
|
|
|
"""Checks if an update is available"""
|
|
|
|
if lollmsElfServer.config.auto_update:
|
|
|
|
res = lollmsElfServer.check_update_()
|
|
|
|
return {'update_availability':res}
|
|
|
|
else:
|
|
|
|
return {'update_availability':False}
|