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

        args = self.getUrlArgs('/transferreturncomplete/')
        mid = args.getInt(0)
        num = args.getInt(1) or 0

        model_mgr = self.getModelMgr()
        cardmaster = None
        if mid:
            cardmaster = BackendApi.get_cardmasters(
                [mid], arg_model_mgr=model_mgr,
                using=settings.DB_READONLY).get(mid)
        if cardmaster is None or not CardUtil.checkStockableMaster(
                cardmaster, raise_on_error=False):
            raise CabaretError(u'不正な遷移です.', CabaretError.Code.ILLEGAL_ARGS)

        # アルバムへのリンク.
        self.html_param['url_albumdetail'] = self.makeAppLinkUrl(
            UrlMaker.albumdetail(cardmaster.album))

        # カード情報.
        self.html_param['cardmaster'] = Objects.cardmaster(self, cardmaster)

        # 呼び戻した数.
        self.html_param['cardnum'] = num

        self.writeAppHtml('card/transferreturncomplete')
コード例 #2
0
ファイル: explain.py プロジェクト: hitandaway100/caba
    def __proc_nominatecast(self, eventmaster, is_opened):
        """特効キャスト一覧.
        """
        model_mgr = self.getModelMgr()

        # 特効カードのマスター.
        specialcard = dict(eventmaster.specialcard)
        midlist = specialcard.keys()
        cardmasters = BackendApi.get_cardmasters(midlist,
                                                 model_mgr,
                                                 using=settings.DB_READONLY)

        # 埋め込み用パラメータ作成.
        obj_cardlist = []
        for mid, cardmaster in cardmasters.items():
            rate = specialcard[mid]
            obj = Objects.cardmaster(self, cardmaster)
            obj['specialpowup'] = rate
            obj_cardlist.append(obj)
        obj_cardlist.sort(key=lambda x: (x['rare'] << 32) +
                          (Defines.HKLEVEL_MAX - x['hklevel']),
                          reverse=True)
        self.html_param['specialcardlist'] = obj_cardlist

        self.writeHtml(eventmaster, 'nominatecast')
コード例 #3
0
    def procSelect(self):
        """タイプ選択画面.
        """
        v_player = self.__getViewerPlayer()
        if v_player is None:
            return

        model_mgr = self.getModelMgr()
        leaders = BackendApi.get_defaultleaders(
            model_mgr,
            Defines.CharacterType.NAMES.keys(),
            using=settings.DB_READONLY)

        obj_leaders = {}
        urls = {}

        for k in Defines.CharacterType.NAMES.keys():
            if leaders.has_key(k):
                obj_leaders[k] = Objects.cardmaster(self, leaders[k])
            urls[k] = self.makeAppLinkUrl(UrlMaker.regist_yesno(k,
                                                                first=False))

        self.html_param['url_enters'] = urls
        self.html_param['leaders'] = obj_leaders

        self.setTutorialHead(Defines.TutorialStatus.REGIST_SELECT)

        self.writeAppHtml('regist/select')
コード例 #4
0
    def __proc_nomination(self, eventmaster, is_opened):
        """ご指名キャスト一覧.
        """
        model_mgr = self.getModelMgr()
        # 特効キャスト.
        specialcard_dict = dict(eventmaster.specialcard)
        battleticket_rate = dict(eventmaster.battleticket_rate)

        midlist = specialcard_dict.keys()
        cardmasters = BackendApi.get_cardmasters(midlist, model_mgr, using=settings.DB_READONLY)
        
        obj_cardlist = []
        for mid, rate in eventmaster.specialcard:
            cardmaster = cardmasters.get(mid)
            if not cardmaster:
                continue
            obj = Objects.cardmaster(self, cardmaster)
            obj['specialpowup'] = rate
            ticket_rate = battleticket_rate.get(mid)

            if ticket_rate:
                obj['battleticket_rateup'] = ticket_rate
            obj_cardlist.append(obj)
        self.html_param['specialcardlist'] = obj_cardlist

        # 属性ボーナス.
        specialtype_dict = dict(eventmaster.specialtable)
        for rare in specialtype_dict.keys():
            arr = specialtype_dict[rare] + [100] * Defines.HKLEVEL_MAX
            specialtype_dict[rare] = arr[:Defines.HKLEVEL_MAX]

        self.html_param['specialtypedict'] = specialtype_dict
        
        self.writeHtml(eventmaster, 'nominatecast')
コード例 #5
0
ファイル: tutorial.py プロジェクト: hitandaway100/caba
    def proc_EVOL00_ALBUM(self, basecard, materialcard):
        """思い出アルバム.
        """
        model_mgr = self.getModelMgr()

        basecard_post, _ = BackendApi.tutorial_evolution(
            model_mgr, basecard, materialcard, using=settings.DB_READONLY)

        v_player = self.getViewerPlayer(True)
        mid = basecard_post.master.id
        memoriesmaster = None
        if self.is_pc:
            memoriesmaster = BackendApi.get_tutorial_pcmemories(
                model_mgr, v_player.ptype, using=settings.DB_READONLY)
        else:
            memoriesmaster = BackendApi.get_tutorial_memories(
                model_mgr, v_player.ptype, using=settings.DB_READONLY)
        card_acquisition = CardAcquisition.makeInstance(
            CardAcquisition.makeID(basecard_post.card.uid, mid))

        self.html_param['cardmaster'] = Objects.cardmaster(
            self, basecard_post.master)
        self.html_param['album'] = Objects.memoriesmaster(
            self, memoriesmaster, card_acquisition)

        memories_list = []
        movie_list = []
        pcmovie_list = []
        for obj_memories in BackendApi.get_album_memories_list(
                self,
                basecard_post.card.uid,
                basecard_post.master.album,
                using=settings.DB_READONLY):
            if obj_memories['contenttype'] == Defines.MemoryContentType.MOVIE:
                movie_list.append(obj_memories)
            elif obj_memories[
                    'contenttype'] == Defines.MemoryContentType.MOVIE_PC:
                pcmovie_list.append(obj_memories)
            else:
                memories_list.append(obj_memories)
        self.html_param['memories_list'] = memories_list
        self.html_param['movie_list'] = movie_list
        self.html_param['pcmovie_list'] = pcmovie_list

        self.html_param['url_next'] = self.makeAppLinkUrl(self.makeUrlNext())

        # 動画閲覧用のキーを保存.
        remote_addr = self.request.remote_addr
        if remote_addr:
            key = '%s##%s' % (remote_addr, self.osa_util.useragent.browser)
            MemoriesSession.create(v_player.id, memoriesmaster.id, key).save()

        self.writeAppHtml('album/memories')
コード例 #6
0
    def process(self):

        self.__flag_execute = self.request.get('_execute') == '1'
        self.__vid = self.request.get('_vid')
        self.__oid = self.request.get('_oid')
        self.__v_deck = None
        self.__o_deck = None
        self.__continuity = self.request.get('_continuity')
        self.__dummy_cardid = 0

        model_mgr = self.getModelMgr()

        # カード一覧.
        cardmidlist = [
            cardmaster.id for cardmaster in model_mgr.get_mastermodel_all(
                CardMaster, 'id', using=settings.DB_READONLY)
        ]
        cardmaster_all = BackendApi.get_cardmasters(cardmidlist,
                                                    model_mgr,
                                                    using=settings.DB_READONLY)
        obj_cardlist = [
            Objects.cardmaster(self, cardmaster_all[mid])
            for mid in cardmidlist
        ]
        self.html_param['cardlist'] = obj_cardlist

        # 個別設定されたデッキ.
        self.loadPostDeck()

        # ユーザIDからロード.
        self.loadUserDeck()

        # 対戦する.
        if self.__flag_execute:
            self.battle()

        self.putDeck()

        self.html_param['vid'] = self.__vid
        self.html_param['oid'] = self.__oid
        self.html_param['continuity'] = self.__continuity or 10
        self.writeAppHtml('battle_simulator')
コード例 #7
0
    def __proc_nomination(self, eventmaster, is_opened):
        """ご指名キャスト一覧.
        """
        model_mgr = self.getModelMgr()
        # 特効キャスト.
        specialcard_dict = dict(eventmaster.specialcard)
        midlist = specialcard_dict.keys()
        cardmasters = BackendApi.get_cardmasters(midlist,
                                                 model_mgr,
                                                 using=settings.DB_READONLY)

        obj_cardlist = []
        for mid, rate in eventmaster.specialcard:
            cardmaster = cardmasters.get(mid)
            if not cardmaster:
                continue
            obj = Objects.cardmaster(self, cardmaster)
            obj['specialpowup'] = rate
            obj_cardlist.append(obj)
        self.html_param['specialcardlist'] = obj_cardlist

        self.writeHtml(eventmaster, 'nominatecast')
コード例 #8
0
    def __proc_nomination(self, eventmaster, is_opened):
        """ご指名キャスト一覧.
        """
        model_mgr = self.getModelMgr()

        # イベントレイド.
        raidlist = BackendApi.get_raidevent_raidmaster_by_eventid(
            model_mgr, eventmaster.id, using=settings.DB_READONLY)

        # 特効カード.
        specialcard = {}
        for raid in raidlist:
            for mid, rate in raid.specialcard:
                specialcard[mid] = max(specialcard.get(mid, 0), rate)

        # 特効カードのマスター.
        midlist = specialcard.keys()
        cardmasters = BackendApi.get_cardmasters(midlist,
                                                 model_mgr,
                                                 using=settings.DB_READONLY)

        # 埋め込み用パラメータ作成.
        obj_cardlist = []
        for mid, cardmaster in cardmasters.items():
            rate = specialcard[mid]
            obj = Objects.cardmaster(self, cardmaster)
            obj['specialpowup'] = rate
            obj['specialtreasure'] = raidlist[0].specialcard_treasure[
                obj["rare_str"]][obj["hklevel"] - 1]
            obj_cardlist.append(obj)
        obj_cardlist.sort(key=lambda x: (x['rare'] << 32) +
                          (Defines.HKLEVEL_MAX - x['hklevel']),
                          reverse=True)
        self.html_param['specialcardlist'] = obj_cardlist

        self.writeHtml(eventmaster, 'nominatecast')
コード例 #9
0
ファイル: result.py プロジェクト: hitandaway100/caba
    def process(self):

        model_mgr = self.getModelMgr()

        args = self.getUrlArgs('/battleeventbattleresult/')
        eventid = args.getInt(0)

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

        if eventmaster is None:
            if settings_sub.IS_LOCAL:
                raise CabaretError(u'引数がおかしい')
            self.redirectToTop()
            return

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

        # 結果データ.
        battleresult = BackendApi.get_battleevent_battleresult(
            model_mgr, eventid, uid, using=settings.DB_READONLY)
        if battleresult is None:
            # 結果が存在しない.
            if settings_sub.IS_LOCAL:
                raise CabaretError(u'結果がない')
            url = UrlMaker.battleevent_top(eventid)
            self.appRedirect(self.makeAppLinkUrlRedirect(url))
            return

        self.setFromPage(Defines.FromPages.BATTLEEVENTPRE)

        data = battleresult.data

        # 対戦相手.
        oid = battleresult.oid
        arr = BackendApi.get_players(self, [oid], [PlayerExp],
                                     using=settings.DB_READONLY)
        o_player = arr[0] if arr else None
        if o_player is None:
            # 相手が存在しない.
            if settings_sub.IS_LOCAL:
                raise CabaretError(u'相手が存在しない')
            url = UrlMaker.battleevent_top(eventid)
            self.appRedirect(self.makeAppLinkUrlRedirect(url))
            return

        obj_v_player, obj_o_player = self.getObjPlayerList(
            [v_player, o_player])

        rival_key = BackendApi.get_rival_key(oid, eventid, args)
        self.html_param['resultdata'] = data

        obj_v_player['power_total'] = data['v_power']
        obj_o_player['power_total'] = data['o_power']
        obj_v_player['sp_powup'] = (data.get('v_sp_powup')
                                    or 0) * data['fever_powerup_rate'] / 100
        obj_o_player['sp_powup'] = data.get('o_sp_powup') or 0
        obj_v_player['spt_powup'] = (data.get('v_spt_powup')
                                     or 0) * data['fever_powerup_rate'] / 100
        obj_o_player['spt_powup'] = data.get('o_spt_powup') or 0

        obj_v_player['skilllist'] = battleresult.anim.make_html_skilllist(True)
        obj_o_player['skilllist'] = battleresult.anim.make_html_skilllist(
            False)

        self.html_param['player'] = obj_v_player
        self.html_param['o_player'] = obj_o_player

        if BackendApi.check_friend(uid,
                                   oid,
                                   arg_model_mgr=model_mgr,
                                   using=settings.DB_READONLY):
            pass
        elif BackendApi.check_friendrequest_receive(
                uid, oid, arg_model_mgr=model_mgr, using=settings.DB_READONLY):
            pass
        elif BackendApi.check_friendrequest_send(uid,
                                                 oid,
                                                 arg_model_mgr=model_mgr,
                                                 using=settings.DB_READONLY):
            pass
        else:
            self.html_param['is_friendrequest_ok'] = True

        # 獲得したアイテム.
        prizes = data.get('prizes')
        if prizes:
            prizelist = BackendApi.get_prizelist(model_mgr,
                                                 prizes,
                                                 using=settings.DB_READONLY)
            self.html_param['prize'] = BackendApi.make_prizeinfo(
                self, prizelist, using=settings.DB_READONLY)

        battle_ticket_num = self.get_base_battle_ticket_num(data)
        self.html_param['battle_ticket_num'] = battle_ticket_num
        self.html_param[
            'battle_ticket_bonus'] = self.get_player_battle_ticket_bonus(
                model_mgr, uid, battle_ticket_num, eventmaster)

        # レベルアップしたカード.
        obj_lebelupcardlist = []
        levelupcardlist = BackendApi.get_cards(battleresult.levelupcard.keys(),
                                               model_mgr,
                                               using=settings.DB_READONLY)
        for levelupcard in levelupcardlist:
            obj_card = Objects.card(self, levelupcard)
            obj_card['level_add'] = battleresult.levelupcard.get(
                levelupcard.id, 0)
            obj_lebelupcardlist.append(obj_card)
        self.html_param['levelupcardlist'] = obj_lebelupcardlist

        # 回復アイテム.
        BackendApi.put_bprecover_uselead_info(self)

        # 獲得したポイント.
        scorerecord = BackendApi.get_battleevent_scorerecord(
            model_mgr, eventid, uid, using=settings.DB_READONLY)
        self.html_param['battleevent_score'] = self.makeScoreRecordObj(
            scorerecord, battleresult)

        # 特効キャスト分のポイント.
        effect_percent = data.get('effp', 0)
        if 0 < effect_percent:
            point_add = data['eventpoint']
            point_base = int(point_add * 100 / (effect_percent + 100))
            self.html_param['effect_point'] = point_add - point_base

        # 現在の贈り物情報を確認.
        presentdata = BackendApi.get_battleeventpresent_pointdata(
            model_mgr, uid, eventid, using=settings.DB_READONLY)
        if presentdata:
            cur_data = presentdata.getData()
            presentmaster = BackendApi.get_battleeventpresent_master(
                model_mgr,
                eventid,
                cur_data['number'],
                using=settings.DB_READONLY)
            self.html_param[
                'is_present_open'] = presentmaster.point <= presentdata.point
        else:
            self.html_param['is_present_open'] = False

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

        # 続けて競う.
        target = 'revenge' if data.get('revenge') else 'lv'
        self.html_param['url_battlecontinue'] = self.makeAppLinkUrl(
            UrlMaker.battleevent_opplist(target, do_update=True))

        # グループ詳細.
        self.html_param['url_battleevent_group'] = self.makeAppLinkUrl(
            UrlMaker.battleevent_group())
        self.html_param["battleevent"] = Objects.battleevent(
            self, eventmaster)
        if data['is_win']:
            piecedata = battleresult.data.get('piecedata')
            if piecedata:
                if piecedata.get('is_item'):
                    # キャスト名.
                    _, cardmaster = self.get_dirname_and_castname(
                        eventid, piecedata['rarity'])

                    # アイテム獲得.
                    prizelist = BackendApi.get_prizelist(
                        model_mgr,
                        piecedata.get('item_prizeids') or [],
                        using=settings.DB_READONLY)
                    self.html_param['piece_dropiteminfo'] = dict(
                        cardmaster=Objects.cardmaster(self, cardmaster),
                        prize=BackendApi.make_prizeinfo(
                            self, prizelist, using=settings.DB_READONLY))
                else:
                    self.put_drop_castname(model_mgr, eventid,
                                           piecedata['rarity'],
                                           piecedata['piece'])
            self.writeAppHtml(
                '%s/battlewin' %
                ('gcevent' if eventmaster.is_goukon else 'btevent'))
        else:
            self.writeAppHtml(
                '%s/battlelose' %
                ('gcevent' if eventmaster.is_goukon else 'btevent'))
コード例 #10
0
    def process(self):

        model_mgr = self.getModelMgr()

        # プレイヤー情報.
        v_player = self.getViewerPlayer()
        obj_player = Objects.player(self, v_player)

        # 初期タブ指定
        is_battle_ticket_page = int(self.request.get(
            Defines.URLQUERY_CTYPE,
            0)) == Defines.GachaConsumeType.GachaTopTopic.TICKET

        # 秘宝交換レートリスト取得
        tradelist = BackendApi.get_trademaster_all(model_mgr,
                                                   using=settings.DB_READONLY)
        tradelist.sort(key=lambda x: (x.schedule << 32) + x.rate_cabaretking,
                       reverse=True)

        # カード所持数.
        cardnum = BackendApi.get_cardnum(v_player.id,
                                         model_mgr,
                                         using=settings.DB_READONLY)
        cardrest = v_player.cardlimit - cardnum
        is_cardnum_max = cardrest < 1

        platinum_piece_num = BackendApi.get_platinum_piece(
            model_mgr, v_player.id)
        crystal_piece_num = BackendApi.get_crystal_piece(
            model_mgr, v_player.id)

        now = OSAUtil.get_now()
        current_battleevent = BackendApi.get_current_battleeventconfig(
            model_mgr, using=settings.DB_READONLY)
        if current_battleevent.starttime < now < current_battleevent.epilogue_endtime and is_battle_ticket_page:
            # retrieve the trade items that CAN be traded with a battle ticket
            tradelist = [
                trade_item for trade_item in tradelist
                if trade_item.is_used_battle_ticket
            ]
            self.html_param['is_battle_ticket_page'] = True
            url = OSAUtil.addQuery(
                UrlMaker.trade(), Defines.URLQUERY_CTYPE,
                Defines.GachaConsumeType.GachaTopTopic.TICKET)
            self.html_param['url_battle_ticket'] = self.makeAppLinkUrl(url)
        else:
            # retrieve the trade items that CANNOT be traded with a battle ticket
            tradelist = [
                trade_item for trade_item in tradelist
                if not trade_item.is_used_battle_ticket
            ]
            self.html_param['is_battle_ticket_page'] = False

        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['platinum_piece_num'] = platinum_piece_num
        self.html_param['platinum_piece_name'] = Defines.ItemType.NAMES[
            Defines.ItemType.PLATINUM_PIECE]
        self.html_param['battle_ticket_num'] = battle_ticket_num
        self.html_param['battle_ticket_name'] = Defines.GachaConsumeType.NAMES[
            Defines.GachaConsumeType.BATTLE_TICKET]
        self.html_param['crystal_piece_num'] = crystal_piece_num
        self.html_param['crystal_piece_name'] = Defines.ItemType.NAMES[
            Defines.ItemType.CRYSTAL_PIECE]

        cabaretking = v_player.get_cabaretking_num()

        obj_tradelist = []
        obj_tradelist_use_platinum_piece = []
        obj_tradelist_use_battle_ticket = []
        obj_tradelist_use_crystal_piece = []

        limited_masters = {}  # ストック制限が有るマスター.
        slide_cards = {}  # スライド表示するカード.
        header_img_list = []  # ヘッダ画像.

        for trademaster in tradelist:
            if not BackendApi.check_schedule(model_mgr,
                                             trademaster.schedule,
                                             using=settings.DB_READONLY):
                continue

            if trademaster.stock:
                limited_masters[trademaster.id] = trademaster

            data = self.makeobj(trademaster)
            data['url_tradeyesno'] = self.makeAppLinkUrl(
                UrlMaker.tradeyesno(trademaster.id))
            err_mess = None

            # 最大交換可能数.
            if trademaster.is_used_platinum_piece:
                trade_max = int(platinum_piece_num /
                                trademaster.rate_cabaretking)
            elif trademaster.is_used_battle_ticket:
                trade_max = int(battle_ticket_num /
                                trademaster.rate_cabaretking)
            elif trademaster.is_used_crystal_piece:
                trade_max = int(crystal_piece_num /
                                trademaster.rate_cabaretking)
            else:
                trade_max = int(cabaretking / trademaster.rate_cabaretking)
            data['ori_trade_max'] = trade_max

            if trademaster.itype == Defines.ItemType.CARD and is_cardnum_max:
                err_mess = u'所属キャストが上限に達しています'
            elif trade_max == 0:
                if trademaster.is_used_platinum_piece:
                    err_mess = u'%sが不足しています' % Defines.ItemType.NAMES[
                        Defines.ItemType.PLATINUM_PIECE]
                elif trademaster.is_used_battle_ticket:
                    err_mess = u'%sが不足しています' % Defines.GachaConsumeType.NAMES[
                        Defines.GachaConsumeType.BATTLE_TICKET]
                elif trademaster.is_used_crystal_piece:
                    err_mess = u'%sが不足しています' % Defines.ItemType.NAMES[
                        Defines.ItemType.CRYSTAL_PIECE]
                else:
                    err_mess = u'%sが不足しています' % Defines.ItemType.NAMES[
                        Defines.ItemType.CABARETKING_TREASURE]
            data['err_mess'] = err_mess

            if trademaster.itype == Defines.ItemType.CARD:
                trade_max = min(trade_max, cardrest)
            if Defines.ItemType.TRADE_NUM_MAX.has_key(trademaster.itype):
                trade_max = min(
                    Defines.ItemType.TRADE_NUM_MAX[trademaster.itype],
                    trade_max)
            data['trade_max'] = trade_max

            data['is_used_platinum_piece'] = trademaster.is_used_platinum_piece
            data['is_used_battle_ticket'] = trademaster.is_used_battle_ticket
            data['is_used_crystal_piece'] = trademaster.is_used_crystal_piece
            if trademaster.is_used_platinum_piece:
                obj_tradelist_use_platinum_piece.append(data)
            elif trademaster.is_used_battle_ticket:
                obj_tradelist_use_battle_ticket.append(data)
            elif trademaster.is_used_crystal_piece:
                obj_tradelist_use_crystal_piece.append(data)
            else:
                obj_tradelist.append(data)

            # スライド.
            if trademaster.slidecapture and trademaster.itype == Defines.ItemType.CARD:
                slide_cards[trademaster.itemid] = self.makeAppLinkUrlImg(
                    trademaster.slidecapture)

            if trademaster.header:
                header_img_list.append(
                    self.makeAppLinkUrlImg(trademaster.header))

        playdata_dict = BackendApi.get_tradeplayerdata_dict(
            model_mgr,
            v_player.id,
            limited_masters.keys(),
            using=settings.DB_READONLY)
        self.reflect_use_status(model_mgr, obj_tradelist, limited_masters,
                                playdata_dict)
        self.reflect_use_status(model_mgr, obj_tradelist_use_platinum_piece,
                                limited_masters, playdata_dict)
        self.reflect_use_status(model_mgr, obj_tradelist_use_battle_ticket,
                                limited_masters, playdata_dict)
        self.reflect_use_status(model_mgr, obj_tradelist_use_crystal_piece,
                                limited_masters, playdata_dict)

        # スライド.
        obj_slidelist = []
        if slide_cards:
            cardmasters = BackendApi.get_cardmasters(
                slide_cards.keys(), model_mgr, using=settings.DB_READONLY)
            for cardid, img in slide_cards.items():
                cardmaster = cardmasters.get(cardid)
                if not cardmaster:
                    continue
                obj_slidelist.append((
                    Objects.cardmaster(self, cardmaster),
                    img,
                ))

        self.putFromBackPageLinkUrl()

        self.html_param['player'] = obj_player
        self.html_param['tradelists'] = [
            obj_tradelist_use_crystal_piece,
            obj_tradelist_use_platinum_piece,
            obj_tradelist_use_battle_ticket,
            obj_tradelist,
        ]
        self.html_param['headerlist'] = header_img_list
        self.html_param['slidelist'] = obj_slidelist

        self.putRaidEventParams()

        self.writeAppHtml('trade/trade')
コード例 #11
0
ファイル: detail.py プロジェクト: hitandaway100/caba
    def process(self):
        args = self.getUrlArgs('/albumdetail/')
        try:
            albumid = int(args.get(0, None))
            hklevel = int(self.request.get(Defines.URLQUERY_HKEVEL) or 1)
        except:
            raise CabaretError(u'リクエストが正しくありません',
                               CabaretError.Code.ILLEGAL_ARGS)

        model_mgr = self.getModelMgr()

        # プレイヤー情報.
        v_player = self.getViewerPlayer()
        if not BackendApi.check_album_viewable(
                model_mgr, v_player.id, albumid, using=settings.DB_READONLY):
            if settings_sub.IS_LOCAL:
                raise CabaretError(u'閲覧できません')
            self.appRedirect(self.makeAppLinkUrlRedirect(UrlMaker.album()))
            return

        # カード詳細情報取得.
        cardmasteridlist = BackendApi.get_albumcardmasteridlist(
            model_mgr, albumid, using=settings.DB_READONLY)
        if not cardmasteridlist:
            if settings_sub.IS_LOCAL:
                raise CabaretError(u'閲覧できません')
            self.appRedirect(self.makeAppLinkUrlRedirect(UrlMaker.album()))
            return
        cardmaster_dict = BackendApi.get_cardmasters(
            cardmasteridlist, model_mgr, using=settings.DB_READONLY)
        cardmasteridlist.sort()

        obj_card_list = []
        obj_card = None
        cur_cardmaster = None
        if 1 < len(cardmasteridlist):
            urlbase = UrlMaker.albumdetail(albumid)

            cardacquisitions = BackendApi.get_cardacquisitions(
                model_mgr,
                v_player.id,
                cardmasteridlist,
                using=settings.DB_READONLY)
            for cardmasterid in cardmasteridlist:
                if not cardacquisitions.get(cardmasterid):
                    continue
                cardmaster = cardmaster_dict[cardmasterid]
                obj = Objects.cardmaster(self, cardmaster)
                obj['url'] = self.makeAppLinkUrl(
                    OSAUtil.addQuery(urlbase, Defines.URLQUERY_HKEVEL,
                                     cardmaster.hklevel))
                if obj_card is None or cardmaster.hklevel == hklevel:
                    obj_card = obj
                    cur_cardmaster = cardmaster
                obj_card_list.append(obj)
        self.html_param['cardmasterlist'] = obj_card_list
        self.html_param['cardmaster'] = obj_card

        first_cardmaster = cardmaster_dict[cardmasteridlist[0]]

        if cur_cardmaster is None:
            cardmasterid = first_cardmaster.id
            cur_cardmaster = first_cardmaster
        self.html_param['card'] = BackendApi.make_album_detail(
            self, v_player.id, cur_cardmaster, using=settings.DB_READONLY)

        # 思い出アルバムリストを取得.
        memories_list = []
        movie_list = []
        pcmovie_list = []
        voice_list = []
        for obj_memories in BackendApi.get_album_memories_list(
                self, v_player.id, albumid, using=settings.DB_READONLY):
            if obj_memories['contenttype'] == Defines.MemoryContentType.MOVIE:
                movie_list.append(obj_memories)
            elif obj_memories[
                    'contenttype'] == Defines.MemoryContentType.MOVIE_PC:
                pcmovie_list.append(obj_memories)
            elif obj_memories[
                    'contenttype'] == Defines.MemoryContentType.VOICE:
                voice_list.append(obj_memories)
            else:
                memories_list.append(obj_memories)

        # 異動数.
        if first_cardmaster and CardUtil.checkStockableMaster(
                first_cardmaster, raise_on_error=False):
            stocknum_model = BackendApi.get_cardstock(
                model_mgr,
                v_player.id,
                first_cardmaster.album,
                using=settings.DB_READONLY)
            stocknum = stocknum_model.num if stocknum_model else 0
            self.html_param['stocknum'] = stocknum
            url = UrlMaker.transferreturn(first_cardmaster.id,
                                          v_player.req_confirmkey)
            self.html_param['url_transferreturn'] = self.makeAppLinkUrl(url)
            cardnum = BackendApi.get_cardnum(v_player.id,
                                             model_mgr,
                                             using=settings.DB_READONLY)
            self.html_param['cardnum'] = cardnum
            self.html_param['cardlimit'] = v_player.cardlimit

        self.html_param['memories_list'] = memories_list
        self.html_param['movie_list'] = movie_list
        self.html_param['pcmovie_list'] = pcmovie_list
        self.html_param['voice_list'] = voice_list

        # カード詳細情報.
        self.writeAppHtml('album/detail')