示例#1
0
文件: player.py 项目: MHM5000/tweeria
    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)
示例#2
0
文件: misc.py 项目: Ghloin/tweeria
	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)
示例#3
0
文件: misc.py 项目: Ghloin/tweeria
	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)
示例#4
0
    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)
示例#5
0
    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)
示例#6
0
    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
示例#7
0
文件: shop.py 项目: Ghloin/tweeria
    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