Full completed project
This commit is contained in:
108
client/modules/handler/request.py
Normal file
108
client/modules/handler/request.py
Normal file
@@ -0,0 +1,108 @@
|
||||
# MODULES
|
||||
from modules.session.session import wait
|
||||
|
||||
def dict_key_verify(dictionary, keys, mode="and", *args, **kwargs):
|
||||
if mode != "and" and mode != "or":
|
||||
mode = "and"
|
||||
if type(keys) != list:
|
||||
keys = [keys]
|
||||
|
||||
verified = []
|
||||
if type(keys) != list:
|
||||
keys = [keys]
|
||||
|
||||
for key in keys:
|
||||
if type(dictionary) != dict or key not in dictionary or not dictionary[key]:
|
||||
verified.append(False)
|
||||
else:
|
||||
verified.append(True)
|
||||
|
||||
if mode == "and":
|
||||
if all(verified) == True:
|
||||
return True
|
||||
if mode == "or":
|
||||
if True in verified:
|
||||
return True
|
||||
return False
|
||||
# MODULES
|
||||
class request():
|
||||
def __init__(self, sio, session=None, username=None):
|
||||
self.sio = sio
|
||||
self.session = session
|
||||
self.username = username
|
||||
|
||||
def callback(self, callback, data):
|
||||
self.session.transfer = data
|
||||
|
||||
def emit(self, event, info=None, callback_func="self.callback"):
|
||||
if callback_func == "self.callback":
|
||||
callback_func = self.callback
|
||||
if callback_func == None:
|
||||
self.sio.emit(event, info)
|
||||
return
|
||||
else:
|
||||
self.sio.emit(event, info, callback=callback_func)
|
||||
wait(self.session).wait()
|
||||
return self.session.transfer
|
||||
|
||||
class account_page(request):
|
||||
def refresh(self):
|
||||
info = self.get_profile()
|
||||
return info
|
||||
|
||||
def get_profile(self):
|
||||
info = {'username': self.username, 'name': self.username, 'role': "", 'occupation_name': "", 'team_name': "", 'biography': ""}
|
||||
|
||||
profile_data = {'username': self.username, 'items': ['name', 'role', 'biography']}
|
||||
profile_info = self.emit('profile_get', profile_data)
|
||||
|
||||
occupation_data = {'username': self.username, 'items': ['name']}
|
||||
occupation_info = self.emit('occupation_get', occupation_data)
|
||||
if dict_key_verify(occupation_info, 'name'):
|
||||
info['occupation_name'] = occupation_info['name']
|
||||
|
||||
team_data = {'username': self.username, 'items': ['name']}
|
||||
team_info = self.emit('team_get', team_data)
|
||||
if dict_key_verify(team_info, 'name'):
|
||||
info['team_name'] = team_info['name']
|
||||
|
||||
team_leader_info = self.emit('team_get_leaders')
|
||||
if dict_key_verify(team_leader_info, 'leaders'):
|
||||
if self.username in team_leader_info['leaders']:
|
||||
info['team_name'] += " (team lead)"
|
||||
|
||||
for key in profile_info.keys():
|
||||
if dict_key_verify(profile_info, key):
|
||||
info[key] = profile_info[key]
|
||||
|
||||
return info
|
||||
|
||||
def set_profile(self, item, new_value, username=None):
|
||||
profile = ['name', 'role', 'biography']
|
||||
occupation = ['occupation_name']
|
||||
team = ['team_name']
|
||||
|
||||
if item in profile:
|
||||
event = 'profile_set'
|
||||
|
||||
if item == 'name':
|
||||
new_values = new_value.split(" ")
|
||||
if len(new_values) == 2:
|
||||
items = ['first_name', 'last_name']
|
||||
if item in occupation:
|
||||
event = 'occupation_set'
|
||||
item = 'name'
|
||||
if item in team:
|
||||
event = 'team_set'
|
||||
item = 'name'
|
||||
|
||||
if type(item) != list:
|
||||
items = [item]
|
||||
if type(new_value) != list:
|
||||
new_values = [new_value]
|
||||
|
||||
for value, item in zip(new_values, items):
|
||||
data = {'username': None,'items': [item], item: value}
|
||||
if username:
|
||||
data['username'] = username
|
||||
self.emit('profile_set', data, None)
|
||||
Reference in New Issue
Block a user