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')
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')
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
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')
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')
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)
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)
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
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
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
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
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)
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")
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))
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')
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'))
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))
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')
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
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')
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))
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)
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
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
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))
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)
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')
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')
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
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')