def printTopAuthors(self, fields, params): fields.update({self.title: 'Top authors'}) def getPaginatorData(players_on_page): players_count = self.model.misc.getAuthorsCount() pages = int(math.ceil(float(players_count) / players_on_page)) fields.update({ 'total_pages': pages }) def getSortParams(): if not 'pi' in params: fields.update({'param_pi': 1}) try: page_number = int(params['pi']) except Exception: page_number = 1 return { 'page_number': page_number, 'sort_field': '', 'sort_order': '' } authors_on_page = 20 getPaginatorData(authors_on_page) sort_params = getSortParams() authors = self.model.misc.getAuthorsLikes( authors_on_page, skip=(sort_params['page_number'] - 1) * authors_on_page ) author_ids = Set() for author in authors: author_ids.add(author['author_id']) authors_info = self.model.players.getPlayersList2(author_ids, {'name': 1, '_guild_name': 1, 'lvl': 1}) authors_guilds = {} for author in authors_info: authors_guilds.update({author['name']: author}) for author in authors: author.update({ '_guild_name': authors_guilds[author['author_name']]['_guild_name'], 'lvl': authors_guilds[author['author_name']]['lvl'] }) fields.update({ 'authors': authors, 'display_pages': getDisplayPages(int(fields['param_pi']), fields['total_pages'], 10) }) return basic.defaultController._printTemplate(self, 'all_authors', fields)
def printAllGuilds(self, fields, param): fields.update({self.title: 'All guilds'}) def getPaginatorData(guilds_on_page): guilds_count = self.model.guilds.getGuildsCount() pages = int(math.ceil(float(guilds_count) / guilds_on_page)) fields.update({ 'total_pages': pages }) def getSortParams(): if not 'pi' in param: fields.update({'param_pi': 1}) try: page_number = int(param['pi']) except Exception: page_number = 1 if 'field' in param: sort_field = param['field'] else: sort_field = 'people_count' sort_order = -1 if 'order' in param: try: sort_order = int(param['order']) except Exception: pass return { 'page_number': page_number, 'sort_field': sort_field, 'sort_order': sort_order } guilds_on_page = 20 sort_params = getSortParams() getPaginatorData(guilds_on_page) guilds = self.model.guilds.getGuildsListFiltered( count = guilds_on_page, page = sort_params['page_number'], field = sort_params['sort_field'], sort = sort_params['sort_order'] ) if self.cur_player: guild = self.model.guilds.getPlayersGuild(self.cur_player['login_id']) if guild: guild = guildsController.formatGuilds(self,[guild])[0] fields.update({ 'login_guild': guild }) fields.update({'guilds': guilds}) fields.update({'display_pages': getDisplayPages(int(fields['param_pi']), fields['total_pages'], 10)}) return basic.defaultController._printTemplate(self, 'guilds/all_guilds', fields)
def printAllPlayers(self, fields, param): fields.update({self.title: 'All players'}) def getPaginatorData(players_on_page): players_count = self.model.players.getPlayersCount() pages = int(math.ceil(float(players_count) / players_on_page)) fields.update({ 'total_pages': pages }) def getSortParams(): if not 'pi' in param: fields.update({'param_pi': 1}) try: page_number = int(param['pi']) except Exception: page_number = 1 if 'field' in param: sort_field = param['field'] else: sort_field = 'lvl' sort_order = -1 if 'order' in param: try: sort_order = int(param['order']) except Exception: pass return { 'page_number': page_number, 'sort_field': sort_field, 'sort_order': sort_order } players_on_page = 20 sort_params = getSortParams() players = self.model.players.getPlayersListFiltered( count = players_on_page, page = sort_params['page_number'], field = sort_params['sort_field'], sort = sort_params['sort_order'] ) getPaginatorData(players_on_page) for player in players: player.update({ 'class_name': self.balance.classes[str(player['class'])], 'race_name': self.balance.races[player['faction']][player['race']], }) fields.update({'players': players}) fields.update({'display_pages': getDisplayPages(int(fields['param_pi']), fields['total_pages'], 10)}) return basic.defaultController._printTemplate(self, 'players/all_players', fields)
def printAllGuilds(self, fields, param): fields.update({self.title: 'All guilds'}) def getPaginatorData(guilds_on_page): guilds_count = self.model.guilds.getGuildsCount() pages = int(math.ceil(float(guilds_count) / guilds_on_page)) fields.update({'total_pages': pages}) def getSortParams(): if not 'pi' in param: fields.update({'param_pi': 1}) try: page_number = int(param['pi']) except Exception: page_number = 1 if 'field' in param: sort_field = param['field'] else: sort_field = 'people_count' sort_order = -1 if 'order' in param: try: sort_order = int(param['order']) except Exception: pass return { 'page_number': page_number, 'sort_field': sort_field, 'sort_order': sort_order } guilds_on_page = 20 sort_params = getSortParams() getPaginatorData(guilds_on_page) guilds = self.model.guilds.getGuildsListFiltered( count=guilds_on_page, page=sort_params['page_number'], field=sort_params['sort_field'], sort=sort_params['sort_order']) if self.cur_player: guild = self.model.guilds.getPlayersGuild( self.cur_player['login_id']) if guild: guild = guildsController.formatGuilds(self, [guild])[0] fields.update({'login_guild': guild}) fields.update({'guilds': guilds}) fields.update({ 'display_pages': getDisplayPages(int(fields['param_pi']), fields['total_pages'], 10) }) return basic.defaultController._printTemplate(self, 'guilds/all_guilds', fields)
def printAllPlayers(self, fields, param): fields.update({self.title: 'All players'}) def getPaginatorData(players_on_page): players_count = self.model.players.getPlayersCount() pages = int(math.ceil(float(players_count) / players_on_page)) fields.update({'total_pages': pages}) def getSortParams(): if not 'pi' in param: fields.update({'param_pi': 1}) try: page_number = int(param['pi']) except Exception: page_number = 1 if 'field' in param: sort_field = param['field'] else: sort_field = 'lvl' sort_order = -1 if 'order' in param: try: sort_order = int(param['order']) except Exception: pass return { 'page_number': page_number, 'sort_field': sort_field, 'sort_order': sort_order } players_on_page = 20 sort_params = getSortParams() players = self.model.players.getPlayersListFiltered( count=players_on_page, page=sort_params['page_number'], field=sort_params['sort_field'], sort=sort_params['sort_order']) getPaginatorData(players_on_page) for player in players: player.update({ 'class_name': self.balance.classes[str(player['class'])], 'race_name': self.balance.races[player['faction']][player['race']], }) fields.update({'players': players}) fields.update({ 'display_pages': getDisplayPages(int(fields['param_pi']), fields['total_pages'], 10) }) return basic.defaultController._printTemplate(self, 'players/all_players', fields)
def printAjaxShopRecords(self, params): def getSearchParams(params): keys = [ 'search', 'type', 'cost_min', 'cost_max', 'author', 'level_min', 'level_max', 'only_can_use', 'race', 'class', 'keyword', 'tag' ] search = {} if 'search' in params: for key in keys: if key in params: stripped = params[key].strip() if stripped: search.update({key: stripped}) if 'search' in search: search['name'] = { '$regex': re.compile('.*' + search['search'] + '.*', re.IGNORECASE) } del search['search'] if 'keyword' in search: search['keyword'] = { '$regex': re.compile('.*' + search['keyword'] + '.*', re.IGNORECASE) } if 'tag' in search: search['tag'] = { '$regex': re.compile('.*' + search['tag'] + '.*', re.IGNORECASE) } if 'type' in search: item_type = search['type'].split(':') if len(item_type) != 1: search['view'] = item_type[1] search['type'] = int(item_type[0]) if 'author' in search: player_id = self.model.players.getPlayer_ID({ '$regex': re.compile('.*' + search['author'] + '.*', re.IGNORECASE) }) if player_id: search['author'] = player_id else: search['author'] = 0 if 'cost_min' in search: try: search['cost'] = {'$gte': int(search['cost_min'])} except Exception: pass del search['cost_min'] if 'cost_max' in search: try: if "cost" in search: search['cost'].update( {'$lte': int(search['cost_max'])}) else: search['cost'] = {'$lte': int(search['cost_max'])} except Exception: pass del search['cost_max'] if 'level_min' in search: try: search['lvl_min'] = {'$gte': int(search['level_min'])} except Exception: pass del search['level_min'] if 'level_max' in search: try: if "lvl_min" in search: search['lvl_min'].update( {'$lte': int(search['level_max'])}) else: search['lvl_min'] = { '$lte': int(search['level_max']) } except Exception: pass del search['level_max'] if 'race' in search: try: info = search['race'].split(':') info[0], info[1] = int(info[0]), int(info[1]) if not -1 in info: search.update({ 'race': info[1], 'faction': info[0] }) else: raise Exception except Exception: del search['race'] if 'class' in search: try: class_id = int(search['class']) if not class_id: raise Exception search['class'] = class_id except Exception: del search['class'] if 't' in params: prefix = params['t'] for key in keys: if key in params: fields.update( {'param_' + prefix + '_' + key: params[key]}) return search def getSortParams(params): if 's' in params: if 'o' in params and params['o'] in ['-1', '1']: order = int(params['o']) else: order = 1 if params['s'] in [ 'type', 'name', 'lvl_min', 'author', 'cost', 'date' ]: if params['s'] == 'date': prm = 'create_time' else: prm = params['s'] return {prm: order} return {} if not self.isAjax(): page_sharp = '' if 'page_type' in params and params['page_type'] in [ 'items', 'spells', 'artworks' ]: page_sharp = '#!tab-' + params['page_type'] params['__page__'] = '/u/shop/' + page_sharp return self.httpRedirect(params) fields = {'stat_names': self.balance.stats_name} if self.cur_player: already_items = self.getPlayerBuyedItems( self.cur_player['login_id']) inventory_count = self.model.items.getInventoryCount( self.cur_player['login_id']) else: already_items = [] inventory_count = 0 _search = getSearchParams(params) search = {'items': {}, 'spells': {}, 'artworks': {}} sort = getSortParams(params) if 't' in params: if params['t'] == 'item': search['items'] = _search elif params['t'] == 'artwork': search['artworks'] = _search elif params['t'] == 'spell': search['spells'] = _search fields.update({'is_' + params['t'] + '_filter': True}) #print ">>>>> PARAMS <<<<<<" #print params default_params = {'s': 'name', 'o': 1, 'pi': 1, 'ps': 1, 'pa': 1} for param_name in default_params: if param_name in params: new_param = params[param_name] if param_name != 's': new_param = int(new_param) if param_name == 'o': new_param *= -1 else: new_param = default_params[param_name] fields.update({'param_' + param_name: new_param}) items_on_page = 20 spells_on_page = 20 artworks_on_page = 15 fields.update( self.getPaginatorData(items_on_page, spells_on_page, artworks_on_page, search)) view = 0 if 'view' in params: if params['view'] == 'tiled': view = 1 fields.update({'view': view}) if "view" in params and int(params["view"]) == 1: templatePart = "list" else: templatePart = "table" template = "shop_items_" + templatePart if 'page_type' in params: if params['page_type'] == 'new': template = "shop_news_list" fields.update({'new_things': self.getNewThings()}) elif params['page_type'] == 'items': template = "shop_items_" + templatePart fields.update({ 'inventory_count': inventory_count, 'players_items': self.getPlayersItems(params, items_on_page, search['items'], sort, total_pages=fields['item_pages']), 'display_items_pages': getDisplayPages(int(fields['param_pi']), fields['item_pages'], 10) }) elif params['page_type'] == 'spells': template = "shop_spells_" + templatePart fields.update({ 'spells': self.getSpells(params, spells_on_page, search['spells'], sort, total_pages=fields['spell_pages']), 'display_spells_pages': getDisplayPages(int(fields['param_ps']), fields['spell_pages'], 10) }) elif params['page_type'] == 'artworks': template = "shop_artworks_list" fields.update({ 'artworks': self.getArtworks(params, artworks_on_page, search['artworks'], total_pages=fields['artwork_pages']), 'display_artworks_pages': getDisplayPages(int(fields['param_pa']), fields['artwork_pages'], 10) }) elif params['page_type'] == 'trivia': template = "shop_trivias_list" fields.update( {'shop_items': self.getTriviaItems(already_items)}) logged = self.sbuilder.playerLogged() if logged: fields.update({'login': True}) htmlField = ({ "html": basic.defaultController._printTemplate(self, template, fields.copy()) }) fields.update({"html": htmlField}) fields = json.dumps(fields, sort_keys=True, indent=4, default=json_util.default) else: fields = False return fields
def printAjaxShopRecords(self, params): def getSearchParams(params): keys = ['search', 'type', 'cost_min', 'cost_max', 'author', 'level_min', 'level_max', 'only_can_use', 'race', 'class', 'keyword', 'tag'] search = {} if 'search' in params: for key in keys: if key in params: stripped = params[key].strip() if stripped: search.update({key: stripped}) if 'search' in search: search['name'] = {'$regex': re.compile('.*' + search['search'] + '.*', re.IGNORECASE)} del search['search'] if 'keyword' in search: search['keyword'] = {'$regex': re.compile('.*' + search['keyword'] + '.*', re.IGNORECASE)} if 'tag' in search: search['tag'] = {'$regex': re.compile('.*' + search['tag'] + '.*', re.IGNORECASE)} if 'type' in search: item_type = search['type'].split(':') if len(item_type) != 1: search['view'] = item_type[1] search['type'] = int(item_type[0]) if 'author' in search: player_id = self.model.players.getPlayer_ID( {'$regex': re.compile('.*' + search['author'] + '.*', re.IGNORECASE)}) if player_id: search['author'] = player_id else: search['author'] = 0 if 'cost_min' in search: try: search['cost'] = {'$gte': int(search['cost_min'])} except Exception: pass del search['cost_min'] if 'cost_max' in search: try: if "cost" in search: search['cost'].update({'$lte': int(search['cost_max'])}) else: search['cost'] = {'$lte': int(search['cost_max'])} except Exception: pass del search['cost_max'] if 'level_min' in search: try: search['lvl_min'] = {'$gte': int(search['level_min'])} except Exception: pass del search['level_min'] if 'level_max' in search: try: if "lvl_min" in search: search['lvl_min'].update({'$lte': int(search['level_max'])}) else: search['lvl_min'] = {'$lte': int(search['level_max'])} except Exception: pass del search['level_max'] if 'race' in search: try: info = search['race'].split(':') info[0], info[1] = int(info[0]), int(info[1]) if not -1 in info: search.update({ 'race': info[1], 'faction': info[0] }) else: raise Exception except Exception: del search['race'] if 'class' in search: try: class_id = int(search['class']) if not class_id: raise Exception search['class'] = class_id except Exception: del search['class'] if 't' in params: prefix = params['t'] for key in keys: if key in params: fields.update({'param_' + prefix + '_' + key: params[key]}) return search def getSortParams(params): if 's' in params: if 'o' in params and params['o'] in ['-1', '1']: order = int(params['o']) else: order = 1 if params['s'] in ['type', 'name', 'lvl_min', 'author', 'cost', 'date']: if params['s'] == 'date': prm = 'create_time' else: prm = params['s'] return {prm: order} return {} if not self.isAjax(): page_sharp = '' if 'page_type' in params and params['page_type'] in ['items', 'spells', 'artworks']: page_sharp = '#!tab-' + params['page_type'] params['__page__'] = '/u/shop/' + page_sharp return self.httpRedirect(params) fields = {'stat_names': self.balance.stats_name} if self.cur_player: already_items = self.getPlayerBuyedItems(self.cur_player['login_id']) inventory_count = self.model.items.getInventoryCount(self.cur_player['login_id']) else: already_items = [] inventory_count = 0 _search = getSearchParams(params) search = { 'items': {}, 'spells': {}, 'artworks': {} } sort = getSortParams(params) if 't' in params: if params['t'] == 'item': search['items'] = _search elif params['t'] == 'artwork': search['artworks'] = _search elif params['t'] == 'spell': search['spells'] = _search fields.update({'is_' + params['t'] + '_filter': True}) #print ">>>>> PARAMS <<<<<<" #print params default_params = { 's': 'name', 'o': 1, 'pi': 1, 'ps': 1, 'pa': 1 } for param_name in default_params: if param_name in params: new_param = params[param_name] if param_name != 's': new_param = int(new_param) if param_name == 'o': new_param *= -1 else: new_param = default_params[param_name] fields.update({'param_' + param_name: new_param}) items_on_page = 20 spells_on_page = 20 artworks_on_page = 15 fields.update(self.getPaginatorData(items_on_page, spells_on_page, artworks_on_page, search)) view = 0 if 'view' in params: if params['view'] == 'tiled': view = 1 fields.update({'view': view}) if "view" in params and int(params["view"]) == 1: templatePart = "list" else: templatePart = "table" template = "shop_items_" + templatePart if 'page_type' in params: if params['page_type'] == 'new': template = "shop_news_list" fields.update({ 'new_things': self.getNewThings() }) elif params['page_type'] == 'items': template = "shop_items_" + templatePart fields.update({ 'inventory_count': inventory_count, 'players_items': self.getPlayersItems( params, items_on_page, search['items'], sort, total_pages=fields['item_pages'] ), 'display_items_pages': getDisplayPages(int(fields['param_pi']), fields['item_pages'], 10) }) elif params['page_type'] == 'spells': template = "shop_spells_" + templatePart fields.update({ 'spells': self.getSpells( params, spells_on_page, search['spells'], sort, total_pages=fields['spell_pages'] ), 'display_spells_pages': getDisplayPages(int(fields['param_ps']), fields['spell_pages'], 10) }) elif params['page_type'] == 'artworks': template = "shop_artworks_list" fields.update({ 'artworks': self.getArtworks( params, artworks_on_page, search['artworks'], total_pages=fields['artwork_pages'] ), 'display_artworks_pages': getDisplayPages(int(fields['param_pa']), fields['artwork_pages'], 10) }) elif params['page_type'] == 'trivia': template = "shop_trivias_list" fields.update({ 'shop_items': self.getTriviaItems(already_items) }) logged = self.sbuilder.playerLogged() if logged: fields.update({'login': True}) htmlField = ({"html": basic.defaultController._printTemplate(self, template, fields.copy())}) fields.update({"html": htmlField}) fields = json.dumps(fields, sort_keys=True, indent=4, default=json_util.default) else: fields = False return fields