from .utils import fet, fetmember
from .utils import strip_html
from urllib.parse import urljoin,urlparse
from . import env
def pull_post(slug, o):
#docs = result.docs
highlights =o["highlights"]
post = fet.find_one({"slug": slug})
def create_text(p):
return "" + \
p["title"]+ ": "+ \
"(%s) " % p["public_date"] + \
urljoin(env('TARGET'),
p["url"]).rstrip("/")+" "+\
p["highlights"]
def create_highlights(h):
return str(strip_html(h.get("text_txt","")))
if post:
post["typ"] = "posts"
post["highlights"]=create_highlights(o["highlights"])
post["text"] = create_text(post)
if post["url"]: post["url"]= urljoin(env('TARGET'),post["url"]).rstrip("/")
if post["imageurl"]:post["image"]=urljoin(env('TARGET'),urlparse(post["imageurl"]).path)
return post
def pull_member(id, o):
member = fetmember.get(id)
if not member: return None
member["url"]=urljoin(env('TARGET'), "/member/%s" % id)
member["text"]=""+member["firstname"]+" "+member["surname"]+""+" "+member["url"]
member["imageurl"]=member["image"]
member["title"] =member["firstname"]+" "+member["surname"]
return member
pull_original={"posts": pull_post,"member": pull_member}
def result_to_object(result):
docs=result.docs
highlights =result.highlighting
#objects=[(rr["id"],rr["id"].split("/")[1],rr["id"].) for rr in docs]
def split_id(url):
"Split the id into its parts // -> , "
return {
"id": url["id"] ,
"typ": url["id"] .split("/")[1],
"term": url["id"] .split("/")[2]
}
def doc_to_object(r):
o=split_id(r)
o["highlights"]=highlights.get(o["id"])
o=pull_original[o["typ"]](o["term"],o)
return o
return [doc_to_object(d) for d in docs]