Commit 9fdb8cad authored by Administrator's avatar Administrator
Browse files

[TPG] Misc changes for new dispense

parent 08a39261
......@@ -18,7 +18,7 @@ from MessageKeeper import MessageKeeper
from HorizScroll import HorizScroll
from random import random, seed
from Idler import GreetingIdler,TrainIdler,GrayIdler,StringIdler,ClockIdler,FortuneIdler,FileIdler,PipeIdler
from SnackConfig import get_snacks, get_snack
from SnackConfig import get_snack#, get_snacks
import socket
from posix import geteuid
from LDAPConnector import get_uid, set_card_id
......@@ -108,13 +108,18 @@ def scroll_options(username, mk, welcome = False):
else:
msg = []
choices = ' '*10+'CHOICES: '
try:
coke_machine = file('/home/other/coke/coke_contents')
cokes = coke_machine.readlines()
coke_machine.close()
except:
cokes = []
pass
# Get coke contents
cokes = []
for i in range(0, 7):
cmd = 'dispense iteminfo coke:%i' % i
raw = os.popen(cmd)
info = raw.read()
raw.close()
m = re.match("\s*[a-z]+:\d+\s+(\d+)\.(\d\d)\s+([^\n]+)", info)
cents = int(m.group(1))*100 + int(m.group(2))
cokes.append('%i %i %s' % (i, cents, m.group(3)));
for c in cokes:
c = c.strip()
(slot_num, price, slot_name) = c.split(' ', 2)
......@@ -410,7 +415,8 @@ def make_selection(v, vstatus):
vstatus.mk.set_message('OPENSESAME')
logging.info('dispensing a door for %s'%vstatus.username)
if geteuid() == 0:
ret = os.system('su - "%s" -c "dispense door"'%vstatus.username)
#ret = os.system('su - "%s" -c "dispense door"'%vstatus.username)
ret = os.system('dispense -u "%s" door'%vstatus.username)
else:
ret = os.system('dispense door')
if ret == 0:
......@@ -428,7 +434,7 @@ def make_selection(v, vstatus):
return
elif vstatus.cur_selection[1] == '8':
v.display('GOT DRINK?')
if ((os.system('su - "%s" -c "dispense %s"'%(vstatus.username, vstatus.cur_selection[0])) >> 8) != 0):
if ((os.system('dispense -u "%s" coke:%s'%(vstatus.username, vstatus.cur_selection[0])) >> 8) != 0):
v.display('SEEMS NOT')
else:
v.display('GOT DRINK!')
......@@ -440,15 +446,23 @@ def make_selection(v, vstatus):
price, shortname, name = get_snack( '--' )
dollarprice = "$%.2f" % ( price / 100.0 )
v.display(vstatus.cur_selection+' - %s'%dollarprice)
exitcode = os.system('su - "%s" -c "dispense give \>snacksales %d \'%s\'"'%(vstatus.username, price, name)) >> 8
exitcode = os.system('dispense -u "%s" give \>snacksales %d "%s"'%(vstatus.username, price, name)) >> 8
# exitcode = os.system('dispense -u "%s" give \>sales\:snack %d "%s"'%(vstatus.username, price, name)) >> 8
# exitcode = os.system('dispense -u "%s" snack:%s'%(vstatus.username, vstatus.cur_selection)) >> 8
if (exitcode == 0):
# magic dispense syslog service
syslog.syslog(syslog.LOG_INFO | syslog.LOG_LOCAL4, "vended %s (slot %s) for %s" % (name, vstatus.cur_selection, vstatus.username))
v.vend(vstatus.cur_selection)
v.display('THANK YOU')
elif (exitcode == 5): # RV_BALANCE
v.display('NO MONEY?')
elif (exitcode == 4): # RV_ARGUMENTS (zero give causes arguments)
v.display('EMPTY SLOT')
elif (exitcode == 1): # RV_BADITEM (Dead slot)
v.display('EMPTY SLOT')
else:
syslog.syslog(syslog.LOG_INFO | syslog.LOG_LOCAL4, "failed vending %s (slot %s) for %s (code %d)" % (name, vstatus.cur_selection, vstatus.username, exitcode))
v.display('NO MONEY?')
v.display('UNK ERROR')
sleep(1)
......@@ -1072,6 +1086,8 @@ def do_vend_server(options, config_opts):
sleep(5)
continue
# run_forever(rfh, wfh, options, config_opts)
try:
run_forever(rfh, wfh, options, config_opts)
except VendingException:
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment