Esempio n. 1
0
 def putEventTopic(self, mid, cur_topic='top'):
     """eventbase.htmlのトピック用のパラメータを埋め込む.
     """
     self.html_param['cur_topic'] = cur_topic
     
     # イベントTopのURL.
     url = UrlMaker.battleevent_top(mid)
     self.html_param['url_battleevent_top'] = self.makeAppLinkUrl(url)
     
     # イベント説明のURL.
     url = UrlMaker.battleevent_explain(mid)
     self.html_param['url_battleevent_explain'] = self.makeAppLinkUrl(url)
     
     # ランキングのURL.
     url = UrlMaker.battleevent_ranking(mid)
     self.html_param['url_battleevent_ranking'] = self.makeAppLinkUrl(url)
     
     table = (
         'detail',
         'prizes',
         'nomination',
         'faq',
     )
     for k in table:
         self.html_param['url_explain_%s' % k] = self.makeAppLinkUrl(UrlMaker.battleevent_explain(mid, k))
     
     # 贈り物.
     if BackendApi.get_battleeventpresent_master_by_eventdid(self.getModelMgr(), mid, using=settings.DB_READONLY):
         self.html_param['url_battleevent_present'] = self.makeAppLinkUrl(UrlMaker.battleevent_present())
     
     # ガチャページ.
     url = OSAUtil.addQuery(UrlMaker.gacha(), Defines.URLQUERY_GTYPE, Defines.GachaConsumeType.GTYPE_NAMES[Defines.GachaConsumeType.OMAKE])
     self.html_param['url_battleevent_gacha'] = self.makeAppLinkUrl(url)
Esempio n. 2
0
    def process(self):

        model_mgr = self.getModelMgr()
        cur_eventmaster = self.getCurrentBattleEvent()
        v_player = self.getViewerPlayer()
        uid = v_player.id

        # OP閲覧フラグを立てる.
        if BackendApi.check_battleevent_lead_opening(
                model_mgr, uid, cur_eventmaster.id,
                using=settings.DB_READONLY):
            flagrecord = BackendApi.update_battleevent_flagrecord(
                cur_eventmaster.id, uid, OSAUtil.get_now())
            model_mgr.set_got_models([flagrecord])
            # ここで一度とっておく.
            BackendApi.get_battleeventpresent_pointdata(
                model_mgr, uid, cur_eventmaster.id)

        url = UrlMaker.battleevent_explain(cur_eventmaster.id)
        if cur_eventmaster.op:
            # 演出のパラメータ.
            effectpath = UrlMaker.event_scenario()
            dataUrl = self.makeAppLinkUrlEffectParamGet(
                'eventscenario/%d/normal%s' % (cur_eventmaster.op, url))
            self.appRedirectToEffect2(effectpath, dataUrl)
        else:
            # 演出なし.
            self.appRedirect(self.makeAppLinkUrlRedirect(url))
Esempio n. 3
0
 def process(self):
     
     args = self.getUrlArgs('/battleeventexplain/')
     eventid = args.getInt(0)
     ope = args.get(1)
     
     model_mgr = self.getModelMgr()
     eventmaster = None
     if eventid:
         eventmaster = BackendApi.get_battleevent_master(model_mgr, eventid, using=settings.DB_READONLY)
     
     if eventmaster is None:
         raise CabaretError(u'閲覧できないイベントです', CabaretError.Code.ILLEGAL_ARGS)
     
     v_player = self.getViewerPlayer()
     uid = v_player.id
     
     # 開催中判定.
     cur_eventmaster = self.getCurrentBattleEvent(quiet=True)
     if cur_eventmaster and cur_eventmaster.id == eventid:
         is_opened = True
         do_check_loginbonus = not cur_eventmaster.is_goukon
         if not self.checkBattleEventUser(do_check_battle_open=False, do_check_regist=False, do_check_emergency=False, do_check_loginbonus=do_check_loginbonus):
             return
     else:
         is_opened = False
     self.html_param['is_opened'] = is_opened
     
     # イベント情報.
     self.html_param['battleevent'] = Objects.battleevent(self, eventmaster)
     
     # スコア.
     scorerecord = BackendApi.get_battleevent_scorerecord(model_mgr, eventid, uid, using=settings.DB_READONLY)
     rank = BackendApi.get_battleevent_rank(eventid, uid)
     self.html_param['battleevent_score'] = Objects.battleevent_score(self, scorerecord, rank)
     
     self.putEventTopic(eventid, 'explain')
     
     self.html_param['current_topic'] = ope
     
     table = {
         'detail' : self.__proc_detail,
         'prizes' : self.__proc_prizes,
         'nomination' : self.__proc_nomination,
         'faq' : self.__proc_faq,
     }
     for k in table.keys():
         self.html_param['url_explain_%s' % k] = self.makeAppLinkUrl(UrlMaker.battleevent_explain(eventid, k))
     table.get(ope, self.__proc_detail)(eventmaster, is_opened)
Esempio n. 4
0
    def __proc_prizes(self, eventmaster, is_opened):
        """報酬.
        """
        urlbase = UrlMaker.battleevent_explain(eventmaster.id, 'prizes')
#        self.html_param['url_prizes_point'] = self.makeAppLinkUrl(OSAUtil.addQuery(urlbase, Defines.URLQUERY_CTYPE, 'point'))
        self.html_param['url_prizes_ranking'] = self.makeAppLinkUrl(OSAUtil.addQuery(urlbase, Defines.URLQUERY_CTYPE, 'ranking'))
        self.html_param['url_prizes_group_ranking'] = self.makeAppLinkUrl(OSAUtil.addQuery(urlbase, Defines.URLQUERY_CTYPE, 'group_ranking'))
        self.html_param['url_prizes_battlepoint'] = self.makeAppLinkUrl(OSAUtil.addQuery(urlbase, Defines.URLQUERY_CTYPE, 'battlepoint'))
        self.html_param['url_prizes_ranking_beginer'] = self.makeAppLinkUrl(OSAUtil.addQuery(urlbase, Defines.URLQUERY_CTYPE, 'ranking_beginer'))
        
        ctype = self.request.get(Defines.URLQUERY_CTYPE)
        
        self.html_param['current_prize'] = ctype
        
        if ctype == 'ranking':
            self.__proc_prizes_ranking(eventmaster, is_opened)
        elif ctype == 'ranking_beginer':
            self.__proc_prizes_ranking_beginer(eventmaster, is_opened)
        elif ctype == 'battlepoint':
            self.__proc_prizes_battlepoint(eventmaster, is_opened)
        else:
            self.html_param['current_prize'] = 'group_ranking'
            self.__proc_prizes_group_ranking(eventmaster, is_opened)
Esempio n. 5
0
    def procOpened(self):
        """開催中.
        """
        # ユーザの状態チェック.
        if not self.checkBattleEventUser(do_check_battle_open=False,
                                         do_check_emergency=False):
            return

        model_mgr = self.getModelMgr()
        eventid = self.__eventmaster.id
        v_player = self.getViewerPlayer()
        uid = v_player.id

        if BackendApi.check_battleevent_lead_scenario(
                model_mgr, uid, eventid, using=settings.DB_READONLY):
            # 中押し演出を見ていない.
            url = UrlMaker.battleevent_scenario()
            self.appRedirect(self.makeAppLinkUrlRedirect(url))
            return False

        # ランク情報.
        rankrecord = BackendApi.get_battleevent_rankrecord(
            model_mgr, eventid, uid, using=settings.DB_READONLY)
        func_rankinfo = self.makeRankRecordObj(rankrecord,
                                               player_num=2,
                                               do_execute=False)

        # スコア情報.
        scorerecord = BackendApi.get_battleevent_scorerecord(
            model_mgr, eventid, uid, using=settings.DB_READONLY)
        rank_beginer = BackendApi.get_battleevent_rank(eventid,
                                                       uid,
                                                       is_beginer=True)
        obj_scorerecord = self.makeScoreRecordObj(scorerecord,
                                                  rank_beginer=rank_beginer)
        self.html_param['battleevent_score'] = obj_scorerecord

        if func_rankinfo:

            def put_rankinfo():
                obj_rankinfo = func_rankinfo()
                self.html_param['battleevent_rank'] = obj_rankinfo

                # グループ内ランキング報酬.
                prizeinfo = None
                if 0 < obj_scorerecord['point']:
                    grouprank = obj_rankinfo['grouprankingdata']['rank']

                    rankmaster = BackendApi.get_battleevent_rankmaster(
                        model_mgr,
                        eventid,
                        obj_rankinfo['rank'],
                        using=settings.DB_READONLY)
                    if rankmaster:
                        prizeidlist = []
                        for data in rankmaster.group_rankingprizes:
                            if not data.get('prize') or not (data['rank_min']
                                                             <= grouprank <=
                                                             data['rank_max']):
                                continue
                            prizeidlist.extend(data.get('prize'))
                        prizelist = BackendApi.get_prizelist(
                            model_mgr, prizeidlist, using=settings.DB_READONLY)
                        prizeinfo = BackendApi.make_prizeinfo(
                            self, prizelist, using=settings.DB_READONLY)
                self.html_param['prize'] = prizeinfo

            self.addExecuteApiWork(put_rankinfo)

        # グループの詳細へ.
        self.html_param['url_battleevent_group'] = self.makeAppLinkUrl(
            UrlMaker.battleevent_group())

        url = UrlMaker.battleevent_explain(eventid, 'prizes')
        self.html_param['url_prizes_group_ranking'] = self.makeAppLinkUrl(
            OSAUtil.addQuery(url, Defines.URLQUERY_CTYPE, 'group_ranking'))

        # バトルTOPへ.
        self.html_param['url_battleevent_opplist'] = self.makeAppLinkUrl(
            UrlMaker.battleevent_opplist())