added delete_item command

doc_update
Joey Hines 2018-07-31 20:16:14 -05:00
parent f8c4009f19
commit 14191e87fe
3 changed files with 87 additions and 39 deletions

View File

@ -56,25 +56,25 @@ class Commands:
return base_str
def add_shop(self, x_pos, z_pos, shop_str=None, discord_uuid=None, mc_uuid=None):
def add_shop(self, x_pos, z_pos, shop_name=None, discord_uuid=None, mc_uuid=None):
session = self.interface.database.Session()
try:
player = self.get_player(session, discord_uuid, mc_uuid)
if len(self.interface.find_shop_by_owner(session, player)) == 0:
if shop_str is None:
shop_str = "{}'s Shop".format(player.name)
elif shop_str is None:
if shop_name is None:
shop_name = "{}'s Shop".format(player.name)
elif shop_name is None:
raise EntryNameNotUniqueError
shop = self.interface.add_shop(session, player, shop_str, x_pos, z_pos)
shop = self.interface.add_shop(session, player, shop_name, x_pos, z_pos)
shop_str = shop.__str__()
shop_name = shop.__str__()
finally:
session.close()
return shop_str
return shop_name
def add_tunnel(self, tunnel_color, tunnel_number, location_name, discord_uuid=None, mc_uuid=None):
@ -258,4 +258,20 @@ class Commands:
return loc_str
def delete_item(self, item, shop_name, discord_uuid=None, mc_uuid=None):
session = self.interface.database.Session()
try:
player = self.get_player(session, discord_uuid=discord_uuid, mc_uuid=mc_uuid)
shop = self.interface.find_shop_by_name_and_owner(session, player, shop_name)[0]
expr = (ItemListing.name == item) & (ItemListing.shop == shop)
self.interface.database.delete_entry(session, ItemListing, expr)
shop_str = shop.full_str()
finally:
session.close()
return shop_str

View File

@ -86,11 +86,11 @@ async def register(ctx):
@commands.cooldown(5, 60, commands.BucketType.user)
@bot.command(pass_context=True)
async def addbase(ctx, x_pos: int, z_pos: int, * args):
async def add_base(ctx, x_pos: int, z_pos: int, * args):
'''
Adds your base to the database.
The name is optional.
?addbase [X Coordinate] [Z Coordinate] [Base Name]
?add_base [X Coordinate] [Z Coordinate] [Base Name]
'''
name = get_name(args)
@ -111,17 +111,17 @@ async def addbase(ctx, x_pos: int, z_pos: int, * args):
@commands.cooldown(5, 60, commands.BucketType.user)
@bot.command(pass_context=True)
async def addshop(ctx, x_pos: int, z_pos: int, *args):
async def add_shop(ctx, x_pos: int, z_pos: int, *args):
'''
Adds your shop to the database.
The name is optional.
?addshop [X Coordinate] [Z Coordinate] [Shop Name]
?add_shop [X Coordinate] [Z Coordinate] [Shop Name]
'''
name = get_name(args)
try:
shop = bot_commands.add_shop(x_pos, z_pos, shop_str=name, discord_uuid=ctx.message.author.id)
shop = bot_commands.add_shop(x_pos, z_pos, shop_name=name, discord_uuid=ctx.message.author.id)
await bot.say('{}, your shop has been added to the database: \n\n{}'.format(ctx.message.author.mention, shop))
except LocationInitError:
raise commands.UserInputError
@ -136,15 +136,15 @@ async def addshop(ctx, x_pos: int, z_pos: int, *args):
@commands.cooldown(5, 60, commands.BucketType.user)
@bot.command(pass_context=True)
async def addtunnel(ctx, tunnel_color: str, tunnel_number: int, *args):
async def add_tunnel(ctx, tunnel_color: str, tunnel_number: int, *args):
'''
Adds your tunnel to the database.
The location name is optional.
?tunnel [Tunnel Color] [Tunnel Number] [Location Name]
'''
try:
loc_name = get_name(args)
loc_name = get_name(args)
try:
bot_commands.add_tunnel(tunnel_color, tunnel_number, discord_uuid=ctx.message.author.id, location_name=loc_name)
await bot.say('{}, your tunnel has been added to the database'.format(ctx.message.author.mention))
except EntryNameNotUniqueError:
@ -159,7 +159,7 @@ async def addtunnel(ctx, tunnel_color: str, tunnel_number: int, *args):
except TunnelInitError:
await bot.say('{}, invalid tunnel color.'.format(ctx.message.author.mention))
except InvalidTunnelError:
await bot.say('{}, {} is an invalid tunnel color.'.format(ctx.message.author.mention, tunnel_color))
await bot.say('{}, **{}** is an invalid tunnel color.'.format(ctx.message.author.mention, tunnel_color))
@commands.cooldown(5, 60, commands.BucketType.user)
@ -169,8 +169,8 @@ async def find(ctx, * args):
Finds all the locations and tunnels matching the search term
?find [Search]
'''
try:
search = get_name(args)
try:
if search is None:
raise commands.UserInputError
@ -205,9 +205,8 @@ async def delete(ctx, * args):
Deletes a location from the database.
?delete [Location name]
'''
try:
loc = get_name(args)
try:
if loc is None:
raise commands.UserInputError
@ -219,13 +218,13 @@ async def delete(ctx, * args):
@bot.command(pass_context=True)
@commands.cooldown(5, 60, commands.BucketType.user)
async def findaround(ctx, x_pos: int, z_pos: int, * args):
async def find_around(ctx, x_pos: int, z_pos: int, * args):
'''
Finds all the locations around a certain point.
The radius defaults to 200 blocks if no value is given.
Default dimension is overworld.
?findaround [X Coordinate] [Z Coordinate] [Radius] [Optional Flags]
?find_around [X Coordinate] [Z Coordinate] [Radius] [Optional Flags]
Optional Flags:
-d [dimension]
@ -259,16 +258,15 @@ async def findaround(ctx, x_pos: int, z_pos: int, * args):
@bot.command(pass_context=True)
@commands.cooldown(5, 60, commands.BucketType.user)
async def additem(ctx, item_name: str, quantity: int, diamond_price: int, * args):
async def add_item(ctx, item_name: str, quantity: int, diamond_price: int, * args):
'''
Adds an item to a shop's inventory.
Quantity for Diamond Price.
?additem [Item Name] [Quantity] [Price] [Shop name]
'''
try:
shop_name = get_name(args)
try:
bot_commands.add_item(item_name, quantity, diamond_price, shop_name=shop_name,
discord_uuid=ctx.message.author.id)
await bot.say('{}, **{}** has been added to the inventory of your shop.'.format(ctx.message.author.mention,
@ -308,8 +306,8 @@ async def info(ctx, * args):
?info [Location Name]
'''
try:
loc = get_name(args)
try:
if loc is None:
raise commands.UserInputError
@ -329,8 +327,8 @@ async def edit_pos(ctx, x_pos: int, y_pos: int, * args):
?edit_pos [X Coordinate] [Z Coordinate] [Location Name]
'''
try:
loc = get_name(args)
try:
loc_str = bot_commands.edit_pos(x_pos, y_pos, loc, discord_uuid=ctx.message.author.id)
await bot.say('{}, the following location has been updated: \n\n{}'.format(ctx.message.author.mention, loc_str))
@ -347,8 +345,8 @@ async def edit_tunnel(ctx, tunnel_color: str, tunnel_number: int, * args):
?edit_tunnel [Tunnel Color] [Tunnel Number] [Location Name]
'''
try:
loc = get_name(args)
try:
loc_str = bot_commands.edit_tunnel(tunnel_color, tunnel_number, loc, discord_uuid=ctx.message.author.id)
await bot.say('{}, the following location has been updated: \n\n{}'.format(ctx.message.author.mention, loc_str))
@ -356,7 +354,8 @@ async def edit_tunnel(ctx, tunnel_color: str, tunnel_number: int, * args):
await bot.say('{}, you do not have a location called **{}**.'.format(
ctx.message.author.mention, loc))
except InvalidTunnelError:
await bot.say('{}, {} is an invalid tunnel color.'.format(ctx.message.author.mention, tunnel_color))
await bot.say('{}, **{}** is an invalid tunnel color.'.format(ctx.message.author.mention, tunnel_color))
@commands.cooldown(5, 60, commands.BucketType.user)
@bot.command(pass_context=True)
@ -376,6 +375,25 @@ async def edit_name(ctx, new_name: str, current_name: str):
ctx.message.author.mention, current_name))
@commands.cooldown(5, 60, commands.BucketType.user)
@bot.command(pass_context=True)
async def delete_item(ctx, item: str, * args):
'''
Deletes an item listing from a shop inventory
?delete_name [Item] [Shop Name]
'''
shop = get_name(args)
try:
bot_commands.delete_item(item, shop, discord_uuid=ctx.message.author.id)
await bot.say('{}, **{}** has been removed from the inventory of **{}**.', item, shop)
except LocationLookUpError:
await bot.say('{}, you do not have a shop called **{}**.'.format(ctx.message.author.mention, shop))
except DeleteEntryError:
await bot.say('{}, **{}** does not sell **{}**.', shop, item)
# Helper Functions ************************************************************
def get_name(args):

View File

@ -51,7 +51,7 @@ class TestCommands(TestCase):
def test_addtunnel(self):
self.commands.register('ZeroHD', '143072699567177728')
self.commands.add_shop(0, 0, shop_str='test shop', discord_uuid='143072699567177728')
self.commands.add_shop(0, 0, shop_name='test shop', discord_uuid='143072699567177728')
tunnel1 = self.commands.add_tunnel('green', 50, None, discord_uuid='143072699567177728')
@ -67,7 +67,7 @@ class TestCommands(TestCase):
def test_find(self):
self.commands.register('ZeroHD', '143072699567177728')
self.commands.add_shop(0, 0, shop_str='frick', discord_uuid='143072699567177728')
self.commands.add_shop(0, 0, shop_name='frick', discord_uuid='143072699567177728')
self.commands.add_base(0, 0, 'heck', discord_uuid='143072699567177728')
result = self.commands.find('zerohd')
@ -79,7 +79,7 @@ class TestCommands(TestCase):
def test_delete(self):
self.commands.register('ZeroHD', '143072699567177728')
self.commands.add_shop(0, 0, shop_str='frick', discord_uuid='143072699567177728')
self.commands.add_shop(0, 0, shop_name='frick', discord_uuid='143072699567177728')
self.commands.delete('frick', discord_uuid='143072699567177728')
@ -87,7 +87,7 @@ class TestCommands(TestCase):
def test_findaround(self):
self.commands.register('ZeroHD', '143072699567177728')
self.commands.add_shop(0, 0, shop_str='frick', discord_uuid='143072699567177728')
self.commands.add_shop(0, 0, shop_name='frick', discord_uuid='143072699567177728')
result = self.commands.find_around(0, 0)
@ -107,7 +107,7 @@ class TestCommands(TestCase):
else:
self.fail()
self.commands.add_shop(0, 0, shop_str='frick', discord_uuid='143072699567177728')
self.commands.add_shop(0, 0, shop_name='frick', discord_uuid='143072699567177728')
result = self.commands.add_item('cool', 5, 5, shop_name='frick', discord_uuid='143072699567177728')
@ -118,7 +118,7 @@ class TestCommands(TestCase):
def test_selling(self):
self.commands.register('ZeroHD', '143072699567177728')
self.commands.add_shop(0, 0, shop_str='frick', discord_uuid='143072699567177728')
self.commands.add_shop(0, 0, shop_name='frick', discord_uuid='143072699567177728')
self.commands.add_item('cool', 5, 5, shop_name='frick', discord_uuid='143072699567177728')
@ -131,7 +131,7 @@ class TestCommands(TestCase):
def test_info(self):
self.commands.register('ZeroHD', '143072699567177728')
self.commands.add_shop(0, 0, shop_str='frick', discord_uuid='143072699567177728')
self.commands.add_shop(0, 0, shop_name='frick', discord_uuid='143072699567177728')
self.commands.add_tunnel('Green', 50, location_name='frick', discord_uuid='143072699567177728')
@ -144,7 +144,7 @@ class TestCommands(TestCase):
def test_tunnel(self):
self.commands.register('ZeroHD', '143072699567177728')
self.commands.add_shop(0, 0, shop_str='test shop', discord_uuid='143072699567177728')
self.commands.add_shop(0, 0, shop_name='test shop', discord_uuid='143072699567177728')
tunnel = self.commands.add_tunnel('green', 50, None, discord_uuid='143072699567177728')
@ -157,7 +157,7 @@ class TestCommands(TestCase):
def test_edit_name(self):
self.commands.register('ZeroHD', '143072699567177728')
self.commands.add_shop(0, 0, shop_str='test shop', discord_uuid='143072699567177728')
self.commands.add_shop(0, 0, shop_name='test shop', discord_uuid='143072699567177728')
self.commands.edit_name('cool shop', 'test shop', discord_uuid='143072699567177728')
@ -170,7 +170,7 @@ class TestCommands(TestCase):
def test_edit_pos(self):
self.commands.register('ZeroHD', '143072699567177728')
self.commands.add_shop(0, 0, shop_str='test shop', discord_uuid='143072699567177728')
self.commands.add_shop(0, 0, shop_name='test shop', discord_uuid='143072699567177728')
self.commands.edit_pos(500, 500, 'test shop', discord_uuid='143072699567177728')
@ -183,7 +183,7 @@ class TestCommands(TestCase):
def test_edit_tunnel(self):
self.commands.register('ZeroHD', '143072699567177728')
self.commands.add_shop(0, 0, shop_str='test shop', discord_uuid='143072699567177728')
self.commands.add_shop(0, 0, shop_name='test shop', discord_uuid='143072699567177728')
self.commands.edit_tunnel('green', 500, 'test shop', discord_uuid='143072699567177728')
@ -194,4 +194,18 @@ class TestCommands(TestCase):
else:
self.fail()
def test_delete_item(self):
self.commands.register('ZeroHD', '143072699567177728')
self.commands.add_shop(0, 0, shop_name='test shop', discord_uuid='143072699567177728')
self.commands.add_item('dirt', 5, 5, shop_name='test shop', discord_uuid='143072699567177728')
self.commands.add_item('wood', 5, 5, shop_name='test shop', discord_uuid='143072699567177728')
result = self.commands.delete_item('dirt', 'test_shop', discord_uuid='143072699567177728')
if ('dirt' not in result) & ('wood' in result):
pass
else:
self.fail()