def post(self):
        query = self.request.get("query")
        source = self.request.get("source")

        tweets = None
        index = -1

        recordlist = list()
        if Records.searchKeyListContains(query):
            Records.updateSearchKeyPosition(query)
            recordlist.extend(Records.getRecordsTimeListFor(query))
        else:
            Records.addSearchKey(query)
            Records.updateTweetbase()

        if source == "search-bar" or source == "history-bar-home":
            twitter_handler = TwitterHandler(query)
            tweets = twitter_handler.retrieveData()
            #write code for error condition
        else:
            index = int(self.request.get("index"))
            tweets = Records.getRecordsByIndexFor(query, index)

        template_values = {
                           "query"  : query,
                           "records": recordlist,
                           "disable": index,
                           "tweets" : reversed(tweets),
                           "t_count": len(tweets)
                          }
        template = JINJA_ENVIRONMENT.get_template("tweetspage.html")
        self.response.write(template.render(template_values))
    def updateTweetbase(cls):
        search_key = ndb.Key("search_query_list", SEARCH_QUERY_LIST_NAME)
        searches = SearchKey.getsearchlist(search_key).fetch(MAX_SEARCH_LIST_SIZE)

        for search in searches:
            if search.next_search_time <= datetime.now():
                #we update the search record
                new_record_key = ndb.Key("search_query_list", SEARCH_QUERY_LIST_NAME, "record_list", RECORD_KEY_PREFIX + normalize(search.search_query))
                record = SearchRecord.getsearchrecord(new_record_key).get()
                
                since_id = long(-1)
                for record_s in reversed(record.search_result):
                    if len(record_s.search_result) > 0 :
                        since_id = long(record_s.search_result[0]["tweet_id"])
                        break

                twitter_handler = TwitterHandler(search.search_query, since_id)
                tweets = twitter_handler.retrieveData(MAX_TWEETS_IN_A_SEARCH)

                if record.num_of_result == 0:
                    record.search_result = [SearchResult(search_result = tweets)]
                else:
                    record.search_result.append(SearchResult(search_result = tweets))

                record.num_of_result += 1
                record.put()

                #we update the list of searches
                search.next_search_time = search.next_search_time + timedelta(minutes = SEARCH_REPEAT_TIME_MINS)
                search.put()