Ejemplo n.º 1
0
    def render(self, *args):
        ysearch = YunSearch()
        tag_slug = args[0]
        current = int(args[1])
        res_all = ysearch.get_all_num(tag_slug)
        page_num = int(res_all / config.CMS_CFG['list_num'])

        kwd = {
            'page_home': False if current <= 1 else True,
            'page_end': False if current >= page_num else True,
            'page_pre': False if current <= 1 else True,
            'page_next': False if current >= page_num else True,
        }

        return self.render_string('modules/post/search_pager.html',
                                  kwd=kwd,
                                  cat_slug=tag_slug,
                                  pager_num=page_num,
                                  page_current=current)
Ejemplo n.º 2
0
    def render(self, *args, **kwargs):
        ysearch = YunSearch()
        catid = args[0]
        tag_slug = args[1]
        current = int(args[2])
        res_all = ysearch.get_all_num(tag_slug, catid=catid)
        pager_count = int(res_all / config.CMS_CFG['list_num'])
        page_num = (pager_count
                    if abs(pager_count - res_all / config.CMS_CFG['list_num'])
                    < 0.1 else pager_count + 1)
        kwd = {
            'page_home': False if current <= 1 else True,
            'page_end': False if current >= page_num else True,
            'page_pre': False if current <= 1 else True,
            'page_next': False if current >= page_num else True,
        }

        return self.render_string('modules/post/search_pager.html',
                                  kwd=kwd,
                                  cat_slug=tag_slug,
                                  pager_num=page_num,
                                  page_current=current)
Ejemplo n.º 3
0
class SearchHandler(BaseHandler):
    '''
    For full text searching.
    '''
    def initialize(self, **kwargs):
        super(SearchHandler, self).initialize()
        self.ysearch = YunSearch()

    def get(self, *args, **kwargs):
        url_str = args[0]
        url_arr = self.parse_url(url_str)

        if url_str == '':
            self.index()
        elif len(url_arr) == 2:
            self.search(url_arr[0], url_arr[1])
        elif len(url_arr) == 3:
            self.search_cat(url_arr[0], url_arr[1], int(url_arr[2]))
        else:
            kwd = {
                'info': '页面未找到',
            }
            self.render('misc/html/404.html', kwd=kwd, userinfo=self.userinfo)

    def index(self):
        tag_enum = MCategory.query_pcat()
        self.render('misc/search/search_index.html',
                    userinfo=self.userinfo,
                    cat_enum=tag_enum,
                    tag_enum=tag_enum,
                    kwd={})

    def post(self, *args, **kwargs):
        post_data = self.get_post_data()

        catid = post_data['searchcat'] if 'searchcat' in post_data else ''

        keyword = post_data['keyword']

        logger.info('Searching ... ')
        logger.info('    catid:    {uid}'.format(uid=catid))
        logger.info('    keyowrds: {kw}'.format(kw=keyword))

        if catid == '':
            self.redirect('/search/{0}/1'.format(keyword))
        else:
            self.redirect('/search/{0}/{1}/1'.format(catid, keyword))

    def search(self, keyword, p_index=''):
        '''
        perform searching.
        '''
        if p_index == '' or p_index == '-1':
            current_page_number = 1
        else:
            current_page_number = int(p_index)
        res_all = self.ysearch.get_all_num(keyword)
        results = self.ysearch.search_pager(keyword,
                                            page_index=current_page_number,
                                            doc_per_page=CMS_CFG['list_num'])
        page_num = int(res_all / CMS_CFG['list_num'])
        kwd = {
            'title': '查找结果',
            'pager': '',
            'count': res_all,
            'keyword': keyword,
            'catid': '',
            'current_page': current_page_number
        }
        self.render('misc/search/search_list.html',
                    kwd=kwd,
                    srecs=results,
                    pager=gen_pager_bootstrap_url(
                        '/search/{0}'.format(keyword), page_num,
                        current_page_number),
                    userinfo=self.userinfo,
                    cfg=CMS_CFG)

    def search_cat(self, catid, keyword, p_index=1):
        '''
        Searching according the kind.
        '''
        catid = 'sid' + catid
        logger.info('-' * 20)
        logger.info('search cat')
        logger.info('catid: {0}'.format(catid))
        logger.info('keyword: {0}'.format(keyword))

        # catid = ''
        if p_index == '' or p_index == '-1':
            current_page_number = 1
        else:
            current_page_number = int(p_index)
        res_all = self.ysearch.get_all_num(keyword, catid=catid)

        results = self.ysearch.search_pager(keyword,
                                            catid=catid,
                                            page_index=current_page_number,
                                            doc_per_page=CMS_CFG['list_num'])
        page_num = int(res_all / CMS_CFG['list_num'])

        kwd = {
            'title': '查找结果',
            'pager': '',
            'count': res_all,
            'current_page': current_page_number,
            'catid': catid,
            'keyword': keyword
        }

        self.render('misc/search/search_list.html',
                    kwd=kwd,
                    srecs=results,
                    pager=gen_pager_bootstrap_url(
                        '/search/{0}/{1}'.format(catid, keyword), page_num,
                        current_page_number),
                    userinfo=self.userinfo,
                    cfg=CMS_CFG)