Пример #1
0
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()