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')
def process(self): v_player = self.getViewerPlayer() model_mgr = self.getModelMgr() # 合成結果. compositiondata = BackendApi.get_compositiondata(model_mgr, v_player.id, using=settings.DB_READONLY) # ベースカード. basecardset = BackendApi.get_cards([compositiondata.result_baseid], model_mgr, using=settings.DB_READONLY) if not basecardset or basecardset[0].card.mid != compositiondata.mid: if settings_sub.IS_LOCAL: raise CabaretError(u'教育したキャストが見つかりません.') url = UrlMaker.composition() self.appRedirect(self.makeAppLinkUrlRedirect(url)) return basecardset = basecardset[0] # 素材カード. materialcardsetlist = BackendApi.get_cards(compositiondata.result_materialidlist, model_mgr, using=settings.DB_READONLY, deleted=True) exp_pre = compositiondata.result_exp_pre exp_add = compositiondata.result_exp level_pre = compositiondata.result_lvpre level_add = compositiondata.result_lvup skilllevelup = compositiondata.result_skilllvup is_great_success = compositiondata.result_flag_great_success params = BackendApi.make_composition_effectparams(self, basecardset, materialcardsetlist, exp_pre, exp_add, level_pre, level_add, skilllevelup, is_great_success) # 結果へのURL. url = UrlMaker.compositionresult() params['backUrl'] = self.makeAppLinkUrl(url) self.appRedirectToEffect('education/effect.html', params)
def process(self): args = self.getUrlArgs('/compositiondo/') try: if settings_sub.IS_BENCH: requestkey = OSAUtil.makeSessionID() else: self.__baseid = int(args.get(0)) self.__materialidlist = self.getMaterialIdList() requestkey = urllib.unquote(args.get(1)) except: raise CabaretError(u'引数が想定外です', CabaretError.Code.ILLEGAL_ARGS) v_player = self.getViewerPlayer() try: model_mgr = db_util.run_in_transaction(Handler.tr_write, v_player.id, self.__baseid, self.__materialidlist, requestkey) model_mgr.write_end() except CabaretError, e: if e.code == CabaretError.Code.ALREADY_RECEIVED: pass else: if settings_sub.IS_LOCAL: raise CabaretError(u'合成できませんでした.%s' % CabaretError.getCodeString(e.code)) url = UrlMaker.composition() self.appRedirect(self.makeAppLinkUrlRedirect(url)) return
def makeUrlSelf(self): return UrlMaker.composition()
def process(self): v_player = self.getViewerPlayer() model_mgr = self.getModelMgr() # 合成結果. compositiondata = BackendApi.get_compositiondata( model_mgr, v_player.id, using=settings.DB_READONLY) # ベースカード. basecardset = BackendApi.get_cards([compositiondata.result_baseid], model_mgr, using=settings.DB_READONLY) if not basecardset or basecardset[0].card.mid != compositiondata.mid: if settings_sub.IS_LOCAL: raise CabaretError(u'教育したキャストが見つかりません.') url = UrlMaker.composition() self.appRedirect(self.makeAppLinkUrlRedirect(url)) return basecardset = basecardset[0] self.html_param['basecard_post'] = Objects.card(self, basecardset) compositiondata.set_to_card(basecardset.card) self.html_param['basecard_pre'] = Objects.card(self, basecardset) # 素材カード. materialcardsetlist = BackendApi.get_cards( compositiondata.result_materialidlist, model_mgr, using=settings.DB_READONLY, deleted=True) self.html_param['cardlist'] = [ Objects.card(self, cardset) for cardset in materialcardsetlist ] # 経験値とレベル. self.html_param['exp'] = compositiondata.result_exp self.html_param['levelup'] = compositiondata.result_lvup # お金. self.html_param['cost'] = compositiondata.result_cost_gold # スキル. self.html_param['skilllevelup'] = compositiondata.result_skilllvup # 成功 or 大成功. self.html_param[ 'is_great_success'] = compositiondata.result_flag_great_success # 上昇値. level_pre = compositiondata.result_lvpre level_add = compositiondata.result_lvup power_add = 0 if 0 < level_add: basemaster = basecardset.master pow_pre = CardUtil.calcPower(basemaster.gtype, basemaster.basepower, basemaster.maxpower, level_pre, basemaster.maxlevel, basecardset.card.takeover) pow_post = CardUtil.calcPower(basemaster.gtype, basemaster.basepower, basemaster.maxpower, level_pre + level_add, basemaster.maxlevel, basecardset.card.takeover) power_add = pow_post - pow_pre self.html_param['power_add'] = power_add self.html_param['level_add'] = level_add self.html_param['skilllevel_add'] = compositiondata.result_skilllvup # 続けて合成のURL. url = UrlMaker.compositionmaterial(basecardset.id) self.html_param['url_continue'] = self.makeAppLinkUrl(url) self.writeAppHtml('composition/complete')
def __makePrizeGetLinkParamComposition(self, itype, iid): return self.__makePrizeGetLinkParam(UrlMaker.composition(), u'教育する')
def process(self): self.__include_rare = False args = self.getUrlArgs('/compositionyesno/') try: self.__baseid = int(args.get(0)) self.__materialidlist = self.getMaterialIdList() 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.loadSortParams() # プレイヤー情報. self.html_param['player'] = Objects.player(self, v_player) # カード. self.putCardList() if not self._put_cardlist: if settings_sub.IS_LOCAL: raise CabaretError(u'素材が選ばれていません') url = UrlMaker.composition() self.appRedirect(self.makeAppLinkUrlRedirect(url)) return card_masters = { m.master for m in self._put_cardlist if m.master.ckind == Defines.CardKind.SKILL } is_not_skillup = False for card_master in card_masters: if card_master.id != Defines.MasterData.TIARA_ID and card_master.rare < basecard.master.rare: is_not_skillup = True break self.html_param['not_skillup'] = is_not_skillup # 消費ゴールド. cost = BackendApi.calc_composition_cost(basecard, self._put_cardlist) 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) # 書き込みへのURL. str_cardidlist = ','.join( [str(cardset.card.id) for cardset in self._put_cardlist]) url = UrlMaker.compositiondo(self.__baseid, v_player.req_confirmkey) self.html_param['url_do'] = self.makeAppLinkUrl( OSAUtil.addQuery(url, Defines.URLQUERY_CARD, str_cardidlist)) self.html_param['flag_include_rare'] = self.__include_rare self.writeAppHtml('composition/yesno')
def _getJumpUrlServiceLevel(self, missionmaster): return UrlMaker.composition()
def _getJumpUrlDoComposition(self, missionmaster): return UrlMaker.composition()