diff options
author | Ben Longbons <b.r.longbons@gmail.com> | 2013-12-14 10:32:08 -0800 |
---|---|---|
committer | Ben Longbons <b.r.longbons@gmail.com> | 2013-12-14 10:32:08 -0800 |
commit | e34e49d3064640e01305549413c862ee0a7a79aa (patch) | |
tree | 863efe11d5aa9a079188df2c9f0c112c93e13074 /tools/web | |
parent | 45185408935a56197c308da7ae5d27d72fe06917 (diff) | |
download | serverdata-e34e49d3064640e01305549413c862ee0a7a79aa.tar.gz serverdata-e34e49d3064640e01305549413c862ee0a7a79aa.tar.bz2 serverdata-e34e49d3064640e01305549413c862ee0a7a79aa.tar.xz serverdata-e34e49d3064640e01305549413c862ee0a7a79aa.zip |
Change tools/ to a submodule
Diffstat (limited to 'tools/web')
-rw-r--r-- | tools/web/README | 3 | ||||
-rwxr-xr-x | tools/web/main.py | 28 | ||||
-rw-r--r-- | tools/web/with_xml.py | 71 |
3 files changed, 0 insertions, 102 deletions
diff --git a/tools/web/README b/tools/web/README deleted file mode 100644 index dc7bc55b..00000000 --- a/tools/web/README +++ /dev/null @@ -1,3 +0,0 @@ -This is a flask app to manage accounts. - -It implements a full-featured webserver, but is usually proxied by nginx. diff --git a/tools/web/main.py b/tools/web/main.py deleted file mode 100755 index b7501c5c..00000000 --- a/tools/web/main.py +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env python2.6 - -from flask import Flask - -from with_xml import Node - -app = Flask(__name__) - -@app.route('/') -def index(): - content = Node() - tag = content.tag - put = content.put - a = tag('a') - with tag('html'): - with tag('head'): - with tag('title'): - put('Title') - with tag('body'): - with tag('h1'): - put('Header') - put('This is ') - with a(href='http://google.com/'): - put('a link to Google.') - return str(content) - -if __name__ == '__main__': - app.run(debug=True) diff --git a/tools/web/with_xml.py b/tools/web/with_xml.py deleted file mode 100644 index bc49a94e..00000000 --- a/tools/web/with_xml.py +++ /dev/null @@ -1,71 +0,0 @@ -''' A stupid little way of generating xml -''' - -import re - -from flask import escape - -PRETTY = True - -class Context(object): - __slots__ = ('_node', '_name', '_kwargs') - pattern = re.compile(r'[A-Za-z]\w*') - - def __init__(self, node, name, kwargs): - self._node = node - self._name = name - self._kwargs = kwargs - - def __enter__(self): - _node = self._node - _buffer = _node._buffer - _node.nl() - _buffer.extend(['<', escape(self._name)]) - for k, v in self._kwargs.iteritems(): - assert Context.pattern.match(k) - _buffer.extend([' ', k, '="', escape(v), '"']) - _buffer.append('>') - _node._indent += 1 - _node.nl() - - def __exit__(self, exc_type, exc_value, traceback): - _node = self._node - _buffer = _node._buffer - _node._indent -= 1 - _node.nl() - if _buffer[-1] == '>' and _buffer[-3] != '</': - _buffer[-1] = '/>' - else: - _buffer.extend(['</', escape(self._name), '>']) - _node.nl() - - def __call__(_self, **kwargs): - new_kwargs = dict(_self._kwargs) - new_kwargs.update(kwargs) - return Context(_self._node, _self._name, new_kwargs) - -class Node(object): - __slots__ = ('_buffer', '_indent') - - def __init__(self): - self._buffer = ['<?xml version="1.0" encoding="utf-8"?>', '\n', ''] - self._indent = 0 - - def tag(_self, _name, **kwargs): - return Context(_self, _name, kwargs) - - - def put(self, text): - self._buffer.append(escape(text)) - - def __str__(self): - return ''.join(self._buffer) - - def nl(self): - if PRETTY: - _buffer = self._buffer - if _buffer[-2] == '\n': - _buffer.pop() - else: - _buffer.append('\n') - _buffer.extend([' ' * self._indent]) |