add customer level

This commit is contained in:
Wolfgang Hottgenroth
2009-02-21 20:35:51 +01:00
parent 31c92eae50
commit cb38eef50f
8 changed files with 161 additions and 43 deletions

View File

@ -5,6 +5,7 @@ import sys
import time
import Entry
import Customer
from logger import Logger
@ -14,9 +15,9 @@ class LocalMyCmdException(Exception):
class MyCmd(cmd.Cmd):
@classmethod
def setClassParams(cls, entries, adminPwd):
def setClassParams(cls, entries, customers):
cls.entries = entries
cls.adminPwd = adminPwd
cls.customers = customers
def __init__(self, i, o):
cmd.Cmd.__init__(self, completekey=None, stdin=i, stdout=o)
@ -123,6 +124,79 @@ class MyCmd(cmd.Cmd):
self.stdout.write("Bye\n")
return True
def do_addcust(self, l):
try:
parts = l.split(' ')
if len(parts) != 5:
raise LocalMyCmdException("illegal number of arguments")
(zone, adminPwd, contact, email, maxEntries) = parts
if MyCmd.customers.has_key(zone):
raise LocalMyCmdException("duplicate zone")
try:
maxEntries = int(maxEntries)
except ValueError:
raise LocalMyCmdException("maxEntries is no number")
newCustomer = Customer.Customer(zone, adminPwd, contact, email, maxEntries)
MyCmd.customers[zone] = newCustomer
self.stdout.write("Done\n")
except LocalMyCmdException, e:
self.stdout.write("Failure: %s\n" % str(e.msg))
def do_editcust(self, l):
try:
parts = l.split(' ')
if len(parts) != 3:
raise LocalMyCmdException("illegal number of arguments")
(zone, attr, value) = parts
if not MyCmd.customers.has_key(zone):
raise LocalMyCmdException("unknown zone")
if attr == 'adminPwd':
MyCmd.customers[zone].adminPwd = value
elif attr == 'contact':
MyCmd.customers[zone].contact = value
elif attr == 'email':
MyCmd.customers[zone].email = value
elif attr == 'maxEntries':
try:
MyCmd.customers[zone].maxEntries = int(value)
except ValueError:
raise LocalMyCmdException("value is no number")
else:
raise LocalMyCmdException("unknown attribute to change")
self.stdout.write("Done\n")
except LocalMyCmdException, e:
self.stdout.write("Failure: %s\n" % str(e.msg))
def do_deletecust(self, l):
try:
parts = l.split(' ')
if len(parts) != 1:
raise LocalMyCmdException("illegal number of arguments")
zone = parts[0]
if not MyCmd.customers.has_key(zone):
raise LocalMyCmdException("unknown zone")
del MyCmd.entries[x]
self.stdout.write("Done\n")
except LocalMyCmdException, e:
self.stdout.write("Failure: %s\n" % str(e.msg))
def do_listcust(self, l):
try:
parts = l.split(' ')
if len(parts) != 1:
raise LocalMyCmdException("illegal number of arguments")
x = parts[0]
if x == 'all':
for customer in MyCmd.customers.values():
self.stdout.write(str(customer) + "\n")
elif MyCmd.customers.has_key(x):
self.stdout.write(str(MyCmd.customers[x]) + "\n")
else:
raise LocalMyCmdException("unknown zone")
except LocalMyCmdException, e:
self.stdout.write("Failure: %s\n" % str(e.msg))
class CmdHandler(SocketServer.StreamRequestHandler):