def setUp(self): model_mgr = ModelRequestMgr() # DMMID. self.__player = self.create_dummy(DummyType.PLAYER) self.__player.cardlimititem = 100 self.__player.getModel(PlayerDeck).save() # カード. cardmaster = self.create_dummy(DummyType.CARD_MASTER, maxlevel=10) basecard = self.create_dummy(DummyType.CARD, self.__player, cardmaster) self.__basecard = BackendApi.get_cards([basecard.id], model_mgr)[0] materialcardidlist = [] for _ in xrange(10): cardmaster = self.create_dummy(DummyType.CARD_MASTER, cost=10, basematerialexp=100) materialcardidlist.append( self.create_dummy(DummyType.CARD, self.__player, cardmaster).id) self.__materialcardlist = BackendApi.get_cards(materialcardidlist, model_mgr) self.__player.gold = BackendApi.calc_composition_cost( self.__basecard, self.__materialcardlist) self.__player.getModel(PlayerGold).save() self.__compositiondata = BackendApi.get_compositiondata( model_mgr, self.__player.id) self.__requestkey = self.__player.req_confirmkey exp = BackendApi.calc_composition_exp(self.__basecard, self.__materialcardlist, is_great_success=False) exp_great = BackendApi.calc_composition_exp(self.__basecard, self.__materialcardlist, is_great_success=True) self.create_dummy(DummyType.CARD_LEVEL_EXP_MASTER, 1, 0) self.create_dummy(DummyType.CARD_LEVEL_EXP_MASTER, 2, exp) self.create_dummy(DummyType.CARD_LEVEL_EXP_MASTER, 3, exp_great) BackendApi.get_compositiondata(model_mgr, self.__player.id) BackendApi.tr_composition_do(model_mgr, self.__player.id, self.__basecard.id, materialcardidlist, self.__requestkey) model_mgr.write_all() model_mgr.write_end()
def setUp(self): model_mgr = ModelRequestMgr() # DMMID. self.__player = self.create_dummy(DummyType.PLAYER) self.__player.cardlimititem = 100 self.__player.getModel(PlayerDeck).save() # カード. cardmaster = self.create_dummy(DummyType.CARD_MASTER, maxlevel=10) basecard = self.create_dummy(DummyType.CARD, self.__player, cardmaster) self.__basecard = BackendApi.get_cards([basecard.id], model_mgr)[0] materialcardidlist = [] for _ in xrange(10): cardmaster = self.create_dummy(DummyType.CARD_MASTER, cost=10, basematerialexp=100) materialcardidlist.append(self.create_dummy(DummyType.CARD, self.__player, cardmaster).id) self.__materialcardlist = BackendApi.get_cards(materialcardidlist, model_mgr) self.__player.gold = BackendApi.calc_composition_cost(self.__basecard, self.__materialcardlist) self.__player.getModel(PlayerGold).save() self.__compositiondata = BackendApi.get_compositiondata(model_mgr, self.__player.id) self.__requestkey = self.__player.req_confirmkey exp = BackendApi.calc_composition_exp(self.__basecard, self.__materialcardlist, is_great_success=False) exp_great = BackendApi.calc_composition_exp(self.__basecard, self.__materialcardlist, is_great_success=True) self.create_dummy(DummyType.CARD_LEVEL_EXP_MASTER, 1, 0) self.create_dummy(DummyType.CARD_LEVEL_EXP_MASTER, 2, exp) tmp = self.create_dummy(DummyType.CARD_LEVEL_EXP_MASTER, 3, exp_great) level_min = tmp.level exp_min = tmp.exp for levelexp in model_mgr.get_mastermodel_all(CardLevelExpMster, order_by='level', fetch_deleted=True): if levelexp.level <= level_min: continue elif exp_min < levelexp.exp: break exp_min += 1 levelexp.exp = exp_min levelexp.save() model_mgr.get_mastermodel_all(CardLevelExpMster, order_by='level', fetch_deleted=True, reflesh=True)
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')