Skip to content

Commit fd2a1c6

Browse files
author
Sebastian
committed
cleaned jsonsocket
telegramBot bugfixes backup stability
1 parent 1714232 commit fd2a1c6

File tree

9 files changed

+280
-239
lines changed

9 files changed

+280
-239
lines changed

RTOC/LoggerPlugin.py

Lines changed: 96 additions & 131 deletions
Large diffs are not rendered by default.

RTOC/RTLogger/RTLogger.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,8 @@
8484
"token": "",
8585
"eventlevel": 0,
8686
"chat_ids": {},
87-
"inlineMenu": False
87+
"inlineMenu": False,
88+
"onlyAdmin": False
8889
},
8990
"tcp": {
9091
"active": False,

RTOC/RTLogger/RT_data.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,10 @@ def __init__(self, t, hFunction, useqtimer=False):
5555
self._thread = Timer(self._t, self._handle_function)
5656

5757
def _handle_function(self):
58-
self._hFunction()
58+
try:
59+
self._hFunction()
60+
except Exception:
61+
logging.info('Backup failed')
5962
if QTimer is not None and self._useqtimer:
6063
self._thread = QTimer()
6164
self._thread.timeout.connect(self._handle_function)

RTOC/RTLogger/ScriptFunctions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ def generateCode(self, s, condition=False):
2626
s = self.generateTriggerCode(s)
2727
s = self.printfunction() + s
2828
s = self.createFunction(s)
29-
s = "import math\nimport numpy as np\nimport sys\nimport scipy as sp\ntry:\n\timport RTOC.RTLogger.scriptLibrary as rtoc\nexcept (ImportError,SystemError):\n\tfrom .RTLogger import scriptLibrary as rtoc\n\n" + init + "\n"+s
29+
s = "import math\nimport numpy as np\nimport sys\nimport os\nimport scipy as sp\ntry:\n\timport RTOC.RTLogger.scriptLibrary as rtoc\nexcept (ImportError,SystemError):\n\tfrom .RTLogger import scriptLibrary as rtoc\n\n" + init + "\n"+s
3030
return s
3131

3232
def replacePluginParameters(self, s):

RTOC/RTLogger/plugins/Generator.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -59,57 +59,57 @@ def __square(self):
5959
self.gen_start = time.time()
6060
if time.time() - self.gen_start >= 0.5/self.gen_freq:
6161
if self._lastValue != self.gen_level:
62-
self.stream(self._lastValue, self._sname, units=[""])
62+
self.stream(self._lastValue, self._sname, unit=[""])
6363
self._lastValue = self.gen_level + self.offset
64-
self.stream(self._lastValue, self._sname, units=[""])
64+
self.stream(self._lastValue, self._sname, unit=[""])
6565

6666
else:
6767
if self._lastValue != 0:
68-
self.stream(self._lastValue, self._sname, units=[""])
68+
self.stream(self._lastValue, self._sname, unit=[""])
6969
self._lastValue = 0 + self.offset
70-
self.stream(self._lastValue, self._sname, units=[""])
70+
self.stream(self._lastValue, self._sname, unit=[""])
7171

7272
def __sawtooth(self):
7373
if time.time() - self.gen_start >= 1/self.gen_freq:
7474
self.gen_start = time.time()
7575
if self._lastValue != 0:
7676
#self._lastValue += self.gen_level*(self.gen_freq)/self.samplerate
7777
self._lastValue = self.gen_level
78-
self.stream(self._lastValue, self._sname, units=[""])
78+
self.stream(self._lastValue, self._sname, unit=[""])
7979
self._lastValue = 0 + self.offset
80-
self.stream(self._lastValue, self._sname, units=[""])
80+
self.stream(self._lastValue, self._sname, unit=[""])
8181
else:
8282
self._lastValue = self.gen_level * \
8383
((time.time() - self.gen_start*self.gen_freq)) + self.offset
84-
self.stream(self._lastValue, self._sname, units=[""])
84+
self.stream(self._lastValue, self._sname, unit=[""])
8585

8686
def __sinus(self):
8787
self._lastValue = self.gen_level * \
8888
math.sin((time.time()*self.gen_freq)*(2*math.pi) + self.phase) + self.offset
89-
self.stream(self._lastValue, self._sname, units=[""])
89+
self.stream(self._lastValue, self._sname, unit=[""])
9090

9191
def __noise(self):
9292
self._lastValue = random.uniform(0, self.gen_level) + self.offset
93-
self.stream(self._lastValue, self._sname, units=[""])
93+
self.stream(self._lastValue, self._sname, unit=[""])
9494

9595
def __ac(self):
9696
if time.time() - self.gen_start >= 1/self.gen_freq:
9797
self.gen_start = time.time()
9898
if time.time() - self.gen_start >= 0.5/self.gen_freq:
9999
if self._lastValue != self.gen_level:
100-
self.stream(self._lastValue, self._sname, units=[""])
100+
self.stream(self._lastValue, self._sname, unit=[""])
101101
self._lastValue = self.gen_level + self.offset
102-
self.stream(self._lastValue, self._sname, units=[""])
102+
self.stream(self._lastValue, self._sname, unit=[""])
103103

104104
else:
105105
if self._lastValue != 0:
106-
self.stream(self._lastValue, self._sname, units=[""])
106+
self.stream(self._lastValue, self._sname, unit=[""])
107107
self._lastValue = -self.gen_level - self.offset
108-
self.stream(self._lastValue, self._sname, units=[""])
108+
self.stream(self._lastValue, self._sname, unit=[""])
109109

110110
def __dc(self):
111111
self._lastValue = self.gen_level + self.offset
112-
self.stream(self._lastValue, self._sname, units=[""])
112+
self.stream(self._lastValue, self._sname, unit=[""])
113113

114114
def setCallbacks(self):
115115
#self.connect(self.widget.samplerate, SIGNAL("valueChanged()",self.changeSamplerate))

RTOC/RTLogger/telegramBot.py

Lines changed: 54 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -132,20 +132,23 @@ def sendEvent(self, message, devicename, signalname, priority):
132132
ptext = ['_Information_', '*Warnung*', '*_Fehler_*'][priority]
133133
message = translate('RTOC', '{} von {}.{}:\n{}').format(ptext, devicename, signalname, message)
134134
for id in self.logger.config['telegram']['chat_ids'].keys():
135+
self.check_chat_id(id)
135136
if priority >= self.logger.config['telegram']['chat_ids'][id]['eventlevel']:
136-
try:
137-
self.bot.send_message(chat_id=int(id), text=message,
138-
parse_mode=ParseMode.MARKDOWN)
139-
except Exception:
140-
self.bot.send_message(chat_id=int(id), text=message)
137+
self.send_message(chat_id=int(id), text=message, delete=False)
138+
# try:
139+
# self.bot.send_message(chat_id=int(id), text=message,
140+
# parse_mode=ParseMode.MARKDOWN)
141+
# except Exception:
142+
# self.bot.send_message(chat_id=int(id), text=message)
141143

142144
def send_message_to_all(self, message):
143145
for id in self.logger.config['telegram']['chat_ids'].keys():
144-
try:
145-
self.bot.send_message(chat_id=int(id), text=message,
146-
parse_mode=ParseMode.MARKDOWN)
147-
except Exception:
148-
self.bot.send_message(chat_id=int(id), text=message)
146+
self.send_message(chat_id=int(id), text=message, delete=False)
147+
# try:
148+
# self.bot.send_message(chat_id=int(id), text=message,
149+
# parse_mode=ParseMode.MARKDOWN)
150+
# except Exception:
151+
# self.bot.send_message(chat_id=int(id), text=message)
149152

150153
def connect(self):
151154
idler = Thread(target=self.connectThread)
@@ -233,6 +236,9 @@ def build_menu(self, buttons, n_cols, header_buttons=None, footer_buttons=None):
233236
return menu
234237

235238
def send_message(self, chat_id, text, parse_mode=ParseMode.MARKDOWN, disable_notification=True, delete=True):
239+
if self.logger.config['telegram']['onlyAdmin'] and not self.logger.config['telegram']['chat_ids'][str(chat_id)]['admin']:
240+
logging.info('Aborted telegram answer, because telegram-option "onlyAdmin" is active.')
241+
return
236242
try:
237243
lastMessage = self.bot.send_message(
238244
chat_id, text=text, disable_notification=True, parse_mode=ParseMode.MARKDOWN)
@@ -250,7 +256,9 @@ def send_message(self, chat_id, text, parse_mode=ParseMode.MARKDOWN, disable_not
250256
self.bot.delete_message(chat_id, message_id)
251257

252258
def sendMenuMessage(self, bot, chat_id, buttonlist, text='', description_text='', n_cols=1, backButton=True):
253-
259+
if self.logger.config['telegram']['onlyAdmin'] and not self.logger.config['telegram']['chat_ids'][str(chat_id)]['admin']:
260+
logging.info('Aborted telegram answer, because telegram-option "onlyAdmin" is active.')
261+
return
254262
if backButton:
255263
buttonlist.append(BACKBUTTON)
256264
if not self.logger.config['telegram']['inlineMenu']:
@@ -382,7 +390,15 @@ def textHandler(self, bot, update, altStrung=None, alt_chat_id=None):
382390

383391
def menuHandler(self, bot, chat_id):
384392
self.mode[chat_id] = 'menu'
385-
commands = copy.deepcopy(list(self.userActions.keys()))
393+
# commands = copy.deepcopy(list(self.userActions.keys()))
394+
commands = []
395+
admin = self.logger.config['telegram']['chat_ids'][str(chat_id)]['admin']
396+
for c in self.userActions.keys():
397+
if c.startswith('_'):
398+
if admin:
399+
commands += [c]
400+
else:
401+
commands += [c]
386402
commands += self.createShortcutList(bot, chat_id)
387403
commands += self.menuCommands
388404
if self.logger.config['telegram']['chat_ids'][str(chat_id)]['admin']:
@@ -406,15 +422,14 @@ def menuHandlerAns(self, bot, chat_id, strung):
406422
self.createEventHandler(bot, chat_id)
407423
elif idx == 5:
408424
self.automationHandler(bot, chat_id)
409-
elif self.logger.config['telegram']['chat_ids'][str(chat_id)]['admin']:
410-
if strung in self.adminMenuCommands:
411-
idx = self.adminMenuCommands.index(strung)
412-
if idx == 0:
413-
self.settingsHandler(bot, chat_id)
414425
elif strung in list(self.userActions.keys()):
415426
self.executeUserAction(bot, chat_id, strung)
416427
elif strung in self.createShortcutList(bot, chat_id):
417428
self.callShortcut(bot, chat_id, strung)
429+
elif self.logger.config['telegram']['chat_ids'][str(chat_id)]['admin'] and strung in self.adminMenuCommands:
430+
idx = self.adminMenuCommands.index(strung)
431+
if idx == 0:
432+
self.settingsHandler(bot, chat_id)
418433
else:
419434
self.menuHandler(bot, chat_id)
420435

@@ -762,9 +777,10 @@ def signalsHandlerAns(self, bot, chat_id, strung):
762777
range = list(self.signals_range[chat_id])
763778
self.send_message(chat_id=chat_id,
764779
text=translate('RTOC', 'Ich erzeuge jetzt einen Graphen mit {} Signalen.\nDas kann eine Weile dauern').format(len(plot_signals)))
765-
t = Thread(target=self.sendSignalPlot, args=(
766-
bot, chat_id, plot_signals, *range))
767-
t.start()
780+
# t = Thread(target=self.sendSignalPlot, args=(
781+
# bot, chat_id, plot_signals, *range))
782+
# t.start()
783+
self.sendSignalPlot(bot, chat_id, plot_signals, *range)
768784
# self._teleThreads.append(t)
769785
# self.signalsHandler(bot, chat_id)
770786
else:
@@ -1044,11 +1060,14 @@ def settingsHandler(self, bot, chat_id):
10441060
if self.logger.config['postgresql']['active']:
10451061
commands += [translate('RTOC', 'Datenbank resamplen')]
10461062

1047-
# if self.logger.config['telegram']['active']:
1048-
# commands += [translate('RTOC', "*Telegram-Bot: An (!)*")]
1049-
# else:
1050-
# commands += [translate('RTOC', "Telegram-Bot: Aus")]
1051-
1063+
if self.logger.config['telegram']['active']:
1064+
commands += [translate('RTOC', "*Telegram-Bot: An (!)*")]
1065+
else:
1066+
commands += [translate('RTOC', "Telegram-Bot: Aus")]
1067+
if self.logger.config['telegram']['onlyAdmin']:
1068+
commands += [translate('RTOC', "OnlyAdmin: An")]
1069+
else:
1070+
commands += [translate('RTOC', "OnlyAdmin: Aus")]
10521071
ipadress = urllib.request.urlopen('https://ident.me').read().decode('utf8')
10531072
ipadress = translate('RTOC', '\nIP-Adresse: {}').format(ipadress)
10541073
obj_Disk = psutil.disk_usage('/')
@@ -1135,6 +1154,16 @@ def settingsHandlerAns(self, bot, chat_id, strung):
11351154
ok = self.logger.toggleTelegramBot(True)
11361155
start = True
11371156
name = 'Telegram-Bot'
1157+
elif strung == translate('RTOC', "OnlyAdmin: An"):
1158+
self.logger.config['telegram']['onlyAdmin'] = False
1159+
ok = True
1160+
start = False
1161+
name = 'OnlyAdmin-Modus'
1162+
elif strung == translate('RTOC', "OnlyAdmin: Aus"):
1163+
self.logger.config['telegram']['onlyAdmin'] = True
1164+
ok = True
1165+
start = True
1166+
name = 'OnlyAdmin-Modus'
11381167
elif strung == translate('RTOC', 'Datenbank herunterladen'):
11391168
path = self.logger.config['global']['documentfolder']+'/'
11401169
filepathes = self.logger.database.exportCSV(path+'telegram_export', True)

RTOC/RTOC_GUI/Actions.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -661,6 +661,7 @@ def connectHost(self, host, name, password=''):
661661
retry = False
662662
return True
663663
else:
664+
print(status)
664665
pyqtlib.info_message('End of the universe',
665666
'You reached the end of the universe', "This shouldn't happen")
666667
return False

0 commit comments

Comments
 (0)