def WSWidgetInstanceLocation(self, data): i = WidgetInstance.updateLocation(id=data['instance_id'], x=data['x'], y=data['y']) json = to_json(i) json["widget"] = to_json(i.widget) return ['widgetinstance-moved', json]
def WSWidgetInstanceAdd(self, data): i = WidgetInstance.add(section_id=data['section_id'], widget_id=data['widget_id'], x=data['x'], y=data['y']) json = to_json(i) json["widget"] = to_json(i.widget) return ['widgetinstance-added', json]
def post(self): action = self.get_argument('action', None) id = self.get_argument('id', None) if action=='widget': instance = WidgetInstance.get(id); forms = WidgetInstanceForms(instance=instance, handler=self) if forms.validate(): forms.save(); if (instance.widget.default_style): d = WidgetInstance.getFullOptionsDict(id=id) else: d = WidgetInstance.getOptionsDict(id=id) jsonoptions = {'instance_id':id, 'options':d} d = WidgetInstanceSensor.getInstanceDict(instance_id=id) jsonsensors = {'instance_id':id, 'sensors':d} d = WidgetInstanceCommand.getInstanceDict(instance_id=id) jsoncommands = {'instance_id':id, 'commands':d} d = WidgetInstanceDevice.getInstanceDict(instance_id=id) jsondevices = {'instance_id':id, 'devices':d} for socket in socket_connections: socket.sendMessage(['widgetinstance-options', jsonoptions]); socket.sendMessage(['widgetinstance-sensors', jsonsensors]); socket.sendMessage(['widgetinstance-commands', jsoncommands]); socket.sendMessage(['widgetinstance-devices', jsondevices]); self.write("{success:true}") else: self.render('widgetConfiguration.html', instance=instance, forms=forms) elif action=='section': Section.update(id, self.get_argument('sectionName'), self.get_argument('sectionDescription', None)) section = Section.get(id) themeSectionStyle = Theme.getParamsDict(section.theme.id, ["section"]) widgetForm = WidgetStyleForm(handler=self, prefix='params') for p, v in self.request.arguments.iteritems(): if p.startswith( 'params' ): if v[0] and not (p[0] == 'params-SectionBackgroundImage' and v[0] == themeSectionStyle['SectionBackgroundImage']): SectionParam.saveKey(section_id=id, key=p[7:], value=v[0]) else: SectionParam.delete(section_id=id, key=p[7:]) # Send section updated params json = to_json(Section.get(id)) json['params'] = Section.getParamsDict(id) WSHandler.sendAllMessage(['section-params', json]) self.write("{success:true}") elif action=='addsection': s = Section.add(id, self.get_argument('sectionName'), self.get_argument('sectionDescription')) for p, v in self.request.arguments.iteritems(): if p.startswith( 'params' ): if v[0]: SectionParam.saveKey(section_id=s.id, key=p[7:], value=v[0]) print s.id, p[7:], v[0] json = to_json(s) WSHandler.sendAllMessage(['section-added', json]) self.write("{success:true}")
def WSWidgetInstanceGetsection(self, data): r = WidgetInstance.getSection(section_id=data['section_id']) json = {'section_id':data['section_id'], 'instances':to_json(r)} for index, item in enumerate(r): if item.widget: json['instances'][index]["widget"] = to_json(item.widget) else: #remove instance logger.info("Section: Widget '%s' not installed, removing instance" % item.widget_id) WidgetInstance.delete(item.id) del json['instances'][index] return ['widgetinstance-sectionlist', json];
def post(self): action = self.get_argument('action', None) id = self.get_argument('id', None) if action=='widget': instance = WidgetInstance.get(id); forms = WidgetInstanceForms(instance=instance, handler=self) if forms.validate(): forms.save(); d = WidgetInstanceOption.getInstanceDict(instance_id=id) jsonoptions = {'instance_id':id, 'options':d} d = WidgetInstanceSensor.getInstanceDict(instance_id=id) jsonsensors = {'instance_id':id, 'sensors':d} d = WidgetInstanceCommand.getInstanceDict(instance_id=id) jsoncommands = {'instance_id':id, 'commands':d} for socket in socket_connections: socket.sendMessage(['widgetinstance-options', jsonoptions]); socket.sendMessage(['widgetinstance-sensors', jsonsensors]); socket.sendMessage(['widgetinstance-commands', jsoncommands]); self.write("{success:true}") else: self.render('widgetConfiguration.html', instance=instance, forms=forms) elif action=='section': Section.update(id, self.get_argument('sectionName'), self.get_argument('sectionDescription', None)) for p, v in self.request.arguments.iteritems(): if p.startswith( 'params' ): SectionParam.saveKey(section_id=id, key=p[6:], value=v[0]) json = to_json(Section.get(id)) json['params'] = dict ((p.key, p.value) for p in SectionParam.getSection(id)) for socket in socket_connections: socket.sendMessage(['section-details', json]) self.write("{success:true}")
def WSSectionGet(self, data): section = Section.get(data['id']) widgets = Widget.getSection(section_id=data['id']) instances = WidgetInstance.getSection(section_id=data['id']) j = to_json(section) j['params'] = Section.getParamsDict(data['id']) j["widgets"] = to_json(widgets) j["instances"] = to_json(instances) for index, item in enumerate(instances): if item.widget: j['instances'][index]["widget"] = to_json(item.widget) try: optionsdict = WidgetInstance.getOptionsDict(id=item.id) j['instances'][index]["options"] = optionsdict except: logger.error("Error while getting options for a widget instance. Maybe you delete a widget folder but it is still defined in database? Error: {0}".format(traceback.format_exc())) return ['section-details', j]
def json_childs(self, section, level): res = [] if section._childrens: for child in section._childrens: c = to_json(child) c["childs"] = self.json_childs(child, level+1) c["level"] = level res.append(c) return res
def json_childs(self, section, level): res = [] if section._childrens: for child in section._childrens: c = to_json(child) c["childs"] = self.json_childs(child, level + 1) c["level"] = level res.append(c) return res
def WSWidgetInstanceOrder(self, data): i = WidgetInstance.updateOrder(id=data['instance_id'], order=data['order']) json = to_json(i) json["widget"] = to_json(i.widget) return True;
def WSWidgetInstanceRemove(self, data): i = WidgetInstance.delete(data['instance_id']) json = to_json(i) json["widget"] = to_json(i.widget) return ['widgetinstance-removed', json];
def WSWidgetInstanceAdd(self, data): i = WidgetInstance.add(section_id=data['section_id'], widget_id=data['widget_id']) json = to_json(i) json["widget"] = to_json(i.widget) return ['widgetinstance-added', json];
def WSWidgetsGetall(self, data): widgets = Widget.getAll() return ['widget-list', to_json(widgets)]
def WSSectionGet(self, data): section = Section.get(data['id']) j = to_json(section) j['params'] = dict ((p.key, p.value) for p in SectionParam.getSection(data['id'])) return ['section-details', j]
def WSSectionGetall(self, data): root = Section.getAll() j = to_json(sections) return ['section-list', j]
def WSWidgetInstanceLocation(self, data): i = WidgetInstance.updateLocation(id=data['instance_id'], x=data['x'], y=data['y']) json = to_json(i) json["widget"] = to_json(i.widget) return ['widgetinstance-moved', json];
def WSSectionGettree(self, data): root = Section.getTree() j = to_json(root) j["childs"] = self.json_childs(root, 1) j["level"] = 0 return ['section-tree', j]
def WSSectionRemove(self, data): i = Section.delete(data['section_id']) json = to_json(i) return ['section-removed', json]
def WSWidgetInstanceRemove(self, data): i = WidgetInstance.delete(data['instance_id']) json = to_json(i) json["widget"] = to_json(i.widget) return ['widgetinstance-removed', json]
def WSSectionRemove(self, data): i = Section.delete(data['section_id']) json = to_json(i) return ['section-removed', json];