X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=VendServer%2FVendServer.py;h=6dfbfe15ea31372ccf1f69a9c01d7bd4e913404d;hb=8861a669b4611e2dbf7aa5354f0248aafba3ef91;hp=21fe2c87067b4e01b30c7283646060ad08a9eb62;hpb=db55f34efc5c9d66c9608176c4b66162ee9e7318;p=uccvend-vendserver.git diff --git a/VendServer/VendServer.py b/VendServer/VendServer.py index 21fe2c8..6dfbfe1 100755 --- a/VendServer/VendServer.py +++ b/VendServer/VendServer.py @@ -1,14 +1,12 @@ #!/usr/bin/python # vim:ts=4 -USE_DB = 0 USE_MIFARE = 1 import ConfigParser import sys, os, string, re, pwd, signal, math, syslog import logging, logging.handlers from traceback import format_tb -if USE_DB: import pg from time import time, sleep, mktime, localtime from subprocess import Popen, PIPE from LATClient import LATClient, LATClientException @@ -21,7 +19,6 @@ from Idler import GreetingIdler,TrainIdler,GrayIdler,StringIdler,ClockIdler,Fort from SnackConfig import get_snack#, get_snacks import socket from posix import geteuid -from LDAPConnector import get_uid,get_uname, set_card_id from OpenDispense import OpenDispense as Dispense CREDITS=""" @@ -95,36 +92,6 @@ class VendConfigFile: except ConfigParser.Error, e: raise SystemExit("Error reading config file "+config_file+": " + str(e)) -class DispenseDatabaseException(Exception): pass - -class DispenseDatabase: - def __init__(self, vending_machine, host, name, user, password): - self.vending_machine = vending_machine - self.db = pg.DB(dbname = name, host = host, user = user, passwd = password) - self.db.query('LISTEN vend_requests') - - def process_requests(self): - logging.debug('database processing') - query = 'SELECT request_id, request_slot FROM vend_requests WHERE request_handled = false' - try: - outstanding = self.db.query(query).getresult() - except (pg.error,), db_err: - raise DispenseDatabaseException('Failed to query database: %s\n'%(db_err.strip())) - for (id, slot) in outstanding: - (worked, code, string) = self.vending_machine.vend(slot) - logging.debug (str((worked, code, string))) - if worked: - query = 'SELECT vend_success(%s)'%id - self.db.query(query).getresult() - else: - query = 'SELECT vend_failed(%s)'%id - self.db.query(query).getresult() - - def handle_events(self): - notifier = self.db.getnotify() - while notifier is not None: - self.process_requests() - notify = self.db.getnotify() """ This class manages the current state of the vending machine. """ @@ -847,15 +814,11 @@ class VendServer(): self._last_card_id = card_id - res = self.dispense.addCard(card_id) - - if get_uid(card_id) != None: + if not self.dispense.addCard(card_id): self.vstatus.mk.set_messages( [(self.center('ALREADY'), False, 0.5), (self.center('ENROLLED'), False, 0.5)]) else: - logging.info('Enrolling card %s to uid %s (%s)'%(card_id, self.vstatus.cur_user, self.vstatus.username)) - self.set_card_id(self.vstatus.cur_user, self.card_id) self.vstatus.mk.set_messages( [(self.center('CARD'), False, 0.5), (self.center('ENROLLED'), False, 0.5)]) @@ -927,18 +890,10 @@ class VendServer(): logging.debug('PING is ' + str(self.v.ping())) - if USE_DB: db = DispenseDatabase(v, cf.DBServer, cf.DBName, cf.DBUser, cf.DBPassword) - self.setup_idlers() self.reset_idler() while True: - if USE_DB: - try: - db.handle_events() - except DispenseDatabaseException, e: - logging.error('Database error: '+str(e)) - timeout = self.time_to_next_update() (event, params) = self.v.next_event(timeout) self.run_handler(event, params)