Code: Alles auswählen
cv2 = {}
class Client:
class LoginError(Exception):
def __init__(self):
sys.stdout.write('\n')
pass
class ServerError(Exception):
pass
class SqliteOperationalError(Exception):
pass
def connect(self,**kwargs):
socket.setdefaulttimeout(client_vardic['sockettimeout'])
cv2['user'] = kwargs['user']
cv2['rcv_addr'] = (client_vardic['host'],client_vardic['rcv_port'])
cv2['send_addr'] = (kwargs['server'],client_vardic['send_port'])
cv2['TCPSocksend'] = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
cv2['TCPSockrcv'] = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
cv2['TCPSockrcv'].bind(cv2['rcv_addr'])
cv2['crypt_pw'] = sha.new(kwargs['passwd']).hexdigest()
if 'cryptmaterial' in kwargs:
todo = ['login',cv2['user'],cv2['crypt_pw'], 'crypt_true']
cv2['TCPSocksend'].sendto(cPickle.dumps(todo),cv2['send_addr'])
cv2['TCPSocksend'].sendto(kwargs['cryptmaterial'],cv2['send_addr'])
else:
todo = ['login',cv2['user'],cv2['crypt_pw'], 'crypt_false']
cv2['TCPSocksend'].sendto(cPickle.dumps(todo),cv2['send_addr'])
recieved = cPickle.loads(cv2['TCPSockrcv'].recvfrom(1024)[0])
if not recieved[0]:
raise self.LoginError(recieved[1])
cv2['sid'] = recieved[1]
return self.CursorDummy()
def change_pw(self,old_pw, new_pw):
#[...]
def reset_client(self,pw):
#[...]
def crypt_my_database(self, rubbish, pw):
#[...]
class CursorDummy:
def __init__(self):
self.shutdown = False
class cursor:
class SqliteOperationalError(Exception):
pass
class RowCount(object):
def read_bar(self):
todo = [cv2['sid'], 'rowcount', 'varget']
cv2['TCPSocksend'].sendto(cPickle.dumps(todo),cv2['send_addr'])
self._bar = cPickle.loads(cv2['TCPSockrcv'].recvfrom(1024)[0])
return self._bar
bar = property(read_bar)
def __init__(self):
self.read_bar()
rowcount = RowCount()
def setinputsizes(self, sizes):
todo = [cv2['sid'], 'setinputsizes', sizes]
cv2['TCPSocksend'].sendto(cPickle.dumps(todo),cv2['send_addr'])
cv2['TCPSockrcv'].recvfrom(1024)
nur die klasse RowCount kann ich nicht initialisieren lassen!
erst, wenn ich "per hand" sie starte, funktioniert sie.
um da genauer auszuführen:
wenn ich die methode test einführe, die RowCount initialisiert, ist das kein Problem.
Wenn ich aber einer anderen Variable den wert zuweise, kommt ein keyerror:
Traceback (most recent call last):
File "sqliteserver.py", line 465, in ?
class Client:
File "sqliteserver.py", line 527, in Client
class CursorDummy:
File "sqliteserver.py", line 530, in CursorDummy
class cursor:
File "sqliteserver.py", line 543, in cursor
rowcount = RowCount().bar
File "sqliteserver.py", line 541, in __init__
self.read_bar()
File "sqliteserver.py", line 535, in read_bar
todo = [cv2['sid'], 'rowcount', 'varget']
KeyError: 'sid'