Example #1
0
 def process(self):
     # 現在時刻.
     now = OSAUtil.get_now()
     # ModelRequestMgr.
     model_mgr = self.getModelMgr()
     # ユーザ情報.
     v_player = self.getViewerPlayer()
     uid = v_player.id
     # 経営情報.
     scoredata = BackendApi.get_cabaretclub_scoreplayerdata(
         model_mgr, uid, using=settings.DB_READONLY)
     obj_cabaclub_management_info = Objects.cabaclub_management_info(
         self, scoredata)
     # 現在の称号.
     title_playerdata = BackendApi.get_title_playerdata(
         model_mgr, uid, using=settings.DB_READONLY)
     current_title_id = title_playerdata.title if title_playerdata else 0
     obj_title = None
     # 称号一覧.
     titlemaster_list = BackendApi.get_title_master_all(
         model_mgr, using=settings.DB_READONLY)
     obj_titlemaster_list = []
     for titlemaster in titlemaster_list:
         if current_title_id == titlemaster.id and now < (
                 title_playerdata.stime +
                 datetime.timedelta(days=titlemaster.days)):
             obj_title = Objects.title(self, titlemaster, title_playerdata)
         obj_titlemaster_list.append(Objects.titlemaster(self, titlemaster))
     # HTML書き込み.
     self.html_param.update(
         cabaclub_management_info=obj_cabaclub_management_info,
         titlemaster_list=obj_titlemaster_list,
         title=obj_title,
     )
     self.writeAppHtml('title/top')
Example #2
0
    def putRaidEventParams(self, eventmaster=None):
        """レイドイベント用の交換パラメータ.
        """
        model_mgr = self.getModelMgr()
        if eventmaster is None:
            eventmaster = self.getCurrentEventMaster()

        if eventmaster:
            v_player = self.getViewerPlayer()
            uid = v_player.id

            # イベント情報.
            config = BackendApi.get_current_raideventconfig(
                model_mgr, using=settings.DB_READONLY)
            self.html_param['raidevent'] = Objects.raidevent(
                self, eventmaster, config)

            # スコア.
            scorerecord = BackendApi.get_raidevent_scorerecord(
                model_mgr, eventmaster.id, uid, using=settings.DB_READONLY)
            rank = BackendApi.get_raidevent_rank(eventmaster.id, uid)
            self.html_param['raideventscore'] = Objects.raidevent_score(
                eventmaster, scorerecord, rank)

        return eventmaster
Example #3
0
 def getObjPlayerList(self, playerlist):
     obj_list = []
     if playerlist:
         model_mgr = self.getModelMgr()
         
         persons = BackendApi.get_dmmplayers(self, playerlist, using=settings.DB_READONLY, do_execute=False)
         
         self.execute_api()
         
         for player in playerlist:
             
             deck = BackendApi.get_deck(player.id, arg_model_mgr=model_mgr, using=settings.DB_READONLY)
             cardsetlist = BackendApi.get_cards(deck.to_array(), arg_model_mgr=model_mgr, using=settings.DB_READONLY)
             leader = cardsetlist[0]
             
             obj_player = Objects.player(self, player, persons.get(player.dmmid), leader)
             power_total = leader.power
             
             deckmember = []
             for cardset in cardsetlist[1:]:
                 obj_card = Objects.card(self, cardset)
                 power_total += obj_card['power']
                 deckmember.append(obj_card)
             obj_player['deckmember'] = deckmember
             obj_player['power_total'] = power_total
             obj_list.append(obj_player)
     return obj_list
Example #4
0
    def procHappening(self, mid, stagemaster, playdata, event):
        """ハプニング発生.
        """
        model_mgr = self.getModelMgr()
        happeningid = BackendApi.get_current_producehappeningid(
            model_mgr, playdata.uid, using=playdata.current_db, reflesh=True)
        happeningset = BackendApi.get_producehappening(
            model_mgr, happeningid, using=playdata.current_db)
        if happeningset is None:
            if settings_sub.IS_LOCAL:
                raise CabaretError(u'ハプニングが発生していません')
            url = UrlMaker.produceevent_top()
            self.appRedirect(self.makeAppLinkUrlRedirect(url))
            return

        happeningraidset = HappeningRaidSet(happeningset)
        self.html_param['happening'] = Objects.producehappening(
            self, happeningraidset)

        # レイドボス
        raidmaster = BackendApi.get_raid_master(model_mgr,
                                                happeningset.master.boss,
                                                using=settings.DB_READONLY)
        self.html_param['boss'] = Objects.raidmaster(self,
                                                     raidmaster,
                                                     is_produceevent=True)

        self.setFromPage(
            Defines.FromPages.PRODUCEEVENTSCOUT,
            (stagemaster.id, urllib.quote(playdata.confirmkey, '')))
        url = UrlMaker.producehappening()

        self.html_param['url_happening'] = self.makeAppLinkUrl(url)

        self.writeHtml(self.eventmaster, 'scout/happening')
Example #5
0
 def process(self):
     args = self.getUrlArgs('/scoutcardgetresult/')
     try:
         scoutid = int(args.get(0))
     except:
         raise CabaretError(u'引数が想定外です', CabaretError.Code.ILLEGAL_ARGS)
     
     v_player = self.getViewerPlayer()
     model_mgr = self.getModelMgr()
     
     using = settings.DB_READONLY
     
     # 進行情報.
     playdata = BackendApi.get_scoutprogress(model_mgr, v_player.id, [scoutid], using=using).get(scoutid, None)
     target_event = BackendApi.find_scout_event(playdata, Defines.ScoutEventType.GET_CARD)
     
     if target_event is None:
         if settings_sub.IS_LOCAL:
             raise CabaretError(u'女の子を発見していません')
         url = self.makeAppLinkUrlRedirect(UrlMaker.scout())
         self.appRedirect(url)
         return
     elif not target_event.is_received:
         if settings_sub.IS_LOCAL:
             raise CabaretError(u'まだ女の子をスカウトしていません')
         url = self.makeAppLinkUrlRedirect(UrlMaker.scoutresult(scoutid, playdata.alreadykey))
         self.appRedirect(url)
         return
     
     # プレイヤー.
     self.html_param['player'] = Objects.player(self, v_player)
     
     # 獲得したカード.
     cardmaster = BackendApi.get_cardmasters([target_event.card], arg_model_mgr=model_mgr, using=using).get(target_event.card)
     card = BackendApi.create_card_by_master(cardmaster)
     cardset = CardSet(card, cardmaster)
     self.html_param['card'] = Objects.card(self, cardset, is_new=target_event.is_new)
     
     # スカウト.
     arr = BackendApi.get_scouts(model_mgr, [scoutid], using=using)
     scoutmaster = arr[0] if arr else None
     self.html_param['scout'] = self.makeScoutObj(scoutmaster, playdata)
     
     # スカウト結果.
     resultlist = playdata.result.get('result', [])
     self.html_param['scoutresultinfo'] = BackendApi.make_scoutresult_info(resultlist)
     
     # レイドイベント.
     BackendApi.put_raidevent_champagnedata(self, v_player.id)
     
     if target_event.is_success:
         if target_event.autosell:
             # 自動退店.
             self.html_param['autosell'] = target_event.autosell
             self.html_param['_gold_add'] = target_event.sellprice
             self.html_param['_ckt'] = getattr(target_event, 'sellprice_treasure', 0)
         
         self.writeAppHtml('scout/cardgetresult_success')
     else:
         self.writeAppHtml('scout/cardgetresult_failed')
Example #6
0
    def process(self):

        self.__cardlist_all = None
        self.__cardlist = None
        self.__filtered_by_skill_cardlist = None
        self.__skilllist = None

        model_mgr = self.getModelMgr()

        self.loadSortParams()

        # プレイヤー情報.
        v_player = self.getViewerPlayer()
        self.html_param['player'] = Objects.player(self, v_player)

        # カード所持数.
        cardnum = BackendApi.get_cardnum(v_player.id,
                                         model_mgr,
                                         using=settings.DB_READONLY)
        self.html_param['cardnum'] = cardnum

        # カード.
        self.putCardList()

        # スキル一覧.
        skilllist = self.getSkillMasterList()
        self.html_param['skillmasterlist'] = [
            Objects.skillmaster(skill) for skill in skilllist
        ]

        self.writeCompositionHtml('composition/baseselect')
Example #7
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')
Example #8
0
 def process(self):
     args = self.getUrlArgs('/evolutionyesno/')
     try:
         self.__baseid = int(args.get(0))
         self.__materialid = self.getMaterialId()
     except:
         raise CabaretError(u'引数が想定外です', CabaretError.Code.ILLEGAL_ARGS)
     
     v_player = self.getViewerPlayer()
     model_mgr = self.getModelMgr()
     
     # ベースカード.
     basecard = BackendApi.get_cards([self.__baseid], model_mgr, using=settings.DB_READONLY)
     basecard = basecard[0] if len(basecard) else None
     if not self.checkBaseCard(basecard):
         return
     evolmaster = BackendApi.get_evolution_cardmaster(model_mgr, basecard.master, using=settings.DB_READONLY)
     if evolmaster is None:
         raise CabaretError(u'ハメ管理後のキャストが設定されていません.', CabaretError.Code.INVALID_MASTERDATA)
     
     self.html_param['basecard'] = Objects.card(self, basecard)
     self.__basecard = basecard
     
     # プレイヤー情報.
     self.html_param['player'] = Objects.player(self, v_player)
     
     # デッキ情報.
     deck = BackendApi.get_deck(v_player.id, model_mgr, using=settings.DB_READONLY)
     basecard_post = CardSet(basecard.card, evolmaster)
     cost_over, deck_none = BackendApi.check_evol_deckcost(model_mgr, v_player, basecard_post, using=settings.DB_READONLY)
     self.html_param['deckcapacity_over'] = cost_over
     self.html_param['deck_none'] = deck_none
     
     # 素材カード.
     materialcard = BackendApi.get_cards([self.__materialid], model_mgr, using=settings.DB_READONLY)
     materialcard = materialcard[0] if len(materialcard) else None
     if not self.checkMaterialCard(basecard, materialcard, deck):
         return
     self.html_param['materialcard'] = Objects.card(self, materialcard)
     self.__materialcard = materialcard
     
     # 消費ゴールド.
     cost = evolmaster.evolcost
     self.html_param['cost'] = cost
     self.html_param['cost_over'] = v_player.gold < cost
     self.html_param['gold_post'] = v_player.gold - cost
     
     self.html_param['cardnum'] = BackendApi.get_cardnum(v_player.id, model_mgr, using=settings.DB_READONLY)
     
     BackendApi.get_evolutiondata(model_mgr, v_player.id, using=settings.DB_READONLY)
     
     # 書き込みへのURL.
     url = UrlMaker.evolutiondo(self.__baseid, v_player.req_confirmkey)
     self.html_param['url_do'] = self.makeAppLinkUrl(OSAUtil.addQuery(url, Defines.URLQUERY_CARD, self.__materialcard.id))
     
     self.writeAppHtml('evolution/yesno')
Example #9
0
    def proc_BOSS01_PRE(self, area, boss, deckcardlist):
        """ボス戦確認.
        """
        self.html_param['area'] = Objects.area(self, area, None)
        self.html_param['boss'] = Objects.boss(self, boss)
        self.__putBossResultDeck(deckcardlist)
        self.html_param['url_bossbattle'] = self.makeAppLinkUrl(
            self.makeUrlNext())

        self.writeAppHtml('tutorial/boss_tuto2')
Example #10
0
 def putCardInfo(self, o_player):
     """カードの情報.
     """
     model_mgr = self.getModelMgr()
     deck = BackendApi.get_deck(o_player.id, model_mgr, using=settings.DB_READONLY)
     leader = BackendApi.get_cards([deck.leader], model_mgr, using=settings.DB_READONLY)[0]
     # リーダー情報.
     self.html_param['leader'] = Objects.card(self, leader)
     
     cardlist = BackendApi.get_profile_newbie_cardlist(model_mgr, o_player.id, excludes=[deck.leader], using=settings.DB_READONLY)
     self.html_param['newbie_cardlist'] = [Objects.card(self, card) for card in cardlist]
Example #11
0
    def proc_BOSS00_RESULT(self, area, boss, deckcardlist):
        """ボス戦結果 敗北.
        """
        self.html_param['area'] = Objects.area(self, area, None)
        self.html_param['boss'] = Objects.boss(self, boss,
                                               self.__getBossHp(boss, False))
        self.__putBossResultDeck(deckcardlist)
        self.html_param['url_composition_material'] = self.makeAppLinkUrl(
            self.makeUrlNext())

        self.writeAppHtml('boss/bosslose')
Example #12
0
 def putDeck(self):
     """ロードしたデッキを埋め込む.
     """
     if self.__v_deck:
         self.html_param['v_deck'] = [
             Objects.card(self, cardset) for cardset in self.__v_deck
         ]
     if self.__o_deck:
         self.html_param['o_deck'] = [
             Objects.card(self, cardset) for cardset in self.__o_deck
         ]
Example #13
0
    def process(self):

        args = self.getUrlArgs('/raideventexplain/')
        str_eventid = str(args.get(0))
        ope = args.get(1)

        model_mgr = self.getModelMgr()
        eventmaster = None
        mid = None
        if str_eventid.isdigit():
            mid = int(str_eventid)
            eventmaster = BackendApi.get_raideventmaster(
                model_mgr, mid, using=settings.DB_READONLY)

        if eventmaster is None:
            raise CabaretError(u'閲覧できないイベントです', CabaretError.Code.ILLEGAL_ARGS)

        # 開催中判定.
        cur_eventmaster = self.getCurrentRaidEvent(quiet=True)
        if cur_eventmaster and cur_eventmaster.id == mid:
            is_opened = True
        else:
            is_opened = False
        self.html_param['is_opened'] = is_opened

        # イベント情報.
        config = BackendApi.get_current_raideventconfig(
            model_mgr, using=settings.DB_READONLY)
        self.html_param['raidevent'] = Objects.raidevent(
            self, eventmaster, config)

        # スコア.
        v_player = self.getViewerPlayer()
        scorerecord = BackendApi.get_raidevent_scorerecord(
            model_mgr, eventmaster.id, v_player.id, using=settings.DB_READONLY)
        rank = BackendApi.get_raidevent_rank(eventmaster.id, v_player.id)
        self.html_param['raideventscore'] = Objects.raidevent_score(
            eventmaster, scorerecord, rank)

        self.putEventTopic(mid, '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.raidevent_explain(mid, k))
        table.get(ope, self.__proc_detail)(eventmaster, is_opened)
Example #14
0
    def processTutorialCompleted(self):
        """チュートリアル完了済みのユーザー.
        """

        # 課金チェック.
        self.checkPayment()

        # スライドバナー.
        slidebanners = BackendApi.get_topbanners(self,
                                                 using=settings.DB_READONLY)
        if slidebanners:
            obj_slidebanners = []
            for banner in slidebanners:
                obj_banner = Objects.topbanner(self, banner)
                if not obj_banner['is_external_link']:
                    # 外部リンクじゃない時だけにしておく.
                    obj_slidebanners.append(object)
            self.html_param['slidebanners'] = obj_slidebanners

        # イベントバナー.
        self.html_param['groups'] = BackendApi.get_tabeventbanners(
            self, using=settings.DB_READONLY)

        # 更新情報.
        if self.is_pc:
            infomations = BackendApi.get_infomation_all(
                self, using=settings.DB_READONLY)[:20]
            self.html_param['infomations'] = [
                Objects.infomation(self, infomation)
                for infomation in infomations
            ]
        else:
            infomations, _ = BackendApi.get_infomations(
                self, 0, using=settings.DB_READONLY)
            if 0 < len(infomations):
                arr = []
                date_new = None
                for infomation in infomations[:2]:
                    obj = Objects.infomation(self, infomation)
                    date_new = date_new or obj['date']
                    obj['is_new'] = date_new == obj['date']
                    arr.append(obj)
                self.html_param['infomations'] = arr

        url = UrlMaker.mypage()
        self.html_param['url_enter'] = self.makeAppLinkUrl(url)

        #         if settings_sub.IS_LOCAL:
        #             self.html_param['slidebanners'] = [Objects.topbanner(self, topbanner)]
        #             self.html_param['eventbanners'] = [Objects.eventbanner(self, eventbanner)]
        #             self.html_param['infomation'] = [Objects.infomation(self, infomation)]
        # top.html
        self.writeAppHtml('top/top')
Example #15
0
    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')
Example #16
0
 def process(self):
     
     battleplayer = self.getBattlePlayer()
     if battleplayer is None or battleplayer.opponent == 0:
         # 対戦相手設定へ.
         self.redirectToOppSelect()
         return
     
     obj_list = self.getObjPlayerListByID([battleplayer.opponent])
     if not obj_list:
         # これも飛ばしておく.
         self.redirectToOppSelect()
         return
     
     self.setFromPage(Defines.FromPages.BATTLEPRE)
     
     v_player = self.getViewerPlayer()
     
     rankmaster = self.getBattleRankMaster()
     
     self.html_param['o_player'] = obj_list[0]
     
     self.html_param['player'] = Objects.player(self, v_player)
     self.html_param['battleplayer'] = Objects.battleplayer(self, battleplayer, rankmaster)
     
     # 最大ランク.
     model_mgr = self.getModelMgr()
     self.html_param['max_rank'] = BackendApi.get_battlerank_max(model_mgr, using=settings.DB_READONLY)
     
     # 残り対戦相手変更回数.
     self.html_param['opponent_change_restnum'] = BackendApi.get_battle_opponent_change_restcnt(model_mgr, battleplayer, rankmaster, using=settings.DB_READONLY)
     
     # アイテム.
     BackendApi.put_bprecover_uselead_info(self)
     
     # バトル開始URL.
     battleplayer = self.getBattlePlayer()
     url = UrlMaker.battledo(battleplayer.result)
     self.html_param['url_battle_do'] = self.makeAppLinkUrl(url)
     
     # 相手変更URL.
     url = UrlMaker.battleoppselect(battleplayer.change_cnt + 1)
     self.html_param['url_battle_oppselect'] = self.makeAppLinkUrl(url)
     
     # 金の鍵の獲得率.
     self.html_param['goldkey_rate'] = BackendApi.get_battle_goldkey_rate(model_mgr, battleplayer, rankmaster, using=settings.DB_READONLY)
     
     # 書き込み.
     if v_player.get_bp() < rankmaster.bpcost:
         self.writeAppHtml('battle/battleapnone')
     else:
         self.writeAppHtml('battle/battleselect')
Example #17
0
    def proc_SCOUT00_TOP(self, area, scout, scout_cnt):
        """スカウトTop.
        """
        v_player = self.getViewerPlayer(True)

        self.html_param['area'] = Objects.area(self, area, None)

        obj_scout = Objects.scout(self, v_player, scout, scout_cnt, [])
        obj_scout['url_exec'] = self.makeAppLinkUrl(self.makeUrlNext())
        self.html_param['scoutlist'] = [obj_scout]

        self.putPlayerInfo(scout_cnt=scout_cnt)
        self.writeAppHtml('scout/scout')
Example #18
0
    def process(self):
        self.__cardlist = None

        args = self.getUrlArgs('/compositionmaterial/')
        try:
            self.__baseid = int(args.get(0))
        except:
            if settings_sub.IS_LOCAL:
                raise CabaretError(u'引数が想定外です', CabaretError.Code.ILLEGAL_ARGS)
            url = UrlMaker.composition()
            self.appRedirect(self.makeAppLinkUrlRedirect(url))
            return

        v_player = self.getViewerPlayer()
        model_mgr = self.getModelMgr()

        # ベースカード.
        basecard = BackendApi.get_cards([self.__baseid],
                                        model_mgr,
                                        using=settings.DB_READONLY)
        if not basecard or basecard[0].card.uid != v_player.id:
            if settings_sub.IS_LOCAL:
                raise CabaretError(u'不正なキャストです.%d' % self.__baseid)
            url = UrlMaker.composition()
            self.appRedirect(self.makeAppLinkUrlRedirect(url))
            return
        basecard = basecard[0]
        self.html_param['basecard'] = Objects.card(self, basecard)
        self.__basecard = basecard

        self.loadSortParams(
            default_sortby=Defines.CardSortType.RARE,
            default_ckind_type=Defines.CardKind.ListFilterType.ALL_KIND)

        # プレイヤー情報.
        self.html_param['player'] = Objects.player(self, v_player)

        # カード所持数.
        cardnum = BackendApi.get_cardnum(v_player.id,
                                         model_mgr,
                                         using=settings.DB_READONLY)
        self.html_param['cardnum'] = cardnum

        # カード.
        self.putCardList()

        # 確認ページのUrl.
        url = UrlMaker.compositionyesno(self.__baseid)
        self.html_param['url_yesno'] = self.makeAppLinkUrl(url)

        self.writeCompositionHtml('composition/materialselect')
Example #19
0
    def proc_SCOUT00_CARDGET(self, area, scout, scout_cnt):
        """スカウト実行アニメーション(スカウト成功).
        """
        v_player = self.getViewerPlayer(True)
        card = self.getLeaderCard()

        obj_scout = Objects.scout(self, v_player, scout, scout_cnt, [])
        obj_scout['url_exec'] = self.makeAppLinkUrl(self.makeUrlNext())
        self.html_param['scout'] = obj_scout
        self.html_param['card'] = Objects.card(self, card, is_new=True)

        self.putPlayerInfo(scout_cnt=scout_cnt)

        self.writeAppHtml('scout/cardgetresult_success')
Example #20
0
    def process(self):
        v_player = self.getViewerPlayer()
        model_mgr = self.getModelMgr()

        # 合成結果.
        evolutiondata = BackendApi.get_evolutiondata(
            model_mgr, v_player.id, using=settings.DB_READONLY)

        # ベースカード.
        basecardset = BackendApi.get_cards([evolutiondata.result_baseid],
                                           model_mgr,
                                           using=settings.DB_READONLY)
        if not basecardset:
            if settings_sub.IS_LOCAL:
                raise CabaretError(u'ハメ管理したキャストが見つかりません.')
            url = UrlMaker.evolution()
            self.appRedirect(self.makeAppLinkUrlRedirect(url))
            return
        basecardset = basecardset[0]
        self.html_param['basecard_post'] = Objects.card(self, basecardset)

        pre_master = BackendApi.get_cardmasters(
            [evolutiondata.mid], model_mgr,
            using=settings.DB_READONLY).get(evolutiondata.mid)
        if pre_master is None or (pre_master.albumhklevel +
                                  1) != basecardset.master.albumhklevel:
            if settings_sub.IS_LOCAL:
                raise CabaretError(u'ハメ管理前のキャストが見つかりません.')
            url = UrlMaker.evolution()
            self.appRedirect(self.makeAppLinkUrlRedirect(url))
            return
        pre_card = copy(basecardset.card)
        evolutiondata.set_to_card(pre_card)
        pre_cardset = CardSet(pre_card, pre_master)
        self.html_param['basecard_pre'] = Objects.card(self, pre_cardset)

        # 素材カード.
        materialcard = BackendApi.get_cards([evolutiondata.result_materialid],
                                            model_mgr,
                                            using=settings.DB_READONLY,
                                            deleted=True)
        if not materialcard:
            if settings_sub.IS_LOCAL:
                raise CabaretError(u'ハメ管理に使用したキャストが見つかりません.')
            url = UrlMaker.evolution()
            self.appRedirect(self.makeAppLinkUrlRedirect(url))
            return
        self.html_param['materialcard'] = Objects.card(self, materialcard[0])

        self.writeAppHtml('evolution/complete')
Example #21
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)
Example #22
0
    def proc_SCOUT02_RESULT(self, area, scout, scout_cnt):
        """宝箱獲得結果.
        """
        v_player = self.getViewerPlayer(True)

        self.html_param['area'] = Objects.area(self, area, None)
        self.html_param['scout'] = Objects.scout(self, v_player, scout,
                                                 scout_cnt, [])
        self.html_param['url_next'] = self.makeAppLinkUrl(self.makeUrlNext())
        self.html_param['treasure_view'] = Objects.treasure_view(
            self, Defines.TreasureType.SILVER)

        self.putPlayerInfo(scout_cnt=scout_cnt)

        self.writeAppHtml('scout/treasureget')
Example #23
0
    def makeobj(self, trademaster, playerdata=None):
        # model_mgr.
        model_mgr = self.getModelMgr()

        v_player = self.getViewerPlayer()

        presentlist = BackendApi.create_present(model_mgr,
                                                0,
                                                v_player.id,
                                                trademaster.itype,
                                                trademaster.itemid,
                                                trademaster.itemnum,
                                                do_set_save=False)
        presentset = PresentSet.presentToPresentSet(
            model_mgr, [presentlist[0]], using=settings.DB_READONLY)[0]

        obj_trade = Objects.trade(self, trademaster, presentset)
        if playerdata is not None:
            trade_cnt = BackendApi.get_trade_cnt(model_mgr,
                                                 trademaster,
                                                 playerdata,
                                                 using=settings.DB_READONLY)
            obj_trade['trade_cnt'] = trade_cnt

        return obj_trade
Example #24
0
    def proc_SCOUT01_CARDGET(self, area, scout, scout_cnt):
        """スカウト実行アニメーション(スカウト成功).
        """
        model_mgr = self.getModelMgr()
        v_player = self.getViewerPlayer(True)
        card = BackendApi.get_tutorial_scoutdropcard(
            model_mgr, v_player.ptype, using=settings.DB_READONLY)

        obj_scout = Objects.scout(self, v_player, scout, scout_cnt, [])
        obj_scout['url_exec'] = self.makeAppLinkUrl(self.makeUrlNext())
        self.html_param['scout'] = obj_scout
        self.html_param['card'] = Objects.card(self, card, is_new=True)

        self.putPlayerInfo(scout_cnt=scout_cnt)

        self.writeAppHtml('scout/cardgetresult_success')
Example #25
0
    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')
Example #26
0
    def procGetTreasure(self, mid, stagemaster, playdata, event):
        """宝箱発見.
        """
        self.html_param['treasure_view'] = Objects.treasure_view(
            self, event.treasuretype)

        self.writeHtml(self.eventmaster, 'scout/treasureget')
Example #27
0
    def __putCompleteData(self, model_mgr, playdata, stagemaster):

        if 0 < stagemaster.boss and BackendApi.check_event_boss_playable(
                playdata, stagemaster):
            # ボス出現.
            boss = BackendApi.get_boss(model_mgr,
                                       stagemaster.boss,
                                       using=settings.DB_READONLY)
            self.html_param['boss'] = Objects.boss(self, boss)

            self.setFromPage(Defines.FromPages.PRODUCEEVENTSCOUT,
                             stagemaster.id)
            url = UrlMaker.bosspre(stagemaster.id)
            self.html_param['url_bossbattle'] = self.makeAppLinkUrl(url)
        else:
            nextstagemaster = BackendApi.get_produceevent_next_stagemaster(
                model_mgr,
                playdata.mid,
                stagemaster,
                using=settings.DB_READONLY)
            if nextstagemaster and nextstagemaster.stage != stagemaster.stage:
                if nextstagemaster.area == stagemaster.area:
                    self.html_param['next_stage'] = nextstagemaster.name
                else:
                    self.html_param['next_area'] = nextstagemaster.areaname
                url = UrlMaker.produceevent_scoutdo(nextstagemaster.id,
                                                    playdata.confirmkey)
            else:
                url = UrlMaker.produceevent_scoutdo(stagemaster.id,
                                                    playdata.confirmkey)
            self.html_param['url_next'] = self.makeAppLinkUrl(url)
Example #28
0
 def putHelpFriend(self, raidboss):
     """助けを借りるフレンド.
     """
     model_mgr = self.getModelMgr()
     v_player = self.getViewerPlayer()
     
     params = {}
     
     func_put_playerlist = None
     if self.request.get(Defines.URLQUERY_REM) == '1':
         # フレンドを外す.
         BackendApi.cancel_raidhelpcard(v_player.id, raidboss.id)
     else:
         helpleader = self.getSelectedFriendCard(raidboss.id)
         if helpleader:
             func_put_playerlist = self.putPlayerListByLeaderList(raidboss.id, [helpleader])
     
     friend_callopentime = BackendApi.get_raid_callfriend_opentime(v_player.id)
     if friend_callopentime:
         params['friend_call_opentime'] = Objects.timelimit(friend_callopentime)
     else:
         friend_num = BackendApi.get_friend_num(v_player.id, model_mgr, using=settings.DB_READONLY)
         if 0 < friend_num:
             url = UrlMaker.raidfriendselect(raidboss.id)
             params['url_friendselect'] = self.makeAppLinkUrl(url)
     
     # フレンドを外すリンク.
     url = self.request.url.replace(self.url_cgi, '')
     url = OSAUtil.addQuery(url, Defines.URLQUERY_REM, 1)
     params['url_helpfriend_cancel'] = self.makeAppLinkUrl(url)
     
     self.html_param.update(**params)
     
     return func_put_playerlist
Example #29
0
    def process(self):

        v_player = self.getViewerPlayer()
        self.getBattlePlayer(get_instance=True)
        rankmaster = self.getBattleRankMaster()

        self.setFromPage(Defines.FromPages.BATTLE)

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

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

        # 書き込み.
        self.writeAppHtml('battle/battleaprecover')
Example #30
0
    def get_obj_playerlist(self, uidscoresetlist):
        model_mgr = self.getModelMgr()

        obj_playerlist = []

        uidscoreset = dict(uidscoresetlist)
        uidscoreset_keys = uidscoreset.keys()

        playerlist = BackendApi.get_players(self,
                                            uidscoreset_keys,
                                            using=settings.DB_READONLY)
        persons = BackendApi.get_dmmplayers(self,
                                            playerlist,
                                            using=settings.DB_READONLY,
                                            do_execute=False)
        self.execute_api()

        leaders = BackendApi.get_leaders(uidscoreset_keys,
                                         arg_model_mgr=model_mgr,
                                         using=settings.DB_READONLY)

        for player in playerlist:
            obj_player = Objects.player(self, player,
                                        persons.get(player.dmmid),
                                        leaders.get(player.id))
            score, rank = uidscoreset[player.id]
            obj_player['event_score'] = score
            obj_player['event_rank'] = rank
            obj_playerlist.append(obj_player)
        obj_playerlist.sort(key=lambda x: x['event_score'], reverse=True)
        return obj_playerlist