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))
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)
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)