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)
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))
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)
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)
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())