예제 #1
0
    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()
예제 #2
0
 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)
예제 #3
0
    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')