def patch_record(record, request): # XXX: add util clone_request() backup_pattern = request.matched_route.pattern backup_body = request.body backup_validated = request.validated # Instantiate record resource with current request. context = RouteFactory(request) context.get_permission_object_id = lambda r, i: record_uri(r) record_pattern = request.matched_route.pattern.replace('/attachment', '') request.matched_route.pattern = record_pattern # Simulate update of fields. request.validated = record request.body = json.dumps(record).encode('utf-8') resource = Record(request, context) request.current_resource_name = 'record' setattr(request, '_attachment_auto_save', True) # Flag in update listener. try: saved = resource.patch() except httpexceptions.HTTPNotFound: saved = resource.put() request.matched_route.pattern = backup_pattern request.body = backup_body request.validated = backup_validated return saved
def patch_record(record, request): # XXX: add util clone_request() backup_pattern = request.matched_route.pattern backup_body = request.body backup_validated = request.validated # Instantiate record resource with current request. context = RouteFactory(request) context.get_permission_object_id = lambda r, i: record_uri(r) record_pattern = request.matched_route.pattern.replace('/attachment', '') request.matched_route.pattern = record_pattern # Simulate update of fields. request.validated = record request.body = json.dumps(record).encode('utf-8') resource = Record(request, context) request.current_resource_name = 'record' try: saved = resource.patch() except httpexceptions.HTTPNotFound: saved = resource.put() request.matched_route.pattern = backup_pattern request.body = backup_body request.validated = backup_validated return saved
def save_record(record, request): # XXX: add util clone_request() backup_pattern = request.matched_route.pattern backup_body = request.body backup_validated = request.validated # Instantiate record resource with current request. context = RouteFactory(request) context.get_permission_object_id = lambda r, i: record_uri(r) record_pattern = request.matched_route.pattern.replace('/attachment', '') request.matched_route.pattern = record_pattern # Simulate update of fields. request.validated = record request.body = json.dumps(record) resource = Record(request, context) try: saved = resource.patch() except httpexceptions.HTTPNotFound: saved = resource.put() request.matched_route.pattern = backup_pattern request.body = backup_body request.validated = backup_validated return saved
def __init__(self, request): """Attachment is not a Cliquet resource. The required permission is: * ``write`` if the related record exists; * ``record:create`` on the related collection otherwise. """ super(AttachmentRouteFactory, self).__init__(request) self.resource_name = 'record' try: resource = Record(request, self) existing = resource.get() except httpexceptions.HTTPNotFound: existing = None if existing: self.permission_object_id = record_uri(request) self.required_permission = 'write' else: self.permission_object_id = collection_uri(request) self.required_permission = 'create'
def __init__(self, request): """Attachment is not a Kinto resource. The required permission is: * ``write`` if the related record exists; * ``record:create`` on the related collection otherwise. """ super(AttachmentRouteFactory, self).__init__(request) self.resource_name = 'record' try: resource = Record(request, self) request.current_resource_name = 'record' existing = resource.get() except httpexceptions.HTTPNotFound: existing = None if existing: self.permission_object_id = record_uri(request) self.required_permission = 'write' else: self.permission_object_id = collection_uri(request) self.required_permission = 'create'