Esempio n. 1
0
class ListHandler(base_handler.PycateBaseHandler):
    def initialize(self, hinfo=''):
        self.init_condition()
        self.minfo = MInfo(self.city_name)
        self.mcat = MCatalog()
        self.mlink = MLink(self.city_name)
        self.mcity = MCity()

    def get(self, input=''):
        if len(input) == 4:
            self.list(input)
        elif len(input) > 4:
            # 如果带条件传回
            self.echo_html(input)
        else:
            self.render('404.html')



    def echo_html(self, input):
        input_arr = input.split('/')

        pa_arr = input.split('/')
        sig = pa_arr[0]

        num = (len(pa_arr) - 2) // 2

        # 包装成条件字典# condition 为用于查询的条件. 字典

        if sig.endswith('00'):
            condition = {'parentid': sig}
        else:
            condition = {'catid': sig}
        fenye_num = 1
        for ii in range(num):
            ckey = pa_arr[ii * 2 + 2]

            tval = pa_arr[ii * 2 + 3]
            if tval == '0':
                continue
            if ckey == 'fenye':
                # 分页参数。单独处理。
                fenye_num = int(tval)
                continue
            if ckey == 'fabiaoshijian':
                if tval == '1':
                    cval = 1
                elif tval == '2':
                    cval = 2
            else:
                cval = tval
            ckey = 'extra_' + ckey
            condition[ckey] = cval

        # 有效的条件
        condition['def_banned'] = 0
        condition['def_valid'] = 1

        print(condition)

        if input_arr[1] == 'con':
            infos = self.minfo.get_list_fenye(condition, fenye_num)
            for x in infos:
                for y in x:
                    print(y)
            self.echo_html_list_str(infos)
        elif input_arr[1] == 'num':
            allinfos = self.minfo.get_list(condition)
            self.echo_html_fenye_str(len(allinfos), fenye_num)

    def echo_html_list_str(self, infos):
        '''
        生成 list 后的 HTML 格式的字符串
        '''
        outstr = ''

        for info in infos:

            zhiding_str = ''
            tuiguang_str = ''
            imgname = 'fixed/zhanwei.png'
            if len(info['mymps_img']) > 0:
                imgname = info['mymps_img'][0]
            # print(imgname)
            if info['def_zhiding'] == 1:
                zhiding_str = '<span class="red">(已置顶)</span>'
            if info['def_tuiguang'] == 1:
                tuiguang_str = '<span class="red">(已推广)</span>'

            list_type = info['catid'][0]

            html_top_str = ''
            if 'extra_fangjia' in info:
                html_top_str = '''
                房价: <span class="red">{0}</span>
                '''.format(info['extra_fangjia'][0])
            html_bottom_str = ''

            kwd = {
                'imgname': imgname,
                'zhiding': zhiding_str,
                'tuiguang': tuiguang_str,
                'html_right_top': html_top_str,
                'html_right_bottom': html_bottom_str,
            }

            outstr += self.render_string('infolist/infolist_{0}.html'.format(list_type),
                                         kwd=kwd, post_info=info,
                                         widget_info = kwd).decode('utf-8')

        self.write(outstr)

    def echo_html_fenye_str(self, rec_num, fenye_num):
        '''
        生成分页的导航
        '''
        pagination_num = int(math.ceil(rec_num * 1.0 / c.info_list_per_page))

        if pagination_num == 1 or pagination_num == 0:
            # 只有一页时,不出现。
            fenye_str = ''
        elif pagination_num > 1:
            fenye_str = '<ul class="iga_pagination">'
            for num in range(1, pagination_num + 1):
                if num == fenye_num:
                    checkstr = 'active'
                else:
                    checkstr = 'disable'
                tmp_str_df = '''
                  <li class='{0}' name='fenye' onclick='change(this);'
                  value='{1}'><a>{1}</a></li>'''.format(checkstr, num)
                fenye_str += tmp_str_df
            fenye_str += '</ul>'

        else:
            pass
        self.write(fenye_str)


    def list(self, input):
        '''
        页面打开后的渲染方法,不包含 list 的查询结果与分页导航
        '''
        sig = input

        # 面包屑导航
        bread_crumb_nav_str = '当前位置:<a href="/">数据中心</a>'
        bread_crumb_nav_str += ' > '
        if input.endswith('00'):
            # 在打开一级类的情况下
            parent_id = input
            parent_catname = self.mcat.get_by_id(parent_id).catname
            condition = {'parentid': parent_id}
            catname = self.mcat.get_by_id(sig).catname
            bread_crumb_nav_str += '<a href="/list/{0}">{1}</a>'.format(sig, catname)

        else:
            # 在list 二级类的情况下
            condition = {'catid': sig}
            parent_id = sig[:2] + '00'
            parent_catname = self.mcat.get_by_id(parent_id).catname
            catname = self.mcat.get_by_id(sig).catname
            bread_crumb_nav_str += '<a href="/list/{0}">{1}</a>'.format(parent_id, parent_catname)
            bread_crumb_nav_str += ' > '
            bread_crumb_nav_str += '<a href="/list/{0}">{1}</a>'.format(sig, catname)
        # 右侧图片广告
        link_recs = self.mlink.query_links_by_parentid(parent_id)
        out_link_str = libs.core.get_out_link_str(link_recs, self.static_url)
        # 有效的条件
        condition['def_banned'] = 0
        condition['def_valid'] = 1
        condition['def_refresh'] = 1

        num = self.minfo.get_num_condition(condition)
        # 左侧二级菜单
        rnage2_list = self.mcat.get_range2_without_parent(parent_id)
        sub_menu_str = libs.core.get_sub_menu_str(rnage2_list, parent_catname)

        kwd = {
            'catid': input,
            'cityname': self.mcity.get_cityname_by_id(self.city_name),
            'daohangstr': bread_crumb_nav_str,
            'linkstr': out_link_str,
            'parentid': parent_id,
            'parentlist': self.mcat.get_parent_list(),
            'condition': condition,
            'sub_menu': sub_menu_str,
            'catname': catname,
            'rec_num': num,
        }
        self.render('list/list_{0}.html'.format(input), kwd=kwd, widget_info = kwd,)
Esempio n. 2
0
 def initialize(self, hinfo=''):
     self.init_condition()
     self.minfo = MInfo(self.city_name)
     self.mcat = MCatalog()
     self.mlink = MLink(self.city_name)
     self.mcity = MCity()
Esempio n. 3
0
class LinkHandler(base_handler.PycateBaseHandler):
    def initialize(self, hinfo=''):
        self.init_condition()
        self.mlink = MLink(self.city_name)
        self.mcat = MCatalog()


    def get(self, input=''):
        # Todo: 验证
        url_arr = input.split('/')
        if url_arr[0] == 'add_frame':
            self.to_add_frame(url_arr[1])
        elif url_arr[0] == 'add':
            self.to_add(url_arr[1])
        elif url_arr[0] == 'view':
            self.view(url_arr[1])
        elif input == 'list':
            self.list()
        elif input.startswith('delete'):
            self.delete_by_id(input)
        elif input.startswith('edit'):
            self.to_edit(input)
        else:
            op, catid = input.split(r'/')
            if op == 'get_list':
                self.get_list()

    def view(self, parentid):
        linkinfo = self.mlink.get_links_by_parentid(parentid, self.user_name)
        if linkinfo:
            kwd = {
                'userid': self.user_name,
                'cityid': self.city_name,
                'parentid': parentid,
            }
            self.render('link/view.html', kwd=kwd, linkinfo=linkinfo)

    @tornado.web.authenticated
    def delete_by_id(self, input):
        op, uid = input.split('/')
        self.mlink.delete_by_uid(uid)
        self.list()

    def post(self, input=''):
        if input == 'add':
            self.add()
        elif input.startswith('edit'):
            self.update()

    @tornado.web.authenticated
    def add(self):
        post_data = {}
        for key in self.request.arguments:
            post_data[key] = self.get_arguments(key)
        parentid = post_data['parentid'][0]
        if self.mlink.get_links_by_parentid(parentid,  self.user_name):
            self.set_status(400)
        else:
            file_dict = self.request.files['link_image'][0]
            # 对上传的图片进行处理
            file_up_str = libs.upload.upload_imgfile(file_dict)
            out_arr = {'img': file_up_str}
            out_arr['url'] = post_data['link_url'][0]
            out_arr['catid'] = ''
            out_arr['cityid'] = self.city_name
            out_arr['parentid'] = parentid
            out_arr['username'] = self.user_name
            self.mlink.insert_rec(out_arr)
            self.set_status(200)
        self.redirect('/link/view/{0}'.format(parentid))

    @tornado.web.authenticated
    def update(self):
        post_data = {}
        for key in self.request.arguments:
            post_data[key] = self.get_arguments(key)

        if 'elink_image' in self.request.files:
            file_dict = self.request.files['elink_image'][0]
            file_up_str = libs.upload.upload_imgfile(file_dict)
            out_arr = {'img': file_up_str}
        else:
            out_arr = {'img': post_data['old_img'][0]}

        out_arr['url'] = post_data['elink_url'][0]
        out_arr['catid'] = post_data['ecatid'][0]
        self.mlink.update(post_data['uid'][0], out_arr)
        self.set_status(200)


    def list(self):

        cat_str = '''<option value='' selected >请选择</option>'''
        for cat_id in self.muser_info.get_vip_cats():
            cat_name = self.mcat.get_by_id(cat_id).catname
            tmp_str = '''<option value="%s" >%s</option>''' % (cat_id, cat_name)
            cat_str += tmp_str

        infos = self.mlink.get_links_by_cityid(self.user_name, self.city_name)
        kwd = {
            'userid': self.user_name,
            'cityname': '',
            'cityid': self.city_name,
            'cat_str': cat_str,
            'parentid': '0000',
            'parentlist': self.mcat.get_parent_list(),
        }

        self.render('link/list.html',
                    infos=infos,
                    kwd=kwd,
                    wuserinfo=self.muser_info.get_by_username(),
                    wuservip=self.muser_vip.get_by_username(),
        )

    @tornado.web.authenticated
    def to_add(self, parentid):
        kwd = {
            'userid': self.user_name,
            'cityid': self.city_name,
            # 'cityname': self.mcity.get_cityname_by_id(self.city_name),
            # 'city_select_str': city_select_str,
            'parentid': parentid,
            # 'parentlist': self.mcat.get_parent_list(),
        }
        current_link = self.mlink.get_links_by_parentid(parentid,  self.user_name)
        if current_link:
            self.render('link/edit.html', kwd=kwd, linkinfo = current_link)
        self.render('link/add.html', kwd=kwd)

    @tornado.web.authenticated
    def to_add_frame(self, parentid):
        kwd = {
            'userid': self.user_name,
            'cityid': self.city_name,
            # 'cityname': self.mcity.get_cityname_by_id(self.city_name),
            'parentid': parentid,
            # 'parentlist': self.mcat.get_parent_list(),

        }
        self.render('link/add_frame.html', kwd=kwd,
                    wuserinfo=self.muser_info.get_by_username(),
                    wuservip=self.muser_vip.get_by_username())

    @tornado.web.authenticated
    def to_edit(self, input):
        # Generate the select options for cityid
        op, uid = input.split('/')
        # self.mlink.delete_by_uid(uid)
        linkinfo = self.mlink.get_by_id(uid)
        # self.list()
        tmp_s1 = ''
        tmp_s2 = ''
        tmp_s3 = ''
        link_cityid = linkinfo.cityid.strip()
        # print(link_cityid)
        if link_cityid == 'changchun':
            tmp_s1 = 'selected'
        elif link_cityid == 'tonghua':
            tmp_s2 = 'selected'
        elif link_cityid == 'jilin':
            tmp_s3 = 'selected'

        # city_select_str = '''
        # <option value="changchun" {0}>c.长春</option>
        # <option value="tonghua" {1}>t.通化</option>
        # <option value="jilin" {2}>j.吉林</option>
        # '''.format(tmp_s1, tmp_s2, tmp_s3)
        #

        cat_str = '''<option value='' selected >请选择</option>
        '''
        # print(self.vip_cat)
        for cat_id in self.vip_cat:
            cat_name = self.mcat.get_by_id(cat_id).catname
            tmp_str_jcc = ''
            if cat_id == linkinfo.catid:
                tmp_str_jcc = 'selected=selected'
            tmp_str = '''<option value="{0}" {1}>{2}</option>'''.format(cat_id, tmp_str_jcc, cat_name)
            cat_str += tmp_str

        kwd = {
            'userid': self.user_name,
            'cityid': self.city_name,
            'cityname': self.mcity.get_cityname_by_id(self.city_name),
            'cat_str': cat_str,
            'parentid': '0000',
            'parentlist': self.mcat.get_parent_list(),
        }

        # print(kwd)
        self.render('link/list.html', kwd=kwd, linkinfo=linkinfo)