Example #1
0
 def give_delete_form(username, g, session):
     message = session.pop('message', "")
     form = gatewayforms.DeleteGateway()
     t = loader.get_template(
         'gateway_templates/delete_acquisition_gateway.html')
     c = RequestContext(request, {
         'username': username,
         'g': g,
         'form': form,
         'message': message
     })
     return HttpResponse(t.render(c))
Example #2
0
def delete(request, g_id):
    '''
    View for deleting AG.
    '''

    # Helper method used to simplify error-handling. When fields are entered incorrectly,
    # a session message is set and this method is called.
    def give_delete_form(username, g, session):
        message = session.pop('message', "")
        form = gatewayforms.DeleteGateway()
        t = loader.get_template(
            'gateway_templates/delete_acquisition_gateway.html')
        c = RequestContext(request, {
            'username': username,
            'g': g,
            'form': form,
            'message': message
        })
        return HttpResponse(t.render(c))

    # Once again isolating transactional for views that update multiple entities
    @transactional(xg=True)
    def delete_and_update(ag_id, attached_volume_ids):
        db.delete_acquisition_gateway(ag_id)
        for v in attached_volume_ids:
            vol = db.read_volume(v)
            if not vol:
                continue
            new_ag_ids = vol.ag_ids
            new_ag_ids.remove(ag_id)
            attrs = {"ag_ids": new_ag_ids}
            db.update_volume(v, **attrs)
        session.pop("ag_initial_data", None)

    session = request.session
    username = session['login_email']
    g_id = int(g_id)

    ag = db.read_acquisition_gateway(g_id)
    if not ag:
        t = loader.get_template(
            'gateway_templates/delete_acquisition_gateway_failure.html')
        c = RequestContext(request, {'username': username})
        return HttpResponse(t.render(c))

    if request.POST:
        # Validate input forms
        form = gatewayforms.DeleteGateway(request.POST)
        if form.is_valid():
            if not AG.authenticate(ag, form.cleaned_data['g_password']):
                session['message'] = "Incorrect Acquisition Gateway password"
                return give_delete_form(username, ag, session)
            if not form.cleaned_data['confirm_delete']:
                session[
                    'message'] = "You must tick the delete confirmation box."
                return give_delete_form(username, ag, session)

            delete_and_update(g_id, ag.volume_ids)
            session['new_change'] = "Your gateway has been deleted."
            session['next_url'] = '/syn/AG/allgateways'
            session[
                'next_message'] = "Click here to see all acquisition gateways."
            return redirect('/syn/thanks/')

        # Invalid forms
        else:
            # Prep error message
            session['message'] = "Invalid form entry: "

            for k, v in form.errors.items():
                session[
                    'message'] = session['message'] + "\"" + k + "\"" + " -> "
                for m in v:
                    session['message'] = session['message'] + m + " "

            return give_delete_form(username, ag, session)
    else:
        # Not a POST, give them blank form
        return give_delete_form(username, ag, session)
Example #3
0
def delete(request, g_id):
    '''
    View for deleting UGs
    '''

    # Helper method that simplifies returning forms after user error.
    def give_delete_form(username, g_name, session):
        message = session.pop('message' "")
        form = gatewayforms.DeleteGateway()
        t = loader.get_template('gateway_templates/delete_user_gateway.html')
        c = RequestContext(
            request, {
                'username': username,
                'g_name': g_name,
                'form': form,
                'message': message
            })
        return HttpResponse(t.render(c))

    session = request.session
    username = session['login_email']
    g_id = int(g_id)

    ug = db.read_user_gateway(g_id)
    if not ug:
        t = loader.get_template(
            'gateway_templates/delete_user_gateway_failure.html')
        c = RequestContext(request, {'username': username})
        return HttpResponse(t.render(c))

    g_name = ug.ms_username
    if ug.owner_id != user.owner_id:
        t = loader.get_template(
            'gateway_templates/delete_user_gateway_failure.html')
        c = RequestContext(request, {'username': username})
        return HttpResponse(t.render(c))

    if request.POST:
        # Validate input forms
        form = gatewayforms.DeleteGateway(request.POST)
        if form.is_valid():
            if not UG.authenticate(ug, form.cleaned_data['g_password']):
                session['message'] = "Incorrect User Gateway password"
                return give_delete_form(username, g_name, session)
            if not form.cleaned_data['confirm_delete']:
                session[
                    'message'] = "You must tick the delete confirmation box."
                return give_delete_form(username, g_name, session)

            db.delete_user_gateway(g_id)
            session['new_change'] = "Your gateway has been deleted."
            session['next_url'] = '/syn/UG/mygateways'
            session['next_message'] = "Click here to see your gateways."
            return HttpResponseRedirect('/syn/thanks/')

        # invalid forms
        else:
            # Prep error message
            session['message'] = "Invalid form entry: "

            for k, v in form.errors.items():
                session[
                    'message'] = session['message'] + "\"" + k + "\"" + " -> "
                for m in v:
                    session['message'] = session['message'] + m + " "

            return give_delete_form(username, g_name, session)
    else:
        # Not a POST, give them blank form
        return give_delete_form(username, g_name, session)