예제 #1
0
 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]
예제 #2
0
 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]
예제 #3
0
    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}")
예제 #4
0
    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}")
예제 #5
0
파일: handlers.py 프로젝트: pnb990/domoweb
 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];
예제 #6
0
 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];
예제 #7
0
파일: handlers.py 프로젝트: pnb990/domoweb
    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}")
예제 #8
0
    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]
예제 #9
0
 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
예제 #10
0
    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]
예제 #11
0
 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
예제 #12
0
파일: handlers.py 프로젝트: pnb990/domoweb
 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;
예제 #13
0
파일: handlers.py 프로젝트: pnb990/domoweb
 def WSWidgetInstanceRemove(self, data):
     i = WidgetInstance.delete(data['instance_id'])
     json = to_json(i)
     json["widget"] = to_json(i.widget)
     return ['widgetinstance-removed', json];
예제 #14
0
파일: handlers.py 프로젝트: pnb990/domoweb
 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];
예제 #15
0
파일: handlers.py 프로젝트: pnb990/domoweb
 def WSWidgetsGetall(self, data):
     widgets = Widget.getAll()
     return ['widget-list', to_json(widgets)]
예제 #16
0
파일: handlers.py 프로젝트: pnb990/domoweb
 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]
예제 #17
0
 def WSSectionGetall(self, data):
     root = Section.getAll()
     j = to_json(sections)
     return ['section-list', j]
예제 #18
0
 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];
예제 #19
0
 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]
예제 #20
0
 def WSWidgetsGetall(self, data):
     widgets = Widget.getAll()
     return ['widget-list', to_json(widgets)]
예제 #21
0
 def WSSectionRemove(self, data):
     i = Section.delete(data['section_id'])
     json = to_json(i)
     return ['section-removed', json]
예제 #22
0
 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]
예제 #23
0
 def WSSectionGetall(self, data):
     root = Section.getAll()
     j = to_json(sections)
     return ['section-list', j]
예제 #24
0
 def WSWidgetInstanceRemove(self, data):
     i = WidgetInstance.delete(data['instance_id'])
     json = to_json(i)
     json["widget"] = to_json(i.widget)
     return ['widgetinstance-removed', json]
예제 #25
0
 def WSSectionRemove(self, data):
     i = Section.delete(data['section_id'])
     json = to_json(i)
     return ['section-removed', json];