parent
4bd862c911
commit
f3d3bcce98
@ -0,0 +1,73 @@
|
||||
from pyOpenRPA.Tools import CrossOS
|
||||
import os
|
||||
import sys
|
||||
import time
|
||||
import json
|
||||
from pyOpenRPA import Orchestrator
|
||||
from datetime import date
|
||||
from pyOpenRPA.Orchestrator.Server import app
|
||||
import threading
|
||||
from fastapi import Depends, Body
|
||||
from fastapi.responses import PlainTextResponse
|
||||
from fastapi.responses import FileResponse
|
||||
time.sleep(1.5) # Определить очередность в панели управления
|
||||
from fastapi.staticfiles import StaticFiles
|
||||
# путь к папке, в которой расположена панель управления (используется для формирования других путей)
|
||||
cp_path_str = CrossOS.PathJoinList(CrossOS.PathSplitList(__file__)[:-1])
|
||||
|
||||
#AGENT SETTINGS
|
||||
agent_hostname_str = ""
|
||||
agent_username_str = ""
|
||||
|
||||
# ROBOT SETTINGS
|
||||
robot_logs_path_str = f"{cp_path_str}"
|
||||
|
||||
|
||||
gSettings = Orchestrator.GSettingsGet()
|
||||
|
||||
|
||||
# календарь
|
||||
robot_key_str = "SIMPLE_01"
|
||||
|
||||
# Подключить папку
|
||||
#app.mount(f"/{robot_key_str}/calendar", StaticFiles(directory=os.path.join(os.path.abspath(cpPathStr), "calendar")), name=f"{robot_key_str}_calendar")
|
||||
|
||||
|
||||
# пути для ...
|
||||
htmlPath = os.path.join(cp_path_str, "index.html")
|
||||
scriptPath = os.path.join(cp_path_str, f"scripts.js")
|
||||
|
||||
# вывод папки логов
|
||||
def check_folder(folder):
|
||||
files = os.listdir(folder)
|
||||
return files[::-1]
|
||||
app.mount(f"/{robot_key_str}/logs", StaticFiles(directory=robot_logs_path_str), name=f"{robot_key_str}-logs")
|
||||
|
||||
@app.get(path=f"/{robot_key_str}/scripts.js",tags=[f"{robot_key_str}"])
|
||||
def get_file2():
|
||||
return FileResponse(os.path.abspath(scriptPath))
|
||||
|
||||
# сторонние файлы
|
||||
infoPath = os.path.join(cp_path_str, "how_to.docx")
|
||||
@app.get(path=f"/{robot_key_str}/how_to.docx",tags=[f"{robot_key_str}"])
|
||||
def get_file():
|
||||
return FileResponse(os.path.abspath(infoPath))
|
||||
|
||||
#проверка процесса
|
||||
def process_is_started():
|
||||
return Orchestrator.ProcessIsStarted(inProcessNameWOExeStr = robot_key_str)
|
||||
|
||||
# функции для запуска процессов
|
||||
buildPathStr = CrossOS.PathJoinList(CrossOS.PathSplitList(__file__)[:-3]+["builds"])
|
||||
startHandPathStr = os.path.join(buildPathStr, "startHand.cmd")
|
||||
def startHand():
|
||||
Orchestrator.AgentOSCMD(inHostNameStr=agent_hostname_str, inUserStr=agent_username_str, inCMDStr=startHandPathStr, inRunAsyncBool=True, inSendOutputToOrchestratorLogsBool=False, inCaptureBool=False)
|
||||
@app.get(path=f"/{robot_key_str}/startHand",tags=[f"{robot_key_str}"])
|
||||
def start_app():
|
||||
startHand()
|
||||
|
||||
# инициализация панели
|
||||
lCPManager = Orchestrator.Managers.ControlPanel(inControlPanelNameStr=robot_key_str,
|
||||
inRefreshHTMLJinja2TemplatePathStr=htmlPath, inJinja2TemplateRefreshBool = True)
|
||||
contextDict = {"config": sys.modules[__name__]}
|
||||
lCPManager.Jinja2DataUpdateDictSet(inJinja2DataUpdateDict=contextDict)
|
Binary file not shown.
@ -0,0 +1,56 @@
|
||||
|
||||
<div class="card" style="width:100%;" id="{{config.robot_key_str}}-card">
|
||||
<div class="content">
|
||||
<h1 class="ui center aligned icon header">SIMPLE_01: ПРОСТОЙ РОБОТ</h1>
|
||||
<div class="ui message">
|
||||
<div class="header">Применение:</div>
|
||||
<p>Текст панели управления.</p>
|
||||
<div class="header">Сотрудник:</div>
|
||||
<p>{{UserInfoDict['UserNameUpperStr']}}</p>
|
||||
</div>
|
||||
|
||||
<div class="ui segment" id="{{config.robot_key_str}}-segment">
|
||||
<div class="ui two column very relaxed grid">
|
||||
<div class="column">
|
||||
<h3 class="ui center aligned icon header">СОСТОЯНИЕ</h3>
|
||||
{% if config.process_is_started() %}
|
||||
<h2 class="ui center aligned icon header green">
|
||||
<i class="circular play icon"></i>
|
||||
Включен
|
||||
</h2>
|
||||
<script>start_block(1);</script>
|
||||
{% else %}
|
||||
<h2 class="ui center aligned icon header red">
|
||||
<i class="circular stop icon"></i>
|
||||
Выключен
|
||||
</h2>
|
||||
<script>start_block(1);</script>
|
||||
{% endif %}
|
||||
|
||||
</div>
|
||||
<div class="column">
|
||||
<h3 class="ui center aligned icon header">ДЕЙСТВИЯ</h3>
|
||||
<p class="ui center aligned"><button class="ui right labeled icon button" id="{{config.robot_key_str}}-log-btn" onclick="{{config.robot_key_str}}_logs()"><i class="right file alternate icon"></i> Скачать лог </button></p>
|
||||
<p class="ui center aligned"><button class="ui right labeled icon button" id="{{config.robot_key_str}}-info-btn" onclick="{{config.robot_key_str}}_info()"><i class="right info icon"></i> Скачать инструкцию </button></p>
|
||||
<p class="ui center aligned"><button class="ui right labeled icon button"><i class="right book icon"></i> Скачать документацию </button></p>
|
||||
<p class="ui center aligned"><button class="ui right labeled icon button green"><i class="right book icon"></i> Запустить </button></p>
|
||||
<p class="ui center aligned"><button class="ui right labeled icon button red"><i class="right book icon"></i> Остановить </button></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="ui vertical divider">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script src="/{{config.robot_key_str}}/scripts.js"></script>
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function() {
|
||||
// JS CODE GOES HERE
|
||||
});
|
||||
|
||||
|
||||
</script>
|
@ -0,0 +1 @@
|
||||
var t = function (){}
|
Loading…
Reference in new issue