El problema creo que está aquí:
Código: Seleccionar todo
while True:
while self.get_data(ID) == None:
time.sleep(SLEEP_INTERVAL)
pass
data = self.get_data(ID)
self.controller.data = {}
if type(data) == dict:
JsonData["action"]="HideLoading"
JsonData["data"] = {}
self.send_message(JsonData)
for v in data:
if data[v] == "true": data[v] = True
if data[v] == "false": data[v] = False
if unicode(data[v]).isnumeric(): data[v] = int(data[v])
if not callback:
for v in data:
config.set_setting(v,data[v],channelname)
else:
exec "from channels import " + channelname + " as cb_channel"
exec "return_value = cb_channel." + callback + "(item, data)"
return return_value
elif data == "custom_button":
try:
cb_channel = __import__('channels.%s' % channelname, None, None, ["channels.%s" % channelname])
except ImportError:
logger.error('Imposible importar %s' % channelname)
else:
return_value = getattr(cb_channel, custom_button['function'])(item)
if custom_button["close"] == True:
return return_value
elif data == False:
return None
Hay un bucle infinito. Se leen datos. Si data == False, return None, así que se sale.
Ahora bien, si lee datos hay caminos sin return.
Si es dict, entra en el primer if, y si no tiene callback,
Código: Seleccionar todo
if not callback:
for v in data:
config.set_setting(v,data[v],channelname)
else:
No hay return en el if
En el primer else ocurre lo mismo, hay un caso sin return.