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