From 830d200bd1e1002d6f0356b22963e1caa516cd80 Mon Sep 17 00:00:00 2001 From: blob8108 Date: Sun, 5 Jan 2014 23:30:08 +0000 Subject: Variable filenames for handlers Fixes #2 --- blockext/__init__.py | 25 ++++++++++++++++++------- blockext/scratch.py | 2 +- blockext/snap.py | 2 +- example.py | 2 +- 4 files changed, 21 insertions(+), 10 deletions(-) diff --git a/blockext/__init__.py b/blockext/__init__.py index 776d447..e507915 100644 --- a/blockext/__init__.py +++ b/blockext/__init__.py @@ -50,12 +50,13 @@ class ThreadedHTTPServer(ThreadingMixIn, HTTPServer): class Blockext(BaseHTTPRequestHandler): - # HTTPServer makes one instance of this for each request. + # HTTPServer makes one Blockext instance for each request. blocks = {} - handlers = {} + _handlers = {} menus = {} name = "A blockext extension" + filename = "extension" port = 8080 requests = {} @@ -65,6 +66,14 @@ class Blockext(BaseHTTPRequestHandler): return return BaseHTTPRequestHandler.log_message(self, format, *args) + @classmethod + def handlers(cls): + handlers = {} + for name, func in cls._handlers.items(): + name = name.format(**vars(cls)) + handlers[name] = func + return handlers + def do_GET(self): is_browser = "text/html" in self.headers.get("Accept", "") mime_type = "text/plain" @@ -74,7 +83,7 @@ class Blockext(BaseHTTPRequestHandler): name = path[0] args = path[1:] - func = self.handlers.get(name, self.blocks.get(name, None)) + func = self.handlers().get(name, self.blocks.get(name, None)) if func: if isinstance(func, Block): response = func(*args) @@ -119,7 +128,7 @@ class Blockext(BaseHTTPRequestHandler): @classmethod def register_handler(cls, name, func, hidden=False, display=None): - cls.handlers[name] = func + cls._handlers[name] = func func.is_hidden = hidden func.display = display @@ -153,8 +162,9 @@ def index(is_browser=False): html += "

{name}

".format(name=escape(Blockext.name)) html += "