コード例 #1
0
    def process(self):
        # 現在時刻.
        now = OSAUtil.get_now()
        # 各店舗の更新.
        self.updateStore(now)
        # ModelRequestMgr.
        model_mgr = self.getModelMgr()
        # ユーザ情報.
        v_player = self.getViewerPlayer()
        uid = v_player.id
        if BackendApi.check_cabaclub_lead_resultanim(
                model_mgr, uid, now, using=settings.DB_READONLY):
            # 結果演出へ.
            self.setFromPage(Defines.FromPages.CABACLUB_STORE)
            self.appRedirect(
                self.makeAppLinkUrlRedirect(UrlMaker.cabaclubresultanim()))
            return
        # 経営情報.
        scoredata = BackendApi.get_cabaretclub_scoreplayerdata(
            model_mgr, uid, using=settings.DB_READONLY)
        scoredata_weekly = BackendApi.get_cabaretclub_scoreplayerdata_weekly(
            model_mgr, uid, now, using=settings.DB_READONLY)
        obj_cabaclub_management_info = Objects.cabaclub_management_info(
            self, scoredata, scoredata_weekly)
        # 店舗のイベント発生情報.
        BackendApi.put_cabaretclub_eventinfo(self,
                                             uid,
                                             now,
                                             using=settings.DB_READONLY)
        # 次の集計時間.
        section_endtime = BackendApi.to_cabaretclub_section_endtime(now)

        # 開催中または最新の開催したイベントの開催情報
        event_config = BackendApi.get_current_cabaclubrankeventconfig(
            model_mgr, using=settings.DB_READONLY)
        if BackendApi.is_cabaclubrankevent_open(model_mgr):
            # 経営イベントのランキングURL
            cabaclub_event_ranking_url = UrlMaker.cabaclubrank(
                event_config.mid)
        else:
            cabaclub_event_ranking_url = UrlMaker.cabaclubrank(
                event_config.previous_mid)

        self.set_event_period(model_mgr, self.html_param, event_config)
        if self.html_param['is_event_open']:
            self.html_param[
                'eventmaster'] = BackendApi.get_cabaclubrankeventmaster(
                    model_mgr, event_config.mid, using=settings.DB_READONLY)

        # HTML書き込み.
        self.html_param.update(
            cabaclub_management_info=obj_cabaclub_management_info,
            url_store=self.makeAppLinkUrl(UrlMaker.cabaclubstore()),
            url_title=self.makeAppLinkUrl(UrlMaker.titletop()),
            url_current_week_rank=self.makeAppLinkUrl(
                cabaclub_event_ranking_url),
            section_timelimit=Objects.timelimit(section_endtime, now),
        )
        self.writeAppHtml('cabaclub/top')
コード例 #2
0
    def process(self):
        
        args = self.getUrlArgs('/profile/')
        owner_id = args.get(0, None)
        if owner_id is None or not str(owner_id).isdigit():
            raise CabaretError(u'表示するユーザIDが指定されていません.')
        
        v_player = self.getViewerPlayer()
        owner_id = int(owner_id)
        if owner_id == v_player.id:
            url = UrlMaker.mypage()
            self.appRedirect(self.makeAppLinkUrlRedirect(url))
            return
        
        clslist = [
            PlayerTutorial,
            PlayerExp,
            PlayerGold,
            PlayerAp,
            PlayerDeck,
            PlayerFriend,
            PlayerGachaPt,
            PlayerLogin,
            PlayerComment,
        ]
        playerlist = BackendApi.get_players(self, [owner_id], clslist, using=settings.DB_READONLY)
        o_player = None
        if 0 < len(playerlist):
            o_player = playerlist[0]
        
        if o_player is None or not o_player.is_tutorialend():
            raise CabaretError(u'このユーザIDは閲覧出来ません.')
        
        comments = self.readyProfileCommentRequest(o_player)
        
        self.putCardInfo(o_player)
        self.putFriendInfos(o_player)
        self.putBattleKOs(o_player)
        self.putRareLog(o_player)
        self.putGreetLog(o_player)
        
        persons = self.getDmmPlayerInfo(o_player)
        
        self.putIgnorelist(o_player)
        
        self.putPlayerInfo(o_player, persons.get(o_player.dmmid))
        self.putProfileComment(o_player, comments)

        if self.getFromPageName() == Defines.FromPages.CABACLUB_STORE:
            args = self.getFromPageArgs()
            mid = int(args[0]) if args and str(args[0]).isdigit() else None
            self.html_param['frompage_url'] = self.makeAppLinkUrlRedirect(UrlMaker.cabaclubrank(mid), add_frompage=False)
        
        self.writeAppHtml('profile')
コード例 #3
0
    def process(self):
        args = self.getUrlArgs('/cabaclubrank/')
        current_eventid = args.getInt(0)
        ope = args.get(1)
        v_player = self.getViewerPlayer()
        model_mgr = self.getModelMgr()

        eventmaster = BackendApi.get_cabaclubrankeventmaster(
            model_mgr, current_eventid, using=settings.DB_READONLY)
        if eventmaster is None:
            url = self.makeAppLinkUrlRedirect(UrlMaker.cabaclubtop())
            self.appRedirect(url)
            return

        self.html_param[
            'cabaclub_management_info'] = self.get_cabaclub_management_info(
                self.getModelMgr(), v_player.id, OSAUtil.get_now())
        self.html_param['url_cabaclubrank'] = self.makeAppLinkUrl(
            UrlMaker.cabaclubrank(eventmaster.id))
        self.html_param['url_explain_detail'] = self.makeAppLinkUrl(
            UrlMaker.cabaclubrank(eventmaster.id, 'detail'))
        self.html_param['url_explain_prizes'] = self.makeAppLinkUrl(
            UrlMaker.cabaclubrank(eventmaster.id, 'prizes'))
        self.html_param['eventmaster'] = eventmaster
        event_config = BackendApi.get_current_cabaclubrankeventconfig(
            model_mgr, using=settings.DB_READONLY)
        self.set_event_period(model_mgr, self.html_param, event_config)

        table = {
            'detail': self.__proc_detail,
            'prizes': self.__proc_prizes,
        }
        func = table.get(ope)
        if func:
            func(eventmaster)
            return

        page = int(self.request.get(Defines.URLQUERY_PAGE) or 0)
        is_view_myrank = int(self.request.get(Defines.URLQUERY_FLAG) or 0) == 1
        has_next = False

        if not CabaClubRanking.exists(current_eventid):
            # if ranking data isn't present in Redis
            # fetch the ranking data from the database and store it into Redis
            BackendApi.backup_ranking_data_into_redis(current_eventid)

        if is_view_myrank:
            # fetch user rank data from Redis DB
            player_rank_list = CabaClubRanking.get_user_rank_page(
                current_eventid, v_player.id, Handler.CONTENT_NUM_PER_PAGE)
        else:
            offset = page * Handler.CONTENT_NUM_PER_PAGE
            # fetch all players' rank data from Redis DB
            player_rank_list = CabaClubRanking.get_rankings(
                current_eventid, offset, Handler.CONTENT_NUM_PER_PAGE, page)

        # base url
        urlbase = UrlMaker.cabaclubrank(current_eventid)
        if player_rank_list:
            self.setFromPage(Defines.FromPages.CABACLUB_STORE, current_eventid)
            uidlist = [x['uid'] for x in player_rank_list]
            playerlist = BackendApi.get_players(self,
                                                uidlist=uidlist,
                                                using=settings.DB_READONLY)
            obj_player_dict = dict([
                (obj_player['id'], obj_player)
                for obj_player in self.getObjPlayerList(playerlist, uidlist)
            ])

            for rank_info in player_rank_list:
                uid = rank_info['uid']
                obj_player = obj_player_dict.get(uid)
                if obj_player:
                    obj_player['is_me'] = uid == v_player.id
                    rank_info.update(obj_player)

            if not is_view_myrank:
                number_of_players = CabaClubRanking.get_number_of_players(
                    eventid=current_eventid)
                self.putPagenation(UrlMaker.cabaclubrank(current_eventid),
                                   page, number_of_players,
                                   Handler.CONTENT_NUM_PER_PAGE)

                if Handler.CONTENT_NUM_PER_PAGE == len(player_rank_list):
                    has_next = True

                # Next page url
                if has_next:
                    self.html_param['url_page_next'] = self.makeAppLinkUrl(
                        OSAUtil.addQuery(urlbase, Defines.URLQUERY_PAGE,
                                         page + 1))

                # Previous page url
                if 0 < page:
                    self.html_param['url_page_prev'] = self.makeAppLinkUrl(
                        OSAUtil.addQuery(urlbase, Defines.URLQUERY_PAGE,
                                         page - 1))

        url_ranking = OSAUtil.addQuery(urlbase, Defines.URLQUERY_FLAG, "0")
        url_myrank = OSAUtil.addQuery(urlbase, Defines.URLQUERY_FLAG, "1")
        self.html_param['url_ranking'] = self.makeAppLinkUrl(url_ranking)
        self.html_param['url_myrank'] = self.makeAppLinkUrl(url_myrank)
        self.html_param['is_view_myrank'] = is_view_myrank
        self.html_param['player_rank_list'] = player_rank_list
        self.html_param[
            'cabaclub_management_info'] = self.get_cabaclub_management_info(
                self.getModelMgr(), v_player.id, OSAUtil.get_now())
        self.writeAppHtml('cabaclub/rank')