def publicentry(dictID, entryID): if not ops.dictExists(dictID): return redirect("/") dictDB = ops.getDB(dictID) user, configs = ops.verifyLoginAndDictAccess(request.cookies.email, request.cookies.sessionkey, dictDB) if not configs["publico"]["public"]: return redirect("/"+dictID) adjustedEntryID, xml, _title = ops.readEntry(dictDB, configs, entryID) if adjustedEntryID == 0: return redirect("/"+dictID) nabes = ops.readNabesByEntryID(dictDB, dictID, entryID, configs) if "_xsl" in configs["xemplate"] and configs["xemplate"]["_xsl"] != "": from lxml import etree xslt_root = etree.XML(configs["xemplate"]["_xsl"].encode("utf-8")) transform = etree.XSLT(xslt_root) doc_root = etree.XML(xml.encode("utf-8")) html = transform(doc_root) elif "_css" in configs["xemplate"] and configs["xemplate"]["_css"] != "": html = xml else: entrydata = re.sub(r"'", "\\'", xml) entrydata = re.sub(r"\n", " ", entrydata) html = "<script type='text/javascript'>$('#viewer').html(Xemplatron.xml2html('"+entrydata+"', "+json.dumps(configs["xemplate"])+", "+json.dumps(configs["xema"])+"));</script>" #rewrite xemplatron to python, too? css = "" if "_css" in configs["xemplate"]: css = configs["xemplate"]["_css"] return template("dict-entry.tpl", **{"siteconfig": siteconfig, "user": user, "dictID": dictID, "dictTitle": configs["ident"]["title"], "dictBlurb": configs["ident"]["blurb"], "publico": configs["publico"], "entryID": adjustedEntryID, "nabes": nabes, "html": html, "title": _title, "css": css})
def history(dictID): if not ops.dictExists(dictID): return redirect("/") user, configs = ops.verifyLoginAndDictAccess(request.cookies.email, request.cookies.sessionkey, ops.getDB(dictID)) history = ops.readDictHistory(ops.getDB(dictID), dictID, configs, request.forms.id) res_history = [] for item in history: xml = item["content"] html = "" if xml: if configs["xemplate"].get( "_xsl") and configs["xemplate"]["_xsl"] != "": import lxml.etree as ET dom = ET.XML(xml.encode("utf-8")) xslt = ET.XML(configs["xemplate"]["_xsl"].encode("utf-8")) html = str(ET.XSLT(xslt)(dom)) elif configs["xemplate"].get( "_css") and configs["xemplate"]["_css"] != "": html = xml else: entrydata = re.sub(r"'", "\\'", xml) entrydata = re.sub(r"[\n\r]", "", entrydata) html = "<script type='text/javascript'>$('#viewer').html(Xemplatron.xml2html('" + entrydata + "', " + json.dumps( configs["xemplate"]) + ", " + json.dumps( configs["xema"]) + "));</script>" item["contentHtml"] = html res_history.append(item) return {"history": res_history}
def dictsearch(dictID): if not ops.dictExists(dictID): return redirect("/") dictDB = ops.getDB(dictID) user, configs = ops.verifyLoginAndDictAccess(request.cookies.email, request.cookies.sessionkey, dictDB) if not configs["publico"]["public"]: return redirect("/" + dictID) entries = ops.listEntriesPublic(dictDB, dictID, configs, request.query.q) if len(entries) == 1 and entries[0]["exactMatch"]: redirect("/" + dictID + "/" + entries[0]["id"]) else: nabes = ops.readNabesByText(dictDB, dictID, configs, request.query.q) return template( "dict-search.tpl", **{ "siteconfig": siteconfig, "user": user, "dictID": dictID, "dictTitle": configs["ident"]["title"], "dictBlurb": configs["ident"]["blurb"], "publico": configs["publico"], "q": request.query.q, "entries": entries, "nabes": nabes })
def publicrandom(dictID): if not ops.dictExists(dictID): return redirect("/") dictDB = ops.getDB(dictID) configs = ops.readDictConfigs(dictDB) if not configs["publico"]["public"]: return {"more": False, "entries": []} res = ops.readRandoms(dictDB) return res
def publicentryxml(dictID, entryID): if not ops.dictExists(dictID): return redirect("/") dictDB = ops.getDB(dictID) user, configs = ops.verifyLoginAndDictAccess(request.cookies.email, request.cookies.sessionkey, dictDB) if not configs["publico"]["public"]: return redirect("/"+dictID) if not "licence" in configs["publico"] or not siteconfig["licences"][configs["publico"]["licence"]]["canDownloadXml"]: return redirect("/"+dictID) res = ops.exportEntryXml(dictDB, dictID, entryID, configs, siteconfig["baseUrl"]) if res["entryID"] == 0: return redirect("/"+dictID) response.content_type = "text/xml; charset=utf-8" return res["xml"]
def publicdict(dictID): if not ops.dictExists(dictID): return redirect("/") user, configs = ops.verifyLoginAndDictAccess(request.cookies.email, request.cookies.sessionkey, ops.getDB(dictID)) blurb = ops.markdown_text(configs["ident"]["blurb"]) return template( "dict.tpl", **{ "siteconfig": siteconfig, "user": user, "dictID": dictID, "dictTitle": configs["ident"]["title"], "dictBlurb": blurb, "publico": configs["publico"] })