from django.http import HttpResponseBadRequest from django.shortcuts import get_object_or_404, redirect from coip.apps.consumer import consumer_providers from coip.apps.consumer.forms import ConsumerForm from coip.apps.consumer.models import Consumer from coip.apps.name.models import Name from coip.multiresponse import render403, respond_to, json_response __author__ = 'leifj' def _consumer2json(c,e): return { 'name': c.name, 'description': c.description, 'authorization_uri': c.authorization_uri, 'service_uri': c.service_uri, 'logo': c.logo, 'enabled': c in e, } def _consumers(name): enabled_consumers = Consumer.objects.filter(name=name) return [_consumer2json(c,enabled_consumers) for c in consumer_providers()] def list(request,nid): name = get_object_or_404(Name,pk=nid) if request.method == 'GET': if not name.has_permission(request.user,'r'): return render403(request,"You do not have permission to inspect consumers for %s" % name) return respond_to(request, {'application/json': json_response(_consumers(name)), 'text/html': "apps/consumers/list.html"},{'consumers': _consumers(name)}) else: return HttpResponseBadRequest() def add(request,nid): name = get_object_or_404(Name,pk=nid) if not name.has_permission(request.user,'w'): return render403(request,"You do not have permission to create consumers for %s" % name) if request.method == 'POST': consumer = Consumer(user=request.user,name=name) form = ConsumerForm(request.POST,instance=consumer) if form.is_valid(): consumer = form.save() return redirect("/name/%d/consumers" % nid) return respond_to(request,{'text/html': 'apps/consumers/edit.html'},{'form': form}) def remove(request,nid,cid): name = get_object_or_404(Name,pk=nid) if not name.has_permission(request.user,'w'): return render403(request,"You do not have permission to remove consumers from %s" % name) consumer = get_object_or_404(Consumer,pk=cid) consumer.delete() return redirect("/name/%d/consumers" % nid)