コード例 #1
0
    def process(self):

        model_mgr = self.getModelMgr()

        config = BackendApi.get_current_battleeventconfig(
            model_mgr, using=settings.DB_READONLY)
        eventmaster = None
        if config.mid:
            eventmaster = BackendApi.get_battleevent_master(
                model_mgr, config.mid, using=settings.DB_READONLY)
        if eventmaster is None:
            self.redirectToTop()
            return

        v_player = self.getViewerPlayer()
        uid = v_player.id
        page = int(self.request.get(Defines.URLQUERY_PAGE) or 0)

        nummax = BackendApi.get_battleevent_battlelog_num(
            model_mgr, uid, using=settings.DB_READONLY)

        offset = page * Defines.GAMELOG_PAGE_CONTENT_NUM
        loglist = BackendApi.get_battleevent_battlelog_list(
            model_mgr,
            uid,
            Defines.GAMELOG_PAGE_CONTENT_NUM,
            offset,
            using=settings.DB_READONLY)

        infolist = BackendApi.make_battleevent_battleloginfo(self, loglist)
        self.html_param['battleloglist'] = infolist

        self.putPagenation(UrlMaker.battleevent_loglist(), page, nummax,
                           Defines.GAMELOG_PAGE_CONTENT_NUM)

        self.putEventTopic(eventmaster.id)

        if eventmaster.is_goukon:
            self.writeAppHtml('gcevent/battlelog')
        else:
            self.writeAppHtml('btevent/battlelog')
コード例 #2
0
ファイル: top.py プロジェクト: hitandaway100/caba
    def process(self):

        self.__execute_end_worklist = []

        model_mgr = self.getModelMgr()

        config = BackendApi.get_current_battleeventconfig(
            model_mgr, using=settings.DB_READONLY)

        args = self.getUrlArgs('/battleeventtop/')
        eventid = str(args.get(0))
        eventmaster = None

        if eventid and eventid.isdigit():
            eventid = int(eventid)
        elif config:
            eventid = config.mid

        if eventid:
            eventmaster = BackendApi.get_battleevent_master(
                model_mgr, eventid, using=settings.DB_READONLY)

        if eventmaster is None:
            raise CabaretError(u'Event Closed.',
                               CabaretError.Code.EVENT_CLOSED)
            return

        self.__eventmaster = eventmaster
        eventid = eventmaster.id
        cur_eventmaster = self.getCurrentBattleEvent(quiet=True)

        v_player = self.getViewerPlayer()
        uid = v_player.id

        is_open = cur_eventmaster and eventid == cur_eventmaster.id

        self.setFromPage(Defines.FromPages.BATTLEEVENT, eventid)

        if is_open:
            # 開催中.
            if self.isBattleOpen():
                # バトルが開いている時.
                self.procOpened()
            else:
                # バトルが閉じている時.
                self.procBattleClosed()
            # イベント参加KPI保存.
            BackendApi.save_kpi_battleevent_join(uid, self.is_pc)
        else:
            self.procClosed()

        if self.response.isEnd:
            return

        self.html_param['player'] = Objects.player(self, v_player)

        # イベント情報.
        battleevent = Objects.battleevent(self, eventmaster)
        self.html_param['battleevent'] = battleevent

        # バトルチケットの使用期限
        if is_open:
            self.html_param[
                'battle_ticket_expiry_date'] = self.get_battle_ticket_expiry_date(
                    config.ticket_endtime)

        BackendApi.check_battleevent_piececollection_userdata_and_create(
            model_mgr, uid, eventid)
        self.html_param['allrarity_piece'] = self.create_piece_image_paths(
            uid, eventid)

        # トピック.
        self.putEventTopic(eventid)

        # バトル履歴.
        if not eventmaster.is_goukon:
            loglist = BackendApi.get_battleevent_battlelog_list(
                model_mgr, uid, limit=1, using=settings.DB_READONLY)
            if loglist:
                func_battleloginfo = BackendApi.make_battleevent_battleloginfo(
                    self, loglist, do_execute=False)
                if func_battleloginfo:

                    def put_battleloginfo():
                        self.html_param['battleloglist'] = func_battleloginfo()

                    self.addExecuteApiWork(put_battleloginfo)

        # バトル履歴のリンク.
        self.html_param['url_battleevent_battlelog'] = self.makeAppLinkUrl(
            UrlMaker.battleevent_loglist())
        tradeshop_urlparam = OSAUtil.addQuery(
            UrlMaker.trade(), Defines.URLQUERY_CTYPE,
            Defines.GachaConsumeType.GachaTopTopic.TICKET)
        self.html_param['url_battleticket_trade'] = self.makeAppLinkUrl(
            tradeshop_urlparam)
        battleticket = BackendApi.get_additional_gachaticket_nums(
            model_mgr,
            v_player.id,
            [Defines.GachaConsumeType.GachaTicketType.BATTLE_TICKET],
            using=settings.DB_READONLY)
        if battleticket:
            battle_ticket_num = battleticket[
                Defines.GachaConsumeType.GachaTicketType.BATTLE_TICKET].num
        else:
            battle_ticket_num = 0
        self.html_param['battleticket'] = {
            'name':
            Defines.GachaConsumeType.NAMES[
                Defines.GachaConsumeType.BATTLE_TICKET],
            'num':
            battle_ticket_num,
            'unit':
            Defines.ItemType.UNIT[Defines.ItemType.ADDITIONAL_GACHATICKET],
        }

        # グループ履歴のリンク.
        self.html_param['url_battleevent_grouplog'] = self.makeAppLinkUrl(
            UrlMaker.battleevent_grouploglist(eventid))

        if not self.html_param.has_key('battleevent_rank'):
            # ランク情報がないのでデフォルトのを設定.
            if config.isFirstDay():
                rankmaster = BackendApi.get_battleevent_rankmaster(
                    model_mgr,
                    eventid,
                    eventmaster.rankstart,
                    using=settings.DB_READONLY)
            else:
                rankmaster = BackendApi.get_battleevent_rankmaster(
                    model_mgr,
                    eventid,
                    eventmaster.rankbeginer,
                    using=settings.DB_READONLY)
            self.html_param['battleevent_rank'] = Objects.battleevent_rank(
                self, None, rankmaster, None)

        self.executeApiWithWork()

        # 初心者フラグ.
        is_beginer = BackendApi.check_battleevent_beginer(
            model_mgr, uid, eventmaster, config, using=settings.DB_READONLY)
        self.html_param['is_beginer'] = is_beginer

        # ユーザーデータのチェック, カウントの取得
        user_cvictory_count = self.check_user_continue_victory_data(
            uid, eventid)
        self.put_user_continue_victory_data(user_cvictory_count)

        # ランキング.
        view_myrank = False
        view_beginer = self.request.get(Defines.URLQUERY_BEGINER) == "1"
        if not view_beginer or is_beginer:
            view_myrank = self.request.get(Defines.URLQUERY_FLAG) == "1"
        url_ranking = OSAUtil.addQuery(UrlMaker.battleevent_top(eventid),
                                       Defines.URLQUERY_FLAG, "0")
        url_myrank = OSAUtil.addQuery(UrlMaker.battleevent_top(eventid),
                                      Defines.URLQUERY_FLAG, "1")
        self.putRanking(uid,
                        eventid,
                        view_myrank,
                        url_ranking,
                        url_myrank,
                        view_beginer=view_beginer)

        if eventmaster.is_goukon:
            self.writeAppHtml('gcevent/top')
        else:
            self.writeAppHtml('btevent/top')