12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- from erlport import Port, Protocol, String, Atom
- from erlport.erlterms import decode
- from django.template import Context, Template
- from django.conf import settings
- import types
- # Inherit custom protocol from erlport.Protocol
- class ErlydtlProtocol(Protocol):
-
- def handle_slice(self, command):
- list = command[0]
- slice = "%s" % String(command[1])
- slice_test1_string = "%s[%s]" % (list,slice)
- try:
- result_list = eval(slice_test1_string)
- except(IndexError):
- result_list = Atom("indexError")
- except:
- result_list = Atom("error")
- #print "result_list: %s" % (result_list)
- return result_list
-
- #@doc Start list with 'object' to pass in a python term along with import statement in the form:
- #@doc object|module to import|term (three strings delimited by "|"
- def handle_template(self, command):
- file = open("/tmp/debug.txt",'a')
- template_text = "%s" % String(command[0])
- #value = "%s" % String(command[1])
- value = "%s" % String(command[1])
- value_split = value.split("|")
-
- if value_split[0] == u"object":
- module = value_split[1]
- exec "import %s" % module
- value = eval(value_split[2])
- #term(((term.year, term.month, term.day), (term.hour, term.minute, term.second)))
- c = Context({"value":value})
- t = Template(template_text)
- result = String(t.render(c))
- file.close()
- return result
- if __name__ == "__main__":
- settings.configure(DEBUG=True, TEMPLATE_DEBUG=True)
- proto = ErlydtlProtocol()
- # Run protocol with port open on STDIO
- proto.run(Port(use_stdio=True))
-
|