Example #1
0
class InfoHandler(base_handler.BaseHandler):
    def initialize(self, hinfo=''):
        # self.userid = self.get_secure_cookie('login_user').decode('utf-8')
        self.init_condition()
        self.mlink = MLink(self.city_name)
        self.mcat = MCatalog()


    def get(self, input=''):
        if len(input) == 36:
            self.view(input)
        elif input.startswith('shoucang'):
            info_uid = input.split('/')[1]
            self.shoucang(info_uid)
        else:
            self.render('404.html')

    def shoucang(self, info_uid):

        uid = libs.tool.md5(''.join([self.user_name, info_uid]))
        if self.mshoucang.has_record(uid):
            return
        info_dic = {
            'uid': uid,
            'timestamp': libs.tool.get_timestamp(),
            'userid': self.user_name,
            'info_uid': info_uid,
            'catname': self.minfo.get_by_id(info_uid)['catname'],
            'title': self.minfo.get_by_id(info_uid)['title'][0],
        }
        self.mshoucang.insert_data(info_dic)

    def post(self, input=''):
        self.update_jianli(input)


    def update_jianli(self, input):
        # print(input)
        post_data = {}
        for key in self.request.arguments:
            post_data[key] = self.get_arguments(key)
        # for x in post_data:
        # print(post_data[x])
        self.minfo.update_jianli(input, post_data['jianli'][0])
        self.view(input)


    def is_viewable(self, info):


        if info['userid'] == self.user_name:
            # 如果是用户自己的,当然可以查看
            return True
        if info['def_valid'] != 1:
            return (False)
        if info['def_banned'] == 1:
            return (False)
        return True


    def view(self, uuid):
        info = self.minfo.get_by_id(uuid)
        if info is None:
            # 如果资源不存在
            self.set_status(404)
            self.render('404_view.html')
            return (False)
        elif self.is_viewable(info):
            pass
        else:
            self.render('404.html')
            return

        cat_id = info['catid'][0]
        parent_id = cat_id[:2] + '00'
        parent_catname = self.mcat.get_by_id(parent_id).catname
        catname = self.mcat.get_by_id(cat_id).catname

        daohang_str = '<a href="/">数据中心</a>'
        daohang_str += ' &gt; <a href="/list/{0}">{1}</a>'.format(parent_id, parent_catname)
        daohang_str += ' &gt; <a href="/list/{0}">{1}</a>'.format(cat_id, catname)

        ts = info['def_update_time_str']
        imgname = ''
        has_image = 0
        img_url = ''
        if len(info['mymps_img']) > 0:
            imgname = info['mymps_img'][0]
            has_image = 1
            img_url = self.static_url(imgname)
        # 左侧菜单
        rnage2_list = self.mcat.get_range2_without_parent(parent_id)
        sub_menu_str = libs.core.get_sub_menu_str(rnage2_list, parent_catname)
        # 右侧图片广告
        link_recs = self.mlink.get_links_by_catid(cat_id)
        out_link_str = libs.core.get_out_link_str(link_recs, self.static_url)

        # 自己发布的内容,不用收藏。

        if self.user_name == info['userid']:
           #  operate_str = '''<div id="g_fy" ><a href="/edit/{0}">编辑</a>
           #  <a href="/tuiguang/{0}" >推广</a>
           # <a href="/zhiding/{0}" >置顶</a>
           #  </div>
           #  '''.format(uuid)
           operate_str = ''


        else:
            operate_str = '''<span><a onclick="js_show_page('/user/shoucang/{0}')">收藏</a></span>'''.format(uuid)

        # 在DIV中的个人简历


        jianli_str = ''
        if parent_id == '0700':
            jianli_str = self.gen_jianli_str()

        kwd = {
            'img_url': img_url,
            'cityname': self.mcity.get_cityname_by_id(self.city_name),
            'timeit': ts,
            'daohangstr': daohang_str,
            'has_image': has_image,
            'parentid': parent_id,
            'parentlist': self.mcat.get_parent_list(),
            'sub_menu': sub_menu_str,
            'linkstr': out_link_str,
            'oprt_str': operate_str,
            'jianli_str': jianli_str,
            # 'maskip': maskip,
        }
        self.update_info_when_view(info)
        self.render('view/view_%s.html' % (info['catid'][0]), kwd=kwd, post_info=info)

    def gen_jianli_str(self):
        # 查看页面时,根据用户的信息,生成简历。
        tmp1_tou = '''
            <div id='inline_content' style='padding:10px; background:#fff; border: 2px solid #000088'>
            <form action='' method="post" >
            <legend>请选择使用哪份简历</legend>
             '''
        jianlis = self.minfo.get_user_jianli(self.user_name)

        if jianlis.count() == 0:
            tmp1_tou += '''
            <p>目前没有求职简历</p>
            <a href="/publish/0700">创建求职简历 </a>
            </div>
            '''
        else:
            # 第一次为 checked
            check_str = 'checked'
            for jianli in jianlis:
                tmp1_uuvv = '''<label>简历</label><input type="radio" {2} name="jianli" value="{0}" >{1} <br />
                '''.format(jianli['def_uid'], jianli['title'][0], check_str)
                check_str = ''
                tmp1_tou += tmp1_uuvv
            tmp1_tou += '''<button type="submit" class="ajax pure-button pure-button-primary" >确定</button></p>
                    </form></div>
                    '''

        # tmp1_tou += tmp1_hou
        return (tmp1_tou)

    def update_info_when_view(self, info):
        uuid = info['def_uid']
        self.minfo.update_view_count(uuid)
        # 根据时间判断,如果超时,则取消对应的权限
        timestamp = libs.tool.get_timestamp()
        if timestamp > info['def_tuiguang_out_time']:
            print('a')
            self.minfo.dis_tuiguang(uuid)
        if timestamp > info['def_zhiding_out_time']:
            print('b')
            self.minfo.dis_zhiding(uuid)
        if timestamp > info['def_refresh_out_time']:
            print('c')
            self.minfo.dis_fresh(uuid)
Example #2
0
class ListHandler(base_handler.BaseHandler):
    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 input == 'search':
        #     keywords = self.request.arguments['keywords'][0]
        #     self.search(keywords)
        elif len(input) > 4:
            # 如果带条件传回
            self.echo_html(input)
        else:
            self.render('404.html')

    # 2014-12-20
    #   def post(self, input=''):
    #       pass
    #       # print('*' * 20)
    #       # if len(input) > 0:
    #     #     self.add()

    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,)
Example #3
0
class PublishHandler(base_handler.BaseHandler):
    def initialize(self, hinfo=''):

        self.init_condition()
        self.mcat = MCatalog()
        self.mcity = MCity()

    def to_login(self):
        # tools.markit()
        self.redirect('/member/login')
        return (True)

    @tornado.web.authenticated
    def get(self, input=''):
        url_arr = input.split('/')
        if input == '':
            self.view_class1()
        elif len(input) == 4:
            self.view_class2(input)
        elif len(input) == 5:
            self.echo_class2(input)
        elif len(url_arr) == 2 and url_arr[1] == 'vip':
            self.view_class2(url_arr[0], 1)


    def post(self, input=''):
        # print ('*' * 20)
        self.get('')


    @tornado.web.authenticated
    def echo_class2(self, input=''):
        '''
        弹出的二级发布菜单
        '''
        fatherid = input[1:]
        self.write(self.format_class2(fatherid))

    @tornado.web.authenticated
    def format_class2(self, fatherid, vip=0):
        dbdata = self.mcat.get_range2_without_parent(fatherid)
        outstr = '<ul class="list-group">'
        for rec in dbdata:
            if vip == 1:
                outstr += '''
                <a href="/add/{0}/vip" class="btn btn-primary" style="display: inline-block;margin:3px;" >{1}</a>
                '''.format(rec.catid, rec.catname)
            else:
                outstr += '''
                <a href="/add/{0}" class="btn btn-primary" style="display: inline-block;margin:3px;" >{1}</a>
                '''.format(rec.catid, rec.catname)
        outstr += '</ul>'
        return (outstr)

    @tornado.web.authenticated
    def view_class1(self, fatherid=''):
        dbdata = self.mcat.get_parent_list()
        class1str = ''
        for rec in dbdata:
            class1str += '''
             <a onclick="select('/publish/2{0}');" class="btn btn-primary" style="display: inline-block;margin:3px;" >{1}</a>
            '''.format(rec.catid, rec.catname)

        kwd = {
            'class1str': class1str,
            'cityname': self.mcity.get_cityname_by_id(self.city_name),
            'parentid': '0',
            'parentlist': self.mcat.get_parent_list(),
        }
        self.render('publish/publish.html', kwd=kwd)

    @tornado.web.authenticated
    def view_class2(self, fatherid='', vip=0):
        '''
        从第二级发布
        :param fatherid:
        :return:
        '''

        fatherid = fatherid[:2] + '00'
        kwd = {
            'class1str': self.format_class2(fatherid, vip),
            'cityname': self.mcity.get_cityname_by_id(self.city_name),
            'parentid': '0',
            'parentlist': self.mcat.get_parent_list(),
        }
        self.render('publish/publish2.html', kwd=kwd)