Exemplo n.º 1
0
def index(request):
    '''
    top page
    '''
    browser_lang = request.lang
    results = memcache.get(CACHE_NAME_FOR_TOP_PAGE_RESULTS+'-'+browser_lang)
    if results is None:
        query_results = AdminPage.all().filter(u'lang =',DEFAULT_LANG).filter(u'display_page_flg =',True).order('page_order').fetch(limit=TOP_PAGE_CONTENT_NUM)
        results = []
        for r in query_results:
            if browser_lang != DEFAULT_LANG:
                translations = AdminPage.all().ancestor(r.key()).fetch(1000)
                browser_lang_trans = None
                for trans in translations:
                    if trans.lang == browser_lang:
                        browser_lang_trans = trans
                        break
                if browser_lang_trans:
                    r.content = browser_lang_trans.content
                    r.title = browser_lang_trans.title
            url = r.external_url if r.external_url else '/'+r.key().name()+'/'
            if browser_lang != DEFAULT_LANG:
                url += '?hl='+browser_lang
            snippet = html.strip_tags(markdown(r.content)).split('\n')[0]
            try:
                first_image = json.loads(r.images)['images'][0]['image_path']
            except:
                first_image = None
            results.append({'title':r.title,'snippet':snippet,'url':url,'first_image':first_image})
        if len(results) == 0:results = DUMMY_DATA_FOR_TOP_PAGE
        logging.info(results)
        memcache.set(CACHE_NAME_FOR_TOP_PAGE_RESULTS+'-'+browser_lang,results)
    article_results = get_article_list(browser_lang,1,4)
    return render_to_response('mainapp/index.html', {'results': results,'article_results':article_results})
Exemplo n.º 2
0
def get_article_list(browser_lang,page,article_per_page,tag_name=False):
    if tag_name:
        tag_name_encoded = unicode(tag_name)
    else:
        tag_name_encoded = str(tag_name)
    memcache_key = u'article-'+str(page)+u'-'+str(article_per_page)+u'-'+urllib.quote(tag_name_encoded.encode('utf-8'))+u'-'+browser_lang
    logging.info(memcache_key)
    results_dic = memcache.get(memcache_key)
    #if memcache data exist return
    if results_dic:
        return results_dic
    #else memcach data is none,query from datastore
    now = datetime.datetime.now()
    logging.info(now)
    query = Article.all().filter(u'lang =',DEFAULT_LANG).filter(u'display_page_flg =',True)
    if tag_name:
        query.filter(u'tags =',tag_name)
    query.filter(u'display_time <',now).order('-display_time')
    paginator = Paginator(query,article_per_page)
    try:
        results = paginator.page(page)
    except (EmptyPage,InvalidPage):
        results = paginator.page(paginator.num_pages)
    return_list = []
    for r in results.object_list:
        browser_lang_trans = None
        if browser_lang != DEFAULT_LANG:
            translations = Article.all().ancestor(r.key()).fetch(1000)
            #browser_lang_trans = None
            for trans in translations:
                if trans.lang == browser_lang:
                    browser_lang_trans = trans
                    break
            if browser_lang_trans:
                r.content = browser_lang_trans.content
                r.title = browser_lang_trans.title
        url = r.external_url if r.external_url else url_for('mainapp/show_each_article',key_name=r.key().name())
        if browser_lang_trans and browser_lang != DEFAULT_LANG:
            url += '?hl='+browser_lang
        snippet = html.strip_tags(markdown(r.content)).split('\n')[0]
        try:
            first_image = json.loads(r.images)['images'][0]['image_path']
        except:
            first_image = None
        return_list.append({'key':str(r.key()),
            'id':r.key().name(),
            'title':r.title,
            'snippet':snippet,
            'url':url,
            'first_image':first_image,
            'display_time':str(r.display_time)[:10]})
    results_dic = {'articles':return_list,
    'current_page':results.number,
    'previous_page':results.previous_page_number,
    'next_page':results.next_page_number,
    'has_next':results.has_next,
    'total_pages':results.paginator.num_pages,
    'tag_name':tag_name}
    memcache.set(memcache_key,results_dic)
    return results_dic 
Exemplo n.º 3
0
def get_page_content(browser_lang,model_name,key_name,is_admin=False):
    default_page = MODEL_DICT[model_name].get_by_key_name(key_name)
    if default_page is None:
        return None 
    return_page = default_page
    if is_admin is False and default_page.display_page_flg is False:
        return None 
    if browser_lang != DEFAULT_LANG:
        logging.info('browser_lang:'+browser_lang)
        translations = MODEL_DICT[model_name].all().ancestor(default_page.key()).fetch(1000)
        for trans in translations:
            if trans.lang == browser_lang:
                return_page = trans
                if hasattr(default_page,'display_time'):
                    return_page.display_time = default_page.display_time
    markdown_converted_content = markdown(return_page.content)
    snippet = html.strip_tags(markdown_converted_content).split('\n')[0]
    return_page.content = markdown_converted_content
    setattr(return_page,'snippet',snippet)
    try:
        first_image = json.loads(return_page.images)['images'][0]['image_path']
    except:
        first_image = None
    setattr(return_page,'first_image',first_image)
    return return_page
Exemplo n.º 4
0
def index(request):
    key_name = 'jfoottrade2013-2014'
    page = memcache.get(key_name)
    if page is None:
        page = Article.get_by_key_name(key_name)
        if page is None:
            return render_to_response('mainapp/404.html', {})
        markdown_converted_content = markdown(page.content)
        snippet = html.strip_tags(markdown_converted_content).split('\n')[0]
        page.content = markdown_converted_content
        setattr(page,'snippet',snippet)
        try:
            first_image = json.loads(page.images)['images'][0]['image_path']
        except:
            first_image = None
        setattr(page,'first_image',first_image)
        memcache.set(key_name,page)
    return render_to_response('vapp/index.html', {'page': page})
Exemplo n.º 5
0
def get_search_list(keyword,browser_lang,page,article_per_page,cursor_string=None):
    limit = article_per_page 
    timestamp_desc = search.SortExpression(
            expression='timestamp',
            direction=search.SortExpression.DESCENDING,
            default_value=0)
    sort = search.SortOptions(expressions=[timestamp_desc], limit=1000)
    if cursor_string is None:
        cursor = search.Cursor()
    else:
        cursor = search.Cursor(web_safe_string=cursor_string)
    options = search.QueryOptions(
            limit=limit,  # the number of results to return
            cursor=cursor,
            sort_options=sort)
    if browser_lang == 'all':
        query_string = keyword +' display_page_flg:True'
    else:
        query_string = keyword +' lang:'+browser_lang+' display_page_flg:True'
    query = search.Query(query_string=query_string,options=options)
    index = search.Index(name='Pages')
    si_results = index.search(query)
    next_cursor_obj = si_results.cursor
    logging.info(next_cursor_obj)
    logging.info(si_results.number_found)
    if next_cursor_obj:
        next_cursor = next_cursor_obj.web_safe_string
    else:
        next_cursor = None
    return_list = []
    for sr in si_results:
        title = None
        snippet = None
        url = None
        first_image = None
        display_time = None
        key = None
        for f in sr.fields:
            if f.name == 'content': 
                snippet = html.strip_tags(markdown(f.value)).split('\n')[0]
            elif f.name == 'images':
                try:
                    first_image = json.loads(f.value)['images'][0]['image_path']
                except:
                    pass
            elif f.name == 'title':
                title = f.value
            elif f.name == 'key':
                key = f.value
            elif f.name == 'url':
                url = f.value
        if browser_lang != DEFAULT_LANG:
            if url:
                url += '?hl='+browser_lang
        return_list.append({'key':key,
            'id':sr.doc_id,
            'title':title,
            'snippet':snippet,
            'url':url,
            'first_image':first_image,
            'display_time':display_time})
    results_dic = {'articles':return_list,
    'current_page':page,
    'total_pages':si_results.number_found/article_per_page+1,
    'tag_name':None,
    'cursor':next_cursor,
    'keyword':keyword}
    return results_dic
def toMarkdown(text):
    from mainapp.markdown2 import markdown
    return_html = markdown(text) 
    return return_html