Esempio n. 1
0
def getItemsByCategory(filter, where=None, eager=None):
	if isinstance(filter, int):
		filter = Category.ID == filter
	elif isinstance(filter, basestring):
		filter = Category.name == filter
	else:
		raise TypeError("Need integer or string as argument")

	filter = processWhere(filter, where)
	return gamedata_session.query(Item).options(*processEager(eager)).join(Item.group, Group.category).filter(filter).all()
Esempio n. 2
0
def getRegion(lookfor, eager=None):
	if isinstance(lookfor, int):
		if eager is None:
			region = gamedata_session.query(Region).get(lookfor)
		else:
			region = gamedata_session.query(Region).options(*processEager(eager)).filter(Region.ID == lookfor).first()
	elif isinstance(lookfor, basestring):
		if lookfor in regionNameMap:
			id = regionNameMap[lookfor]
			if eager is None:
				region = gamedata_session.query(Region).get(id)
			else:
				region = gamedata_session.query(Region).options(*processEager(eager)).filter(Region.ID == id).first()
		else:
			# Group names are unique, so we can use first() instead of one()
			region = gamedata_session.query(Region).options(*processEager(eager)).filter(Region.name == lookfor).first()
			regionNameMap[lookfor] = region.ID
	else:
		raise TypeError("Need integer or string as argument")
	return region
Esempio n. 3
0
def getMarketGroup(lookfor, eager=None):
	if isinstance(lookfor, int):
		if eager is None:
			marketGroup = gamedata_session.query(MarketGroup).get(lookfor)
		else:
			marketGroup = gamedata_session.query(MarketGroup).options(*processEager(eager)).filter(MarketGroup.ID == lookfor).first()
	elif isinstance(lookfor, basestring):
		marketGroup = gamedata_session.query(MarketGroup).filter(MarketGroup.name == lookfor).first()
	else:
		raise TypeError("Need integer or string as argument")
	return marketGroup
Esempio n. 4
0
def getCategory(lookfor, eager=None):
	if isinstance(lookfor, int):
		if eager is None:
			category = gamedata_session.query(Category).get(lookfor)
		else:
			category = gamedata_session.query(Category).options(*processEager(eager)).filter(Category.ID == lookfor).first()
	elif isinstance(lookfor, basestring):
		if lookfor in categoryNameMap:
			id = categoryNameMap[lookfor]
			if eager is None:
				category = gamedata_session.query(Category).get(id)
			else:
				category = gamedata_session.query(Category).options(*processEager(eager)).filter(Category.ID == id).first()
		else:
			# Category names are unique, so we can use first() instead of one()
			category = gamedata_session.query(Category).options(*processEager(eager)).filter(Category.name == lookfor).first()
			categoryNameMap[lookfor] = category.ID
	else:
		raise TypeError("Need integer or string as argument")
	return category
Esempio n. 5
0
def getAttributeInfo(attr, eager=None):
	if isinstance(attr, basestring):
		filter = AttributeInfo.name == attr
	elif isinstance(attr, int):
		filter = AttributeInfo.ID == attr
	else:
		raise TypeError("Need integer or string as argument")
	try:
		result = gamedata_session.query(AttributeInfo).options(*processEager(eager)).filter(filter).one()
	except exc.NoResultFound:
		result = None
	return result
Esempio n. 6
0
def getItem(lookfor, eager=None):
	if isinstance(lookfor, int):
		if eager is None:
			item = gamedata_session.query(Item).get(lookfor)
		else:
			item = gamedata_session.query(Item).options(*processEager(eager)).filter(Item.ID == lookfor).first()
	elif isinstance(lookfor, basestring):
		if lookfor in itemNameMap:
			id = itemNameMap[lookfor]
			if eager is None:
				item = gamedata_session.query(Item).get(id)
			else:
				item = gamedata_session.query(Item).options(*processEager(eager)).filter(Item.ID == id).first()
		else:
			# Item names are unique, so we can use first() instead of one()
			item = gamedata_session.query(Item).options(*processEager(eager)).filter(Item.name == lookfor).first()
			if not item:
				return None
			itemNameMap[lookfor] = item.ID
	else:
		raise TypeError("Need integer or string as argument")
	return item
Esempio n. 7
0
def getVariations(itemids, where=None, eager=None):
	for itemid in itemids:
		if not isinstance(itemid, int):
			raise TypeError("All passed item IDs must be integers")
	# Get out if list of provided IDs is empty
	if len(itemids) == 0:
		return []

	itemfilter = or_(*(metatypes_table.c.parentTypeID == itemid for itemid in itemids))
	filter = processWhere(itemfilter, where)
	joinon = items_table.c.typeID == metatypes_table.c.typeID
	vars = gamedata_session.query(Item).options(*processEager(eager)).join((metatypes_table, joinon)).filter(filter).all()
	return vars
Esempio n. 8
0
def searchItems(nameLike, where=None, join=None, eager=None):
	if not isinstance(nameLike, basestring):
		raise TypeError("Need string as argument")
	# Prepare our string for request
	nameLike = u"%{0}%".format(sqlizeString(nameLike))

	if join is None:
		join = tuple()

	if not hasattr(join, "__iter__"):
		join = (join,)

	filter = processWhere(Item.name.like(nameLike, escape="\\"), where)
	items = gamedata_session.query(Item).options(*processEager(eager)).join(*join).filter(filter).all()
	return items