from qs.queue import check_allowed_methods from qs.queue.models import Message, Queue # Queue Methods def create_queue(request): # test post with # curl -i http://localhost:8000/createqueue/ -d name=default requested_name = request.POST.get('name', None) if requested_name is None: return HttpResponseForbidden() q = Queue(name=requested_name) q.save() return HttpResponse("", mimetype='text/plain') create_queue = check_allowed_methods(['POST'])(create_queue) def delete_queue(request): # test post with # curl -i http://localhost:8000/deletequeue/ -d name=default requested_name = request.POST.get('name', None) if requested_name is None: return HttpResponseForbidden() try: q = Queue.objects.get(name=requested_name) if q.message_set.count() > 0: return HttpResponseNotAllowed() q.delete() return HttpResponse("", mimetype='text/plain') except Queue.DoesNotExist: return HttpResponseNotFound()
if request.METHOD == 'POST': elif request.METHOD == 'PUT': elif ... ''' from qs.queue import rest_views fn_name = '%s_%s' % (view_name, request.method.lower()) if hasattr(rest_views, fn_name): status = Status(request.REQUEST) return getattr(rest_views, fn_name)(request, status, **kwargs) else: raise NotImplemented # ----- root level view functions def root(request): return call_view_function_for_method('root', request) root = check_allowed_methods(['GET', 'POST'])(root) root = commit_on_success(root) def root_post(request, status): '''POST = create queue (requires: QueueName)''' try: queue_name = request.REQUEST['QueueName'] q, created = Queue.objects.get_or_create(name=queue_name) if not created: status.error = 'QueueAlreadyExists' else: status.result = {'QueueUrl':q.get_absolute_url()} except KeyError: status.response = HttpResponseNotAllowed() return status()