Пример #1
0
 def process(self):
     # 現在時刻.
     self.__now = OSAUtil.get_now()
     # ModelRequestMgr.
     model_mgr = self.getModelMgr()
     # ユーザ情報.
     v_player = self.getViewerPlayer()
     uid = v_player.id
     # 店舗のマスターデータ.
     args = self.getUrlArgs('/cabaclubcastselect/')
     mid = args.getInt(0)
     master = None
     if mid:
         master = BackendApi.get_cabaretclub_store_master(
             model_mgr, mid, using=settings.DB_READONLY)
     if master is None:
         self.appRedirect(
             self.makeAppLinkUrlRedirect(UrlMaker.cabaclubtop()))
         return
     self.__mid = master.id
     # 削除するID.
     cardid = args.getInt(1)
     card = None
     obj_card = None
     if cardid:
         cardlist = BackendApi.get_cards([cardid],
                                         model_mgr,
                                         using=settings.DB_READONLY)
         if not cardlist or cardlist[0].card.uid != uid:
             # カードの指定おかしい.
             self.appRedirect(
                 self.makeAppLinkUrlRedirect(UrlMaker.cabaclubstore(mid)))
             return
         card = cardlist[0]
         obj_card = Objects.card(self, card)
         obj_card['url_remove'] = self.makeAppLinkUrl(
             UrlMaker.cabaclubcastremove(mid, cardid))
     self.__cardid = cardid or 0
     # 絞り込みのパラメータ.
     self.loadSortParams(default_sortby=Defines.CardSortType.COST_REV,
                         default_ckind_type=Defines.CardKind.NORMAL,
                         default_maxrare=Defines.Rarity.LIST[-1])
     # カード情報埋め込み.
     self.putCardList()
     # HTML書き出し.
     self.html_param.update(
         current_card=obj_card,
         url_store=self.makeAppLinkUrl(UrlMaker.cabaclubstore(mid)),
     )
     self.writeBoxHtml('cabaclub/castselect')
Пример #2
0
    def __process_store(self, cabaclub_store_set):
        """店舗画面.
        """
        uid = cabaclub_store_set.playerdata.uid
        store_mid = cabaclub_store_set.master.id
        if cabaclub_store_set.playerdata.is_open and cabaclub_store_set.get_current_eventmaster(
                self.__now):
            # 最後に閲覧した時間.
            data = CabaClubRecentlyViewedTime.get(uid, store_mid)
            if data and data.vtime < cabaclub_store_set.playerdata.etime:
                # 前回見たのがイベント発生前.
                self.appRedirect(
                    self.makeAppLinkUrlRedirect(
                        UrlMaker.cabaclubeventanim(store_mid)))
                return
        # 店舗情報.
        obj_cabaclubstore = Objects.cabaclubstore(self, cabaclub_store_set,
                                                  self.__now)
        # アイテム.
        obj_cabaclubitemdata = Objects.cabaclubitemdata(
            self, cabaclub_store_set, self.__now)
        # 配置されているキャスト.
        cardlist = self.getStoreCastList(store_mid)

        # 経営スキル
        cardlist_has_skill = BackendApi.filter_has_cabaclubskill(cardlist)
        cabaclub_skills = Counter()
        if cardlist_has_skill:
            for card in cardlist_has_skill:
                skill = card.master.getSkill()
                cabaclub_skills[skill.name] += 1
        self.html_param['cabaclub_skills'] = cabaclub_skills

        obj_cardlist = []
        for card in cardlist:
            obj_card = Objects.card(self, card)
            obj_card['url_change'] = self.makeAppLinkUrl(
                UrlMaker.cabaclubcastselect(store_mid, card.id))
            obj_card['url_remove'] = self.makeAppLinkUrl(
                UrlMaker.cabaclubcastremove(store_mid, card.id))
            obj_cardlist.append(obj_card)
        # キャスト追加リンク.
        url_addmember = None
        if len(cardlist) < cabaclub_store_set.master.cast_num_max:
            url_addmember = self.makeAppLinkUrl(
                UrlMaker.cabaclubcastselect(store_mid))

        # 店舗に設定可能なキャストを習得する
        setable_cardlist = BackendApi.get_cabaclub_setable_cardlist(
            self.getModelMgr(), uid, self.__now, using=settings.DB_READONLY)

        # HTML書き込み.
        url = UrlMaker.cabaclubdeckselect(self.__mid)
        self.html_param.update(
            cabaclubstore=obj_cabaclubstore,
            cabaclubitemdata=obj_cabaclubitemdata,
            cardlist=obj_cardlist,
            url_addmember=url_addmember,
            ctype=self.__ctype,
            cast_set=True if cardlist else False,
            cast_add=True if setable_cardlist else False,
            url_cabaclub_deckselect_add=self.makeAppLinkUrl(url),
            url_cabaclub_deckselect_remove=self.makeAppLinkUrl(
                OSAUtil.addQuery(url, Defines.URLQUERY_REM, 'rem')),
        )
        if cabaclub_store_set.playerdata.is_open:
            # 閲覧時間の更新.
            CabaClubRecentlyViewedTime.create(uid, store_mid,
                                              self.__now).save()
            self.writeAppHtml('cabaclub/store_opened')
        else:
            # 使用できるアイテム.
            self.setFromPage(Defines.FromPages.CABACLUB_STORE, store_mid)
            BackendApi.put_cabaclubitem_uselead_info(self, cabaclub_store_set,
                                                     self.__now)
            self.writeAppHtml('cabaclub/store_closed')