def test1(): global current_user_id r"""the following variables take the form inputs from the create account page""" name = request.form.get("name") user = request.form.get("username") password = request.form.get("password") email = request.form.get("password") group = request.form.get("group") r"""create a new user with the given information""" new_user = um.createNewUser(user, user, user + "@gmail.com", "127.0.0.5") current_user_id = new_user.userId r"""passwords were not originally a part of the User object, so I added the addPassword method so that I don't have to rework the unittests. All user objects that aren't given a password will havea password of ''""" um.addPassword(current_user_id, password) print(hyde.User(current_user_id)) sm.pubSim(hyde.User(current_user_id).name(), 'new account') sm.pubSim(hyde.User(current_user_id).name(), f'{current_user_id}') # client.acl_setuser(user,passwords="+"+password) session['username'] = user # session['id']=current_user_id return redirect('/')
def process_request(self): ps = self.client.pubsub() users = list(self.um.getUsers()) ps.subscribe("pipeline") for uID in users: ps.subscribe(hyde.User(uID).name()) simBool = False #indicates whether or not the simulation flag has been received userBool = False #indicates whether or not the simulation has been receieved running = True newUser = False cores = False while running == True: for response in ps.listen(): print('listening') if newUser == True and response['data'] is not None: uID.append(response['data'].decode('ascii')) userBool = False break if userBool == True and response['data'] is not None: self.userID = response['data'].decode('ascii') userBool = False print('user processed') if newUser == True and response['data'] is not None: self.cores = response['data'].decode('ascii') cores = False if simBool == True and userBool == False and response[ 'data'] is not None: self.simID = response['data'].decode('ascii') inpSim = Sim(self.simID) userId = self.userID p1 = multiprocessing.Process(target=jobManager.start_job, args=(self, self.simID, userId, self.cores)) p1.start() simBool = False print('sim processed') if response['data'] == b'user': userBool = True print('user flag recieved') if response['data'] == b'run': simBool = True print('run order recieved') if response['data'] == b'cores': cores = True if response['data'] == b'new account': newUser = True print('new user flag recieved') ps.subscribe(hyde.User(uID[len(uID) - 1]).name()) print("account added")
def test_users(self): userManager = hyde.UserManager() ulist = userManager.getUsers() self.assertEqual(5, len(ulist)) u = hyde.User(ammar.userId) self.assertEqual(u.name(), "Ammar Hakim") self.assertEqual(u.group(), "super") u = hyde.User(petr.userId) self.assertEqual(u.name(), "Petr Cagas") self.assertEqual(u.group(), "regular")
def sim(simId): r"""Add a new simulation from the beginning or through a template""" # editing_sim_list = list(sm.getSimsInState('editing')) editing_sim_list = hyde.User(current_user_id).simList('editing') id_value = request.args.get( 'id') #get simulation id from html GET HTTP method. for simIdFound in editing_sim_list: if id_value is None: if simIdFound == simId: selectedSim = hyde.Sim(simIdFound) #end else: if simIdFound == f'{id_value}': selectedSim = hyde.Sim(simIdFound) #end #end #end # if a user wants to create a new simulation, selectedSim -> default name&blank input file # otherwise, selectedSim -> sim object return render_template( 'sim.html', selectedSim=selectedSim, sid=simId, simulation=[hyde.Sim(simId) for simId in editing_sim_list])
def test_sims(self): simManager = hyde.SimManager() slist = simManager.getSimsInState("editing") self.assertEqual(3, len(slist)) a = hyde.User(ammar.userId) ammarEditing = a.simList("editing") self.assertEqual(1, len(ammarEditing)) ammarTemplate = a.simList("template") self.assertEqual(1, len(ammarTemplate)) j = hyde.User(jimmy.userId) jimmyEditing = j.simList("editing") self.assertEqual(2, len(jimmyEditing)) jimmyTemplate = j.simList("template") self.assertEqual(0, len(jimmyTemplate))
def main(): r""" main page. ask users to choose following options 1. Add : add a new simulation 2. Example: add new simulation from template 3. Delete: delete simulations from the sidebar/DB """ if 'username' in session: # current_user_id=session["id"] flash('you are logged in!') else: return redirect(url_for('login')) print(hyde.User(current_user_id).simList('editing')) for ex in sm.getExampleSims(): exampleSimId = ex.simId # client.acl_setuser(hyde.User(current_user_id).name(), keys=f'sim:{exampleSimId}') editing_sim_list = list( sm.getSimsInState('editing') ) #returns a list of simulation ids with the state of 'editing' r"""this allows me to restrict the user to only the simulations they created/edited """ editing_sim_list = hyde.User(current_user_id).simList('editing') r""" for simid in editing_sim_list: editing_key_list.append(f'sim:{simid}') for key in client.acl_getuser(hyde.User(current_user_id).name())['keys']: for key1 in editing_key_list: count=0 if key1 != key: count= count+1 if count==0: ind = editing_key_list.index(key1) editing_key_list.pop(ind) editing_sim_list.pop(ind) """ return render_template( 'index.html', simulation=[hyde.Sim(simId) for simId in editing_sim_list])
def deleting(): id_value = request.json['id'] # editing_sim_list = list(sm.getSimsInState('editing')) editing_sim_list = hyde.User(current_user_id).simList('editing') if id_value is not None: for simId in editing_sim_list: if simId == id_value: sm.removeSim(hyde.Sim(simId)) #end #end #end return "deleted"
def test(): global current_user_id user = request.form.get("username") password = request.form.get("password") r"""account_data != None:client.acl_setuser(self, new_user,passwords="+"+new_password, keys="*") """ #####THIS ASSUMES THAT THE USERNAME INPUT EXISTS!!! FIX THIS! users = list(um.getUsers()) print(list(um.getUsers())) for us in list(um.getUsers()): if hyde.User(us).name() == user: current_user_id = us print("match") break elif list(um.getUsers()).index(us) == len(list(um.getUsers())): #flash("Username or Password Incorrect. Please try again.") #print(list(um.getUsers())) print("username fail") return redirect((url_for('login'))) if password != hyde.User(current_user_id).password(): #flash("Username or Password Incorrect. Please try again.") print("password fail") return redirect((url_for('login'))) #if client.acl_getuser(user)==f'nil' # flash("Username or Password Incorrect. Please try again.") # return redirect((url_for('login'))) # test_response=client.execute_command('AUTH', user, password.encode('utf-8')) # print(test_response) session['username'] = user # session['id']=current_user_id return redirect(url_for('main'))
def publishing(): id_value = request.json["id"] print(request.json["cores"]) cores = request.json["cores"] # editing_sim_list = list(sm.getSimsInState('editing')) editing_sim_list = hyde.User(current_user_id).simList('editing') if id_value is not None: for simId in editing_sim_list: if simId == id_value: sm.pubSim(hyde.User(current_user_id).name(), 'user') sm.pubSim( hyde.User(current_user_id).name(), f'{current_user_id}') sm.pubSim(hyde.User(current_user_id).name(), 'cores') sm.pubSim(hyde.User(current_user_id).name(), f'{cores}') sm.pubSim(hyde.User(current_user_id).name(), 'run') sm.pubSim(hyde.User(current_user_id).name(), f'{simId}') sm.pubSim( hyde.User(current_user_id).name() + '2', 'Run Order Sent') print("publishing flag") return "publishing completed"
def adding(): """adding a new simulation/modifying a new simulation""" # editing_sim_list = list(sm.getSimsInState('editing')) editing_sim_list = hyde.User(current_user_id).simList('editing') id_value = request.json[ "id"] # retrieve sim id, name and input file from sim.html name = request.json["name"] inpFile = request.json['inpFile'] for simIdFound in editing_sim_list: if simIdFound == id_value: hyde.Sim(simIdFound).rename(name) hyde.Sim(simIdFound).updateInpFile(inpFile) simId = simIdFound #end #end return "adding completed"
def stream(): #event stream input second channel return Response(event_stream(hyde.User(current_user_id).name() + '2'), mimetype="text/event-stream")