예제 #1
0
def changewrite(request, g_id):
    '''
    View to change write capabilities of UG
    '''

    session = request.session
    g_id = int(g_id)

    g = db.read_user_gateway(g_id)
    if not g:
        return redirect('django_ug.views.viewgateway', g_id)
    if g.read_write:
        attrs = {'read_write': False}
    else:
        attrs = {'read_write': True}
    try:
        db.update_user_gateway(g_id, **attrs)
    except Exception as e:
        logging.error("Unable to update UG with ID %s. Error was %s." %
                      (g_id, e))
        session['message'] = "Error. Unable to change user gateway."
        return redirect('django_ug.views.viewgateway', g_id)
    session['new_change'] = "We've updated your UG."
    session['next_url'] = '/syn/UG/viewgateway/' + str(g_id)
    session['next_message'] = "Click here to go back to your gateway."
    return HttpResponseRedirect('/syn/thanks')
예제 #2
0
    def update_ug_and_vol(g_id, gfields, vol1_id, vol2_id):
        db.update_user_gateway(g_id, **gfields)
        attrs = {"UG_version": 1}

        # Force update of UG version
        db.update_volume(vol1_id, **attrs)
        db.update_volume(vol2_id, **attrs)
예제 #3
0
def changelocation(request, g_id):
    '''
    View to enable changing host and port of UG
    '''
    session = request.session
    g_id = int(g_id)

    form = gatewayforms.ModifyGatewayLocation(request.POST)
    if form.is_valid():
        new_host = form.cleaned_data['host']
        new_port = form.cleaned_data['port']
        fields = {'host': new_host, 'port': new_port}
        try:
            db.update_user_gateway(g_id, **fields)
        except Exception as e:
            logging.error("Unable to update UG with ID %s. Error was %s." %
                          (g_id, e))
            session['message'] = "Error. Unable to change user gateway."
            return redirect('django_ug.views.viewgateway', g_id)
        session['new_change'] = "We've updated your UG."
        session['next_url'] = '/syn/UG/viewgateway/' + str(g_id)
        session['next_message'] = "Click here to go back to your gateway."
        return HttpResponseRedirect('/syn/thanks')
    else:
        session['message'] = "Invalid form entries for gateway location."
        return redirect('django_ug.views.viewgateway', g_id)
예제 #4
0
    def multi_update(vol, users, usergateways, acquisitiongateways,
                     replicagateways):
        v_id = vol.volume_id
        db.delete_volume(v_id)
        logging.info(users)

        for user in users:
            fields = {}

            if v_id in user.volumes_o:
                new_volumes_o = user.volumes_o
                new_volumes_o.remove(v_id)
                fields['volumes_o'] = new_volumes_o

            if v_id in user.volumes_rw:
                new_volumes_rw = user.volumes_rw
                new_volumes_rw.remove(v_id)
                fields['volumes_rw'] = new_volumes_rw

            if v_id in user.volumes_r:
                new_volumes_r = user.volumes_r
                new_volumes_r.remove(v_id)
                fields['volumes_r'] = new_volumes_r

            if fields:
                db.update_user(user.email, **fields)

        for ug in usergateways:
            fields = {}
            fields['volume_id'] = 0
            db.update_user_gateway(ug.g_id, **fields)

        for ag in acquisitiongateways:
            logging.info(ag)
            fields = {}
            new_ids = ag.volume_ids.remove(v_id)
            if not new_ids:
                fields['volume_ids'] = []
            else:
                fields['volume_ids'] = new_ids
            db.update_acquisition_gateway(ag.g_id, **fields)

        for rg in replicagateways:
            fields = {}
            new_ids = rg.volume_ids.remove(v_id)
            if not new_ids:
                fields['volume_ids'] = []
            else:
                fields['volume_ids'] = new_ids
            db.update_replica_gateway(rg.g_id, **fields)

        # Clear initial data session variable to prevent stale tables in ag.views.viewgateway and rg.views.viewgateway
        session.pop("rg_initial_data" + str(v_id), None)
        session.pop("ag_initial_data" + str(v_id), None)
        # Clear initial data session variable to prevent stale data in volume settings, change rgs, and change ags.
        session.pop("volume_initial_ags" + str(v_id), None)
        session.pop("volume_initial_rgs" + str(v_id), None)
예제 #5
0
def changepassword(request, g_id):
    session = request.session
    username = session['login_email']
    user = db.read_user(username)
    g_id = int(g_id)

    if request.method != "POST":
        return redirect('django_ug.views.viewgateway', g_id)

    g = db.read_user_gateway(g_id)
    if not g:
        logging.error("Error reading gateway %d : Gateway does not exist." %
                      g_id)
        message = "No user gateway by the name of %d exists." % g_id
        t = loader.get_template("gateway_templates/viewgateway_failure.html")
        c = Context({'message': message, 'username': username})
        return HttpResponse(t.render(c))

    form = libforms.ChangePassword(request.POST)
    if not form.is_valid():
        session['message'] = "You must fill out all password fields."
        return redirect('django_ug.views.viewgateway', g_id)
    else:
        # Check password hash
        if not UG.authenticate(g, form.cleaned_data['oldpassword']):
            session['message'] = "Incorrect password."
            return redirect('django_ug.views.viewgateway', g_id)
        elif form.cleaned_data['newpassword_1'] != form.cleaned_data[
                'newpassword_2']:
            session['message'] = "Your new passwords did not match each other."
            return redirect('django_ug.views.viewgateway', g_id)
        # Ok to change password
        else:
            new_hash = UG.generate_password_hash(
                form.cleaned_data['newpassword_1'])
            fields = {'ms_password_hash': new_hash}
            try:
                db.update_user_gateway(g_id, **fields)
            except Exception as e:
                logging.error(
                    "Unable to update user gateway %s. Exception %s" %
                    (g_name, e))
                session['message'] = "Unable to update gateway."
                return redirect('django_ug.views.viewgateway', g_id)

            session['new_change'] = "We've changed your gateways's password."
            session['next_url'] = '/syn/UG/viewgateway/' + str(g_id)
            session['next_message'] = "Click here to go back to your volume."
            return HttpResponseRedirect('/syn/thanks')
예제 #6
0
def changevolume(request, g_id):
    '''
    View to enable changing volume attached to UG
    '''
    session = request.session
    username = session['login_email']
    user = db.read_user(username)
    g_id = int(g_id)
    g = db.read_user_gateway(g_id)

    # Isolate DB calls to allow roll-backs via transactions
    @transactional(xg=True)
    def update_ug_and_vol(g_id, gfields, vol1_id, vol2_id):
        db.update_user_gateway(g_id, **gfields)
        attrs = {"UG_version": 1}

        # Force update of UG version
        db.update_volume(vol1_id, **attrs)
        db.update_volume(vol2_id, **attrs)

    form = gatewayforms.ChangeVolume(request.POST)
    if form.is_valid():
        attrs = {
            "Volume.name ==":
            form.cleaned_data['volume_name'].strip().replace(" ", "_")
        }
        vols = db.list_volumes(attrs, limit=1)
        if vols:
            new_vol = vols[0]
        else:
            session['message'] = "No volume %s exists." % form.cleaned_data[
                'volume_name']
            return redirect('django_ug.views.viewgateway', g_id)
        if (new_vol.volume_id
                not in user.volumes_r) and (new_vol.volume_id
                                            not in user.volumes_rw):
            session[
                'message'] = "Must have read rights to volume %s to assign UG to it." % form.cleaned_data[
                    'volume_name']
            return redirect('django_ug.views.viewgateway', g_id)

        old_vol = g.volume_id
        #fields = {"volume_id":new_vol.volume_id, "cert_version": True}
        try:

            db.update_user_gateway(g_id,
                                   volume_id=new_vol.volume_id,
                                   cert_version=True)

            db.update_volume(new_vol.volume_id,
                             version=True,
                             cert_version=True)

            if g.is_bound_to_volume():
                # update the old Volume
                db.update_volume(old_vol, version=True, cert_version=True)

            #update_ug_and_vol(g_id, fields, old_vol, new_vol.volume_id)
        except Exception, e:
            logging.error("Unable to update UG with ID %s. Error was %s." %
                          (g_id, e))
            session['message'] = "Error. Unable to change user gateway."
            return redirect('django_ug.views.viewgateway', g_id)
        session['new_change'] = "We've updated your UG."
        session['next_url'] = '/syn/UG/viewgateway/' + str(g_id)
        session['next_message'] = "Click here to go back to your gateway."
        return HttpResponseRedirect('/syn/thanks')