def getAdminData(self, **params): """ Deliver admin content of module events (ajax) :return: rendered template as string or json dict """ if request.args.get( 'action') == 'getparams': # event handler parameter sub form event = events.getEvents(name=request.args.get('event')) if request.args.get('handler') != '': handler = [ hdl for hdl in event.getHandlerList() if hdl[0] == request.args.get('handler') ][0] # defined else: return "- error, no handler given -" if request.args.get('id') != 'None': eventhandler = Eventhandler.getEventhandlers( request.args.get('id')) # db else: eventhandler = Eventhandler(request.args.get('event'), '', '', '') # db # previous parameters inparameters = eventhandler.getInParameters() return render_template('admin.events_data.html', handler=handler, eventhandler=eventhandler, inparameters=inparameters) return ""
def processFile(incomepath, filename): """ run processing in test mode """ params = dict(incomepath=incomepath, filename=filename, mode='test') handlers = events.getEvents('file_added').getHandlerList() dbhandlers = Eventhandler.getEventhandlers(event='file_added') for handler in dbhandlers: # db for hdl in handlers: if handler.handler == hdl[0]: #p = hdl[1]('file_added', params) params.update(hdl[1]('file_added', **params)) res = [] for p in handler.getParameterList(): try: res.append(u'{}:{}'.format(p, params[p.split('.')[1]])) except: try: if p.split(u'.')[1] in params.keys(): res = [u'{}:{}'.format(p, params[p.split('.')[1]])] else: res = [u'error: key not found - {}'.format(p.split('.')[1])] params['error'] = u'error: key not found - {}'.format(p.split('.')[1]) except: import traceback print traceback.format_exc() if u'error' in params.keys(): signal.send('alarm', 'testupload_start', result=res, handler=handler.handler.split('.')[-1], protocol=params['time'][-1], error=params['error']) else: signal.send('alarm', 'testupload_start', result=res, handler=handler.handler.split('.')[-1], protocol=params['time'][-1]) signal.send('alarm', 'testupload_start', result='done') return params
def getInParameters(self): """ Get list of all input-parameters of eventhandler :return: handler list """ event = events.getEvents(self.event) if self.position < 2: return event.parameters elif self.position == '': if len(event.getHandlers()) > 0: hdl = event.getHandlers()[-1] return hdl.getParameterList() + event.parameters # add event parameters else: return [] else: for hdl in event.getHandlers(): if hdl.position == self.position - 1: #return [param.split('=')[0] for param in hdl.parameters.split('\r\n') if param.startswith('out.')] return hdl.getParameterList() + event.parameters # add event parameters return []
def processFile(incomepath, filename): """ run processing in test mode """ params = dict(incomepath=incomepath, filename=filename, mode='test') handlers = events.getEvents('file_added').getHandlerList() dbhandlers = Eventhandler.getEventhandlers(event='file_added') from emonitor.extensions import db db.session.rollback() for handler in dbhandlers: # db for hdl in handlers: if handler.handler == hdl[0]: res = [] try: params.update(hdl[1]('file_added', **params)) except: params.update({'error': u'<b>error in handler {}:</b><br/> <em>{}</em><br>'.format(hdl[0], traceback.format_exc().splitlines())}) for p in handler.getParameterList(): try: res.append(u'{}:\n{}'.format(p, params[p.split('.')[1]].strip())) except: try: if p.split(u'.')[1] in params.keys(): res = [u'{}:\n{}\n'.format(p, params[p.split('.')[1]].strip())] else: with babel.app.test_request_context('/') as ctx: ctx.push() res = [u'<b style="color:red">{}</b><br>'.format(babel.gettext('alarm.testcontext.parametererror').format(p))] params['error'] = babel.gettext('alarm.handler.missing.parameter').format(p, babel.gettext(handler.handler)) ctx.pop() except: signal.send('alarm', 'testupload_start', result='done') res = "\n".join(res) if u'error' in params.keys(): signal.send('alarm', 'testupload_start', result=res, handler=handler.handler.split('.')[-1], protocol=params['time'][-1], error=params['error']) else: signal.send('alarm', 'testupload_start', result=res, handler=handler.handler.split('.')[-1], protocol=params['time'][-1]) signal.send('alarm', 'testupload_start', result='done') return params
def processFile(incomepath, filename): """ run processing in test mode """ params = dict(incomepath=incomepath, filename=filename, mode='test') handlers = events.getEvents('file_added').getHandlerList() dbhandlers = Eventhandler.getEventhandlers(event='file_added') from emonitor.extensions import db db.session.rollback() for handler in dbhandlers: # db for hdl in handlers: if handler.handler == hdl[0]: res = [] try: params.update(hdl[1]('file_added', **params)) except: params.update({'error': u'<b>error in handler {}:</b><br/> <em>{}</em><br>'.format(hdl[0], traceback.format_exc().splitlines())}) for p in handler.getParameterList(): try: res.append(u'{}:{}'.format(p, params[p.split('.')[1]])) except: try: if p.split(u'.')[1] in params.keys(): res = [u'{}:{}'.format(p, params[p.split('.')[1]])] else: res = [u'<b>error: key not found:</b> <em>{}</em><br>'.format(p.split('.')[1])] if not params.get('error'): params['error'] = "" params['error'] += u'<b>error: key not found</b> <em>{}</em><br>'.format(p.split('.')[1]) except: signal.send('alarm', 'testupload_start', result='done') if u'error' in params.keys(): signal.send('alarm', 'testupload_start', result=res, handler=handler.handler.split('.')[-1], protocol=params['time'][-1], error=params['error']) else: signal.send('alarm', 'testupload_start', result=res, handler=handler.handler.split('.')[-1], protocol=params['time'][-1]) signal.send('alarm', 'testupload_start', result='done') return params
def getAdminData(self, **params): """ Deliver admin content of module events (ajax) :return: rendered template as string or json dict """ if request.args.get('action') == 'getparams': # event handler parameter sub form event = events.getEvents(name=request.args.get('event')) if request.args.get('handler') != '': handler = [hdl for hdl in event.getHandlerList() if hdl[0] == request.args.get('handler')][0] # defined else: return "- error, no handler given -" if request.args.get('id') != 'None': eventhandler = Eventhandler.getEventhandlers(request.args.get('id')) # db else: eventhandler = Eventhandler(request.args.get('event'), '', '', '') # db # previous parameters inparameters = eventhandler.getInParameters() return render_template('admin.events_data.html', handler=handler, eventhandler=eventhandler, inparameters=inparameters) return ""
def getInParameters(self): """ Get list of all input-parameters of eventhandler :return: handler list """ event = events.getEvents(self.event) if self.position < 2: return event.parameters elif self.position == '': if len(event.getHandlers()) > 0: hdl = event.getHandlers()[-1] return hdl.getParameterList( ) + event.parameters # add event parameters else: return [] else: for hdl in event.getHandlers(): if hdl.position == self.position - 1: #return [param.split('=')[0] for param in hdl.parameters.split('\r\n') if param.startswith('out.')] return hdl.getParameterList( ) + event.parameters # add event parameters return []
def getAdminContent(self, **params): """ Deliver admin content of module monitors :param params: use given parameters of request :return: rendered template as string """ module = request.view_args['module'].split('/') if len(module) == 1: # monitor definition if request.method == 'POST': if request.form.get('action') == 'createmonitor': # add monitor params.update({'monitor': Monitor('', '', '', '', '', '', ''), 'orientations': ['monitors.landscape', 'monitors.portrait']}) return render_template('admin.monitors_actions.html', **params) elif request.form.get('action') == 'updatemonitors': # save monitor if request.form.get('edit_id') != 'None': # update monitor = Monitor.getMonitors(id=request.form.get('edit_id')) else: # add monitor monitor = Monitor('', '', '', '', '', '', '') db.session.add(monitor) monitor.clientid = request.form.get('edit_clientid') monitor.name = request.form.get('edit_name') monitor.orientation = request.form.get('edit_orientation') monitor.resolutionx = request.form.get('edit_resolutionx') monitor.resolutiony = request.form.get('edit_resolutiony') monitor.formatx = request.form.get('edit_formatx') monitor.formaty = request.form.get('edit_formaty') db.session.commit() elif request.form.get('action').startswith('editmonitor_'): # edit monitor params.update({'monitor': Monitor.getMonitors(id=int(request.form.get('action').split('_')[-1])), 'orientations': ['monitors.landscape', 'monitors.portrait']}) return render_template('admin.monitors_actions.html', **params) elif request.form.get('action').startswith('deletemonitor_'): # delete monitor db.session.delete(Monitor.getMonitors(id=int(request.form.get('action').split('_')[-1]))) db.session.commit() elif request.form.get('action').startswith('createlayout_'): # layout edit mid = int(request.form.get('action').split('_')[-1]) monitor = Monitor.getMonitors(id=int(request.form.get('action').split('_')[-1])) layouts = [] usedtriggers = [] for l in monitor.getLayouts(): if l.mid == monitor.id: layouts.append(l) usedtriggers.append(l.trigger) params.update({'monitors': Monitor.getMonitors(), 'layout': MonitorLayout(mid, '', '', '', 0, 0, ''), 'layouts': layouts, 'triggers': events.getEvents(), 'usedtriggers': usedtriggers, 'monitor': Monitor.getMonitors(id=mid), 'widgets': current_app.blueprints['widget'].modules}) return render_template('admin.monitors.layout_actions.html', **params) elif request.form.get('action') == 'updatelayout': # update layout if request.form.get('edit_id') != 'None': # update layout = MonitorLayout.getLayouts(id=request.form.get('edit_id')) else: # add layout layout = MonitorLayout('', '', '', '', '', '', '') db.session.add(layout) layout.mid = request.form.get('edit_mid') layout.trigger = ";".join(sorted(request.form.getlist('edit_trigger'))) layout.layout = request.form.get('edit_layout').split('\r\n') layout.theme = request.form.get('edit_theme') layout.mintime = request.form.get('edit_mintime') layout.maxtime = request.form.get('edit_maxtime') layout.nextid = request.form.get('edit_nextid') db.session.commit() elif request.form.get('action').startswith('editmonitorlayout_'): # edit layout layout = MonitorLayout.getLayouts(id=int(request.form.get('action').split('_')[-1])) layouts = [] usedtriggers = [] for l in MonitorLayout.getLayouts(mid=layout.mid): if l.id != layout.id: layouts.append(l) usedtriggers.extend(l.trigger.split(';')) params.update({'monitors': Monitor.getMonitors(), 'layout': layout, 'layouts': layouts, 'triggers': events.getEvents(), 'usedtriggers': usedtriggers, 'monitor': Monitor.getMonitors(id=layout.mid), 'widgets': current_app.blueprints['widget'].modules}) return render_template('admin.monitors.layout_actions.html', **params) elif request.form.get('action').startswith('deletemonitorlayout_'): # delete layout db.session.delete(MonitorLayout.getLayouts(id=int(request.form.get('action').split('_')[-1]))) db.session.commit() params.update({'monitors': Monitor.getMonitors()}) return render_template('admin.monitors.html', **params) else: if module[1] == 'style': # monitor styles themecss = {} for root, dirs, files in os.walk("%s/emonitor/frontend/web/css" % current_app.config.get('PROJECT_ROOT')): for name in [f for f in files if f.startswith('monitor_')]: with open("%s/emonitor/frontend/web/css/%s" % (current_app.config.get('PROJECT_ROOT'), name), 'r') as c: themecss[name.split("_")[-1][:-4]] = c.read() if request.method == 'POST': if request.form.get('action') == 'savecss': for k in themecss: if themecss[k] != request.form.get(k): with open("%s/emonitor/frontend/web/css/monitor_%s.css" % (current_app.config.get('PROJECT_ROOT'), k), 'w') as c: c.write(request.form.get(k)) themecss[k] = request.form.get(k) # check new theme data if request.form.get('newname') != '' and request.form.get('newcss') != '': with open("%s/emonitor/frontend/web/css/monitor_%s.css" % (current_app.config.get('PROJECT_ROOT'), request.form.get('newname')), 'w') as c: c.write(request.form.get('newcss')) themecss[request.form.get('newname')] = request.form.get('newcss') params.update({'themes': themecss}) return render_template('admin.monitors.style.html', **params) elif module[1] == 'current': # monitors current if request.method == 'POST': pass params.update({'monitors': Monitor.getMonitors()}) return render_template('admin.monitors.current.html', **params) elif module[1] == 'actions': # monitors actions return render_template('admin.monitors.actions.html', **params) return "else"
def getAdminContent(self, **params): """ Deliver admin content of module monitors :param params: use given parameters of request :return: rendered template as string """ module = request.view_args["module"].split("/") if len(module) == 1: # monitor definition if request.method == "POST": if request.form.get("action") == "createmonitor": # add monitor params.update( { "monitor": Monitor("", "", "", "", "", "", ""), "orientations": ["monitors.landscape", "monitors.portrait"], } ) return render_template("admin.monitors_actions.html", **params) elif request.form.get("action") == "updatemonitors": # save monitor if request.form.get("edit_id") != "None": # update monitor = Monitor.getMonitors(id=request.form.get("edit_id")) else: # add monitor monitor = Monitor("", "", "", "", "", "", "") db.session.add(monitor) monitor.clientid = request.form.get("edit_clientid") monitor.name = request.form.get("edit_name") monitor.orientation = request.form.get("edit_orientation") monitor.resolutionx = request.form.get("edit_resolutionx") monitor.resolutiony = request.form.get("edit_resolutiony") monitor.formatx = request.form.get("edit_formatx") monitor.formaty = request.form.get("edit_formaty") db.session.commit() elif request.form.get("action").startswith("editmonitor_"): # edit monitor params.update( { "monitor": Monitor.getMonitors(id=int(request.form.get("action").split("_")[-1])), "orientations": ["monitors.landscape", "monitors.portrait"], } ) return render_template("admin.monitors_actions.html", **params) elif request.form.get("action").startswith("deletemonitor_"): # delete monitor db.session.delete(Monitor.getMonitors(id=int(request.form.get("action").split("_")[-1]))) db.session.commit() elif request.form.get("action").startswith("createlayout_"): # layout edit mid = int(request.form.get("action").split("_")[-1]) monitor = Monitor.getMonitors(id=int(request.form.get("action").split("_")[-1])) layouts = [] usedtriggers = [] for l in monitor.getLayouts(): if l.mid == monitor.id: layouts.append(l) usedtriggers.append(l.trigger) params.update( { "monitors": Monitor.getMonitors(), "layout": MonitorLayout(mid, "", "", "", 0, 0, ""), "layouts": layouts, "triggers": events.getEvents(), "usedtriggers": usedtriggers, "monitor": Monitor.getMonitors(id=mid), "widgets": current_app.blueprints["widget"].modules, } ) return render_template("admin.monitors.layout_actions.html", **params) elif request.form.get("action") == "updatelayout": # update layout if request.form.get("edit_id") != "None": # update layout = MonitorLayout.getLayouts(id=request.form.get("edit_id")) else: # add layout layout = MonitorLayout("", "", "", "", "", "", "") db.session.add(layout) layout.mid = request.form.get("edit_mid") layout.trigger = ";".join(sorted(request.form.getlist("edit_trigger"))) layout.layout = request.form.get("edit_layout").split("\r\n") layout.theme = request.form.get("edit_theme") layout.mintime = request.form.get("edit_mintime") layout.maxtime = request.form.get("edit_maxtime") layout.nextid = request.form.get("edit_nextid") db.session.commit() elif request.form.get("action").startswith("editmonitorlayout_"): # edit layout layout = MonitorLayout.getLayouts(id=int(request.form.get("action").split("_")[-1])) layouts = [] usedtriggers = [] for l in MonitorLayout.getLayouts(mid=layout.mid): if l.id != layout.id: layouts.append(l) usedtriggers.extend(l.trigger.split(";")) params.update( { "monitors": Monitor.getMonitors(), "layout": layout, "layouts": layouts, "triggers": events.getEvents(), "usedtriggers": usedtriggers, "monitor": Monitor.getMonitors(id=layout.mid), "widgets": current_app.blueprints["widget"].modules, } ) return render_template("admin.monitors.layout_actions.html", **params) elif request.form.get("action").startswith("deletemonitorlayout_"): # delete layout db.session.delete(MonitorLayout.getLayouts(id=int(request.form.get("action").split("_")[-1]))) db.session.commit() params.update({"monitors": Monitor.getMonitors()}) return render_template("admin.monitors.html", **params) else: if module[1] == "style": # monitor styles themecss = {} for root, dirs, files in os.walk("%s/emonitor/frontend/web/css" % current_app.config.get("PROJECT_ROOT")): for name in [f for f in files if f.startswith("monitor_")]: with open( "%s/emonitor/frontend/web/css/%s" % (current_app.config.get("PROJECT_ROOT"), name), "r" ) as c: themecss[name.split("_")[-1][:-4]] = c.read() if request.method == "POST": if request.form.get("action") == "savecss": for k in themecss: if themecss[k] != request.form.get(k): with open( "%s/emonitor/frontend/web/css/monitor_%s.css" % (current_app.config.get("PROJECT_ROOT"), k), "w", ) as c: c.write(request.form.get(k)) themecss[k] = request.form.get(k) # check new theme data if request.form.get("newname") != "" and request.form.get("newcss") != "": with open( "%s/emonitor/frontend/web/css/monitor_%s.css" % (current_app.config.get("PROJECT_ROOT"), request.form.get("newname")), "w", ) as c: c.write(request.form.get("newcss")) themecss[request.form.get("newname")] = request.form.get("newcss") params.update({"themes": themecss}) return render_template("admin.monitors.style.html", **params) elif module[1] == "current": # monitors current if request.method == "POST": pass params.update({"monitors": Monitor.getMonitors()}) return render_template("admin.monitors.current.html", **params) elif module[1] == "actions": # monitors actions return render_template("admin.monitors.actions.html", **params) return "else"
def getAdminContent(self, **params): """ Deliver admin content of module events :param params: use given parameters of request :return: rendered template as string """ module = request.view_args['module'].split('/') if len(module) > 1: pass else: if request.method == 'POST': if request.form.get('action').startswith( 'edithandler_'): # edit handler handler = Eventhandler.getEventhandlers( id=int(request.form.get('action').split('_') [-1])) # handler defined in db handlers = events.getEvents(name=handler.event).getHandlerList( ) # all possible handlers for given event params.update({'handler': handler, 'handlers': handlers}) return render_template('admin.events_actions.html', **params) elif request.form.get('action').startswith( 'createhandler_'): # add handler handler = Eventhandler( request.form.get('action').replace('createhandler_', ''), '', '', '') handlers = events.getEvents(name=handler.event).getHandlerList( ) # all possible handlers for given event params.update({'handler': handler, 'handlers': handlers}) return render_template('admin.events_actions.html', **params) elif request.form.get( 'action') == 'updateeventhandler': # save handler if request.form.get('handler_id') != 'None': # update hdl = Eventhandler.getEventhandlers( id=request.form.get('handler_id')) hdl.position = request.form.get('edit_position') else: # add existing = Eventhandler.getEventhandlers( event=request.form.get('edit_event')) hdl = Eventhandler(request.form.get('edit_event'), '', '', '') db.session.add(hdl) hdl.position = len(existing) + 1 hdl.handler = request.form.get('edit_handler') hdl.parameters = '' for k in request.form.keys(): if k.startswith('check.in'): # in parameters if request.form.get( k ) == "alternative": # use alternative text field hdl.parameters += '%s=%s\r\n' % ( k[6:], request.form.get('in.' + k[9:])) else: hdl.parameters += '%s=%s\r\n' % ( k[6:], request.form.get(k)) # use checkbox elif k.startswith('check.out'): # out parameters if request.form.get( k ) == "alternative": # use alternative text field hdl.parameters += '%s=%s\r\n' % ( k[6:], request.form.get('out.' + k[10:])) else: hdl.parameters += '%s=%s\r\n' % ( k[6:], request.form.get(k)) # use checkbox db.session.commit() elif request.form.get('action').startswith( 'deletehandler_'): # delete handler handler = Eventhandler.getEventhandlers( id=int(request.form.get('action').split('_')[-1])) db.session.delete(handler) db.session.commit() elif request.form.get( 'action' ) == 'updateorder': # update order of handlers/event for item in [ i for i in request.form if i.startswith('position_') ]: ids = request.form.getlist(item) for _id in ids: hdl = Eventhandler.getEventhandlers(id=int(_id)) hdl.position = ids.index(_id) + 1 db.session.commit() params.update({ 'events': events.getEvents(), 'definitions': len(Eventhandler.getEventhandlers()) }) return render_template('admin.events.html', **params)
def getAdminContent(self, **params): """ Deliver admin content of module events :param params: use given parameters of request :return: rendered template as string """ module = request.view_args['module'].split('/') if len(module) > 1: pass else: if request.method == 'POST': if request.form.get('action').startswith('edithandler_'): # edit handler handler = Eventhandler.getEventhandlers(id=int(request.form.get('action').split('_')[-1])) # handler defined in db handlers = events.getEvents(name=handler.event).getHandlerList() # all possible handlers for given event params.update({'handler': handler, 'handlers': handlers}) return render_template('admin.events_actions.html', **params) elif request.form.get('action').startswith('createhandler_'): # add handler handler = Eventhandler(request.form.get('action').replace('createhandler_', ''), '', '', '') handlers = events.getEvents(name=handler.event).getHandlerList() # all possible handlers for given event params.update({'handler': handler, 'handlers': handlers}) return render_template('admin.events_actions.html', **params) elif request.form.get('action') == 'updateeventhandler': # save handler if request.form.get('handler_id') != 'None': # update hdl = Eventhandler.getEventhandlers(id=request.form.get('handler_id')) hdl.position = request.form.get('edit_position') else: # add existing = Eventhandler.getEventhandlers(event=request.form.get('edit_event')) hdl = Eventhandler(request.form.get('edit_event'), '', '', '') db.session.add(hdl) hdl.position = len(existing) + 1 hdl.handler = request.form.get('edit_handler') hdl.parameters = '' for k in request.form.keys(): if k.startswith('check.in'): # in parameters if request.form.get(k) == "alternative": # use alternative text field hdl.parameters += '%s=%s\r\n' % (k[6:], request.form.get('in.' + k[9:])) else: hdl.parameters += '%s=%s\r\n' % (k[6:], request.form.get(k)) # use checkbox elif k.startswith('check.out'): # out parameters if request.form.get(k) == "alternative": # use alternative text field hdl.parameters += '%s=%s\r\n' % (k[6:], request.form.get('out.' + k[10:])) else: hdl.parameters += '%s=%s\r\n' % (k[6:], request.form.get(k)) # use checkbox db.session.commit() elif request.form.get('action').startswith('deletehandler_'): # delete handler handler = Eventhandler.getEventhandlers(id=int(request.form.get('action').split('_')[-1])) db.session.delete(handler) db.session.commit() elif request.form.get('action') == 'updateorder': # update order of handlers/event for item in [i for i in request.form if i.startswith('position_')]: ids = request.form.getlist(item) for _id in ids: hdl = Eventhandler.getEventhandlers(id=int(_id)) hdl.position = ids.index(_id) + 1 db.session.commit() params.update({'events': events.getEvents(), 'definitions': len(Eventhandler.getEventhandlers())}) return render_template('admin.events.html', **params)