-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathplugin.py
More file actions
126 lines (109 loc) · 3.93 KB
/
plugin.py
File metadata and controls
126 lines (109 loc) · 3.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# -*- coding: utf-8 -*-
#########################################################
# 고정영역
#########################################################
# python
import os
import traceback
# third-party
from flask import Blueprint, request, Response, send_file, render_template, redirect, jsonify, session, send_from_directory
from flask_socketio import SocketIO, emit, send
from flask_login import login_user, logout_user, current_user, login_required
# sjva 공용
from framework.logger import get_logger
from framework import app, db, scheduler, path_data, socketio, check_api
from framework.util import Util
from system.model import ModelSetting as SystemModelSetting
from system.logic import SystemLogic
# 패키지
# 로그
package_name = __name__.split('.')[0]
logger = get_logger(package_name)
from .model import ModelSetting, ModelItem
from .logic import Logic
from .logic_normal import LogicNormal
def plugin_load():
Logic.plugin_load()
def plugin_unload():
Logic.plugin_unload()
plugin_info = {
"category_name": "fileprocess",
"version": "0.1.0.0",
"name": "Ftv_fileprocess",
"home": "https://github.com/kihyyo/Ftv_fileprocess",
"more": "",
"description": "해외TV 파일 처리",
"developer": "kihyyo",
"zip": "",
"icon": "",
}
#########################################################
# 메뉴 구성.
blueprint = Blueprint(package_name, package_name, url_prefix='/%s' % package_name, template_folder=os.path.join(os.path.dirname(__file__), 'templates'))
menu = {
'main' : [package_name, '해외TV'],
'sub' : [
['setting', '설정'], ['list', '목록'], ['log', '로그']
],
'category' : 'fileprocess'
}
#########################################################
# WEB Menu
#########################################################
@blueprint.route('/')
def home():
return redirect('/%s/setting' % package_name)
@blueprint.route('/<sub>')
@login_required
def first_menu(sub):
logger.debug('DETAIL %s %s', package_name, sub)
if sub == 'setting':
arg = ModelSetting.to_dict()
arg['package_name'] = package_name
arg['scheduler'] = str(scheduler.is_include(package_name))
arg['is_running'] = str(scheduler.is_running(package_name))
return render_template('{package_name}_{sub}.html'.format(package_name=package_name, sub=sub), arg=arg)
elif sub == 'list':
arg = {}
arg['package_name'] = package_name
return render_template('{package_name}_{sub}.html'.format(package_name=package_name, sub=sub), arg=arg)
elif sub == 'log':
return render_template('log.html', package=package_name)
return render_template('sample.html', title='%s - %s' % (package_name, sub))
#########################################################
# For UI
#########################################################
@blueprint.route('/ajax/<sub>', methods=['GET', 'POST'])
@login_required
def ajax(sub):
logger.debug('AJAX %s %s', package_name, sub)
try:
# 설정
if sub == 'setting_save':
ret = ModelSetting.setting_save(request)
return jsonify(ret)
elif sub == 'scheduler':
go = request.form['scheduler']
logger.debug('scheduler :%s', go)
if go == 'true':
Logic.scheduler_start()
else:
Logic.scheduler_stop()
return jsonify(go)
elif sub == 'one_execute':
ret = Logic.one_execute()
return jsonify(ret)
elif sub == 'reset_db':
ret = Logic.reset_db()
return jsonify(ret)
# list
elif sub == 'web_list':
ret = ModelItem.web_list(request)
return jsonify(ret)
elif sub == 'list_remove':
ret = ModelItem.delete(request)
return jsonify(ret)
except Exception as e:
logger.error('Exception:%s', e)
logger.error(traceback.format_exc())
return jsonify('fail')