Files @ 65f0179a9254
Branch filter:

Location: light9/light9/subcomposer/subcomposerweb.py

drewp@bigasterisk.com
subcomposer has a web ui with buttons for toggling lights
Ignore-this: f8cf76c46d81eec86c8945a61f6a594d
import logging
import cyclone.web, cyclone.websocket, cyclone.httpclient
from lib.cycloneerr import PrettyErrorHandler
from light9 import networking
from rdflib import URIRef, Literal
from twisted.internet import reactor
log = logging.getLogger('web')

def init(graph, session, currentSub):
    SFH = cyclone.web.StaticFileHandler
    app = cyclone.web.Application(handlers=[
        (r'/()', SFH,
         {'path': 'light9/subcomposer', 'default_filename': 'index.html'}),
        (r'/static/(.*)', SFH, {'path': 'static/'}),
        (r'/toggle', Toggle),
    ], debug=True, graph=graph, currentSub=currentSub)
    reactor.listenTCP(networking.subComposer.port, app)
    log.info("listening on %s" % networking.subComposer.port)

class Toggle(PrettyErrorHandler, cyclone.web.RequestHandler):
    def post(self):
        chan = URIRef(self.get_argument('chan'))
        log.info("toggle %r", chan)
        sub = self.settings.currentSub()
        
        chanKey = Literal(chan.rsplit('/', 1)[1])
        old = sub.get_levels().get(chanKey, 0)

        sub.editLevel(chan, 0 if old else 1)