def runTALSnippet(s, context, mask=None): if s.find('tal:') < 0: return s header = '''<?xml version="1.0" encoding="UTF-8" ?>''' xmlns = '''<talnamespaces xmlns:tal="http://xml.zope.org/namespaces/tal" xmlns:metal="http://xml.zope.org/namespaces/metal">''' footer = '''</talnamespaces>''' cutter = "----cut-TAL-result-here----\n" if mask: exportheader = mask.get('exportheader') if exportheader.startswith("<?xml"): header = exportheader else: header += exportheader footer += mask.get('exportfooter') to_be_processed = header + xmlns + cutter + s + cutter + footer try: # normally only encoding errors wr_result = tal.getTALstr(to_be_processed, context, mode='xml') except: # try with u2 method try: wr_result = tal.getTALstr(u2(to_be_processed), context, mode='xml') except: wr_result = tal.getTALstr(u2(to_be_processed), context) #wr_result = tal.getTALstr(u2(to_be_processed), context, mode='xml') return wr_result[wr_result.find(cutter) + len(cutter):wr_result.rfind(cutter)]
def show_workflow_node(self, node, req): if "sendout" in req.params: del req.params["sendout"] if "from" in req.params: node.set("system.mailtmp.from", req.params.get("from")) if "to" in req.params: node.set("system.mailtmp.to", req.params.get("to")) if "subject" in req.params: node.set("system.mailtmp.subject", req.params.get("subject")) if "text" in req.params: node.set("system.mailtmp.text", req.params.get("text")) db.session.commit() if (self.sendOut(node)): return self.forwardAndShow(node, True, req) if "gofalse" in req.params: return self.forwardAndShow(node, False, req) elif node.system_attrs.get("mailtmp.talerror", "") != "": del node.system_attrs["mailtmp.talerror"] db.session.commit() self.runAction(node, "true") if node.system_attrs.get("mailtmp.talerror", "") != "": return """<pre>%s</pre>""" % node.system_attrs.get( "mailtmp.talerror") elif node.get("system.mailtmp.error"): return '%s<br/><pre>%s</pre><br>><a href="%s">%s</a><' % ( t(lang(req), "workflow_email_msg_1"), node.get("system.mailtmp.error"), _makeSelfLink(req, {"sendout": "true"}), t(lang(req), "workflow_email_resend")) else: xfrom = node.get("system.mailtmp.from") to = node.get("system.mailtmp.to") text = node.get("system.mailtmp.text") subject = tal.getTALstr(node.get("system.mailtmp.subject"), {}, language=node.get("system.wflanguage")) return req.getTAL( "workflow/email.html", { "page": u"node?id={}&obj={}".format(self.id, node.id), "from": xfrom, "to": to, "text": text, "subject": subject, "node": node, "sendcondition": self.get("sendcondition"), "wfnode": self, "pretext": self.getPreText(lang(req)), "posttext": self.getPostText(lang(req)), "csrf": req.csrf_token.current_token, }, macro="sendmail")
def show_workflow_node(self, node, req): if "sendout" in req.params: del req.params["sendout"] if "from" in req.params: node.set("system.mailtmp.from", req.params.get("from")) if "to" in req.params: node.set("system.mailtmp.to", req.params.get("to")) if "subject" in req.params: node.set("system.mailtmp.subject", req.params.get("subject")) if "text" in req.params: node.set("system.mailtmp.text", req.params.get("text")) db.session.commit() if(self.sendOut(node)): return self.forwardAndShow(node, True, req) if "gofalse" in req.params: return self.forwardAndShow(node, False, req) elif node.system_attrs.get("mailtmp.talerror", "") != "": del node.system_attrs["mailtmp.talerror"] db.session.commit() self.runAction(node, "true") if node.system_attrs.get("mailtmp.talerror", "") != "": return """<pre>%s</pre>""" % node.system_attrs.get("mailtmp.talerror") elif node.get("system.mailtmp.error"): return '%s<br/><pre>%s</pre><br>><a href="%s">%s</a><' % (t(lang(req), "workflow_email_msg_1"), node.get( "system.mailtmp.error"), req.makeSelfLink({"sendout": "true"}), t(lang(req), "workflow_email_resend")) else: xfrom = node.get("system.mailtmp.from") to = node.get("system.mailtmp.to") text = node.get("system.mailtmp.text") subject = tal.getTALstr(node.get("system.mailtmp.subject"), {}, language=node.get("system.wflanguage")) return req.getTAL("workflow/email.html", {"page": u"node?id={}&obj={}".format(self.id, node.id), "from": xfrom, "to": to, "text": text, "subject": subject, "node": node, "sendcondition": self.get("sendcondition"), "wfnode": self, "pretext": self.getPreText(lang(req)), "posttext": self.getPostText(lang(req)), "csrf": req.csrf_token.current_token,}, macro="sendmail")
def getTALtext(text, context): #text = tal.getTALstr('<body xmlns:tal="http://xml.zope.org/namespaces/tal">%s</body>' %(text), context) #text = text.replace("<body>","").replace("</body>","").replace("<body/>","") # return text.replace("\n","").strip() return tal.getTALstr(text, context).replace('\n', '').strip()
def getTALstr(s, context={}, language='en'): from mediatumtal import tal return tal.getTALstr(s, context, language=language)