Mercurial > lbo > hg > stex
changeset 16:227434cd0f01
Implement group interaction in server and client
author | Lewin Bormann <lbo@spheniscida.de> |
---|---|
date | Fri, 01 Mar 2019 17:58:07 +0100 |
parents | 5ca8854eaab8 |
children | 77bb87bc9e7f |
files | client/client.py server/server.py |
diffstat | 2 files changed, 23 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/client/client.py Fri Mar 01 17:41:25 2019 +0100 +++ b/client/client.py Fri Mar 01 17:58:07 2019 +0100 @@ -109,6 +109,7 @@ def ok_clicked(self): self.save_default('addr', self.addr.text()) self.save_default('user', self.user.text()) + self.save_default('group', self.group.text()) self.save_default('password', self.password.text()) self.accepted.emit() self.finished.emit(1)
--- a/server/server.py Fri Mar 01 17:41:25 2019 +0100 +++ b/server/server.py Fri Mar 01 17:58:07 2019 +0100 @@ -19,6 +19,23 @@ _splitvalue = 20000 _maxhistory = 100 +class Groups: + """Groups manages depot subscriptions for groups.""" + groups = {} + + def update(self, group, user, info): + """updates user info in a group. info is a dict containing the fields 'cash'.""" + if not (group and user and info): + return + print('updated ', group, user, info) + self.groups[group] = {} if group not in self.groups else self.groups[group] + self.groups[group][user] = info + + def get(self, group): + """gets a dict with 'user' -> {'depot': _} mapping.""" + return self.groups.get(group, None) + +_groups = Groups() class Stock: symbol = '' @@ -178,11 +195,14 @@ try: msgs = sock.recv_multipart() assert len(msgs) > 2 - print ('Client {}: {} {}'.format(msgs[0].hex(), msgs[1].decode(), json.loads(msgs[2].decode()))) - resp = {'_stockresp': True, 'ok': True} + msg = json.loads(msgs[2].decode()) + print ('Client {}: {} {}'.format(msgs[0].hex(), msgs[1].decode(), msg)) + _groups.update(msg.get('group', None), msg.get('user', None), msg.get('msg', {})) + resp = {'_stockresp': True, 'ok': True, 'groupinfo': _groups.get(msg.get('group'))} sock.send_multipart([msgs[0], msgs[1], bytes(json.dumps(resp), 'utf-8')]) except Exception as e: print(e) + raise e def main():