Ejemplo n.º 1
0
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('/')
Ejemplo n.º 2
0
    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")
Ejemplo n.º 3
0
    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")
Ejemplo n.º 4
0
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])
Ejemplo n.º 5
0
    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))
Ejemplo n.º 6
0
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])
Ejemplo n.º 7
0
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"
Ejemplo n.º 8
0
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'))
Ejemplo n.º 9
0
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"
Ejemplo n.º 10
0
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"
Ejemplo n.º 11
0
def stream():
    #event stream input second channel
    return Response(event_stream(hyde.User(current_user_id).name() + '2'),
                    mimetype="text/event-stream")