示例#1
0
    def procList(self, args, raidid):
        page = 0
        try:
            page = int(self.request.get(Defines.URLQUERY_PAGE) or 0)
        except:
            pass

        contentnum = Defines.RAIDFRIEND_LIST_CONTENT_NUM_PER_PAGE
        offset = contentnum * page
        limit = contentnum + 1
        cardsetlist = self.getFriendLeaderCardList(limit, offset)
        has_next_page = contentnum < len(cardsetlist)
        cardsetlist = cardsetlist[:contentnum]

        if cardsetlist:
            cb = self.putPlayerListByLeaderList(raidid, cardsetlist)
            if cb:
                self.execute_api()
                cb()

        url_base = UrlMaker.raidfriendselect(raidid)
        if 0 < page:
            url = OSAUtil.addQuery(url_base, Defines.URLQUERY_PAGE, page - 1)
            self.html_param['url_page_prev'] = self.makeAppLinkUrl(url)
        if has_next_page:
            url = OSAUtil.addQuery(url_base, Defines.URLQUERY_PAGE, page + 1)
            self.html_param['url_page_next'] = self.makeAppLinkUrl(url)
        self.html_param['cur_page'] = page + 1
        self.html_param['page_max'] = int(
            (self.getFriendLeaderCardNum() + contentnum - 1) / contentnum)

        self.writeAppHtml('raid/friendselect')
示例#2
0
    def procYesno(self, v_player, args):
        """申請確認.
        """
        try:
            # 相手のID.
            fid = int(args.get(1))
        except:
            raise CabaretError(u'引数が想定外です', CabaretError.Code.ILLEGAL_ARGS)

        playerlist = self.getObjPlayerList([fid])
        if len(playerlist) == 0:
            raise CabaretError(u'存在しないプレイヤーです', CabaretError.Code.NOT_DATA)
        player = playerlist[0]

        url = UrlMaker.friendrequest_do()
        url = OSAUtil.addQuery(url, Defines.URLQUERY_USERID, fid)
        player['url_friendrequest_send'] = self.makeAppLinkUrl(url)
        self.html_param['player'] = player

        #フレンド検索URL.
        lvgrp = int(Defines.LevelGroup.LV01_09)
        url = OSAUtil.addQuery(UrlMaker.friendsearch(),
                               Defines.URLQUERY_LEVELGROUP, lvgrp)
        self.html_param['url_search'] = self.makeAppLinkUrl(url)

        self.writeAppHtml('friend/sendyesno')
示例#3
0
    def __sendRequest(cls, api, args, query_params):
        host = "localhost:8080"
        #        host = "ec2-46-51-225-216.ap-northeast-1.compute.amazonaws.com/nmh"
        url = cls.makeRequestUrl(api)
        print 'url:%s' % url

        method = "GET"
        data = None
        if args:
            method = "POST"
            for k, v in query_params.items():
                args[k] = v
            # app_idはクエリに付加
            url = OSAUtil.addQuery(url, OSAUtil.KEY_APP_ID,
                                   query_params[OSAUtil.KEY_APP_ID])
            if args:
                data = ''
                for k, v in args.items():
                    data = OSAUtil.addQuery(data, k, v)
                data = data[1:]
        else:
            for k, v in query_params.items():
                url = OSAUtil.addQuery(url, k, v)

        request_url = "http://" + host + url
        headers = {}

        req = urllib2.Request(request_url, data=data, headers=headers)
        req.get_method = lambda: method
        tmp = urllib2.urlopen(req)
        response = tmp.read()

        return response
示例#4
0
    def process(self):

        model_mgr = self.getModelMgr()

        v_player = self.getViewerPlayer()

        invitemaster = BackendApi.get_current_invitemaster(
            model_mgr, using=settings.DB_READONLY)
        if invitemaster is None:
            raise CabaretError(u'招待キャンペーンは開催していません',
                               CabaretError.Code.ILLEGAL_ARGS)

        # 招待したフレンド.
        invite_member = self.request.get("invite_member")
        if invite_member:
            str_dmmidlist = str(invite_member).split(',')
            KpiOperator().set_increment_invite_count(len(str_dmmidlist),
                                                     OSAUtil.get_now()).save()
            self.addlog(u'invite_member:%d:%s' %
                        (len(str_dmmidlist), invite_member))

        invite = BackendApi.get_invite(model_mgr,
                                       v_player.id,
                                       invitemaster.id,
                                       using=settings.DB_READONLY)

        self.html_param['invitecnt'] = invite.cnt

        url = OSAUtil.addQuery(
            'invite:friends', 'callbackurl',
            self.makeAppLinkUrl(UrlMaker.invite(), add_frompage=False))
        url = OSAUtil.addQuery(url, 'body', u'招待報酬をGET')
        self.html_param['url_dmm_invite'] = url

        self.writeAppHtml('invite/invite')
示例#5
0
 def process(self):
     
     v_player = self.getViewerPlayer()
     
     client = OSAUtil.get_cache_client()
     
     ctype = Defines.CharacterType.ALL
     rare = Defines.Rarity.ALL
     page = 0
     if self.request.method == 'GET':
         namespacebase = 'albumlistargs:%s'
         ctype = client.get(v_player.id, namespace=namespacebase % 'ctype') or ctype
         rare = client.get(v_player.id, namespace=namespacebase % 'rare') or rare
         page = client.get(v_player.id, namespace=namespacebase % 'page') or page
     
     try:
         ctype = int(self.request.get(Defines.URLQUERY_CTYPE, ctype))
         rare = int(self.request.get(Defines.URLQUERY_RARE, rare))
         page = int(self.request.get(Defines.URLQUERY_PAGE, page))
     except:
         ctype = Defines.CharacterType.ALL
         rare = Defines.Rarity.ALL
         page = 0
     
     model_mgr = self.getModelMgr()
     
     # プレイヤー情報.
     v_player = self.getViewerPlayer()
     
     # アルバム情報取得.
     offset = page * Defines.ALBUM_PAGE_CONTENT_NUM
     limit = Defines.ALBUM_PAGE_CONTENT_NUM + 1
     albumlist = BackendApi.get_album_list(self, v_player.id, ctype, rare, offset, limit, using=settings.DB_READONLY)
     has_nextpage = Defines.ALBUM_PAGE_CONTENT_NUM < len(albumlist)
     albumlist = albumlist[:Defines.ALBUM_PAGE_CONTENT_NUM]
     
     # アルバムリスト.
     self.html_param['album_list'] = albumlist
     self.html_param['cur_page'] = page + 1
     self.html_param['page_max'] = self.getAlbumPageNumMax(model_mgr, ctype, rare)
     
     self.html_param['ctype'] = ctype
     self.html_param['rare'] = rare
     
     url_base = UrlMaker.album()
     self.html_param['url_post'] = self.makeAppLinkUrl(url_base)
     
     url_base = OSAUtil.addQuery(url_base, Defines.URLQUERY_CTYPE, ctype)
     url_base = OSAUtil.addQuery(url_base, Defines.URLQUERY_RARE, rare)
     if 0 < page:
         self.html_param['url_page_prev'] = self.makeAppLinkUrl(OSAUtil.addQuery(url_base, Defines.URLQUERY_PAGE, page-1))
     if has_nextpage:
         self.html_param['url_page_next'] = self.makeAppLinkUrl(OSAUtil.addQuery(url_base, Defines.URLQUERY_PAGE, page+1))
     
     namespacebase = 'albumlistargs:%s'
     client.set(v_player.id, ctype, namespace=namespacebase % 'ctype')
     client.set(v_player.id, rare, namespace=namespacebase % 'rare')
     client.set(v_player.id, page, namespace=namespacebase % 'page')
     
     self.writeAppHtml('album/album')
示例#6
0
    def __proc_prizes(self, eventmaster, is_opened):
        """報酬.
        """
        urlbase = UrlMaker.raidevent_explain(eventmaster.id, 'prizes')
        self.html_param['url_prizes_destroy'] = self.makeAppLinkUrl(
            OSAUtil.addQuery(urlbase, Defines.URLQUERY_CTYPE, 'destroy'))
        self.html_param['url_prizes_destroy_big'] = self.makeAppLinkUrl(
            OSAUtil.addQuery(urlbase, Defines.URLQUERY_CTYPE, 'destroy_big'))
        self.html_param['url_prizes_ranking'] = self.makeAppLinkUrl(
            OSAUtil.addQuery(urlbase, Defines.URLQUERY_CTYPE, 'ranking'))
        self.html_param['url_prizes_ranking_beginer'] = self.makeAppLinkUrl(
            OSAUtil.addQuery(urlbase, Defines.URLQUERY_CTYPE,
                             'ranking_beginer'))

        ctype = self.request.get(Defines.URLQUERY_CTYPE)

        self.html_param['current_prize'] = ctype

        if ctype == 'ranking':
            self.__proc_prizes_ranking(eventmaster, is_opened)
        elif ctype == 'destroy_big':
            self.__proc_prizes_destroy_big(eventmaster, is_opened)
        elif ctype == 'ranking_beginer':
            self.__proc_prizes_ranking_beginer(eventmaster, is_opened)
        else:
            self.html_param['current_prize'] = 'destroy'
            self.__proc_prizes_destroy(eventmaster, is_opened)
示例#7
0
    def writeBoxHtml(self, name):
        """HTML書き出し.
        """
        self.getViewerPlayer()

        _ctype = self.getCtypeOri()
        sortby = self.getSortby()
        page = self.getPage()

        self.html_param[Defines.URLQUERY_CTYPE] = _ctype
        self.html_param[Defines.URLQUERY_SORTBY] = sortby
        self.html_param[Defines.URLQUERY_PAGE] = page

        ctype_items = {'all': u'全て'}
        ctype_items.update(Defines.CharacterType.NAMES)
        self.html_param['ctype_items'] = ctype_items.items()
        self.html_param['sort_items'] = Defines.CardSortType.NAMES.items()

        # タブ切り替え用.
        url = UrlMaker.cardbox()
        url = OSAUtil.addQuery(url, Defines.URLQUERY_CTYPE, _ctype)
        url = OSAUtil.addQuery(url, Defines.URLQUERY_SORTBY, sortby)
        self.html_param['url_cardbox'] = self.makeAppLinkUrl(url)

        url = UrlMaker.sell()
        url = OSAUtil.addQuery(url, Defines.URLQUERY_CTYPE, _ctype)
        url = OSAUtil.addQuery(url, Defines.URLQUERY_SORTBY, sortby)
        self.html_param['url_sell'] = self.makeAppLinkUrl(url)

        self.saveSortParams()

        self.writeAppHtml(name)
示例#8
0
 def makeCardObject(self, cardset, deck):
     data = Objects.card(self, cardset, deck=deck)
     url = UrlMaker.deckset(target=self.__target)
     url = OSAUtil.addQuery(url, Defines.URLQUERY_INDEX,
                            self.__selected_index)
     url = OSAUtil.addQuery(url, Defines.URLQUERY_CARD, cardset.id)
     data['url_deck'] = self.makeAppLinkUrl(url)
     return data
示例#9
0
 def addFilterQuery(self, url):
     filters = self.request.get("filters")
     version = self.request.get("version")
     if filters:
         url = OSAUtil.addQuery(url, "filters", urllib2.quote(filters, ""))
     if version:
         url = OSAUtil.addQuery(url, "version", urllib2.quote(version, ""))
     return url
示例#10
0
    def process(self):
        args = self.getUrlArgs('/promotiontop/')
        appname = args.get(0)
        is_recipient = bool(int(self.request.get(Defines.URLQUERY_FLAG, '0')))
        self.html_param['is_recipient'] = is_recipient
        
        model_mgr = self.getModelMgr()
        v_player = self.getViewerPlayer()
        if PlayerCrossPromotion.is_session():
            self.html_param['is_pc'] = self.is_pc
            if self.is_pc:
                # self.html_param['url_goh'] = 'http://rcv.ixd.dmm.com/api/surl?urid=NmcO0Hxz'
                # self.html_param['url_harepai'] = 'http://rcv.ixd.dmm.com/api/surl?urid=XzIUBerr'
                # self.html_param['url_sengoku'] = 'http://www.dmm.co.jp/netgame/feature/sengokuaibu.html'
                self.html_param['url_avst'] = 'http://www.dmm.co.jp/netgame/social/-/gadgets/=/app_id=445699/'
                self.html_param['url_noahs_gate'] = 'http://www.dmm.co.jp/netgame/social/-/gadgets/=/app_id=223705/'
            else:
                # self.html_param['url_goh'] = 'http://rcv.ixd.dmm.com/api/surl?urid=t6vJmS4X'
                # self.html_param['url_harepai'] = 'http://rcv.ixd.dmm.com/api/surl?urid=j9mnDsZP'
                # self.html_param['url_sengoku'] = 'http://www.dmm.co.jp/netgame/feature/sengokuaibu.html'
                self.html_param['url_avst'] = 'http://www.dmm.co.jp/netgame_s/avstrikers/'
                self.html_param['url_noahs_gate'] = 'http://sp.dmm.co.jp/netgame/gadgets/index/app_id/223705/'
            url_base = UrlMaker.promotion_top(appname)
            if is_recipient:
                self.html_param['url_cabaret'] = self.makeAppLinkUrl(url_base)
            else:
                self.html_param['url_recipient'] = self.makeAppLinkUrl(
                    OSAUtil.addQuery(url_base, Defines.URLQUERY_FLAG, '1'))

            # set display information for start time and end time of cross promotion
            start_date = '{d.month}/{d.day} {d.hour}:{d.minute:02}'.format(d=Defines.CROSS_PROMO_START_TIME)
            end_date = '{d.month}/{d.day} {d.hour}:{d.minute:02}'.format(d=Defines.CROSS_PROMO_END_TIME)
            self.html_param['cross_promo_time_limit'] = start_date + '〜' + end_date

            self.html_param['url_treasurelist'] = self.makeAppLinkUrl(UrlMaker.treasurelist())
            self.html_param['url_cabaclubtop'] = self.makeAppLinkUrl(UrlMaker.cabaclubtop())
            self.html_param['url_trade'] = self.makeAppLinkUrl(UrlMaker.trade())
            self.html_param['url_scout'] = self.makeAppLinkUrl(UrlMaker.scout())
            self.html_param['url_battle'] = self.makeAppLinkUrl(UrlMaker.battle())
            self.html_param['url_gacha'] = self.makeAppLinkUrl(
                OSAUtil.addQuery(
                    UrlMaker.gacha(),
                    Defines.URLQUERY_GTYPE,
                    Defines.GachaConsumeType.GTYPE_NAMES[Defines.GachaConsumeType.STEPUP2]
                )
            )

            player_cross_promotion = model_mgr.get_model(PlayerCrossPromotion, v_player.id)
            if player_cross_promotion:
                self.html_param['total_login_count'] = player_cross_promotion.total_login_count
            else:
                self.html_param['total_login_count'] = 0
            self.writeAppHtml('promotion/{0}/top'.format(appname))
            return
        else:
            # 開催期間外ならTopに飛ばす
            self.appRedirect(self.makeAppLinkUrlRedirect(UrlMaker.mypage()))
            return
示例#11
0
 def _getJumpUrlPlayGacha(self, missionmaster):
     consumetype = missionmaster.condition_value1
     url = UrlMaker.gacha()
     url = OSAUtil.addQuery(url, Defines.URLQUERY_CTYPE,
                            Defines.GachaConsumeType.TO_TOPIC[consumetype])
     url = OSAUtil.addQuery(
         url, Defines.URLQUERY_GTYPE,
         Defines.GachaConsumeType.GTYPE_NAMES[consumetype])
     return url
示例#12
0
    def procCard(self, filter_json, page):
        """カード画像確認.
        """
        PAGE_CONTENT_NUM = 50
        offset = page * PAGE_CONTENT_NUM

        nummax = CardMasterView.count(filters=filter_json,
                                      using=settings.DB_READONLY)
        pagemax = int((nummax + PAGE_CONTENT_NUM - 1) / PAGE_CONTENT_NUM)

        titles = (
            u'ID',
            u'キャスト',
            u'thumbの値',
            u'Card_thumb_52_52.png',
            u'Card_thumb_60_75.png',
            u'Card_thumb_110_138.png',
            u'Card_thumb_320_400.png',
            u'Card_thumb_320_314.png',
            u'Card_thumb_70_88.png',
        )

        cardmasterlist = CardMasterView.fetchValues(filters=filter_json,
                                                    order_by='id',
                                                    limit=PAGE_CONTENT_NUM,
                                                    offset=offset,
                                                    using=settings.DB_READONLY)

        datalist = []
        for cardmaster in cardmasterlist:
            row = [
                cardmaster.id,
                cardmaster.name,
                cardmaster.thumb,
                (self.makeAppImgUrl(CardUtil.makeThumbnailUrlIcon(cardmaster)),
                 52, 52),
                (self.makeAppImgUrl(
                    CardUtil.makeThumbnailUrlSmall(cardmaster)), 60, 75),
                (self.makeAppImgUrl(
                    CardUtil.makeThumbnailUrlMiddle(cardmaster)), 110, 138),
                (self.makeAppImgUrl(
                    CardUtil.makeThumbnailUrlLarge(cardmaster)), 320, 400),
                (self.makeAppImgUrl(
                    CardUtil.makeThumbnailUrlBustup(cardmaster)), 320, 314),
            ]
            if cardmaster.rare in Defines.Rarity.EVOLUTION_ABLES:
                row.append((self.makeAppImgUrl(
                    CardUtil.makeThumbnailUrlMemory(cardmaster)), 70, 88))
            else:
                row.append('')
            datalist.append(row)
        self.putData(titles, datalist)

        url = OSAUtil.addQuery(UrlMaker.view_images(), '_target', 'Card')
        url = OSAUtil.addQuery(url, '_filter',
                               urllib.quote(self.html_param['_filter'], ''))
        self.putPagenationData(url, page, pagemax)
示例#13
0
 def putRanking(self, uid, eventid, view_myrank, url_battleevent_ranking, url_battleevent_myrank, view_beginer=False):
     
     model_mgr = self.getModelMgr()
     
     page = int(self.request.get(Defines.URLQUERY_PAGE) or 0)
     
     if view_myrank:
         score = BackendApi.get_battleevent_score(eventid, uid)
         if score:
             # 自分のランクのページヘ.
             index = BackendApi.get_battleevent_rankindex(eventid, uid, is_beginer=view_beginer)
             offset = max(0, index - int((self.CONTENT_NUM_MAX_PER_PAGE+1) / 2))
             uidscoresetlist = BackendApi.fetch_uid_by_battleeventrank(eventid, self.CONTENT_NUM_MAX_PER_PAGE, offset, withrank=True, is_beginer=view_beginer)
         else:
             uidscoresetlist = []
     else:
         uidscoresetlist = self.getUidScoreSetList(eventid, page, is_beginer=view_beginer)
     
     obj_playerlist = []
     
     if uidscoresetlist:
         uidscoreset = dict(uidscoresetlist)
         
         playerlist = BackendApi.get_players(self, uidscoreset.keys(), [PlayerExp], using=settings.DB_READONLY)
         persons = BackendApi.get_dmmplayers(self, playerlist, using=settings.DB_READONLY, do_execute=False)
         
         leaders = BackendApi.get_leaders(uidscoreset.keys(), arg_model_mgr=model_mgr, using=settings.DB_READONLY)
         
         self.execute_api()
         
         for player in playerlist:
             obj_player = Objects.player(self, player, persons.get(player.dmmid), leaders.get(player.id))
             score, rank = uidscoreset[player.id]
             obj_player['event_score'] = score
             obj_player['event_rank'] = rank
             obj_player['is_me'] = uid == player.id
             obj_playerlist.append(obj_player)
         obj_playerlist.sort(key=lambda x:x['event_score'], reverse=True)
     self.html_param['ranking_playerlist'] = obj_playerlist
     
     contentnum = BackendApi.get_battleevent_rankernum(eventid, is_beginer=view_beginer)
     
     self.html_param['is_view_myrank'] = view_myrank
     self.html_param['is_view_beginer'] = view_beginer
     
     self.html_param['url_battleevent_ranking'] = self.makeAppLinkUrl(url_battleevent_ranking) + "#ranking"
     self.html_param['url_battleevent_myrank'] = self.makeAppLinkUrl(url_battleevent_myrank) + "#ranking"
     self.html_param['url_battleevent_ranking_beginer'] = self.makeAppLinkUrl(OSAUtil.addQuery(url_battleevent_ranking, Defines.URLQUERY_BEGINER, 1)) + "#ranking"
     self.html_param['url_battleevent_myrank_beginer'] = self.makeAppLinkUrl(OSAUtil.addQuery(url_battleevent_myrank, Defines.URLQUERY_BEGINER, 1)) + "#ranking"
     
     url_base = OSAUtil.addQuery(url_battleevent_myrank if view_myrank else url_battleevent_ranking, Defines.URLQUERY_BEGINER, int(view_beginer))
     
     if not view_myrank:
         self.putPagenation(url_base, page, contentnum, self.CONTENT_NUM_MAX_PER_PAGE, "ranking")
示例#14
0
 def redirectWithError(err_code):
     fromname = self.getFromPageName()
     url = UrlMaker.friendlist()
     url = OSAUtil.addQuery(url, Defines.URLQUERY_ERROR, err_code)
     if fromname == Defines.FromPages.FRIENDREQUEST:
         url = OSAUtil.addQuery(url, Defines.URLQUERY_STATE,
                                Defines.FriendState.SEND)
     elif fromname == Defines.FromPages.FRIENDRECEIVE:
         url = OSAUtil.addQuery(url, Defines.URLQUERY_STATE,
                                Defines.FriendState.RECEIVE)
     self.appRedirect(self.makeAppLinkUrlRedirect(url))
示例#15
0
    def process(self):
        args = self.getUrlArgs('/gachasupcard/')
        try:
            mid = int(args.get(0))
            subbox = int(args.get(1))
        except:
            raise CabaretError(u'引数が想定外です', CabaretError.Code.ILLEGAL_ARGS)

        v_player = self.getViewerPlayer()

        self.html_param['player'] = Objects.player(self, v_player)

        model_mgr = self.getModelMgr()

        # マスターデータ.
        gachamaster = BackendApi.get_gachamaster(model_mgr,
                                                 mid,
                                                 using=settings.DB_READONLY)
        if gachamaster is None:
            raise CabaretError(u'表示できない引抜です', CabaretError.Code.ILLEGAL_ARGS)
        self.html_param['gacha_name'] = gachamaster.name

        # カード情報.
        if subbox == 0:
            info = BackendApi.make_stepup_rateinfo(self,
                                                   gachamaster,
                                                   using=settings.DB_READONLY)
            self.html_param['gachacardlistinfo'] = info
        elif 0 < gachamaster.rarity_fixed_boxid and subbox == 1:
            subboxinfo = BackendApi.make_stepup_rateinfo(
                self, gachamaster, subbox=True, using=settings.DB_READONLY)
            self.html_param['gachacardlistinfo'] = subboxinfo

        # スライド情報.
        BackendApi.put_gachaslidecarddata(self, [gachamaster])

        # ガチャページに戻る.
        consumetype, tabengname = gachamaster.consumetype, gachamaster.tabengname
        url = UrlMaker.gacha()
        if consumetype in Defines.GachaConsumeType.PAYMENT_TYPES:
            url = OSAUtil.addQuery(
                url, Defines.URLQUERY_GTYPE,
                Defines.GachaConsumeType.GTYPE_NAMES[consumetype])
            if tabengname:
                url = OSAUtil.addQuery(url, Defines.URLQUERY_GTAB, tabengname)
        else:
            url = OSAUtil.addQuery(
                url, Defines.URLQUERY_CTYPE,
                Defines.GachaConsumeType.TO_TOPIC[consumetype])

        self.html_param['url_back'] = self.makeAppLinkUrl(url)

        self.writeAppHtml('gacha/supcard')
示例#16
0
    def __put_csvurl(self, target, eventmaster):
        filename = u'%s.csv' % eventmaster.codename
        filepath = os.path.join(settings_sub.KPI_ROOT, 'eventranking',
                                filename)

        url = UrlMaker.view_eventranking()
        url = OSAUtil.addQuery(url, '_target', target)
        url = OSAUtil.addQuery(url, '_beginer',
                               '1' if self.__is_beginer else '0')
        if os.path.exists(filepath):
            self.html_param['url_csv'] = self.makeAppLinkUrlAdmin(url)
        self.html_param['url_csv_update'] = self.makeAppLinkUrlAdmin(
            OSAUtil.addQuery(url, '_update', '1'))
示例#17
0
 def putPagenation(self, kind, is_complete, page, has_nextpage):
     """ページング.
     """
     urlbase = UrlMaker.support_paymentlist()
     if kind:
         urlbase = OSAUtil.addQuery(urlbase, '_kind', kind)
     if is_complete:
         urlbase = OSAUtil.addQuery(urlbase, '_comp', 1)
     if 0 < page:
         self.html_param['url_page_prev'] = self.makeAppLinkUrl(
             OSAUtil.addQuery(urlbase, Defines.URLQUERY_PAGE, page - 1))
     if has_nextpage:
         self.html_param['url_page_next'] = self.makeAppLinkUrl(
             OSAUtil.addQuery(urlbase, Defines.URLQUERY_PAGE, page + 1))
示例#18
0
    def process(self):
        page = 0

        v_player = self.getViewerPlayer()
        try:
            if self.is_pc:
                #oid = int(self.request.get(Defines.URLQUERY_ID) or v_player.id)
                args = self.getUrlArgs('/friendlog/')
                oid = int(args.get(0, v_player.id))
                page = int(self.request.get(Defines.URLQUERY_PAGE) or 0)
                #content_num = Defines.PC_GAMELOG_CONTENT_NUM
                content_num = Defines.GAMELOG_PAGE_CONTENT_NUM
            else:
                args = self.getUrlArgs('/friendlog/')
                oid = int(args.get(0, v_player.id))
                page = int(self.request.get(Defines.URLQUERY_PAGE) or 0)
                content_num = Defines.GAMELOG_PAGE_CONTENT_NUM
        except:
            raise CabaretError(u'不正なアクセスです', CabaretError.Code.ILLEGAL_ARGS)

        model_mgr = self.getModelMgr()

        offset = page * content_num
        limit = content_num + 1
        obj_friendlog_list = BackendApi.get_friendlog_list(
            self, oid, offset, limit, model_mgr, using=settings.DB_READONLY)

        self.execute_api()

        has_next_page = content_num < len(obj_friendlog_list)
        self.html_param['friendlog_list'] = obj_friendlog_list[:content_num]

        url_base = UrlMaker.friendlog(oid)
        if 0 < page:
            url = OSAUtil.addQuery(url_base, Defines.URLQUERY_PAGE, page - 1)
            self.html_param['url_prev'] = self.makeAppLinkUrl(url)

        if has_next_page:
            url = OSAUtil.addQuery(url_base, Defines.URLQUERY_PAGE, page + 1)
            self.html_param['url_next'] = self.makeAppLinkUrl(url)

        lognum = BackendApi.get_friendlog_num(model_mgr,
                                              oid,
                                              using=settings.DB_READONLY)
        self.html_param['cur_page'] = page + 1
        self.html_param['page_max'] = max(
            1, int((lognum + content_num - 1) / content_num))

        self.writeAppHtml('friend')
示例#19
0
 def __make_url_self(self, **params):
     """HTML表示用のテーブルを初期化.
     """
     url = UrlMaker.view_serialcode()
     for k,v in params.items():
         url = OSAUtil.addQuery(url, k, v)
     return url
示例#20
0
 def procResult(self):
     """結果表示.
     """
     presentidlist = self.__get_present_idlist(True)
     over = False
     try:
         over = bool(int(self.__args.get(1, 0)))
     except:
         pass
     
     model_mgr = self.getModelMgr()
     
     presentlist = BackendApi.get_presents(presentidlist, model_mgr, using=settings.DB_READONLY, received=True)
     self.html_param['presentreceivedlist'] = [Objects.present(self, presentset) for presentset in presentlist]
     
     self.html_param['overlimit'] = over
     
     url_reload = self.addIDQuesyParam(UrlMaker.presentresult(over), presentidlist)
     
     topic = self.request.get(Defines.URLQUERY_CTYPE) or ""
     topic = int(topic) if str(topic).isdigit() else Defines.PresentTopic.ALL
     url_reload = OSAUtil.addQuery(url_reload, Defines.URLQUERY_CTYPE, topic)
     
     client = OSAUtil.get_cache_client()
     v_player = self.getViewerPlayer()
     sort = client.get(v_player.id, namespace='present:sort')
     
     self.putPresentList(url_reload, topic, sort=sort, using=settings.DB_DEFAULT)
     
     if not self.response.isEnd:
         self.writeAppHtml('presentrecieve')
示例#21
0
 def procDo(self):
     """書き込み.
     """
     presentidlist = self.__get_present_idlist()
     
     v_player = self.getViewerPlayer()
     
     excludetable = {
         Defines.URLQUERY_CHECK_GOLD : Defines.ItemType.GOLD,
         Defines.URLQUERY_CHECK_CARD : Defines.ItemType.CARD,
     }
     excludetypes = [itype for key, itype in excludetable.items() if self.request.get(key)]
     
     model_mgr, result = db_util.run_in_transaction(self.tr_write, v_player.id, presentidlist, excludetypes)
     model_mgr.write_end()
     
     received_idlist = [k for k,v in result.items() if v in (CabaretError.Code.OK, CabaretError.Code.ALREADY_RECEIVED)]
     over = CabaretError.Code.OVER_LIMIT in result.values()
     
     url = self.addIDQuesyParam(UrlMaker.presentresult(over), received_idlist)
     
     topic = self.request.get(Defines.URLQUERY_CTYPE) or ""
     if str(topic).isdigit():
         url = OSAUtil.addQuery(url, Defines.URLQUERY_CTYPE, topic)
     
     self.appRedirect(self.makeAppLinkUrlRedirect(url))
示例#22
0
 def putEventTopic(self, mid, cur_topic='top'):
     """eventbase.htmlのトピック用のパラメータを埋め込む.
     """
     self.html_param['cur_topic'] = cur_topic
     
     # イベントTopのURL.
     url = UrlMaker.battleevent_top(mid)
     self.html_param['url_battleevent_top'] = self.makeAppLinkUrl(url)
     
     # イベント説明のURL.
     url = UrlMaker.battleevent_explain(mid)
     self.html_param['url_battleevent_explain'] = self.makeAppLinkUrl(url)
     
     # ランキングのURL.
     url = UrlMaker.battleevent_ranking(mid)
     self.html_param['url_battleevent_ranking'] = self.makeAppLinkUrl(url)
     
     table = (
         'detail',
         'prizes',
         'nomination',
         'faq',
     )
     for k in table:
         self.html_param['url_explain_%s' % k] = self.makeAppLinkUrl(UrlMaker.battleevent_explain(mid, k))
     
     # 贈り物.
     if BackendApi.get_battleeventpresent_master_by_eventdid(self.getModelMgr(), mid, using=settings.DB_READONLY):
         self.html_param['url_battleevent_present'] = self.makeAppLinkUrl(UrlMaker.battleevent_present())
     
     # ガチャページ.
     url = OSAUtil.addQuery(UrlMaker.gacha(), Defines.URLQUERY_GTYPE, Defines.GachaConsumeType.GTYPE_NAMES[Defines.GachaConsumeType.OMAKE])
     self.html_param['url_battleevent_gacha'] = self.makeAppLinkUrl(url)
示例#23
0
 def addQuery(self, url):
     name = self.name
     if name:
         str_from_page = '%s' % self
         return OSAUtil.addQuery(url, Defines.URLQUERY_FROM, str_from_page)
     else:
         return url
示例#24
0
    def process(self):
        # 現在時刻.
        self.__now = OSAUtil.get_now()

        args = self.getUrlArgs('/cabaclubdeckselect/')

        # Retrieve the necessary arguments
        # mid : Cabaclubstore id
        # card_type : (全て、悪、知、癒) as defined in Defines.CharacterType.NAMES
        try:
            mid = args.getInt(0)
            card_type = int(self.request.get(Defines.URLQUERY_CTYPE, 0))
            is_remove = self.request.get(Defines.URLQUERY_REM, '') == "rem"
        except:
            raise CabaretError(u'引数が想定外です', CabaretError.Code.ILLEGAL_ARGS)

        url = UrlMaker.cabaclubstore(mid=mid)

        # Automatically choose the casts and add them to the deck
        # for the Cabaclubstore of id `mid`
        if card_type:
            url = OSAUtil.addQuery(url, Defines.URLQUERY_CTYPE, card_type)

        # 一括編成 / 一括解除
        self.processAuto(mid, card_type, is_remove=is_remove)

        if settings_sub.IS_BENCH:
            self.response.set_status(200)
            self.response.end()
        else:
            self.appRedirect(self.makeAppLinkUrlRedirect(url))
            return
示例#25
0
class Handler(RaidEventBaseHandler):
    """レイドイベント交換書き込み.
    """
    
    @classmethod
    def getViewerPlayerClassList(cls):
        return [PlayerDeck]
    
    def process(self):
        
        args = self.getUrlArgs('/raideventrecipedo/')
        recipe_id = args.getInt(0)
        confirm_key = urllib.unquote(args.get(1))
        
        trade_num = self.getRecipeTradeNum()
        if not trade_num:
            return
        
        model_mgr = self.getModelMgr()
        eventmaster = self.getCurrentRaidTicketEvent()
        
        v_player = self.getViewerPlayer()
        uid = v_player.id
        eventid = eventmaster.id
        
        # レシピ.
        recipemaster = None
        if recipe_id:
            recipemaster = BackendApi.get_raidevent_recipemaster(model_mgr, recipe_id, using=settings.DB_READONLY)
        if recipemaster is None or recipemaster.eventid != eventid:
            url = UrlMaker.raidevent_recipe_list()
            self.appRedirect(self.makeAppLinkUrlRedirect(url))
            return
        
        if recipemaster.itype == Defines.ItemType.CARD:
            cardnum = BackendApi.get_cardnum(uid, model_mgr, using=settings.DB_READONLY)
            cardrest = v_player.cardlimit - cardnum
            card_trade_max = int(cardrest / recipemaster.itemnum)
            if card_trade_max < trade_num:
                url = UrlMaker.raidevent_recipe_list()
                self.appRedirect(self.makeAppLinkUrlRedirect(url))
                return
        
        try:
            model_mgr = db_util.run_in_transaction(self.tr_write, uid, eventmaster, recipemaster, trade_num, confirm_key)
            model_mgr.write_end()
        except CabaretError, err:
            if settings_sub.IS_LOCAL:
                raise
            elif err.code == CabaretError.Code.ALREADY_RECEIVED:
                pass
            else:
                url = UrlMaker.raidevent_recipe_yesno(recipe_id)
                self.appRedirect(self.makeAppLinkUrlRedirect(url))
                return
        
        # 結果ページヘ.
        url = UrlMaker.raidevent_recipe_complete(recipe_id)
        url = OSAUtil.addQuery(url, Defines.URLQUERY_NUMBER, trade_num)
        self.appRedirect(self.makeAppLinkUrlRedirect(url))
示例#26
0
文件: do.py 项目: hitandaway100/caba
class Handler(ReprintTradeShopBaseHandler):
    """復刻チケット交換所交換処理.
    """

    def process(self):
        req_args = self.getUrlArgs('/reprintticket_tradeshopdo/')

        try:
            trademasterid = int(req_args.get(0))
            confirmkey = urllib.unquote(req_args.get(1))
            num = int(self.request.get(Defines.URLQUERY_NUMBER, None))
        except:
            raise CabaretError(u'リクエストが正しくありません', CabaretError.Code.ILLEGAL_ARGS)
        model_mgr = self.getModelMgr()
        self.check_validation(model_mgr, trademasterid, num)
        v_player = self.getViewerPlayer()

        try:
            model_mgr = db_util.run_in_transaction(self.tr_write, v_player.id, trademasterid, confirmkey, num)
            model_mgr.write_end()
        except CabaretError, err:
            if settings_sub.IS_LOCAL:
                raise
            elif err.code == CabaretError.Code.ALREADY_RECEIVED:
                pass
            else:
                url = UrlMaker.reprintticket_tradeshopyesno(trademasterid)
                self.appRedirect(self.makeAppLinkUrlRedirect(url))
                return

        url = OSAUtil.addQuery(UrlMaker.reprintticket_tradeshopresult(trademasterid), Defines.URLQUERY_NUMBER, num)
        url = self.makeAppLinkUrlRedirect(url)
        self.appRedirect(url)
示例#27
0
    def process(self):

        args = self.getUrlArgs('/gachacardlist/')
        try:
            mid = int(args.get(0))
        except:
            raise CabaretError(u'表示できない引抜です', CabaretError.Code.ILLEGAL_ARGS)

        model_mgr = self.getModelMgr()

        # マスターデータ.
        gachamaster = BackendApi.get_gachamaster(model_mgr,
                                                 mid,
                                                 using=settings.DB_READONLY)
        if gachamaster is None:
            raise CabaretError(u'表示できない引抜です', CabaretError.Code.ILLEGAL_ARGS)
        self.html_param['gacha_name'] = gachamaster.name

        # カード情報.
        info = BackendApi.make_gachabox_rateinfo(model_mgr,
                                                 gachamaster,
                                                 using=settings.DB_READONLY)
        self.html_param['gachacardlistinfo'] = info

        # 戻る.
        url = OSAUtil.addQuery(
            UrlMaker.gacha(), Defines.URLQUERY_CTYPE,
            Defines.GachaConsumeType.TO_TOPIC[gachamaster.consumetype])
        self.html_param['url_back'] = self.makeAppLinkUrl(url)

        self.writeAppHtml('gacha/cardlist')
示例#28
0
 def process(self):
     
     args = self.getUrlArgs('/ban_edit/')
     ope = args.get(0)
     func = getattr(self, '_proc_%s' % ope, None)
     if func:
         func()
     
     model_mgr = self.getModelMgr()
     
     # 現在停止中のアカウント.
     modellist = BackendApi.get_playerlimitation_list(model_mgr, using=settings.DB_READONLY)
     uidlist = [model.id for model in modellist]
     players = BackendApi.get_players(self, uidlist, [], using=settings.DB_READONLY)
     
     obj_playerlist = []
     for player in players:
         url = UrlMaker.view_player(player.id)
         url_rem = OSAUtil.addQuery(UrlMaker.ban_edit('rem'), Defines.URLQUERY_ID, player.id)
         obj_playerlist.append({
             'id' : player.id,
             'dmmid' : player.dmmid,
             'url' : self.makeAppLinkUrlAdmin(url),
             'url_rem' : self.makeAppLinkUrlAdmin(url_rem),
         })
     self.html_param['playerlist'] = obj_playerlist
     
     self.html_param['url_add'] = self.makeAppLinkUrlAdmin(UrlMaker.ban_edit('add'))
     
     self.writeAppHtml('ban_edit')
示例#29
0
 def putHelpFriend(self, raidboss):
     """助けを借りるフレンド.
     """
     model_mgr = self.getModelMgr()
     v_player = self.getViewerPlayer()
     
     params = {}
     
     func_put_playerlist = None
     if self.request.get(Defines.URLQUERY_REM) == '1':
         # フレンドを外す.
         BackendApi.cancel_raidhelpcard(v_player.id, raidboss.id)
     else:
         helpleader = self.getSelectedFriendCard(raidboss.id)
         if helpleader:
             func_put_playerlist = self.putPlayerListByLeaderList(raidboss.id, [helpleader])
     
     friend_callopentime = BackendApi.get_raid_callfriend_opentime(v_player.id)
     if friend_callopentime:
         params['friend_call_opentime'] = Objects.timelimit(friend_callopentime)
     else:
         friend_num = BackendApi.get_friend_num(v_player.id, model_mgr, using=settings.DB_READONLY)
         if 0 < friend_num:
             url = UrlMaker.raidfriendselect(raidboss.id)
             params['url_friendselect'] = self.makeAppLinkUrl(url)
     
     # フレンドを外すリンク.
     url = self.request.url.replace(self.url_cgi, '')
     url = OSAUtil.addQuery(url, Defines.URLQUERY_REM, 1)
     params['url_helpfriend_cancel'] = self.makeAppLinkUrl(url)
     
     self.html_param.update(**params)
     
     return func_put_playerlist
示例#30
0
    def process(self):
        req_args = self.getUrlArgs('/tradeshopyesno/')
        v_player = self.getViewerPlayer()

        try:
            itemmid = int(req_args.get(0))
            num = int(self.request.get(Defines.URLQUERY_NUMBER, None))
        except:
            raise CabaretError(u'リクエストが正しくありません',
                               CabaretError.Code.ILLEGAL_ARGS)

        model_mgr = self.getModelMgr()
        tradeshopmaster = BackendApi.get_current_tradeshopmaster(
            model_mgr, using=settings.DB_READONLY)

        if (itemmid is None) or (
                itemmid not in tradeshopmaster.trade_shop_item_master_ids):
            raise CabaretError(u'アイテムの選択が不正です', CabaretError.Code.ILLEGAL_ARGS)

        tradeshopitemmaster = BackendApi.get_tradeshopitemmaster(
            model_mgr, itemmid, using=settings.DB_READONLY)
        url = OSAUtil.addQuery(
            UrlMaker.tradeshopdo(itemmid, v_player.req_confirmkey),
            Defines.URLQUERY_NUMBER, num)
        obj_item = self.get_itemdata(tradeshopitemmaster)
        obj_item['next_url'] = self.makeAppLinkUrl(url)

        self.html_param['usenum'] = num
        self.html_param['item'] = obj_item
        self.html_param['user_point'] = v_player.point
        self.writeAppHtml('tradeshop/yesno')