def update_properties(request): response = {'status': -1} api = NavigatorApi(request.user) entity_id = json.loads(request.POST.get('id', '')) properties = json.loads(request.POST.get('properties', {})) is_allowed = request.user.has_hue_permission(action='write', app='metadata') request.audit = { 'allowed': is_allowed, 'operation': 'NAVIGATOR_UPDATE_PROPERTIES', 'operationText': 'Updating property %s of entity %s' % (properties, entity_id) } if not entity_id or not properties or not isinstance( properties, dict) or not is_allowed: response['error'] = _( "update_properties requires an 'id' parameter and 'properties' parameter that is a non-empty dict" ) else: response['entity'] = api.update_properties(entity_id, properties) response['status'] = 0 return JsonResponse(response)
def update_properties(request): response = {'status': -1} api = NavigatorApi(request.user) entity_id = json.loads(request.POST.get('id', '""')) properties = json.loads(request.POST.get('properties', '{}')) # Entity properties metadata = json.loads(request.POST.get('metadata', '{}')) # Aka "Custom Metadata" is_allowed = request.user.has_hue_permission(action='write', app='metadata') request.audit = { 'allowed': is_allowed, 'operation': 'NAVIGATOR_UPDATE_PROPERTIES', 'operationText': 'Updating metadata %s properties %s of entity %s' % (metadata, properties, entity_id) } if not entity_id or (not properties and not metadata) or not is_allowed: response['error'] = _( "update_properties requires an 'id' parameter and 'properties' or 'metadata' parameters that are non-empty dicts" ) else: response['entity'] = api.update_properties(entity_id, properties, metadata) response['status'] = 0 return JsonResponse(response)
def update_properties(request): api = NavigatorApi(request.user) entity_id = json.loads(request.POST.get('id', '""')) properties = json.loads(request.POST.get('properties', '{}')) # Entity properties modified_custom_metadata = json.loads(request.POST.get('modifiedCustomMetadata', '{}')) # Aka "Custom Metadata" deleted_custom_metadata_keys = json.loads(request.POST.get('deletedCustomMetadataKeys', '[]')) is_allowed = request.user.has_hue_permission(action='write', app='metadata') request.audit = { 'allowed': is_allowed, 'operation': 'NAVIGATOR_UPDATE_PROPERTIES', 'operationText': 'Updating custom metadata %s, deleted custom metadata keys %s and properties %s of entity %s' % (modified_custom_metadata, deleted_custom_metadata_keys, properties, entity_id) } if not entity_id: # TODO: raise HueApiException(message="Missing required parameter 'id' for update_properties", source="Hue") # source so the user knows which service that failed right away, in UI: "[source] responded with error: [message]" raise Exception("Missing required parameter 'id' for the Hue update_properties API.") if not is_allowed: # TODO: HueAuthException? raise Exception("The user does not have proper Hue permissions to update Navigator properties.") return JsonResponse(api.update_properties(entity_id, properties, modified_custom_metadata, deleted_custom_metadata_keys))
def update_properties(request): response = {'status': -1} api = NavigatorApi() entity_id = json.loads(request.POST.get('id', '')) properties = json.loads(request.POST.get('properties', {})) if not entity_id or not properties or not isinstance(properties, dict): response['error'] = _("update_properties requires an 'id' parameter and 'properties' parameter that is a non-empty dict") else: response['entity'] = api.update_properties(entity_id, properties) response['status'] = 0 return JsonResponse(response)