예제 #1
0
    def process(self):
        args = self.getUrlArgs('/item_usecomplete/')
        try:
            mid = int(args.get(0, 0))
            errcode = int(args.get(1, 0))
            before_num = int(args.get(2, 0))
            after_num = int(args.get(3, 0))
            difference_value = int(args.get(5, 0)) - int(args.get(4, 0))
        except:
            raise CabaretError(u'リクエストが正しくありません',
                               CabaretError.Code.ILLEGAL_ARGS)

        is_duplicate = False
        is_not_enough = False
        is_overlimit = False
        is_error = True

        if errcode == CabaretError.Code.OK:
            is_error = False
        elif errcode == CabaretError.Code.ALREADY_RECEIVED:
            is_duplicate = True
        elif errcode == CabaretError.Code.NOT_ENOUGH:
            is_not_enough = True
        elif errcode == CabaretError.Code.OVER_LIMIT:
            is_overlimit = True

        self.html_param['mid'] = mid
        self.html_param['is_error'] = is_error
        self.html_param['is_duplicate'] = is_duplicate
        self.html_param['is_not_enough'] = is_not_enough
        self.html_param['before_num'] = before_num
        self.html_param['after_num'] = after_num
        self.html_param['difference_value'] = difference_value
        self.html_param['is_overlimit'] = is_overlimit

        self.putFromBackPageLinkUrl()

        # 使用するアイテム情報.
        model_mgr = self.getModelMgr()
        master = BackendApi.get_itemmaster(model_mgr,
                                           mid,
                                           using=settings.DB_READONLY)
        self.html_param['item'] = Objects.item(self, master, after_num)

        self.writeAppHtml('item/usecomplete')
예제 #2
0
    def process(self):
        args = self.getUrlArgs('/item_useyesno/')
        try:
            mid = int(args.get(0))
            use_num = int(self.request.get(Defines.URLQUERY_NUMBER, 1))
            if use_num < 1:
                raise CabaretError()
        except:
            raise CabaretError(u'リクエストが正しくありません',
                               CabaretError.Code.ILLEGAL_ARGS)

        model_mgr = self.getModelMgr()
        v_player = self.getViewerPlayer()
        # 使用するアイテム情報.
        num = BackendApi.get_item_nums(model_mgr,
                                       v_player.id, [mid],
                                       using=settings.DB_READONLY).get(mid, 0)
        if num < 1:
            # 手に入れたことすらない.
            if settings_sub.IS_LOCAL:
                raise CabaretError(u'リクエストが正しくありません',
                                   CabaretError.Code.ILLEGAL_ARGS)
            url = UrlMaker.itemlist()
            self.appRedirect(self.makeAppLinkUrlRedirect(url))
            return

        master = BackendApi.get_itemmaster(model_mgr,
                                           mid,
                                           using=settings.DB_READONLY)
        self.html_param['item'] = Objects.item(self, master, num)
        self.html_param['use_num'] = use_num

        if num < use_num:
            self.html_param['is_not_enough'] = True
        elif mid in Defines.ItemEffect.ACTION_RECOVERY_ITEMS:
            if v_player.get_ap() == v_player.get_ap_max():
                self.html_param['is_overlimit'] = True
        # テンション全回復.
        elif mid in Defines.ItemEffect.TENSION_RECOVERY_ITEMS:
            if v_player.get_bp() == v_player.get_bp_max():
                self.html_param['is_overlimit'] = True

        elif mid == Defines.ItemEffect.CARD_BOX_EXPANSION:
            if Defines.CARDLIMITITEM_MAX < (v_player.cardlimititem +
                                            master.evalue):
                self.html_param['is_overlimit'] = True
        elif mid in Defines.ItemEffect.SCOUT_GUM_ITEMS:
            eventmaster = BackendApi.get_current_scouteventmaster(
                model_mgr, using=settings.DB_READONLY)
            if eventmaster is None:
                self.html_param['is_noevent'] = True
            else:
                playdata = BackendApi.get_event_playdata(
                    model_mgr,
                    eventmaster.id,
                    v_player.id,
                    using=settings.DB_READONLY)
                now = OSAUtil.get_now()
                if now <= playdata.feveretime:
                    self.html_param['is_fever'] = True
        elif mid == Defines.ItemEffect.CABACLUB_SCOUTMAN:
            # 店舗.
            cabaclubstoremaster = None
            if Defines.FromPages.CABACLUB_STORE == self.getFromPageName():
                args = self.getFromPageArgs()
                if args:
                    cabaclubstoremaster = BackendApi.get_cabaretclub_store_master(
                        model_mgr, int(args[0]), using=settings.DB_READONLY)
            if cabaclubstoremaster is None:
                raise CabaretError(u'店舗が存在しません',
                                   CabaretError.Code.ILLEGAL_ARGS)
            playerdata = BackendApi.get_cabaretclub_storeplayerdata(
                model_mgr,
                v_player.id,
                cabaclubstoremaster.id,
                using=settings.DB_READONLY)
            storeset = CabaclubStoreSet(cabaclubstoremaster, playerdata)
            if not storeset.is_alive(OSAUtil.get_now()):
                self.appRedirect(
                    self.makeAppLinkUrlRedirect(
                        UrlMaker.cabaclubstore(cabaclubstoremaster.id)))
                return
            # 使用可能にする.
            self.html_param['item']['master']['useable'] = True
            # 残りを確認.
            rest = cabaclubstoremaster.scoutman_add_max - storeset.playerdata.scoutman_add
            if rest < (master.evalue * use_num):
                self.html_param['is_overlimit'] = True
        elif mid == Defines.ItemEffect.CABACLUB_PREFERENTIAL:
            itemdata = BackendApi.get_cabaretclub_item_playerdata(
                model_mgr, v_player.id, using=settings.DB_READONLY)
            storeset = CabaclubStoreSet(None, None, itemdata=itemdata)
            if storeset.get_current_preferential_item_id(
                    OSAUtil.get_now()) == mid:
                self.html_param['is_overlimit'] = True
        elif mid == Defines.ItemEffect.CABACLUB_BARRIER:
            itemdata = BackendApi.get_cabaretclub_item_playerdata(
                model_mgr, v_player.id, using=settings.DB_READONLY)
            storeset = CabaclubStoreSet(None, None, itemdata=itemdata)
            if storeset.get_current_barrier_item_id(OSAUtil.get_now()) == mid:
                self.html_param['is_overlimit'] = True

        # アイテム結果URLを取得.


#        url = OSAUtil.addQuery(UrlMaker.item_use(mid, num), Defines.URLQUERY_NUMBER, use_num)
        url = OSAUtil.addQuery(
            UrlMaker.item_use2(mid, v_player.req_confirmkey),
            Defines.URLQUERY_NUMBER, use_num)
        self.html_param['url_use'] = self.makeAppLinkUrl(url)

        self.putFromBackPageLinkUrl()

        if mid in Defines.ItemEffect.SCOUT_GUM_ITEMS:
            eventmaster = BackendApi.get_current_scouteventmaster(
                model_mgr, using=settings.DB_READONLY)
            if eventmaster is not None:
                self.html_param[
                    'url_scoutevent_scouttop'] = self.makeAppLinkUrl(
                        UrlMaker.scoutevent())

        self.writeAppHtml('item/useyesno')