5
""" maintain shopping lists """
7
__copyright__ = 'this file is in the public domain'
9
from gozerbot.generic import getwho
10
from gozerbot.users import users
11
from gozerbot.commands import cmnds
12
from gozerbot.examples import examples
13
from gozerbot.datadir import datadir
14
from gozerbot.pdol import Pdol
15
from gozerbot.plughelp import plughelp
18
plughelp.add('shop', ' maintain shopping lists (per user)')
20
# shops are pickled dict of lists
21
shops = Pdol(datadir + os.sep + 'shops')
24
""" return number of shops entries """
25
return len(shops.data)
27
def sayshop(bot, ievent, shoplist):
28
""" output shoplist """
30
ievent.reply('nothing to shop ;]')
35
result.append('%s) %s' % (teller, i))
37
ievent.reply("shoplist: ", result)
39
def handle_shop(bot, ievent):
40
""" shop [<item>] .. show shop list or add <item> """
41
if len(ievent.args) != 0:
42
handle_shop2(bot, ievent)
45
username = users.getname(ievent.userhost)
46
shop = shops[username]
47
sayshop(bot, ievent, shop)
49
cmnds.add('shop', handle_shop, 'USER')
51
def handle_shop2(bot, ievent):
52
""" add items to shop list """
54
ievent.missing('<shopitem>')
58
username = users.getname(ievent.userhost)
59
shops[username] = what
61
ievent.reply('shop item added')
63
examples.add('shop', 'shop [<item>] .. show shop items or add a shop item', \
64
'1) shop 2) shop bread')
66
def handle_shopchan(bot, ievent):
67
""" shop-chan [<item>] .. show channel shop list or add <item> """
68
if len(ievent.args) != 0:
69
handle_shopchan2(bot, ievent)
71
shop = shops[(bot.name, ievent.channel)]
72
sayshop(bot, ievent, shop)
74
cmnds.add('shop-chan', handle_shopchan, 'USER')
75
examples.add('shop-chan', 'shop-chan [<item>] .. show channel shop list or \
76
add <item>', '1) shop-chan 2) shop-chan milk')
78
def handle_shopchan2(bot, ievent):
79
""" add items to shop list """
81
ievent.missing('<shopitem>')
85
shops[(bot.name, ievent.channel)] = what
87
ievent.reply('shop item added')
89
def handle_addshop(bot, ievent):
90
""" shop-add <username> <item> .. add items to shop list of <username>"""
91
if len(ievent.args) < 2:
92
ievent.missing('<username> <item>')
96
what = ' '.join(ievent.args[1:])
97
userhost = getwho(bot, who)
99
ievent.reply("can't find userhost of %s" % who)
101
# get username of use giviing the command
102
username = users.getname(ievent.userhost)
103
# get username of person we want to knwo the shop list of
104
whoname = users.getname(userhost)
106
ievent.reply("can't find user for %s" % userhost)
108
if users.permitted(userhost, username, 'shop'):
109
shops[whoname] = what
111
ievent.reply('shop item added')
113
ievent.reply("%s does not share shopping list with %s" % (who, \
116
cmnds.add('shop-add', handle_addshop, 'USER')
117
examples.add('shop-add', 'shop-add <username> <item> .. add shop item of \
118
someone else', '1) shop-add dunker milk')
120
def handle_getshop(bot, ievent):
121
""" shop-get <name> .. get items of someone elses shop list """
123
ievent.missing('<username>')
126
userhost = getwho(bot, who)
128
ievent.reply("can't find userhost of %s" % who)
130
username = users.getname(ievent.userhost)
131
whoname = users.getname(userhost)
133
ievent.reply("can't find user for %s" % userhost)
135
if users.permitted(userhost, username, 'shop'):
136
shop = shops[whoname]
137
sayshop(bot, ievent, shop)
139
ievent.reply("%s does not share shopping list with %s" % (who, \
142
cmnds.add('shop-get', handle_getshop, ['USER', 'WEB'])
143
examples.add('shop-get', 'shop-get <name> .. get shop items of someone \
144
else', '1) shop-get dunker')
146
def handle_delshop(bot, ievent):
147
""" shop-del <username> <listofnrs> .. delete items of someone elses \
149
if len(ievent.args) < 2:
150
ievent.missing('<username> <listofnrs>')
156
for i in ievent.args[1:]:
159
ievent.reply('%s is not an integer' % i)
161
userhost = getwho(bot, who)
163
ievent.reply("can't find userhost of %s" % who)
165
username = users.getname(ievent.userhost)
166
whoname = users.getname(userhost)
168
ievent.reply("can't find user for %s" % userhost)
170
if users.permitted(userhost, username, 'shop'):
172
shop = shops[whoname]
174
ievent.reply('nothing to shop ;]')
178
for i in range(len(shop)-1, -1 , -1):
185
ievent.reply('shop item deleted')
187
ievent.reply("%s does not share shopping list with %s" % (who, \
190
cmnds.add('shop-del', handle_delshop, 'USER')
191
examples.add('shop-del', 'shop-del <username> <listofnrs> .. delete shop \
192
item of someone else', '1) shop-del dunker 2 4 5')
194
def handle_got(bot, ievent):
195
""" got <listofnrs> .. remove items from shoplist """
196
if len(ievent.args) == 0:
197
ievent.missing('<list of nrs>')
201
for i in ievent.args:
204
ievent.reply('%s is not an integer' % i)
206
username = users.getname(ievent.userhost)
208
shop = shops[username]
210
ievent.reply('nothing to shop ;]')
213
ievent.reply("nothing to shop ;]")
218
for i in range(len(shop)-1, -1 , -1):
226
ievent.reply('%s shop item(s) deleted' % teller)
228
cmnds.add('got', handle_got, 'USER')
229
examples.add('got', 'got <listofnrs> .. remove item <listofnrs> from shop \
230
list','1) got 3 2) got 1 6 8')
232
def handle_gotchan(bot, ievent):
233
""" got-chan <listofnrs> .. remove items from channel shoplist """
234
if len(ievent.args) == 0:
235
ievent.missing('<list of nrs>')
239
for i in ievent.args:
242
ievent.reply('%s is not an integer' % i)
245
shop = shops[(bot.name, ievent.channel)]
247
ievent.reply("nothing to shop")
250
ievent.reply("nothing to shop")
255
for i in range(len(shop)-1, -1 , -1):
263
ievent.reply('%s shop item(s) deleted' % teller)
265
cmnds.add('got-chan', handle_gotchan, 'USER')
266
examples.add('got-chan', 'got-chan <listofnrs> .. remove listofnrs from \
267
channel shop list', '1) got-chan 3 2) got-chan 1 6 8')