コード例 #1
0
    def results(self, id=None):
        c.error_message = ""
        c.url = request.remote_addr
        c.from_developer = request.remote_addr == h.get_sa_home_ip()
        if request.method != "POST":
            page = int(request.params.get("page", "1"))
            try:
                batchSize = session["batchSize"]
                c.total_pages = session["total_pages"]
                c.listname = session["listname"]
            except KeyError:
                abort(403, "No session found to display results")	
            page = max(1, page)
            page = min(page, c.total_pages)
            # Get the slice
            recStart = (batchSize * (page-1))
            recEnd = (batchSize * page) - 1
            allrecs = session["fullresults"]
            c.numResults = len(allrecs)
            c.elapsed = session["elapsed"]
            c.page = page
            c.results = allrecs[recStart:recEnd]

            try:
                c.results[0].imsg
            except IndexError, e:
                # No results; ignore
                pass
            except AttributeError, e:
                c.error_message = "Your session information has been lost."
コード例 #2
0
ファイル: archives.py プロジェクト: EdLeafe/leafecom-site
    def full_thread(self, id=None):
        msgnum = id
        if msgnum is None:
            abort(400, "Sorry, a message ID is required.")
        c.listname = session.get("listname", "")
        c.url = request.remote_addr
        c.from_developer = request.remote_addr == h.get_sa_home_ip()
        kwargs = {"body": {"query": {"match": {"msg_num": msgnum}}}}
        resp = es_client.search("email", doc_type="mail", **kwargs)
        recs = extract_records(resp, translate_to_db=False)
        if not recs:
            abort(404, "No message with id=%s exists" % msgnum)

        subj = recs[0]["subject"]
        pat = re.compile(r"^re: *", re.I)
        subj = pat.sub("", subj)
        kwargs = {"body": {"query": {"match_phrase" : {"subject" : subj}}},
                "sort": ["posted:asc"]}
        resp = es_client.search("email", doc_type="mail", **kwargs)
        c.results = extract_records(resp, translate_to_db=True)
        c.query_statement = kwargs
        return render("/full_thread.html")






        modelSession = model.meta.Session
        c.error_message = ""
        c.listname = session.get("listname", "")
        c.url = request.remote_addr
        c.from_developer = request.remote_addr == h.get_sa_home_ip()
        query = modelSession.query(Archive)
        query = query.filter_by(imsg=id)
        try:
            msg = self._query_first(query)
        except NoResultFound:
            abort(404, "No message with id=%s exists" % id)
        try:
            msgTime = msg.tposted
        except AttributeError, e:
            # No message match the subject
            log.warn("Full thread failed for id=%s" % id)
            c.results = []
            return render("/archive_results.html")
コード例 #3
0
ファイル: archives.py プロジェクト: EdLeafe/leafecom-site
    def results(self, id=None):
        c.error_message = ""
        c.url = request.remote_addr
        c.from_developer = request.remote_addr == h.get_sa_home_ip()

        if request.method != "POST":
            page = int(request.params.get("page", "1"))
            try:
                batchSize = session["batchSize"]
                c.total_pages = session["total_pages"]
                c.listname = session["listname"]
            except KeyError:
                abort(403, "No session found to display results")
            page = max(1, page)
            page = min(page, c.total_pages)
            # Get the slice
            recStart = (batchSize * (page-1))
            recEnd = (batchSize * page) - 1
            if c.from_developer:
                c.session = session
                kwargs = {"body": session.get("query_body")}
                kwargs["sort"] = [get_sort_order(session.get("orderBy"))]
                kwargs["size"] = batchSize
                session.query_body = kwargs["body"]
                # Now run the query for real
                kwargs["size"] = batchSize
                kwargs["from_"] = recStart
                c.query_statement = str(kwargs)
                c.params = {}
                startTime = time.time()
                resp = es_client.search("email", doc_type="mail", **kwargs)
                session["elapsed"] = c.elapsed = "%.4f" % (
                        time.time() - startTime)
                c.numResults = len(session["fullresults"])
                allrecs = extract_records(resp)
                c.results = allrecs

            else:
                allrecs = session["fullresults"]
                c.results = allrecs[recStart:recEnd]
                c.numResults = len(allrecs)
            c.elapsed = session["elapsed"]
            c.page = page

            try:
                c.results[0].imsg
            except IndexError, e:
                # No results; ignore
                pass
            except AttributeError, e:
                c.error_message = "Your session information has been lost."
コード例 #4
0
ファイル: archives.py プロジェクト: EdLeafe/leafecom-site
 def msg(self, id=None):
     if id is None:
         abort(400, "Sorry, a message ID is required.")
     c.from_developer = request.remote_addr == h.get_sa_home_ip()
     if c.from_developer:
         kwargs = {"body": {"query": {"match": {"msg_num": id}}}}
         resp = es_client.search("email", doc_type="mail", **kwargs)
         allrecs = extract_records(resp)
         if not allrecs:
             abort(404, "No message with id=%s exists" % id)
         c.message = allrecs[0]
         c.session = session
     else:
         modelSession = model.meta.Session
         query = modelSession.query(Archive)
         query = query.filter_by(imsg=id)
         try:
             c.message = self._query_first(query)
         except NoResultFound:
             abort(404, "No message with id=%s exists" % id)
     c.listname = session.get("listname", "")
     try:
         msgIDs = session["fullresults"]
     except KeyError:
         msgIDs = []
     c.priorLink = ""
     c.nextLink = ""
     c.fullThreadLink = "/archives/full_thread/%s" % c.message.imsg
     try:
         thisPos = msgIDs.index(c.message.imsg)
     except ValueError:
         thisPos = None
     if thisPos is not None:
         if thisPos > 0:
             priorMsg = msgIDs[thisPos - 1]
             c.priorLink = "/archives/msg/%s" % priorMsg
         try:
             nextMsg = msgIDs[thisPos + 1]
             c.nextLink = "/archives/msg/%s" % nextMsg
         except IndexError:
             # This is the last message
             pass
     return self._showMessage()
コード例 #5
0
 def full_thread(self, id=None):
     if id is None:
         abort(400, "Sorry, a message ID is required.")
     modelSession = model.meta.Session
     c.error_message = ""
     c.listname = session.get("listname", "")
     c.url = request.remote_addr
     c.from_developer = request.remote_addr == h.get_sa_home_ip()
     query = modelSession.query(Archive)
     query = query.filter_by(imsg=id)
     try:
         msg = self._query_first(query)
     except NoResultFound:
         abort(404, "No message with id=%s exists" % id)
     try:
         msgTime = msg.tposted
     except AttributeError, e:
         # No message match the subject
         log.warn("Full thread failed for id=%s" % id)
         c.results = []
         return render("/archive_results.html")