示例#1
0
 def tr():
     model_mgr = ModelRequestMgr()
     playerfriend = model_mgr.get_model(PlayerFriend, v_player.id)
     playerfriend.friendnum = friend_num
     model_mgr.set_save(playerfriend)
     model_mgr.write_all()
     return model_mgr, playerfriend
示例#2
0
    def update_from_json(jsonstr):
        """JSONからマスターデータに保存.
        """
        data = Json.decode(jsonstr)

        model_mgr = ModelRequestMgr()
        modellist = []
        for cls_id in xrange(MasterData.MASTER_NUM_MAX):
            model_cls = MasterData.CLASSES.get(cls_id)
            if model_cls is None:
                raise CabaretError("Not Found:%d" % cls_id,
                                   CabaretError.Code.INVALID_MASTERDATA)

            clsname = model_cls.__name__
            arr = data.get(clsname) or []

            for dic in arr:
                ins = model_cls()
                for k, v in dic.items():
                    setattr(ins, k, v)
                model_mgr.set_save(ins)
                modellist.append(ins)

        def tr():
            model_mgr.write_all()

        db_util.run_in_transaction_custom_retries(0, tr)
        model_mgr.write_end()

        MasterData.incrementEditCacheVersion()

        return modellist
示例#3
0
 def tr():
     model_mgr = ModelRequestMgr()
     appconfig = BackendApi.get_appconfig(model_mgr, using=settings.DB_DEFAULT)
     appconfig.master += 1
     model_mgr.set_save(appconfig)
     model_mgr.write_all()
     return model_mgr, appconfig
示例#4
0
    def setUp(self):
        # DMMID.
        self.__player = self.create_dummy(DummyType.PLAYER)

        model_mgr = ModelRequestMgr()
        protects = []
        for _ in xrange(5):
            cardmaster = self.create_dummy(DummyType.CARD_MASTER)
            card = self.create_dummy(DummyType.CARD, self.__player, cardmaster)
            card.protection = True
            model_mgr.set_save(card)
            protects.append(card.id)

        not_protects = []
        for _ in xrange(5):
            cardmaster = self.create_dummy(DummyType.CARD_MASTER)
            card = self.create_dummy(DummyType.CARD, self.__player, cardmaster)
            card.protection = False
            model_mgr.set_save(card)
            not_protects.append(card.id)

        model_mgr.write_all()
        model_mgr.write_end()

        self.__protects = protects
        self.__not_protects = not_protects
 def tr_prezent(self, uid, prizelist, data, userlog, text):
     model_mgr = ModelRequestMgr()
     model_mgr.set_save(data)
     model_mgr.set_save(userlog)
     BackendApi.tr_add_prize(model_mgr, uid, prizelist, text)
     model_mgr.write_all()
     model_mgr.write_end()
示例#6
0
 def finish(self):
     model_mgr = ModelRequestMgr()
     config = BackendApi.get_current_scouteventconfig(model_mgr)
     config.mid = self.__preconfig_mid
     model_mgr.set_save(config)
     model_mgr.write_all()
     model_mgr.write_end()
示例#7
0
 def tr_send_point(uid, starttime):
     """名誉ポイントの配布.
     """
     model_mgr = ModelRequestMgr()
     scoredata_weekly = CabaClubScorePlayerDataWeekly.getByKeyForUpdate(
         CabaClubScorePlayerDataWeekly.makeID(
             uid, starttime))
     if scoredata_weekly is None or scoredata_weekly.flag_aggregate:
         return 0
     # 配布する数を計算.
     cabaclub_honor = int(
         math.ceil(scoredata_weekly.proceeds / 1000.0))
     if 0 < cabaclub_honor:
         # 報酬付与.
         prizedata = PrizeData.create(
             cabaclub_honor=cabaclub_honor)
         BackendApi.tr_add_prize(
             model_mgr, uid, [prizedata],
             Defines.TextMasterID.CABARETCLUB_WEEKLY_PRIZE)
     # 重複防止.
     scoredata_weekly.flag_aggregate = True
     model_mgr.set_save(scoredata_weekly)
     model_mgr.write_all()
     model_mgr.write_end()
     return cabaclub_honor
示例#8
0
    def tr_write_pc(name, mp4_name, filepath, weblist, edittime=None):
        """マスターデータ書き込み(PC用).
        """
        model_mgr = ModelRequestMgr()
        exists_masterdata = PcMoviePlayList.getValues(
            ['id'], filters={'filename': mp4_name})
        if exists_masterdata:
            master = PcMoviePlayList.getByKeyForUpdate(exists_masterdata.id)
        else:
            master = PcMoviePlayList()
            master.filename = mp4_name

        master.name = name
        master.edittime = edittime or OSAUtil.get_now()
        model_mgr.set_save(master)

        model_mgr.write_all()

        if settings_sub_props.ENVIRONMENT_TYPE != settings_sub_props.EnvironmentType.MANAGER:
            errlog = MovieUtil.distribute_wowza(master.filename)
            if errlog:
                raise CabaretError(errlog)
            if weblist:
                errlog = MovieUtil.distribute_pc(master.filename, weblist,
                                                 settings_sub.SERVER_PASS)
                if errlog:
                    raise CabaretError(errlog)

        return model_mgr
示例#9
0
    def __tr_send_wholeprize(self, uid, queuelist, rankingmaster_dict,
                             win_boxidlist, close_model_boxid):
        close_model = RankingGachaClose.getByKeyForUpdate(close_model_boxid)
        if uid <= close_model.prize_flag_whole:
            raise CabaretError(u'整合が取れていないので終了します(総計)')

        model_mgr = ModelRequestMgr()
        # 受け取っていない報酬.
        if queuelist:
            BackendApi.tr_rankinggacha_receive_wholeprize(
                model_mgr, uid, queuelist, rankingmaster_dict)

        # 勝利報酬.
        for win_boxid in win_boxidlist:
            master = rankingmaster_dict[win_boxid]
            textid = master.wholewinprize_text
            prizelist = BackendApi.get_prizelist(model_mgr,
                                                 master.wholewinprizes)
            if prizelist:
                BackendApi.tr_add_prize(model_mgr, uid, prizelist, textid)

        close_model.prize_flag_whole = uid
        model_mgr.set_save(close_model)

        model_mgr.write_all()

        return model_mgr, close_model
示例#10
0
 def finish(self):
     model_mgr = ModelRequestMgr()
     config = BackendApi.get_current_raideventconfig(model_mgr)
     config.endtime = self.__preconfig_endtime
     model_mgr.set_save(config)
     model_mgr.write_all()
     model_mgr.write_end()
示例#11
0
                    def tr(tip_prize_flag):
                        model_mgr = ModelRequestMgr()
                        config = CurrentScoutEventConfig.getByKeyForUpdate(
                            CurrentScoutEventConfig.SINGLE_ID)
                        if config.tip_prize_flag != tip_prize_flag:
                            raise CabaretError(u'整合が取れていないので終了します')

                        uid_max = 0
                        for data in records:
                            uid = data[0]
                            # 報酬付与.
                            for idx, number in enumerate(winner):
                                # 短冊のマスター.
                                tanzakumaster = tanzakumaster_dict[number]
                                # 規定チップを満たしているかを確認.
                                if max(1,
                                       tanzakumaster.tip_quota) <= data[idx +
                                                                        1]:
                                    BackendApi.tr_add_prize(
                                        model_mgr, uid, prize_dict[number],
                                        tanzakumaster.prize_text)
                            uid_max = max(uid_max, uid)

                        config.tip_prize_flag = uid_max
                        model_mgr.set_save(config)
                        model_mgr.write_all()
                        return model_mgr, config
示例#12
0
 def tr_write_buydata(uid, mid):
     """購入情報がないので用意.
     """
     model_mgr = ModelRequestMgr()
     ins = ShopItemBuyData.makeInstance(ShopItemBuyData.makeID(uid, mid))
     model_mgr.set_save(ins)
     model_mgr.write_all()
     return model_mgr    
示例#13
0
 def tr_write(self, users):
     model_mgr = ModelRequestMgr()
     for user in users:
         ins = GachaBoxResetPlayerData.makeInstance(user.id)
         ins.is_get_targetrarity = True
         model_mgr.set_save(ins)
     model_mgr.write_all()
     model_mgr.write_end()
示例#14
0
 def tr(codelist, mid):
     model_mgr = ModelRequestMgr()
     for code in codelist:
         model = SerialCode()
         model.serial = code
         model.mid = mid
         model_mgr.set_save(model)
     model_mgr.write_all()
     return model_mgr
示例#15
0
    def tr_write_regist(self, uid, ptype, is_set_conversion):
        model_mgr = ModelRequestMgr()
        BackendApi.tr_regist_player(model_mgr, uid, ptype)

        player_dxp = PlayerDXPWallConversion.makeInstance(uid)
        player_dxp.is_set_conversion = is_set_conversion
        model_mgr.set_save(player_dxp)

        model_mgr.write_all()
        return model_mgr
示例#16
0
 def finish(self):
     model_mgr = ModelRequestMgr()
     config = BackendApi.get_current_scouteventconfig(model_mgr)
     config.mid = self.__preconfig_mid
     config.starttime = self.__preconfig_starttime
     config.endtime = self.__preconfig_endtime
     config.epilogue_endtime = self.__preconfig_epetime
     model_mgr.set_save(config)
     model_mgr.write_all()
     model_mgr.write_end()
示例#17
0
    def tr_write(self, userdata, tradecount_data):
        model_mgr = ModelRequestMgr()
        if userdata is not None:
            model_mgr.set_save(userdata)

        for key, value in tradecount_data.iteritems():
            if value is None:
                model_mgr.set_save(TradeShopPlayerData.createInstance(key))
        model_mgr.write_all()
        return model_mgr
示例#18
0
 def finish(self):
     model_mgr = ModelRequestMgr()
     config = BackendApi.get_current_raideventconfig(model_mgr)
     config.mid = self.__preconfig_mid
     config.starttime = self.__preconfig_starttime
     config.endtime = self.__preconfig_endtime
     config.timebonus_time = self.__preconfig_timebonus
     model_mgr.set_save(config)
     model_mgr.write_all()
     model_mgr.write_end()
示例#19
0
 def tr():
     model_mgr = ModelRequestMgr()
     for ticket in tickets:
         if ticket.num == 0:
             continue
         print 'mid: {}, num: {} => 0'.format(ticket.mid, ticket.num)
         ticket.num = 0
         model_mgr.set_save(ticket)
     model_mgr.write_all()
     model_mgr.write_end()
     return model_mgr
示例#20
0
 def tr_write(self, uid, scoredata_weekly_id):
     """閲覧フラグの更新.
     """
     model_mgr = ModelRequestMgr()
     ins = model_mgr.get_model_forupdate(CabaClubScorePlayerDataWeekly,
                                         scoredata_weekly_id)
     ins.view_result = True
     model_mgr.set_save(ins, ['view_result'])
     model_mgr.write_all()
     model_mgr.write_end()
     return ins
示例#21
0
    def __checkLevelUpBonus_tr_write(self, prizelistdata, levelup_bonus_logs, playerdata):
        model_mgr = ModelRequestMgr()

        for prizelist_data in prizelistdata:
            BackendApi.tr_add_prize(model_mgr, playerdata.uid, prizelist_data.prizelist, prizelist_data.text)
        for levelup_prize_log in levelup_bonus_logs:
            model_mgr.set_save(levelup_prize_log)
        model_mgr.set_save(playerdata)

        model_mgr.write_all()
        model_mgr.write_end()
示例#22
0
 def tr_write_playdata(uid, midlist):
     """プレイ情報がないので用意.
     """
     playdatas = {}
     model_mgr = ModelRequestMgr()
     for mid in midlist:
         ins = GachaPlayData.makeInstance(GachaPlayData.makeID(uid, mid))
         model_mgr.set_save(ins)
         playdatas[mid] = ins
     model_mgr.write_all()
     return model_mgr, playdatas
示例#23
0
 def tr():
     model_mgr = ModelRequestMgr()
     performance_result = ScoutEventCastPerformanceResult.makeInstance(
         eventmaster.id)
     for idx, tanzakumaster in enumerate(tanzakumaster_list):
         tip = record[idx]
         setattr(performance_result,
                 'tip_{}'.format(tanzakumaster.number), tip)
     model_mgr.set_save(performance_result)
     model_mgr.write_all()
     return model_mgr, performance_result
示例#24
0
 def tr(model_cls, uid, status_table):
     model_mgr = ModelRequestMgr()
     for k, v in status_table.items():
         key = model_cls.makeID(uid, k)
         model = model_mgr.get_model(model_cls, key, get_instance=True)
         if model.status != v:
             model.status = v
             if model.status == Defines.PromotionStatus.RECEIVED:
                 model.rtime = OSAUtil.get_now()
             model_mgr.set_save(model)
     model_mgr.write_all()
     return model_mgr
示例#25
0
    def set_scoutevent_close(self):
        if self.__config_pre is None:
            return

        model_mgr = ModelRequestMgr()
        config = BackendApi.get_current_scouteventconfig(model_mgr)

        for k, v in self.__config_pre.items():
            setattr(config, k, v)

        model_mgr.set_save(config)
        model_mgr.write_all()
        model_mgr.write_end()
 def tr(rows):
     model_mgr = ModelRequestMgr()
     
     for row in rows:
         key = LevelUpBonusPlayerData.makeID(int(row[0]), Defines.LEVELUP_BONUS_VERSION)
         playerdata = model_mgr.get_model(LevelUpBonusPlayerData, key)
         if not playerdata:
             print "irregular user {}".format(row[0])
         else:
             playerdata.last_prize_level = row[1]
             model_mgr.set_save(playerdata)
     model_mgr.write_all()
     model_mgr.write_end()
示例#27
0
 def tr():
     model_mgr = ModelRequestMgr()
     config = CurrentScoutEventConfig.getByKeyForUpdate(
         CurrentScoutEventConfig.SINGLE_ID)
     if getattr(config, att_prize_flag) != idx:
         raise CabaretError(u'整合が取れていないので終了します')
     for uid in uidlist:
         BackendApi.tr_add_prize(model_mgr, uid, prizelist,
                                 textid)
     setattr(config, att_prize_flag, idx + 1)
     model_mgr.set_save(config)
     model_mgr.write_all()
     return model_mgr, config
示例#28
0
    def handle(self, *args, **options):

        print "==============================="
        print "insert_user_deckcost"
        print "==============================="

        model_mgr = ModelRequestMgr()

        def calculate_deck_cost(uidlist):

            decks = BackendApi.get_decks(uidlist, using=settings.DB_READONLY)
            deckcost = {}
            for uid, deck in decks.items():
                cost = sum([
                    x.master.cost
                    for x in BackendApi.get_cards(deck.to_array())
                ])
                deckcost[uid] = cost
            return deckcost

        limit = 1000
        offset = 0

        while True:
            playerdeck = PlayerDeck.fetchValues(limit=limit,
                                                offset=offset,
                                                using=settings.DB_DEFAULT)
            if not playerdeck:
                break

            playerdeck_dict = {p.id: p for p in playerdeck}
            player_deckcost = calculate_deck_cost(playerdeck_dict.keys())

            for uid, deck_cost in player_deckcost.items():
                player = playerdeck_dict[uid]
                player.deckcost = deck_cost
                model_mgr.set_save(player)
            offset += limit

            def tr_update():
                model_mgr.write_all()
                model_mgr.write_end()
                return model_mgr

            try:
                tmp_model_mgr = db_util.run_in_transaction(tr_update)
            except CabaretError, err:
                print "error ...%s" % err.value
                return

            tmp_model_mgr.write_end()
示例#29
0
 def tr():
     model_mgr = ModelRequestMgr()
     config = CurrentBattleEventConfig.getByKeyForUpdate(
         CurrentBattleEventConfig.SINGLE_ID)
     if config.getDailyPrizeFlag(date_today) != pre_prize_flag:
         raise CabaretError(u'整合が取れていないので終了します')
     for uid in uidlist:
         BackendApi.tr_add_prize(model_mgr, uid, prizelist,
                                 textid)
     config.daily_prize_flag = prize_flag + 1
     config.daily_prize_date = date_today
     model_mgr.set_save(config)
     model_mgr.write_all()
     return model_mgr, config
示例#30
0
        def createPlayer():
            player = self.create_dummy(DummyType.PLAYER)

            model_mgr = ModelRequestMgr()
            model = player.getModel(PlayerFriend)
            model.friendlimit = 30
            model_mgr.set_save(model)
            model = player.getModel(PlayerExp)
            model.level = 1
            model_mgr.set_save(model)
            BackendApi.tr_updatelogintime(model_mgr, player, False)
            model_mgr.write_all()
            model_mgr.write_end()

            return player