示例#1
0
 def initialize(self):
     self.mapplication = MApp()
     self.muser = MUser()
     if self.get_current_user():
         self.userinfo = self.muser.get_by_id(self.get_current_user())
     else:
         self.userinfo = None
示例#2
0
 def initialize(self):
     self.mequa = MApp()
     self.musage = MUsage()
     self.muser = MUser()
     if self.get_current_user():
         self.userinfo = self.muser.get_by_id(self.get_current_user())
     else:
         self.userinfo = None
def do_for_app(writer):
    mapp = MApp()
    app_recs = mapp.query_recent(2000)
    for rec in app_recs:
        text2 = html2text.html2text(tornado.escape.xhtml_unescape(
            rec.cnt_html))
        print(text2)
        writer.add_document(title=rec.title,
                            type='<span style="color:blue;">[地图]</span>',
                            link='/map/{0}'.format(rec.uid),
                            content=text2)
def do_for_app(writer):
    mapp = MApp()
    app_recs = mapp.query_recent(2000)
    for rec in app_recs:
        text2 = html2text.html2text(tornado.escape.xhtml_unescape(rec.cnt_html))
        print(text2)
        writer.add_document(
            title=rec.title,
            type='<span style="color:blue;">[地图]</span>',
            link='/map/{0}'.format(rec.uid),
            content=text2
        )
示例#5
0
    def initialize(self):
        self.mapp = MApp()
        self.mpost = MPost()
        self.rel_post2app = MRelPost2App()
        self.rel_app2post = MRelApp2Post()
        self.muser = MUser()

        if self.get_current_user():
            self.userinfo = self.muser.get_by_id(self.get_current_user())
        else:
            self.userinfo = None
            self.mvip = None
示例#6
0
    def initialize(self):
        self.mevaluation = MEvaluation()
        self.mapp2catalog = MApp2Catalog()
        self.mapp2tag = MApp2Label()
        self.mapp = MApp()
        self.musage = MUsage()
        self.mtag = MAppCatalog()
        self.muser = MUser()
        self.mrel = MAppRel()
        self.mreply = MApp2Reply()

        if self.get_current_user():
            self.userinfo = self.muser.get_by_id(self.get_current_user())
        else:
            self.userinfo = None
示例#7
0
 def initialize(self):
     self.mequa = MApp()
     self.musage = MUsage()
     self.muser = MUser()
     if self.get_current_user():
         self.userinfo = self.muser.get_by_id(self.get_current_user())
     else:
         self.userinfo = None
示例#8
0
 def initialize(self):
     self.mequa = MApp()
     self.musage = MUsage()
     self.muser = MUser()
     self.mrel = MAppRel()
     self.mcollect = MEvaluation()
     if self.get_current_user():
         self.userinfo = self.muser.get_by_id(self.get_current_user())
     else:
         self.userinfo = None
示例#9
0
    def initialize(self):
        self.muser = MUser()

        self.mequa = MApp()
        self.mtag = MAppCatalog()
        self.mapp2tag = MApp2Catalog()
        if self.get_current_user():
            self.userinfo = self.muser.get_by_id(self.get_current_user())
        else:
            self.userinfo = None
示例#10
0
 def initialize(self):
     self.mequa = MApp()
     self.musage = MUsage()
     self.muser = MUser()
     self.mrel = MAppRel()
     self.mcollect = MCollect()
     if self.get_current_user():
         self.userinfo = self.muser.get_by_id(self.get_current_user())
     else:
         self.userinfo = None
     self.tmpl_sig = app_template_name
示例#11
0
    def initialize(self):
        self.muser = MUser()

        self.mequa = MApp()
        self.mtag = MAppLabel()
        self.mapp2tag = MApp2Label()
        if self.get_current_user():
            self.userinfo = self.muser.get_by_id(self.get_current_user())
        else:
            self.userinfo = None
        self.tmpl_sig = app_template_name
示例#12
0
    def initialize(self):
        self.mapp = MApp()
        self.mpost = MPost()
        self.rel_post2app = MRelPost2App()
        self.rel_app2post = MRelApp2Post()
        self.muser = MUser()

        if self.get_current_user():
            self.userinfo = self.muser.get_by_id(self.get_current_user())
        else:
            self.userinfo = None
            self.mvip = None
示例#13
0
文件: extends.py 项目: wyf379/maplet
    def render(
        self,
        uid,
        num,
    ):
        self.app = MApp()
        self.relation = MRelPost2App()
        kwd = {
            'app_f': 'post',
            'app_t': app_url_name,
            'uid': uid,
        }
        rel_recs = self.relation.get_app_relations(uid, num)

        rand_recs = self.app.query_random(num - rel_recs.count() + 2)

        return self.render_string(
            'app_theme/modules/relation_post2app.html',
            relations=rel_recs,
            rand_recs=rand_recs,
            kwd=kwd,
        )
示例#14
0
    def initialize(self):
        self.mevaluation = MEvaluation()
        self.mapp2catalog = MApp2Catalog()
        self.mapp2tag = MApp2Label()
        self.mapp = MApp()
        self.musage = MUsage()
        self.mtag = MAppCatalog()
        self.muser = MUser()
        self.mrel = MAppRel()
        self.mreply = MApp2Reply()

        if self.get_current_user():
            self.userinfo = self.muser.get_by_id(self.get_current_user())
        else:
            self.userinfo = None
示例#15
0
class MapOverlayHandler(BaseHandler):
    def initialize(self):
        self.mequa = MApp()
        self.muser = MUser()
        if self.get_current_user():
            self.userinfo = self.muser.get_by_id(self.get_current_user())
        else:
            self.userinfo = None

    def get(self, url_str=''):
        if len(url_str) > 0:
            url_arr = url_str.split('/')
        else:
            url_arr = []
        if len(url_arr) > 1:
            self.show_overlay(url_arr)
        else:
            kwd = {
                'title': '',
                'info': '',
            }
            self.render('html/404.html', kwd=kwd)

    def show_overlay(self, app_arr):
        '''
        打开App.
        '''
        app_info_arr = []
        for app_rr in app_arr:
            app_info_arr.append(self.mequa.get_by_uid(app_rr))
        kwd = {
            'url': 1,
            "cookie_str": '',
        }
        if 'fullscreen' in self.request.arguments:
            tmpl = 'app_theme/overlay/overlay_full.html'
        else:
            tmpl = 'app_theme/overlay/overlay.html'
        self.render(
            tmpl,
            topmenu='',
            kwd=kwd,
            userinfo=self.userinfo,
            unescape=tornado.escape.xhtml_unescape,
            app_arr=app_info_arr,
            app_str='/'.join(app_arr),
            wcs_svr=config.wcs_svr,
        )
示例#16
0
文件: extends.py 项目: ironhot/maplet
    def render(self, uid, num, ):
        self.app = MApp()
        self.relation = MRelPost2App()
        kwd = {
            'app_f': 'post',
            'app_t':  app_url_name ,
            'uid': uid,
        }
        rel_recs = self.relation.get_app_relations(uid, num)

        rand_recs = self.app.query_random(num - rel_recs.count() + 2)

        return self.render_string('app_theme/modules/relation_post2app.html',
                                  relations= rel_recs,
                                  rand_recs = rand_recs,
                                  kwd=kwd, )
示例#17
0
class MapOverlayHandler(BaseHandler):
    def initialize(self):
        self.mequa = MApp()
        self.muser = MUser()
        if self.get_current_user():
            self.userinfo = self.muser.get_by_id(self.get_current_user())
        else:
            self.userinfo = None

    def get(self, url_str=''):
        if len(url_str) > 0:
            url_arr = url_str.split('/')
        else:
            url_arr = []
        if len(url_arr) > 1:
            self.show_overlay(url_arr)
        else:
            kwd = {
                'title': '',
                'info': '',
            }
            self.render('html/404.html', kwd=kwd)

    def show_overlay(self, app_arr):
        '''
        打开App.
        '''
        app_info_arr = []
        for app_rr in app_arr:
            app_info_arr.append(self.mequa.get_by_uid(app_rr))
        kwd = {'url': 1,
               "cookie_str": '', }
        if 'fullscreen' in self.request.arguments:
            tmpl = 'app_theme/overlay/overlay_full.html'
        else:
            tmpl = 'app_theme/overlay/overlay.html'
        self.render(tmpl,
                    topmenu='',
                    kwd=kwd,
                    userinfo=self.userinfo,
                    unescape=tornado.escape.xhtml_unescape,
                    app_arr=app_info_arr,
                    app_str='/'.join(app_arr),
                    wcs_svr=config.wcs_svr,
                    )
示例#18
0
class ListHandler(BaseHandler):
    def initialize(self):
        self.mequa = MApp()
        self.musage = MUsage()
        self.muser = MUser()
        if self.get_current_user():
            self.userinfo = self.muser.get_by_id(self.get_current_user())
        else:
            self.userinfo = None

    def get(self, input=''):
        if len(input) > 0:
            ip_arr = input.split(r'/')
        if input == 'recent':
            self.to_find(input)
        if input == 'app':
            self.list_app()
        elif input == 'user_recent':
            self.user_recent()
        elif input == 'user_most':
            self.user_most()
    def list_app(self):
        kwd = {
            'pager': '',
            'title': '最近使用的运算应用' ,
        }
        self.render('app_theme/calc/list_app.html', kwd=kwd,
                    userinfo  = self.userinfo,)
    @tornado.web.authenticated
    def user_most(self):
        kwd = {
            'pager': '',
            'title': '我使用最多的云算应用',
        }
        self.render('app_theme/calc/user_most.html'.format(input),
                    kwd=kwd,
                    user_name = self.get_current_user(),
                    userinfo = self.userinfo,
                    )

    @tornado.web.authenticated
    def user_recent(self):
        kwd = {
            'pager': '',
            'title': '我最近使用的云算应用'
        }
        self.render('app_theme/calc/user_recent.html'.format(input),
                    kwd=kwd,
                    user_name = self.get_current_user(),
                    userinfo = self.userinfo,
                    )
    def post(self, input=''):
        if len(input) > 0:
            ip_arr = input.split(r'/')
        if input == 'find':
            self.find()

    def to_find(self, input):
        kwd = {
            'pager': '',
        }
        self.render('app_theme/calc/most.html'.format(input),
                    topmenu='',
                    kwd=kwd)

    def list_recent(self):
        recs = self.mequa.query_recent(20)
        kwd = {
            'pager': '',
            'title': '最近使用的云算应用' ,
        }
        self.render('app_theme/calc/list.html'.format(input), kwd=kwd,rand_eqs = self.get_random(),recs= recs)
    def find(self):
        keyword = self.get_argument('keyword').strip()

        kwd = {
            'pager': '',
            'title':'查找结果',
        }
        self.render('app_theme/calc/find_list.html'.format(input),
                    kwd=kwd,
                    recs=self.mequa.get_by_keyword(keyword))


    def get_random(self):
        return self.mequa.query_random()
示例#19
0
class RelHandler(BaseHandler):
    def initialize(self):
        self.mapp = MApp()
        self.mpost = MPost()
        self.rel_post2app = MRelPost2App()
        self.rel_app2post = MRelApp2Post()
        self.muser = MUser()

        if self.get_current_user():
            self.userinfo = self.muser.get_by_id(self.get_current_user())
        else:
            self.userinfo = None
            self.mvip = None

    def get(self, url_str=''):
        if len(url_str) > 0:
            ip_arr = url_str.split('/')
        else:
            return False
        if len(ip_arr) == 2:
            self.add_relation(ip_arr)
        # elif len(ip_arr) == 4:
        #     self.update_relation(ip_arr)

    def check_app(self, tt, uid):

        if tt == 'post':
            if False == self.mpost.get_by_id(uid):
                return False
        if tt == 'app':
            if False == self.mapp.get_by_uid(uid):
                return False
        return True

    def add_relation(self, url_arr):
        print('=' * 40)
        print(url_arr)
        if self.check_app(url_arr[0], url_arr[1]):
            pass
        else:
            return False

        last_post_id = self.get_secure_cookie('last_post_uid')
        if last_post_id:
            last_post_id = last_post_id.decode('utf-8')

        last_app_id = self.get_secure_cookie('use_app_uid')
        if last_app_id:
            last_app_id = last_app_id.decode('utf-8')

        print(last_app_id)
        print(last_post_id)
        if url_arr[0] == app_url_name:
            if last_post_id:
                self.rel_post2app.add_relation(last_post_id, url_arr[1], 2)
                self.rel_app2post.add_relation( url_arr[1], last_post_id,1)

        if url_arr[0] == 'post':
            if last_app_id:
                self.rel_app2post.add_relation(last_app_id, url_arr[1], 2)
                self.rel_post2app.add_relation( url_arr[1],last_app_id, 1)
示例#20
0
class ListHandler(BaseHandler):
    def initialize(self):
        self.mequa = MApp()
        self.musage = MUsage()
        self.muser = MUser()
        if self.get_current_user():
            self.userinfo = self.muser.get_by_id(self.get_current_user())
        else:
            self.userinfo = None

    def get(self, input=''):
        if len(input) > 0:
            ip_arr = input.split(r'/')
        if input == 'recent':
            self.to_find(input)
        if input == 'app':
            self.list_app()
        elif input == 'user_recent':
            self.user_recent()
        elif input == 'user_most':
            self.user_most()

    def list_app(self):
        kwd = {
            'pager': '',
            'title': '最近使用的运算应用',
        }
        self.render(
            'app_theme/calc/list_app.html',
            kwd=kwd,
            userinfo=self.userinfo,
        )

    @tornado.web.authenticated
    def user_most(self):
        kwd = {
            'pager': '',
            'title': '我使用最多的云算应用',
        }
        self.render(
            'app_theme/calc/user_most.html'.format(input),
            kwd=kwd,
            user_name=self.get_current_user(),
            userinfo=self.userinfo,
        )

    @tornado.web.authenticated
    def user_recent(self):
        kwd = {'pager': '', 'title': '我最近使用的云算应用'}
        self.render(
            'app_theme/calc/user_recent.html'.format(input),
            kwd=kwd,
            user_name=self.get_current_user(),
            userinfo=self.userinfo,
        )

    def post(self, input=''):
        if len(input) > 0:
            ip_arr = input.split(r'/')
        if input == 'find':
            self.find()

    def to_find(self, input):
        kwd = {
            'pager': '',
        }
        self.render('app_theme/calc/most.html'.format(input),
                    topmenu='',
                    kwd=kwd)

    def list_recent(self):
        recs = self.mequa.query_recent(20)
        kwd = {
            'pager': '',
            'title': '最近使用的云算应用',
        }
        self.render('app_theme/calc/list.html'.format(input),
                    kwd=kwd,
                    rand_eqs=self.get_random(),
                    recs=recs)

    def find(self):
        keyword = self.get_argument('keyword').strip()

        kwd = {
            'pager': '',
            'title': '查找结果',
        }
        self.render('app_theme/calc/find_list.html'.format(input),
                    kwd=kwd,
                    recs=self.mequa.get_by_keyword(keyword))

    def get_random(self):
        return self.mequa.query_random()
示例#21
0
class MapOverlayHandler(BaseHandler):
    def initialize(self):
        self.mapplication = MApp()
        self.muser = MUser()
        if self.get_current_user():
            self.userinfo = self.muser.get_by_id(self.get_current_user())
        else:
            self.userinfo = None

    def get(self, url_str=''):
        if len(url_str) > 0:
            url_arr = url_str.split('/')
        else:
            url_arr = []
        if len(url_arr) > 1:
            self.show_overlay(url_arr)
        else:
            kwd = {
                'title': '',
                'info': '',
            }
            self.render('html/404.html', kwd=kwd)

    def show_overlay(self, app_arr):
        '''
        打开App.
        '''
        app_info_arr = []
        lon_arr = []
        lat_arr = []
        zoom_max_arr = []
        zoom_min_arr = []
        zoom_current_zrr = []

        # self.set_secure_cookie('over_kay', app_arr)

        for app_rr in app_arr:
            c_ap = self.mapplication.get_by_uid(app_rr)
            app_info_arr.append(c_ap)
            lon_arr.append(c_ap.lon)
            lat_arr.append(c_ap.lat)
            zoom_max_arr.append(c_ap.zoom_max)
            zoom_min_arr.append(c_ap.zoom_min)
            zoom_current_zrr.append(c_ap.zoom_current)

        kwd = {'url': 1,
               "cookie_str": '',
               'lon': average(lon_arr),
               'lat': average(lat_arr),
               'zoom_max': max(zoom_max_arr),
               'zoom_min': min(zoom_min_arr),
               'zoom_current': int(average(zoom_current_zrr)),
               }
        if 'fullscreen' in self.request.arguments:
            tmpl = 'app_theme/overlay/overlay_full.html'
        else:
            tmpl = 'app_theme/overlay/overlay.html'
        self.render(tmpl,
                    topmenu='',
                    kwd=kwd,
                    userinfo=self.userinfo,
                    unescape=tornado.escape.xhtml_unescape,
                    app_arr=app_info_arr,
                    app_str='/'.join(app_arr),
                    wcs_svr=config.wcs_svr,
                    )
示例#22
0
class AppHandler(BaseHandler):
    def initialize(self):
        self.mevaluation = MEvaluation()
        self.mapp2catalog = MApp2Catalog()
        self.mapp2tag = MApp2Label()
        self.mapp = MApp()
        self.musage = MUsage()
        self.mtag = MAppCatalog()
        self.muser = MUser()
        self.mrel = MAppRel()
        self.mreply = MApp2Reply()
        self.mjson = MJson()
        self.mlayout = MLayout()

        if self.get_current_user():
            self.userinfo = self.muser.get_by_id(self.get_current_user())
        else:
            self.userinfo = None

    def get(self, url_str=''):
        if len(url_str) > 0:
            url_arr = self.parse_url(url_str)
        else:
            return False
        if len(url_arr) == 1 and len(url_str) == 4:
            self.show_app(url_str)
        elif len(url_arr) == 2:
            if url_arr[0] == 'edit':
                self.to_edit_app(url_arr[1])
            elif url_arr[0] == 'add':
                self.to_add_app(url_arr[1])
            else:
                '''
                从相关计算中过来的。
                '''
                self.mrel.update_relation(url_arr[1], url_arr[0])
                self.redirect('/{0}/{1}'.format(config.app_url_name,
                                                url_arr[0]))
        else:
            kwd = {
                'title': '',
                'info': '',
            }
            self.render('html/404.html', kwd=kwd)

    def post(self, url_str=''):
        if len(url_str) > 0:
            url_arr = self.parse_url(url_str)
        else:
            return False
        if url_arr[0] == 'rel':
            if self.get_current_user():
                self.add_relation(url_arr[1])
            else:
                self.redirect('/user/login')
        elif url_arr[0] == 'comment_add':
            self.add_comment(url_arr[1])
        elif url_arr[0] == 'edit':
            self.update()
        elif url_arr[0] == 'add':
            self.add(url_arr[1])
        else:
            return False

    @tornado.web.authenticated
    def to_add_app(self, uid):
        if self.mapp.get_by_uid(uid):
            self.redirect('/map/edit/{0}'.format(uid))
        else:
            self.render('app_theme/app/add.html',
                        tag_infos=self.mtag.query_all(),
                        kwd={
                            'uid': uid,
                        })

    @tornado.web.authenticated
    def to_edit_app(self, app_id):
        if self.userinfo.privilege[4] == '1':
            info = self.mapp.get_by_uid(app_id)
            self.render(
                'app_theme/app/edit.html',
                app_info=info,
                unescape=tornado.escape.xhtml_escape,
                tag_infos=self.mtag.query_all(),
                app2tag_info=self.mapp2catalog.query_by_app_uid(app_id),
                app2label_info=self.mapp2tag.get_by_id(app_id),
            )
        else:
            return False

    @tornado.web.authenticated
    def update(self):
        if self.userinfo.privilege[4] == '1':
            post_data = {}
            for key in self.request.arguments:
                post_data[key] = self.get_arguments(key)
            self.mapp.modify_meta(post_data)
            self.update_catalog(post_data['uid'][0])
            self.update_tag(post_data['uid'][0])
            self.redirect('/{0}/{1}'.format(config.app_url_name,
                                            post_data['uid'][0]))
        else:
            return False

    @tornado.web.authenticated
    def add(self):
        if self.userinfo.privilege[4] == '1':
            post_data = {}
            for key in self.request.arguments:
                post_data[key] = self.get_arguments(key)
            self.mapp.modify_meta(post_data)
            self.update_catalog(post_data['uid'][0])
            self.update_tag(post_data['uid'][0])
            self.redirect('/{0}/{1}'.format(config.app_url_name,
                                            post_data['uid'][0]))
        else:
            return False

    @tornado.web.authenticated
    def update_tag(self, signature):
        if self.userinfo.privilege[4] == '1':
            pass
        else:
            return False
        post_data = {}
        for key in self.request.arguments:
            post_data[key] = self.get_arguments(key)
        current_tag_infos = self.mapp2tag.get_by_id(signature)

        tags_arr = [x.strip() for x in post_data['tags'][0].split(',')]
        for tag_name in tags_arr:
            if tag_name == '':
                pass
            else:
                self.mapp2tag.add_record(signature, tag_name, 1)

        for cur_info in current_tag_infos:
            if cur_info.tag.name in tags_arr:
                pass
            else:
                self.mapp2tag.remove_relation(signature, cur_info.tag)

    @tornado.web.authenticated
    def update_catalog(self, signature):
        if self.userinfo.privilege[4] == '1':
            pass
        else:
            return False
        post_data = {}
        for key in self.request.arguments:
            post_data[key] = self.get_arguments(key)
        current_catalog_infos = self.mapp2catalog.query_by_app_uid(signature)

        new_tag_arr = []
        for key in ['cat_1', 'cat_2', 'cat_3', 'cat_4', 'cat_5']:
            if post_data[key][0] == '':
                pass
            else:
                new_tag_arr.append(post_data[key][0])
                self.mapp2catalog.add_record(signature, post_data[key][0],
                                             int(key[-1]))
        for cur_info in current_catalog_infos:
            if str(cur_info.catalog.uid) in new_tag_arr:
                pass
            else:
                self.mapp2catalog.remove_relation(signature, cur_info.catalog)

    @tornado.web.authenticated
    def add_comment(self, id_post):
        post_data = {}
        for key in self.request.arguments:
            post_data[key] = self.get_arguments(key)
        post_data['user_id'] = self.userinfo.uid
        post_data['user_name'] = self.userinfo.user_name
        comment_uid = self.mreply.insert_data(post_data, id_post)
        if comment_uid:
            output = {
                'pinglun': comment_uid,
            }
        else:
            output = {
                'pinglun': 0,
            }
        return json.dump(output, self)

    def show_app(self, app_id):
        qian = self.get_secure_cookie('map_hist')

        post_data = {}
        for key in self.request.arguments:
            post_data[key] = self.get_arguments(key)

        if qian:
            qian = qian.decode('utf-8')
        else:
            qian = ''
        self.set_secure_cookie('map_hist', (app_id + qian)[:20])
        replys = self.mreply.get_by_id(app_id)
        rec = self.mapp.get_by_uid(app_id)

        if rec == False:
            kwd = {
                'info': '您要找的云算应用不存在。',
            }
            self.render('html/404.html', kwd=kwd)
            return False

        if 'zoom' in post_data:
            rec.zoom_current = post_data['zoom'][0]
        if 'lat' in post_data:
            rec.lat = post_data['lat'][0]
        if 'lon' in post_data:
            rec.lon = post_data['lon'][0]

        if 'lng' in post_data:
            rec.lon = post_data['lng'][0]

        last_map_id = self.get_secure_cookie('use_app_uid')

        if last_map_id:
            last_map_id = last_map_id.decode('utf-8')

        self.set_secure_cookie('use_app_uid', app_id)

        if last_map_id and self.mapp.get_by_uid(last_map_id):
            self.add_relation(last_map_id, app_id)

        cookie_str = tools.get_uuid()
        kwd = {
            'pager': '',
            'url': self.request.uri,
            'cookie_str': cookie_str,
            'marker': 1 if 'marker' in post_data else 0,
            'geojson': post_data['gson'][0] if 'gson' in post_data else '',
            'signature': app_id,
            'tdesc': '',
            'eval_0': self.mevaluation.app_evaluation_count(app_id, 0),
            'eval_1': self.mevaluation.app_evaluation_count(app_id, 1),
            'site_url': config.site_url,
            'login': 1 if self.get_current_user() else 0,
        }

        self.mapp.view_count_increase(app_id)
        if self.get_current_user():
            self.musage.add_or_update(self.userinfo.uid, app_id)

            json_recs = self.mjson.query_by_app(app_id, self.userinfo.uid)
            layout_recs = self.mlayout.query_by_app(app_id, self.userinfo.uid)

            layout_links = []

            for layout_rec in layout_recs:
                out_link = '{0}?zoom={1}&lat={2}&lon={3}'.format(
                    layout_rec.app.uid, layout_rec.zoom, layout_rec.lat,
                    layout_rec.lon)
                if layout_rec.marker != 0:
                    out_link = out_link + '&marker=1'
                if layout_rec.json != '':
                    out_link = out_link + '&gson={0}'.format(layout_rec.json)
                layout_links.append({'uid': layout_rec.uid, 'link': out_link})
        else:
            json_recs = []
            layout_links = []

        self.set_cookie('user_pass', cookie_str)

        map_hist = []
        if self.get_secure_cookie('map_hist'):
            for xx in range(
                    0, len(self.get_secure_cookie('map_hist').decode('utf-8')),
                    4):
                map_hist.append(
                    self.get_secure_cookie('map_hist').decode('utf-8')[xx:xx +
                                                                       4])

        if 'fullscreen' in self.request.arguments:
            tmpl = 'app_theme/app/full_screen.html'
            # if self.userinfo.privilege[4] == '1':
            #     tmpl = 'app_theme/app/full_vip.html'
            # else:
            #     tmpl = 'app_theme/app/full_screen.html'
        else:

            tmpl = 'app_theme/app/show_map.html'

        rel_recs = self.mrel.get_app_relations(rec.uid, 4)

        rand_recs = self.mapp.query_random(4 - rel_recs.count() + 2)

        self.render(
            tmpl,
            kwd=kwd,
            calc_info=rec,
            userinfo=self.userinfo,
            relations=rel_recs,
            rand_recs=rand_recs,
            unescape=tornado.escape.xhtml_unescape,
            ad_switch=random.randint(1, 18),
            tag_info=self.mapp2tag.get_by_id(app_id),
            recent_apps=self.musage.query_recent(self.get_current_user(),
                                                 6)[1:],
            map_hist=map_hist,
            json_recs=json_recs,
            layout_links=layout_links,
            replys=replys,
        )

    def add_relation(self, f_uid, t_uid):
        if False == self.mapp.get_by_uid(t_uid):
            return False
        if f_uid == t_uid:
            '''
            关联其本身
            '''
            return False
        self.mrel.add_relation(f_uid, t_uid, 2)
        self.mrel.add_relation(t_uid, f_uid, 1)
        return True
示例#23
0
class RelHandler(BaseHandler):
    def initialize(self):
        self.mapp = MApp()
        self.mpost = MPost()
        self.rel_post2app = MRelPost2App()
        self.rel_app2post = MRelApp2Post()
        self.muser = MUser()

        if self.get_current_user():
            self.userinfo = self.muser.get_by_id(self.get_current_user())
        else:
            self.userinfo = None
            self.mvip = None

    def get(self, url_str=''):
        if len(url_str) > 0:
            ip_arr = url_str.split('/')
        else:
            return False
        if len(ip_arr) == 2:
            self.add_relation(ip_arr)
        # elif len(ip_arr) == 4:
        #     self.update_relation(ip_arr)

    def check_app(self, tt, uid):

        if tt == 'post':
            if False == self.mpost.get_by_id(uid):
                return False
        if tt == 'app':
            if False == self.mapp.get_by_uid(uid):
                return False
        return True

    def add_relation(self, url_arr):
        print('=' * 40)
        print(url_arr)
        if self.check_app(url_arr[0], url_arr[1]):
            pass
        else:
            return False

        last_post_id = self.get_secure_cookie('last_post_uid')
        if last_post_id:
            last_post_id = last_post_id.decode('utf-8')

        last_app_id = self.get_secure_cookie('use_app_uid')
        if last_app_id:
            last_app_id = last_app_id.decode('utf-8')

        print(last_app_id)
        print(last_post_id)
        if url_arr[0] == app_url_name:
            if last_post_id:
                self.rel_post2app.add_relation(last_post_id, url_arr[1], 2)
                self.rel_app2post.add_relation(url_arr[1], last_post_id, 1)

        if url_arr[0] == 'post':
            if last_app_id:
                self.rel_app2post.add_relation(last_app_id, url_arr[1], 2)
                self.rel_post2app.add_relation(url_arr[1], last_app_id, 1)
示例#24
0
class AppHandler(BaseHandler):
    def initialize(self):
        self.mevaluation = MEvaluation()
        self.mapp2catalog = MApp2Catalog()
        self.mapp2tag = MApp2Label()
        self.mapp = MApp()
        self.musage = MUsage()
        self.mtag = MAppCatalog()
        self.muser = MUser()
        self.mrel = MAppRel()
        self.mreply = MApp2Reply()

        if self.get_current_user():
            self.userinfo = self.muser.get_by_id(self.get_current_user())
        else:
            self.userinfo = None

    def get(self, url_str=''):
        if len(url_str) > 0:
            url_arr = url_str.split('/')
        else:
            return False
        if len(url_arr) == 1 and len(url_str) == 4:
            self.show_app(url_str)
        elif len(url_arr) == 2:
            if url_arr[0] == 'edit':
                self.to_edit_description(url_arr[1])
            else:
                '''
                从相关计算中过来的。
                '''
                self.mrel.update_relation(url_arr[1], url_arr[0])
                self.redirect('/{0}/{1}'.format(config.app_url_name,
                                                url_arr[0]))
        else:
            kwd = {
                'title': '',
                'info': '',
            }
            self.render('html/404.html', kwd=kwd)

    def post(self, url_str=''):

        if len(url_str) > 0:
            ip_arr = url_str.split('/')
        else:
            return False
        if ip_arr[0] == 'rel':
            if self.get_current_user():
                self.add_relation(ip_arr[1])
            else:
                self.redirect('/user/login')
        elif ip_arr[0] == 'comment_add':

            self.add_comment(ip_arr[1])
        elif ip_arr[0] == 'edit':
            self.update()

    @tornado.web.authenticated
    def to_edit_description(self, app_id):
        if self.userinfo.privilege[4] == '1':
            info = self.mapp.get_by_uid(app_id)
            self.render(
                'app_theme/app/edit.html',
                app_info=info,
                unescape=tornado.escape.xhtml_escape,
                tag_infos=self.mtag.query_all(),
                app2tag_info=self.mapp2catalog.query_by_app_uid(app_id),
                app2label_info=self.mapp2tag.get_by_id(app_id),
            )
        else:
            return False

    @tornado.web.authenticated
    def update(self):
        if self.userinfo.privilege[4] == '1':
            post_data = {}
            for key in self.request.arguments:
                post_data[key] = self.get_arguments(key)
            self.mapp.modify_meta(post_data)
            self.update_catalog(post_data['uid'][0])
            self.update_tag(post_data['uid'][0])
            self.redirect('/{0}/{1}'.format(config.app_url_name,
                                            post_data['uid'][0]))
        else:
            return False

    @tornado.web.authenticated
    def update_tag(self, signature):
        if self.userinfo.privilege[4] == '1':
            pass
        else:
            return False
        post_data = {}
        for key in self.request.arguments:
            post_data[key] = self.get_arguments(key)
        current_tag_infos = self.mapp2tag.get_by_id(signature)

        tags_arr = [x.strip() for x in post_data['tags'][0].split(',')]
        for tag_name in tags_arr:
            if tag_name == '':
                pass
            else:
                self.mapp2tag.add_record(signature, tag_name, 1)

        for cur_info in current_tag_infos:
            if cur_info.tag.name in tags_arr:
                pass
            else:
                self.mapp2tag.remove_relation(signature, cur_info.tag)

    @tornado.web.authenticated
    def update_catalog(self, signature):
        if self.userinfo.privilege[4] == '1':
            pass
        else:
            return False
        post_data = {}
        for key in self.request.arguments:
            post_data[key] = self.get_arguments(key)
        current_catalog_infos = self.mapp2catalog.query_by_app_uid(signature)

        new_tag_arr = []
        for key in ['cat_1', 'cat_2', 'cat_3', 'cat_4', 'cat_5']:
            if post_data[key][0] == '':
                pass
            else:
                new_tag_arr.append(post_data[key][0])
                self.mapp2catalog.add_record(signature, post_data[key][0],
                                             int(key[-1]))
        for cur_info in current_catalog_infos:
            if str(cur_info.catalog.uid) in new_tag_arr:
                pass
            else:
                self.mapp2catalog.remove_relation(signature, cur_info.catalog)

    @tornado.web.authenticated
    def add_comment(self, id_post):
        post_data = {}
        for key in self.request.arguments:
            post_data[key] = self.get_arguments(key)
        post_data['user_id'] = self.userinfo.uid
        post_data['user_name'] = self.userinfo.user_name
        comment_uid = self.mreply.insert_data(post_data, id_post)
        if comment_uid:
            output = {
                'pinglun': comment_uid,
            }
        else:
            output = {
                'pinglun': 0,
            }
        return json.dump(output, self)

    def show_app(self, app_id):
        '''
        打开App.
        '''

        qian = self.get_secure_cookie('map_hist')

        if qian:
            qian = qian.decode('utf-8')
        else:
            qian = ''
        self.set_secure_cookie('map_hist', (app_id + qian)[:20])
        replys = self.mreply.get_by_id(app_id)

        rec = self.mapp.get_by_uid(app_id)

        if rec == False:
            kwd = {
                'info': '您要找的云算应用不存在。',
            }
            self.render('html/404.html', kwd=kwd)
            return False
        last_map_id = self.get_secure_cookie('use_app_uid')
        if last_map_id:
            last_map_id = last_map_id.decode('utf-8')

        self.set_secure_cookie('use_app_uid', app_id)

        if last_map_id and self.mapp.get_by_uid(last_map_id):
            self.add_relation(last_map_id, app_id)

        cookie_str = tools.get_uuid()
        kwd = {
            'pager': '',
            'url': rec.html_path,
            'cookie_str': cookie_str,
            'signature': app_id,
            'tkw': '在线计算,在线计算器',
            'tdesc': '',
            'eval_0': self.mevaluation.app_evaluation_count(app_id, 0),
            'eval_1': self.mevaluation.app_evaluation_count(app_id, 1),
        }
        self.mapp.view_count_increase(app_id)
        if self.get_current_user():
            self.musage.add_or_update(self.userinfo.uid, app_id)

        self.set_cookie('user_pass', cookie_str)

        map_hist = []
        if self.get_secure_cookie('map_hist'):
            for xx in range(
                    0, len(self.get_secure_cookie('map_hist').decode('utf-8')),
                    4):
                map_hist.append(
                    self.get_secure_cookie('map_hist').decode('utf-8')[xx:xx +
                                                                       4])

        if 'fullscreen' in self.request.arguments:
            tmpl = 'app_theme/app/full_screen.html'
        else:

            tmpl = 'app_theme/app/show_map.html'
        self.render(
            tmpl,
            kwd=kwd,
            calc_info=rec,
            userinfo=self.userinfo,
            relations=self.mrel.get_app_relations(rec.uid),
            unescape=tornado.escape.xhtml_unescape,
            ad_switch=random.randint(1, 18),
            tag_info=self.mapp2tag.get_by_id(app_id),
            recent_apps=self.musage.query_recent(self.get_current_user(),
                                                 6)[1:],
            map_hist=map_hist,
            replys=replys,
        )

    def add_relation(self, f_uid, t_uid):
        if False == self.mapp.get_by_uid(t_uid):
            return False
        if f_uid == t_uid:
            '''
            关联其本身
            '''
            return False
        self.mrel.add_relation(f_uid, t_uid, 2)
        self.mrel.add_relation(t_uid, f_uid, 1)
        return True
示例#25
0
class AppHandler(BaseHandler):
    def initialize(self):
        self.mevaluation = MEvaluation()
        self.mapp2catalog = MApp2Catalog()
        self.mapp2tag = MApp2Label()
        self.mapp = MApp()
        self.musage = MUsage()
        self.mtag = MAppCatalog()
        self.muser = MUser()
        self.mrel = MAppRel()
        self.mreply = MApp2Reply()

        if self.get_current_user():
            self.userinfo = self.muser.get_by_id(self.get_current_user())
        else:
            self.userinfo = None

    def get(self, url_str=""):
        if len(url_str) > 0:
            url_arr = url_str.split("/")
        else:
            return False
        if len(url_arr) == 1 and len(url_str) == 4:
            self.show_app(url_str)
        elif len(url_arr) == 2:
            if url_arr[0] == "edit":
                self.to_edit_description(url_arr[1])
            else:
                """
                从相关计算中过来的。
                """
                self.mrel.update_relation(url_arr[1], url_arr[0])
                self.redirect("/{0}/{1}".format(config.app_url_name, url_arr[0]))
        else:
            kwd = {"title": "", "info": ""}
            self.render("html/404.html", kwd=kwd)

    def post(self, url_str=""):

        if len(url_str) > 0:
            ip_arr = url_str.split("/")
        else:
            return False
        if ip_arr[0] == "rel":
            if self.get_current_user():
                self.add_relation(ip_arr[1])
            else:
                self.redirect("/user/login")
        elif ip_arr[0] == "comment_add":

            self.add_comment(ip_arr[1])
        elif ip_arr[0] == "edit":
            self.update()

    @tornado.web.authenticated
    def to_edit_description(self, app_id):
        if self.userinfo.privilege[4] == "1":
            info = self.mapp.get_by_uid(app_id)
            self.render(
                "app_theme/app/edit.html",
                app_info=info,
                unescape=tornado.escape.xhtml_escape,
                tag_infos=self.mtag.query_all(),
                app2tag_info=self.mapp2catalog.query_by_app_uid(app_id),
                app2label_info=self.mapp2tag.get_by_id(app_id),
            )
        else:
            return False

    @tornado.web.authenticated
    def update(self):
        if self.userinfo.privilege[4] == "1":
            post_data = {}
            for key in self.request.arguments:
                post_data[key] = self.get_arguments(key)
            self.mapp.modify_meta(post_data)
            self.update_catalog(post_data["uid"][0])
            self.update_tag(post_data["uid"][0])
            self.redirect("/{0}/{1}".format(config.app_url_name, post_data["uid"][0]))
        else:
            return False

    @tornado.web.authenticated
    def update_tag(self, signature):
        if self.userinfo.privilege[4] == "1":
            pass
        else:
            return False
        post_data = {}
        for key in self.request.arguments:
            post_data[key] = self.get_arguments(key)
        current_tag_infos = self.mapp2tag.get_by_id(signature)

        tags_arr = [x.strip() for x in post_data["tags"][0].split(",")]
        for tag_name in tags_arr:
            if tag_name == "":
                pass
            else:
                self.mapp2tag.add_record(signature, tag_name, 1)

        for cur_info in current_tag_infos:
            if cur_info.tag.name in tags_arr:
                pass
            else:
                self.mapp2tag.remove_relation(signature, cur_info.tag)

    @tornado.web.authenticated
    def update_catalog(self, signature):
        if self.userinfo.privilege[4] == "1":
            pass
        else:
            return False
        post_data = {}
        for key in self.request.arguments:
            post_data[key] = self.get_arguments(key)
        current_catalog_infos = self.mapp2catalog.query_by_app_uid(signature)

        new_tag_arr = []
        for key in ["cat_1", "cat_2", "cat_3", "cat_4", "cat_5"]:
            if post_data[key][0] == "":
                pass
            else:
                new_tag_arr.append(post_data[key][0])
                self.mapp2catalog.add_record(signature, post_data[key][0], int(key[-1]))
        for cur_info in current_catalog_infos:
            if str(cur_info.catalog.uid) in new_tag_arr:
                pass
            else:
                self.mapp2catalog.remove_relation(signature, cur_info.catalog)

    @tornado.web.authenticated
    def add_comment(self, id_post):
        post_data = {}
        for key in self.request.arguments:
            post_data[key] = self.get_arguments(key)
        post_data["user_id"] = self.userinfo.uid
        post_data["user_name"] = self.userinfo.user_name
        comment_uid = self.mreply.insert_data(post_data, id_post)
        if comment_uid:
            output = {"pinglun": comment_uid}
        else:
            output = {"pinglun": 0}
        return json.dump(output, self)

    def show_app(self, app_id):
        """
        打开App.
        """

        qian = self.get_secure_cookie("map_hist")

        if qian:
            qian = qian.decode("utf-8")
        else:
            qian = ""
        self.set_secure_cookie("map_hist", (app_id + qian)[:20])
        replys = self.mreply.get_by_id(app_id)

        rec = self.mapp.get_by_uid(app_id)

        if rec == False:
            kwd = {"info": "您要找的云算应用不存在。"}
            self.render("html/404.html", kwd=kwd)
            return False
        last_map_id = self.get_secure_cookie("use_app_uid")
        if last_map_id:
            last_map_id = last_map_id.decode("utf-8")

        self.set_secure_cookie("use_app_uid", app_id)

        if last_map_id and self.mapp.get_by_uid(last_map_id):
            self.add_relation(last_map_id, app_id)

        cookie_str = tools.get_uuid()
        kwd = {
            "pager": "",
            "url": rec.html_path,
            "cookie_str": cookie_str,
            "signature": app_id,
            "tkw": "在线计算,在线计算器",
            "tdesc": "",
            "eval_0": self.mevaluation.app_evaluation_count(app_id, 0),
            "eval_1": self.mevaluation.app_evaluation_count(app_id, 1),
        }
        self.mapp.view_count_increase(app_id)
        if self.get_current_user():
            self.musage.add_or_update(self.userinfo.uid, app_id)

        self.set_cookie("user_pass", cookie_str)

        map_hist = []
        if self.get_secure_cookie("map_hist"):
            for xx in range(0, len(self.get_secure_cookie("map_hist").decode("utf-8")), 4):
                map_hist.append(self.get_secure_cookie("map_hist").decode("utf-8")[xx : xx + 4])

        if "fullscreen" in self.request.arguments:
            tmpl = "app_theme/app/full_screen.html"
        else:

            tmpl = "app_theme/app/show_map.html"
        self.render(
            tmpl,
            kwd=kwd,
            calc_info=rec,
            userinfo=self.userinfo,
            relations=self.mrel.get_app_relations(rec.uid),
            unescape=tornado.escape.xhtml_unescape,
            ad_switch=random.randint(1, 18),
            tag_info=self.mapp2tag.get_by_id(app_id),
            recent_apps=self.musage.query_recent(self.get_current_user(), 6)[1:],
            map_hist=map_hist,
            replys=replys,
        )

    def add_relation(self, f_uid, t_uid):
        if False == self.mapp.get_by_uid(t_uid):
            return False
        if f_uid == t_uid:
            """
            关联其本身
            """
            return False
        self.mrel.add_relation(f_uid, t_uid, 2)
        self.mrel.add_relation(t_uid, f_uid, 1)
        return True
示例#26
0
import os
import sys

pwd = os.getcwd()
(qian, hou) = os.path.split(pwd)
sys.path.append(qian)

from maplet.model.app_model import MApp

mequ = MApp()

xx = range(0, 16)
yy = [hex(x) for x in xx]
yy = [y[-1] for y in yy]


def javascript2database(sig):

    js_dic = {
        'sig': sig,
        'title': '11sadf',
        'desc': '',
        'type': 1,
        'cnt_md': 'MarkDown Content.',
        'cnt_html': 'HTML Content.',
    }
    mequ.addata_init(js_dic)


def test_valid(wfile):
    '''
示例#27
0
class RelHandler(BaseHandler):
    def initialize(self):
        self.mapp = MApp()
        self.mpost = MPost()
        self.rel_post2app = MRelPost2App()
        self.rel_app2post = MRelApp2Post()
        self.muser = MUser()

        if self.get_current_user():
            self.userinfo = self.muser.get_by_id(self.get_current_user())
        else:
            self.userinfo = None
            self.mvip = None

    def get(self, url_str=''):
        if len(url_str) > 0:
            ip_arr = url_str.split('/')
        else:
            return False
        if len(ip_arr) == 2:
            self.add_relation(ip_arr)
        elif len(ip_arr) == 4:
            self.update_relation(ip_arr)

    def check_app(self, tt, uid):

        if tt == 'post':
            if False == self.mpost.get_by_id(uid):
                return False
        if tt == 'app':
            if False == self.mapp.get_by_uid(uid):
                return False
        return True

    def add_relation(self, url_arr):
        if self.check_app(url_arr[0], url_arr[1]):
            pass
        else:
            return False

        last_post_id = self.get_secure_cookie('last_post_uid')
        if last_post_id:
            last_post_id = last_post_id.decode('utf-8')

        last_app_id = self.get_secure_cookie('use_app_uid')
        if last_app_id:
            last_app_id = last_app_id.decode('utf-8')

        if url_arr[0] == app_url_name:
            if last_post_id:
                self.rel_post2app.add_relation(last_post_id, url_arr[1], 2)
                self.rel_app2post.add_relation(last_post_id, url_arr[1], 1)

        if url_arr[0] == 'post':
            if last_app_id:
                self.rel_app2post.add_relation(last_app_id, url_arr[1], 2)
                self.rel_post2app.add_relation(last_app_id, url_arr[1], 1)

    def update_relation(self, url_arr):
        if self.check_app(url_arr[0], url_arr[1]) and self.check_app(url_arr[2], url_arr[3]):
            pass
        else:
            return False

        # app与post关系是不对称的. 正向的关系,权重为2;反向的关系,权重为1.添加的时侯,两个都添加
        if url_arr[0] == app_url_name and url_arr[2] == 'post':
            self.rel_app2post.add_relation(url_arr[1], url_arr[3], 2)
            self.rel_post2app.add_relation(url_arr[3], url_arr[1], 1)

        if url_arr[0] == 'post' and url_arr[2] == app_url_name:
            self.rel_post2app.add_relation(url_arr[1], url_arr[3], 2)
            self.rel_app2post.add_relation(url_arr[3], url_arr[1], 1)

        if url_arr[0] == 'post':
            self.redirect('/{0}/{1}.html'.format(url_arr[0], url_arr[1]))
        else:
            self.redirect('/{0}/{1}'.format(url_arr[0], url_arr[1]))
示例#28
0
class AppHandler(BaseHandler):
    def initialize(self):
        self.mevaluation = MEvaluation()
        self.mapp2catalog = MApp2Catalog()
        self.mapp2tag = MApp2Label()
        self.mapp = MApp()
        self.musage = MUsage()
        self.mtag = MAppCatalog()
        self.muser = MUser()
        self.mrel = MAppRel()
        self.mreply = MApp2Reply()
        self.mjson = MJson()
        self.mlayout = MLayout()

        if self.get_current_user():
            self.userinfo = self.muser.get_by_id(self.get_current_user())
        else:
            self.userinfo = None

    def get(self, url_str=''):
        if len(url_str) > 0:
            url_arr = self.parse_url(url_str)
        else:
            return False
        if len(url_arr) == 1 and len(url_str) == 4:
            self.show_app(url_str)
        elif len(url_arr) == 2:
            if url_arr[0] == 'edit':
                self.to_edit_app(url_arr[1])
            elif url_arr[0] == 'add':
                self.to_add_app(url_arr[1])
            else:
                '''
                从相关计算中过来的。
                '''
                self.mrel.update_relation(url_arr[1], url_arr[0])
                self.redirect('/{0}/{1}'.format(config.app_url_name, url_arr[0]))
        else:
            kwd = {
                'title': '',
                'info': '',
            }
            self.render('html/404.html', kwd=kwd)

    def post(self, url_str=''):
        if len(url_str) > 0:
            url_arr = self.parse_url(url_str)
        else:
            return False
        if url_arr[0] == 'rel':
            if self.get_current_user():
                self.add_relation(url_arr[1])
            else:
                self.redirect('/user/login')
        elif url_arr[0] == 'comment_add':
            self.add_comment(url_arr[1])
        elif url_arr[0] == 'edit':
            self.update()
        elif url_arr[0] == 'add':
            self.add(url_arr[1])
        else:
            return False

    @tornado.web.authenticated
    def to_add_app(self, uid):
        if self.mapp.get_by_uid(uid):
            self.redirect('/map/edit/{0}'.format(uid))
        else:
            self.render('app_theme/app/add.html',
                    tag_infos=self.mtag.query_all(),
                    kwd={
                        'uid': uid,
                    }
                    )

    @tornado.web.authenticated
    def to_edit_app(self, app_id):
        if self.userinfo.privilege[4] == '1':
            info = self.mapp.get_by_uid(app_id)
            self.render('app_theme/app/edit.html', app_info=info,
                        unescape=tornado.escape.xhtml_escape,
                        tag_infos=self.mtag.query_all(),
                        app2tag_info=self.mapp2catalog.query_by_app_uid(app_id),
                        app2label_info=self.mapp2tag.get_by_id(app_id),
                        )
        else:
            return False

    @tornado.web.authenticated
    def update(self):
        if self.userinfo.privilege[4] == '1':
            post_data = {}
            for key in self.request.arguments:
                post_data[key] = self.get_arguments(key)
            self.mapp.modify_meta(post_data)
            self.update_catalog(post_data['uid'][0])
            self.update_tag(post_data['uid'][0])
            self.redirect('/{0}/{1}'.format(config.app_url_name, post_data['uid'][0]))
        else:
            return False

    @tornado.web.authenticated
    def add(self):
        if self.userinfo.privilege[4] == '1':
            post_data = {}
            for key in self.request.arguments:
                post_data[key] = self.get_arguments(key)
            self.mapp.modify_meta(post_data)
            self.update_catalog(post_data['uid'][0])
            self.update_tag(post_data['uid'][0])
            self.redirect('/{0}/{1}'.format(config.app_url_name, post_data['uid'][0]))
        else:
            return False


    @tornado.web.authenticated
    def update_tag(self, signature):
        if self.userinfo.privilege[4] == '1':
            pass
        else:
            return False
        post_data = {}
        for key in self.request.arguments:
            post_data[key] = self.get_arguments(key)
        current_tag_infos = self.mapp2tag.get_by_id(signature)

        tags_arr = [x.strip() for x in post_data['tags'][0].split(',')]
        for tag_name in tags_arr:
            if tag_name == '':
                pass
            else:
                self.mapp2tag.add_record(signature, tag_name, 1)

        for cur_info in current_tag_infos:
            if cur_info.tag.name in tags_arr:
                pass
            else:
                self.mapp2tag.remove_relation(signature, cur_info.tag)

    @tornado.web.authenticated
    def update_catalog(self, signature):
        if self.userinfo.privilege[4] == '1':
            pass
        else:
            return False
        post_data = {}
        for key in self.request.arguments:
            post_data[key] = self.get_arguments(key)
        current_catalog_infos = self.mapp2catalog.query_by_app_uid(signature)

        new_tag_arr = []
        for key in ['cat_1', 'cat_2', 'cat_3', 'cat_4', 'cat_5']:
            if post_data[key][0] == '':
                pass
            else:
                new_tag_arr.append(post_data[key][0])
                self.mapp2catalog.add_record(signature, post_data[key][0], int(key[-1]))
        for cur_info in current_catalog_infos:
            if str(cur_info.catalog.uid) in new_tag_arr:
                pass
            else:
                self.mapp2catalog.remove_relation(signature, cur_info.catalog)

    @tornado.web.authenticated
    def add_comment(self, id_post):
        post_data = {}
        for key in self.request.arguments:
            post_data[key] = self.get_arguments(key)
        post_data['user_id'] = self.userinfo.uid
        post_data['user_name'] = self.userinfo.user_name
        comment_uid = self.mreply.insert_data(post_data, id_post)
        if comment_uid:
            output = {
                'pinglun': comment_uid,
            }
        else:
            output = {
                'pinglun': 0,
            }
        return json.dump(output, self)

    def show_app(self, app_id):
        qian = self.get_secure_cookie('map_hist')

        post_data = {}
        for key in self.request.arguments:
            post_data[key] = self.get_arguments(key)

        if qian:
            qian = qian.decode('utf-8')
        else:
            qian = ''
        self.set_secure_cookie('map_hist', (app_id + qian)[:20])
        replys = self.mreply.get_by_id(app_id)
        rec = self.mapp.get_by_uid(app_id)

        if rec == False:
            kwd = {
                'info': '您要找的云算应用不存在。',
            }
            self.render('html/404.html', kwd=kwd)
            return False

        if 'zoom' in post_data:
            rec.zoom_current = post_data['zoom'][0]
        if 'lat' in post_data:
            rec.lat = post_data['lat'][0]
        if 'lon' in post_data:
            rec.lon = post_data['lon'][0]

        if 'lng' in post_data:
            rec.lon = post_data['lng'][0]

        last_map_id = self.get_secure_cookie('use_app_uid')

        if last_map_id:
            last_map_id = last_map_id.decode('utf-8')

        self.set_secure_cookie('use_app_uid', app_id)

        if last_map_id and self.mapp.get_by_uid(last_map_id):
            self.add_relation(last_map_id, app_id)

        cookie_str = tools.get_uuid()
        kwd = {
            'pager': '',
            'url': self.request.uri,
            'cookie_str': cookie_str,
            'marker': 1 if 'marker' in post_data  else 0,
            'geojson': post_data['gson'][0] if 'gson' in post_data else '',
            'signature': app_id,
            'tdesc': '',
            'eval_0': self.mevaluation.app_evaluation_count(app_id, 0),
            'eval_1': self.mevaluation.app_evaluation_count(app_id, 1),
            'site_url': config.site_url,
            'login': 1 if self.get_current_user() else 0,

        }

        self.mapp.view_count_increase(app_id)
        if self.get_current_user():
            self.musage.add_or_update(self.userinfo.uid, app_id)

            json_recs = self.mjson.query_by_app(app_id, self.userinfo.uid)
            layout_recs = self.mlayout.query_by_app(app_id, self.userinfo.uid)

            layout_links = []

            for layout_rec in layout_recs:
                out_link = '{0}?zoom={1}&lat={2}&lon={3}'.format(layout_rec.app.uid, layout_rec.zoom, layout_rec.lat,
                                                                 layout_rec.lon)
                if layout_rec.marker != 0:
                    out_link = out_link + '&marker=1'
                if layout_rec.json != '':
                    out_link = out_link + '&gson={0}'.format(layout_rec.json)
                layout_links.append({'uid': layout_rec.uid, 'link': out_link})
        else:
            json_recs = []
            layout_links = []

        self.set_cookie('user_pass', cookie_str)

        map_hist = []
        if self.get_secure_cookie('map_hist'):
            for xx in range(0, len(self.get_secure_cookie('map_hist').decode('utf-8')), 4):
                map_hist.append(self.get_secure_cookie('map_hist').decode('utf-8')[xx: xx + 4])

        if 'fullscreen' in self.request.arguments:
            tmpl = 'app_theme/app/full_screen.html'
            # if self.userinfo.privilege[4] == '1':
            #     tmpl = 'app_theme/app/full_vip.html'
            # else:
            #     tmpl = 'app_theme/app/full_screen.html'
        else:

            tmpl = 'app_theme/app/show_map.html'

        rel_recs = self.mrel.get_app_relations(rec.uid, 4)

        rand_recs = self.mapp.query_random(4 - rel_recs.count() + 2)

        self.render(tmpl,
                    kwd=kwd,
                    calc_info=rec,
                    userinfo=self.userinfo,
                    relations=rel_recs,
                    rand_recs=rand_recs,
                    unescape=tornado.escape.xhtml_unescape,
                    ad_switch=random.randint(1, 18),
                    tag_info=self.mapp2tag.get_by_id(app_id),
                    recent_apps=self.musage.query_recent(self.get_current_user(), 6)[1:],
                    map_hist=map_hist,
                    json_recs=json_recs,
                    layout_links=layout_links,
                    replys=replys,
                    )

    def add_relation(self, f_uid, t_uid):
        if False == self.mapp.get_by_uid(t_uid):
            return False
        if f_uid == t_uid:
            '''
            关联其本身
            '''
            return False
        self.mrel.add_relation(f_uid, t_uid, 2)
        self.mrel.add_relation(t_uid, f_uid, 1)
        return True