# coding: utf8 import json import os import shutil from luaModule import loadLuaPrg import WGDBus import Activity import fsio import FilePaths import logConfig import status_mod # Fake globals for syntax check import notify_activity if False: response = None request = None session = None db = None status_mod.sessionUserMgr.setLastVisit(session, request) if logConfig.bcounterSessFrgt: session.forget(response) BCOUNTER_FILENAME = '/home/tool/config/OkNokCntCfg.json' BCOUNTER_MANUAL_FILENAME = '/home/tool/config/OkNokCntCfg2.json' DEFAULT_BCOUNTER_FILENAME = '/home/tool/config/default/OkNokCntCfg.json' DEFAULT_BCOUNTER_MANUAL_FILENAME = '/home/tool/config/default/OkNokCntCfg2.json' def __allPrg(): prgIds = range(99) + range(100, 256) prgs = [] for i, slot in enumerate(prgIds): filename = os.path.join(FilePaths.PRG_PATH, 'prg%d.lua' % slot) if os.access(filename, os.R_OK): try: prg = loadLuaPrg(filename) prgs.append({'id': slot, 'Name': prg['Name']}) except: pass else: prgs.append({'id': slot, 'Name': 'n.a'}) return prgs @auth.requires(request.ajax==True, requires_login=True) def cfg(): if request.env.request_method == "GET": res = {} mode = request.vars.data if mode == "auto": filename = BCOUNTER_FILENAME elif mode == "manual": filename = BCOUNTER_MANUAL_FILENAME tmp = fsio.jsonload(filename) tmp['prgs'] = __allPrg() res[mode] = tmp return response.json(res) if request.env.request_method == "POST": data = json.loads(request.body.read()) res = {'BmsSelect': data['BmsSelect'], 'CntrSets': data['CntrSets']} if data['panel'] == "auto": fsio.jsondump(BCOUNTER_FILENAME, res) notify_activity.configChanged(BCOUNTER_FILENAME, Activity.BCOUNTER_CHANGED, session=session) if data['panel'] == "manual": fsio.jsondump(BCOUNTER_MANUAL_FILENAME, res) notify_activity.configChanged(BCOUNTER_MANUAL_FILENAME, Activity.BCOUNTER_CHANGED, session=session) return response.json(data) @auth.requires(request.ajax==True, requires_login=True) def resetToFactory(): mode = request.vars.data try: if mode == "auto": fsio.shcopyfile(DEFAULT_BCOUNTER_FILENAME, BCOUNTER_FILENAME) notify_activity.configChanged(BCOUNTER_FILENAME, Activity.BCOUNTER_CHANGED, session=session) elif mode == "manual": fsio.shcopyfile(DEFAULT_BCOUNTER_MANUAL_FILENAME, BCOUNTER_MANUAL_FILENAME) notify_activity.configChanged(BCOUNTER_MANUAL_FILENAME, Activity.BCOUNTER_CHANGED, session=session) except (IOError, os.error) as why: return response.json({'success': False, 'msg': str(why)}) except: return response.json({'success': False, 'msg': 'Copy default file failed'}) return response.json({'success': True, 'msg': ':-)'}) @auth.requires(request.ajax==True, requires_login=True) def active(): res = fsio.jsonload(BCOUNTER_FILENAME) return response.json(len(res['CntrSets']) > 0)