예제 #1
0
 def checkPanelMission(self):
     """パネルミッション確認.
     """
     model_mgr = self.getModelMgr()
     v_player = self.getViewerPlayer()
     uid = v_player.id
     now = OSAUtil.get_now()
     
     # ミッション情報.
     missionplaydata = BackendApi.get_current_panelmission_data(model_mgr, uid, using=settings.DB_READONLY)
     if missionplaydata is None:
         # 全て終わっている.
         return
     
     panel = missionplaydata.mid
     
     # マイページで確認するミッション.
     mission_executer = PanelMissionConditionExecuter()
     
     # 更新確認.
     is_update = BackendApi.check_lead_update_panelmission(model_mgr, v_player, panel, now, mission_executer, using=settings.DB_READONLY)
     
     if is_update:
         try:
             model_mgr = db_util.run_in_transaction(self.tr_write_panelmission, uid, panel, mission_executer, v_player.req_confirmkey, now)
             model_mgr.write_end()
         except:
             return
         if not (settings_sub.IS_LOCAL and self.request.get('_test')):
             # 演出へリダイレクト.
             url = UrlMaker.panelmissionanim(panel)
             self.appRedirect(self.makeAppLinkUrlRedirect(url))
예제 #2
0
 def setUp(self):
     # DMMID.
     self.__player = self.create_dummy(DummyType.PLAYER)
     self.__player.lbtime = OSAUtil.get_now()
     self.__player.getModel(PlayerLogin).save()
     
     # デッキ.
     deck = Deck(id=self.__player.id)
     cardmaster = self.create_dummy(DummyType.CARD_MASTER)
     deck.leader = self.create_dummy(DummyType.CARD, self.__player, cardmaster).id
     
     for i in xrange(9):
         cardmaster = self.create_dummy(DummyType.CARD_MASTER)
         setattr(deck, 'mamber%d' % i, self.create_dummy(DummyType.CARD, self.__player, cardmaster).id)
     
     deck.save()
     
     # お知らせ.
     for _ in range(5):
         self.create_dummy(DummyType.TOP_BANNER_MASTER)
     
     # イベント発生設定.
     config = BackendApi.get_current_scouteventconfig(ModelRequestMgr())
     self.__preconfig_mid = config.mid
     BackendApi.update_scouteventconfig(0, config.starttime, config.endtime)
     
     # カード.
     table = []
     cardmaster = self.create_dummy(DummyType.CARD_MASTER)
     data = GachaBoxCardData(cardmaster.id, 10000)
     table.append(data.to_data())
     
     # グループ.
     group = self.create_dummy(DummyType.GACHA_GROUP_MASTER, table=table)
     
     # おまけ.
     item = self.create_dummy(DummyType.ITEM_MASTER)
     prize = self.create_dummy(DummyType.PRIZE_MASTER, item=item, itemnum=1)
     bonus = [prize.id]
     
     # ガチャ.
     continuity = 10
     boxdata = GachaBoxGroupData(group.id, 10000, continuity+1)
     box = [boxdata.to_data()]
     self.__gachamaster = self.create_dummy(DummyType.GACHA_MASTER, box=box, bonus=bonus, continuity=continuity, consumetype=Defines.GachaConsumeType.RANKING, consumevalue=10)
     
     # ランキングガチャマスター.
     wholeprizes = {
         'normal' : [(1, bonus),]
     }
     self.__rankingmaster = self.create_dummy(DummyType.RANKING_GACHA_MASTER, self.__gachamaster.boxid, wholeprizes=wholeprizes)
     
     # 達成報酬キュー.
     queue0 = self.create_dummy(DummyType.RANKING_GACHA_WHOLE_PRIZE_QUEUE, self.__rankingmaster.id, point=100, prizes=bonus)
     queue1 = self.create_dummy(DummyType.RANKING_GACHA_WHOLE_PRIZE_QUEUE, self.__rankingmaster.id, point=1000, prizes=bonus)
     self.__queue = queue1
     
     # 初めてプレイした時間.
     self.create_dummy(DummyType.RANKING_GACHA_SCORE, self.__player.id, self.__rankingmaster.id, firstpoint=queue1.point)
     
     # 受け取ったキューのID.
     self.create_dummy(DummyType.RANKING_GACHA_WHOLE_PRIZE_DATA, self.__player.id, queue0.id - 1)
     
     # 全プレ.
     presenteveryone_list = BackendApi.get_presenteveryone_list_formypage(ModelRequestMgr())
     prizeidlist = []
     for presenteveryone in presenteveryone_list:
         prizeidlist.extend(presenteveryone.prizes)
     prizelist = BackendApi.get_prizelist(ModelRequestMgr(), prizeidlist)
     self.__presenteveryone_presentlist = BackendApi.create_present_by_prize(ModelRequestMgr(), 0, prizelist, 0, do_set_save=False)
     
     # ミッション報酬を受け取ってしまう.
     model_mgr = ModelRequestMgr()
     missionplaydata = BackendApi.get_current_panelmission_data(model_mgr, self.__player.id)
     if missionplaydata:
         panel = missionplaydata.mid
         
         # マイページで確認するミッション.
         mission_executer = PanelMissionConditionExecuter()
         
         # 更新確認.
         is_update = BackendApi.check_lead_update_panelmission(model_mgr, self.__player, panel, OSAUtil.get_now(), mission_executer)
         if is_update:
             def write():
                 model_mgr = ModelRequestMgr()
                 if mission_executer.isNeedCheck():
                     BackendApi.tr_complete_panelmission(model_mgr, self.__player.id, mission_executer, OSAUtil.get_now())
                 BackendApi.tr_receive_panelmission(model_mgr, self.__player.id, panel, self.__player.req_confirmkey, OSAUtil.get_now())
                 model_mgr.write_all()
                 model_mgr.write_end()
             write()
     
     self.__present_num = BackendApi.get_present_num(self.__player.id)