Ejemplo n.º 1
0
def subscribe(request):
    # POST CHECKINGS:
    if request.method != 'POST':
        return HttpResponseNotAllowed('POST')
    token_r = None
    type_r = None
    try:
        token_r = request.POST['token']
        type_r = request.POST['type']
    except MultiValueDictKeyError:
        return HttpResponseBadRequest('POST must contain "token" and "type"')
    # END OF POST CHECKINGS:

    device = None
    try:
        device = Device(
            user=request.user,
            token=token_r,
            type=type_r)
        with transaction.atomic():
            device.save()

    except IntegrityError:
        try:
            device = request.user.devices.get(token=token_r, type=type_r)
            print "Device already registered, ok. %s" % str(device)
        except ObjectDoesNotExist:
            return HttpResponseBadRequest("A device with that token is already used by other user.")

    except FieldError:
            return HttpResponseBadRequest('Incorrect "type" value.')
    else:
        print "New device registered. %s" % str(device)

    return HttpResponse(json.dumps(device.preview(user=request.user)),
                             mimetype='application/json')