def getExportData(exportformat, **params): """ Export alarm to given format :param exportformat: *.html*, *.png* :param params: - style: exportstyle: *alarmmap*, *routemap* - filename: name of exportfile :return: alarm in correct format """ if params['id'] and params: alarm = Alarm.getAlarms(id=params['id']) logger.debug('load export data for alarm {}, style {}, exportformat {}'.format(params['id'], params['style'], exportformat)) if not alarm: # create dummy alarm alarm = Alarm(datetime.datetime.now(), '', 2, 0) alarm.position = dict(lat=Settings.get('defaultLat'), lng=Settings.get('defaultLng')) alarm.set('id.key', '1') alarm.set('id.address', '1') alarm.set('id.city', '1') alarm.set('remark', 'TEST TEST TEST') if alarm: if exportformat == '.html' and 'style' in params: # build html-template params.update({'alarm': alarm}) try: if params['style'].startswith(u'report'): return render_template('{}.html'.format(params['style']), **params) else: return render_template('print.{}.html'.format(params['style']), **params) except TemplateNotFound: logger.error('template {}{} not found'.format(params['style'], exportformat)) return abort(404) elif exportformat == '.png': # send image file if params['style'].startswith('alarmmap'): # deliver map for alarmid from emonitor.modules.maps.map_utils import getAlarmMap args = dict() if params['style'] != 'alarmmap': args = dict(style=params['style'].split('_')[-1]) return getAlarmMap(alarm, current_app.config.get('PATH_TILES'), **args) elif params['style'] == 'routemap': # deliver map with route from emonitor.modules.maps.map_utils import getAlarmRoute return getAlarmRoute(alarm, current_app.config.get('PATH_TILES')) if 'filename' in params and os.path.exists("%s/inc/%s.png" % (os.path.abspath(os.path.dirname(__file__)), params['filename'])): with open("%s/inc/%s.png" % (os.path.abspath(os.path.dirname(__file__)), params['filename']), 'rb') as f: return f.read() abort(404)
def getExportData(exportformat, **params): """ Export alarm to given format :param exportformat: *.html*, *.png*, *telegram*, [*mail*] :param params: - style: exportstyle: *alarmmap*, *routemap*, *telegram.text*, *telegram.venue* - filename: name of exportfile :return: alarm in correct format """ if params['id'] and params: alarm = Alarm.getAlarms(id=params['id']) logger.debug('load export data for alarm {}, style {}, exportformat {}'.format(params['id'], params['style'], exportformat)) if not alarm: # create dummy alarm alarm = Alarm(datetime.datetime.now(), '', 2, 0) alarm.position = dict(lat=Settings.get('defaultLat'), lng=Settings.get('defaultLng')) alarm.set('id.key', '1') alarm.set('id.address', '1') alarm.set('id.city', '1') alarm.set('remark', 'TEST TEST TEST') if alarm: if exportformat == '.html' and 'style' in params: # build html-template params.update({'alarm': alarm}) try: if params['style'].startswith(u'report'): return render_template('{}.html'.format(params['style']), **params) else: return render_template('print.{}.html'.format(params['style']), **params) except TemplateNotFound: logger.error('template {}{} not found'.format(params['style'], exportformat)) return abort(404) elif exportformat == '.png': # send image file if params['style'].startswith('alarmmap'): # deliver map for alarmid from emonitor.modules.maps.map_utils import getAlarmMap args = dict() if params['style'] != 'alarmmap': args = dict(style=params['style'].split('_')[-1]) return getAlarmMap(alarm, current_app.config.get('PATH_TILES'), **args) elif params['style'] == 'routemap': # deliver map with route from emonitor.modules.maps.map_utils import getAlarmRoute return getAlarmRoute(alarm, current_app.config.get('PATH_TILES')) if 'filename' in params and os.path.exists("%s/inc/%s.png" % (os.path.abspath(os.path.dirname(__file__)), params['filename'])): with open("%s/inc/%s.png" % (os.path.abspath(os.path.dirname(__file__)), params['filename']), 'rb') as f: return f.read() elif exportformat == 'telegram': # build telegram information for alarm if alarm.streetno: details = u"*Alarm ({})*\n*{}: {}*\n{} {} ({})\n{}\n\n{}".format(alarm.timestamp, alarm.key.category, alarm.key.key, alarm.street.name, alarm.streetno, alarm.city.name, alarm.street2.name, alarm.remark) address = u"{} {} ({})\n{}".format(alarm.street.name, alarm.streetno, alarm.city.name, alarm.street2.name) else: details = u"*Alarm ({})*\n*{}: {}*\n{} ({})\n\n{}".format(alarm.timestamp, alarm.key.category, alarm.key.key, alarm.street.name, alarm.city.name, alarm.remark) address = u"{} ({})".format(alarm.street.name, alarm.city.name) attrs = {'text': u"{}: {}".format(alarm.key.category, alarm.key.key), 'details': details, 'address': address, 'filename': alarm.get('filename'), 'lat': alarm.lat, 'lng': alarm.lng, 'reply': []} if alarm.type == 1: # fax type can send file attrs['reply'].append(params.get('button')("Fax", callback_data=u'file_{}'.format(attrs['filename']))) if params.get('style') == 'text': attrs['reply'].append(params.get('button')("Position", callback_data=u'location_{}_{}'.format(alarm.lat, alarm.lng))) if params.get('style') == 'venue': attrs['reply'].append(params.get('button')("Details", callback_data=u'details_alarm_{}'.format(alarm.id))) attrs['reply'] = params.get('keyboard')([attrs['reply']]) return attrs elif exportformat == 'mail': # TODO: Add mailer handler return None abort(404)
def getExportData(exportformat, **params): """ Export alarm to given format :param exportformat: *.html*, *.png*, *telegram*, [*mail*] :param params: - style: exportstyle: *alarmmap*, *routemap*, *telegram.text*, *telegram.venue* - filename: name of exportfile :return: alarm in correct format """ if params['id'] and params: alarm = Alarm.getAlarms(id=params['id']) logger.debug('load export data for alarm {}, style {}, exportformat {}'.format(params['id'], params['style'], exportformat)) if not alarm: # create dummy alarm alarm = Alarm(datetime.datetime.now(), '', 2, 0) alarm.position = dict(lat=Settings.get('defaultLat'), lng=Settings.get('defaultLng')) alarm.set('id.key', '1') alarm.set('id.address', '1') alarm.set('id.city', '1') alarm.set('remark', 'TEST TEST TEST') if alarm: if exportformat == '.html' and 'style' in params: # build html-template params.update({'alarm': alarm}) try: if params['style'].startswith(u'report'): return render_template('{}.html'.format(params['style']), **params) elif params['style'] == 'alarm_original': fname = "{}/{}".format(current_app.config.get('PATH_DONE'), alarm.get('filename')) if fname.endswith('.pdf'): # file still in pdf format if os.path.exists(fname): with open(fname, 'rb') as f: return f.read() else: return render_template('print.error.html') elif fname.split('.')[-1] in Settings.get('ocr.inputformat'): # image formats if os.path.exists(fname): with open(fname, 'rb') as f: imgstr = base64.b64encode(f.read()) return render_template('print.alarm_original.html', alarm=alarm, txtstr="", imgstr=imgstr, imgmime="image/{}".format(fname.split('.')[-1])) elif fname.split('.')[-1] in Settings.get('ocr.inputtextformat'): if os.path.exists(fname): with codecs.open(fname, 'r', encoding='utf-8') as f: txtstr = f.read() return render_template('print.alarm_original.html', alarm=alarm, txtstr=txtstr, imgstr="", imgmime="") else: params.update({'path': current_app.config.get('PATH_DONE')}) return render_template('print.{}.html'.format(params['style']), **params) else: return render_template('print.{}.html'.format(params['style']), **params) except TemplateNotFound: logger.error('template {}{} not found'.format(params['style'], exportformat)) return abort(404) elif exportformat == '.png': # send image file if params['style'].startswith('alarmmap'): # deliver map for alarmid from emonitor.modules.maps.map_utils import getAlarmMap args = dict() if params['style'] != 'alarmmap': args = dict(style=params['style'].split('_')[-1]) return getAlarmMap(alarm, current_app.config.get('PATH_TILES'), **args) elif params['style'] == 'routemap': # deliver map with route from emonitor.modules.maps.map_utils import getAlarmRoute return getAlarmRoute(alarm, current_app.config.get('PATH_TILES')) if 'filename' in params and os.path.exists("%s/inc/%s.png" % (os.path.abspath(os.path.dirname(__file__)), params['filename'])): with open("%s/inc/%s.png" % (os.path.abspath(os.path.dirname(__file__)), params['filename']), 'rb') as f: return f.read() elif exportformat == 'telegram': # build telegram information for alarm if alarm.streetno: details = u"*Alarm ({})*\n*{}: {}*\n{} {} ({})\n{}\n\n{}".format(alarm.timestamp, alarm.key.category, alarm.key.key, alarm.street.name, alarm.streetno, alarm.city.name, alarm.street2.name, alarm.remark) address = u"{} {} ({})\n{}".format(alarm.street.name, alarm.streetno, alarm.city.name, alarm.street2.name) else: details = u"*Alarm ({})*\n*{}: {}*\n{} ({})\n\n{}".format(alarm.timestamp, alarm.key.category, alarm.key.key, alarm.street.name, alarm.city.name, alarm.remark) address = u"{} ({})".format(alarm.street.name, alarm.city.name) attrs = {'text': u"{}: {}".format(alarm.key.category, alarm.key.key), 'details': details, 'address': address, 'filename': alarm.get('filename'), 'lat': alarm.lat, 'lng': alarm.lng, 'reply': []} if alarm.type == 1: # fax type can send file attrs['reply'].append(params.get('button')("Fax", callback_data=u'file_{}'.format(attrs['filename']))) if params.get('style') == 'text': attrs['reply'].append(params.get('button')("Position", callback_data=u'location_{}_{}'.format(alarm.lat, alarm.lng))) if params.get('style') == 'venue': attrs['reply'].append(params.get('button')("Details", callback_data=u'details_alarm_{}'.format(alarm.id))) attrs['reply'] = params.get('keyboard')([attrs['reply']]) return attrs elif exportformat == 'mail': # TODO: Add mailer handler return None abort(404)