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))