This commit is contained in:
flaskfarm
2022-10-26 03:25:39 +09:00
parent d9580bba11
commit abfe8d1c3d
10 changed files with 64 additions and 22 deletions

View File

@@ -13,6 +13,7 @@ if (tmp.length == 2) {
var PAGE_NAME = tmp[3]; var PAGE_NAME = tmp[3];
} }
var current_data = null; var current_data = null;
var current_page = null;
console.log("NAME: [" + PACKAGE_NAME + '] [' + MODULE_NAME + '] [' + PAGE_NAME + ']'); console.log("NAME: [" + PACKAGE_NAME + '] [' + MODULE_NAME + '] [' + PAGE_NAME + ']');
$(window).on("load resize", function (event) { $(window).on("load resize", function (event) {

View File

@@ -391,6 +391,7 @@ function make_page_html(data) {
for (var i = data.start_page ; i <= data.last_page ; i++) { for (var i = data.start_page ; i <= data.last_page ; i++) {
str += '<button id="gloablSearchPageBtn" data-page="' + i +'" type="button" class="btn btn-secondary" '; str += '<button id="gloablSearchPageBtn" data-page="' + i +'" type="button" class="btn btn-secondary" ';
if (i == data.current_page) { if (i == data.current_page) {
current_page = i
str += 'disabled'; str += 'disabled';
} }
str += '>'+i+'</button>'; str += '>'+i+'</button>';

View File

@@ -88,7 +88,7 @@ function j_progress(id, width, label) {
var str = ''; var str = '';
str += '<div class="progress" style="height: 25px;">' str += '<div class="progress" style="height: 25px;">'
str += '<div id="'+id+'" class="progress-bar" style="background-color:yellow;width:'+width+'%"></div>'; str += '<div id="'+id+'" class="progress-bar" style="background-color:yellow;width:'+width+'%"></div>';
str += '<div id="'+id+'_label" class="justify-content-center d-flex w-100 position-absolute" style="margin-top:2px">'+label+'</div>'; str += '<div id="'+id+'_label" class="justify-content-center d-flex w-100 " style="margin-top:2px">'+label+'</div>';
str += '</div>' str += '</div>'
return str; return str;
} }

View File

@@ -1 +1 @@
VERSION="4.0.33" VERSION="4.0.34"

View File

@@ -1,14 +1,17 @@
# 순서 바꾸지 말 것
import os, sys, traceback, re, threading, time, queue
from datetime import datetime, timedelta
from flask import Blueprint, render_template, jsonify, redirect, request
from sqlalchemy import desc, or_
from framework import logger from framework import logger
from .model_setting import get_model_setting from .model_setting import get_model_setting
from .logic import Logic from .logic import Logic
from .route import default_route, default_route_socketio_module, default_route_socketio_page, default_route_single_module from .route import default_route, default_route_socketio_module, default_route_socketio_page, default_route_single_module
from .logic_module_base import PluginModuleBase, PluginPageBase from .logic_module_base import PluginModuleBase, PluginPageBase
from .ffmpeg_queue import FfmpegQueueEntity, FfmpegQueue #from .ffmpeg_queue import FfmpegQueueEntity, FfmpegQueue
from .model_base import ModelBase from .model_base import ModelBase
from .create_plugin import create_plugin_instance from .create_plugin import create_plugin_instance
import os, sys, traceback, re, threading, time
from datetime import datetime, timedelta
from flask import Blueprint, render_template, jsonify, redirect, request
from framework import * from framework import *
from tool import *

View File

@@ -2,12 +2,12 @@ import traceback
from datetime import datetime, timedelta from datetime import datetime, timedelta
from framework import F from framework import F
from sqlalchemy import desc, or_
class ModelBase(F.db.Model): class ModelBase(F.db.Model):
__abstract__ = True __abstract__ = True
__table_args__ = {'mysql_collate': 'utf8_general_ci'} __table_args__ = {'mysql_collate': 'utf8_general_ci'}
model_setting = None
P = None P = None
def __repr__(self): def __repr__(self):
@@ -96,16 +96,12 @@ class ModelBase(F.db.Model):
F.db.session.query(cls).delete() F.db.session.query(cls).delete()
F.db.session.commit() F.db.session.commit()
else: else:
now = datetime.datetime.now() now = datetime.now()
ago = now - datetime.timedelta(days=days) ago = now - timedelta(days=int(days))
#ago.hour = 0
#ago.minute = 0
ret = F.db.session.query(cls).filter(cls.created_time > ago).delete() ret = F.db.session.query(cls).filter(cls.created_time > ago).delete()
cls.P.debug(ret) cls.P.debug(ret)
return True return True
except Exception as e: except Exception as e:
cls.P.logger.error(f'Exception:{str(e)}') cls.P.logger.error(f'Exception:{str(e)}')
@@ -131,7 +127,7 @@ class ModelBase(F.db.Model):
query = cls.make_query(req, order=order, search=search, option1=option1, option2=option2) query = cls.make_query(req, order=order, search=search, option1=option1, option2=option2)
count = query.count() count = query.count()
query = query.limit(page_size).offset((page-1)*page_size) query = query.limit(page_size).offset((page-1)*page_size)
F.logger.debug('cls count:%s', count) #F.logger.debug('cls count:%s', count)
lists = query.all() lists = query.all()
ret['list'] = [item.as_dict() for item in lists] ret['list'] = [item.as_dict() for item in lists]
ret['paging'] = cls.get_paging_info(count, page, page_size) ret['paging'] = cls.get_paging_info(count, page, page_size)
@@ -154,4 +150,24 @@ class ModelBase(F.db.Model):
with F.app.app_context(): with F.app.app_context():
query = F.db.session.query(cls) query = F.db.session.query(cls)
return query return query
@classmethod
def make_query_search(cls, query, search, field):
if search is not None and search != '':
if search.find('|') != -1:
tmp = search.split('|')
conditions = []
for tt in tmp:
if tt != '':
conditions.append(field.like('%'+tt.strip()+'%') )
query = query.filter(or_(*conditions))
elif search.find(',') != -1:
tmp = search.split(',')
for tt in tmp:
if tt != '':
query = query.filter(field.like('%'+tt.strip()+'%'))
else:
query = query.filter(field.like('%'+search+'%'))
#query = query1.union(query2)
return query

View File

@@ -93,7 +93,7 @@ class SupportFfmpeg(object):
try: try:
self.status = SupportFfmpeg.Status.USER_STOP self.status = SupportFfmpeg.Status.USER_STOP
self.kill() self.kill()
logger.warning('stop') #logger.warning('stop')
except Exception as e: except Exception as e:
logger.error(f'Exception:{str(e)}') logger.error(f'Exception:{str(e)}')
logger.error(traceback.format_exc()) logger.error(traceback.format_exc())
@@ -192,6 +192,9 @@ SET CRLF=^
self.kill() self.kill()
else: else:
process_ret = self.process.wait(timeout=60*self.timeout_minute) process_ret = self.process.wait(timeout=60*self.timeout_minute)
# 2022-10-25
time.sleep(3)
logger.info(f"{process_ret=}")
if process_ret is None: # timeout if process_ret is None: # timeout
if self.status != SupportFfmpeg.Status.COMPLETED and self.status != SupportFfmpeg.Status.USER_STOP and self.status != SupportFfmpeg.Status.PF_STOP: if self.status != SupportFfmpeg.Status.COMPLETED and self.status != SupportFfmpeg.Status.USER_STOP and self.status != SupportFfmpeg.Status.PF_STOP:
self.status = SupportFfmpeg.Status.TIME_OVER self.status = SupportFfmpeg.Status.TIME_OVER
@@ -361,6 +364,19 @@ SET CRLF=^
except Exception as e: except Exception as e:
logger.error(f'Exception:{str(e)}') logger.error(f'Exception:{str(e)}')
logger.error(traceback.format_exc()) logger.error(traceback.format_exc())
@classmethod
def stop_by_callback_id(cls, callback_id):
try:
for __instance in SupportFfmpeg.__instance_list:
if __instance.callback_id == callback_id:
__instance.stop()
break
except Exception as e:
logger.error(f'Exception:{str(e)}')
logger.error(traceback.format_exc())
@classmethod @classmethod
def get_instance_by_idx(cls, idx): def get_instance_by_idx(cls, idx):

View File

@@ -81,5 +81,5 @@ try:
P.set_module_list([ModuleHome, ModuleRoute, ModuleSetting, ModulePlugin, ModuleTool, ModuleLog]) P.set_module_list([ModuleHome, ModuleRoute, ModuleSetting, ModulePlugin, ModuleTool, ModuleLog])
except Exception as e: except Exception as e:
P.logger.error(f'Exception:{str(e)}') F.logger.error(f'Exception:{str(e)}')
P.logger.error(traceback.format_exc()) F.logger.error(traceback.format_exc())

View File

@@ -15,4 +15,9 @@ class ToolUtil(object):
url += '&' url += '&'
url += f"apikey={F.SystemModelSetting.get('apikey')}" url += f"apikey={F.SystemModelSetting.get('apikey')}"
return url return url
@classmethod
def make_path(cls, data):
from framework import F
return data.replace('{PATH_DATA}', F.config['path_data'])