mirror of
https://github.com/inventree/InvenTree.git
synced 2026-09-01 09:41:22 +00:00
Updated API endpoints for NotesImage model
This commit is contained in:
@@ -465,17 +465,38 @@ class ConfigViewSet(viewsets.ReadOnlyModelViewSet):
|
|||||||
admin_router.register('config', ConfigViewSet, basename='api-config')
|
admin_router.register('config', ConfigViewSet, basename='api-config')
|
||||||
|
|
||||||
|
|
||||||
|
class NotesImageFilter(FilterSet):
|
||||||
|
"""Filterset for the NotesImage API endpoint."""
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
"""Metaclass options."""
|
||||||
|
|
||||||
|
model = common.models.NotesImage
|
||||||
|
fields = ['user', 'note']
|
||||||
|
|
||||||
|
model_id = rest_filters.NumberFilter(
|
||||||
|
label=_('Model ID'), field_name='note__model_id'
|
||||||
|
)
|
||||||
|
|
||||||
|
model_type = rest_filters.CharFilter(method='filter_model_type', label='Model Type')
|
||||||
|
|
||||||
|
def filter_model_type(self, queryset, name, value):
|
||||||
|
"""Filter queryset to include only Parameters of the given model type."""
|
||||||
|
return common.filters.filter_content_type(
|
||||||
|
queryset, 'note__model_type', value, allow_null=False
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class NotesImageList(ListCreateAPI):
|
class NotesImageList(ListCreateAPI):
|
||||||
"""List view for all notes images."""
|
"""List view for all notes images."""
|
||||||
|
|
||||||
queryset = common.models.NotesImage.objects.all()
|
queryset = common.models.NotesImage.objects.all()
|
||||||
serializer_class = common.serializers.NotesImageSerializer
|
serializer_class = common.serializers.NotesImageSerializer
|
||||||
permission_classes = [IsAuthenticatedOrReadScope]
|
permission_classes = [IsAuthenticatedOrReadScope]
|
||||||
|
filterset_class = NotesImageFilter
|
||||||
|
|
||||||
filter_backends = SEARCH_ORDER_FILTER
|
filter_backends = SEARCH_ORDER_FILTER
|
||||||
|
|
||||||
search_fields = ['user', 'model_type', 'model_id']
|
|
||||||
|
|
||||||
def perform_create(self, serializer):
|
def perform_create(self, serializer):
|
||||||
"""Create (upload) a new notes image."""
|
"""Create (upload) a new notes image."""
|
||||||
image = serializer.save()
|
image = serializer.save()
|
||||||
@@ -1501,7 +1522,7 @@ common_api_urls = [
|
|||||||
# Webhooks
|
# Webhooks
|
||||||
path('webhook/<slug:endpoint>/', WebhookView.as_view(), name='api-webhook'),
|
path('webhook/<slug:endpoint>/', WebhookView.as_view(), name='api-webhook'),
|
||||||
# Uploaded images for notes
|
# Uploaded images for notes
|
||||||
path('notes-image-upload/', NotesImageList.as_view(), name='api-notes-image-list'),
|
path('notes-image/', NotesImageList.as_view(), name='api-notes-image-list'),
|
||||||
# Background task information
|
# Background task information
|
||||||
path(
|
path(
|
||||||
'background-task/',
|
'background-task/',
|
||||||
|
|||||||
@@ -3109,22 +3109,8 @@ class NotesImage(models.Model):
|
|||||||
|
|
||||||
date = models.DateTimeField(auto_now_add=True)
|
date = models.DateTimeField(auto_now_add=True)
|
||||||
|
|
||||||
model_type = models.CharField(
|
|
||||||
max_length=100,
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
help_text=_('Target model type for this image'),
|
|
||||||
)
|
|
||||||
|
|
||||||
model_id = models.IntegerField(
|
|
||||||
help_text=_('Target model ID for this image'),
|
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
default=None,
|
|
||||||
)
|
|
||||||
|
|
||||||
note = models.ForeignKey(
|
note = models.ForeignKey(
|
||||||
Note, on_delete=models.CASCADE, null=True, blank=True, related_name='images'
|
Note, on_delete=models.CASCADE, null=False, blank=False, related_name='images'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -400,7 +400,7 @@ class NotesImageSerializer(InvenTreeModelSerializer):
|
|||||||
"""Meta options for NotesImageSerializer."""
|
"""Meta options for NotesImageSerializer."""
|
||||||
|
|
||||||
model = common_models.NotesImage
|
model = common_models.NotesImage
|
||||||
fields = ['pk', 'image', 'user', 'date', 'model_type', 'model_id']
|
fields = ['pk', 'image', 'user', 'date', 'note']
|
||||||
|
|
||||||
read_only_fields = ['date', 'user']
|
read_only_fields = ['date', 'user']
|
||||||
|
|
||||||
|
|||||||
@@ -253,7 +253,7 @@ export enum ApiEndpoints {
|
|||||||
project_code_list = 'project-code/',
|
project_code_list = 'project-code/',
|
||||||
custom_unit_list = 'units/',
|
custom_unit_list = 'units/',
|
||||||
note_list = 'note/',
|
note_list = 'note/',
|
||||||
notes_image_upload = 'notes-image-upload/',
|
notes_image_list = 'notes-image/',
|
||||||
email_list = 'admin/email/',
|
email_list = 'admin/email/',
|
||||||
email_test = 'admin/email/test/',
|
email_test = 'admin/email/test/',
|
||||||
config_list = 'admin/config/',
|
config_list = 'admin/config/',
|
||||||
|
|||||||
@@ -120,11 +120,11 @@ export default function NotesEditor({
|
|||||||
const uploadFile = useCallback(
|
const uploadFile = useCallback(
|
||||||
(file: File) => {
|
(file: File) => {
|
||||||
const formData = new FormData();
|
const formData = new FormData();
|
||||||
formData.append('note', String(selectedNoteId));
|
formData.append('note', selectedNoteId?.toString() ?? '');
|
||||||
formData.append('image', file);
|
formData.append('image', file);
|
||||||
|
|
||||||
return api
|
return api
|
||||||
.post(apiUrl(ApiEndpoints.notes_image_upload), formData, {
|
.post(apiUrl(ApiEndpoints.notes_image_list), formData, {
|
||||||
headers: { 'Content-Type': 'multipart/form-data' }
|
headers: { 'Content-Type': 'multipart/form-data' }
|
||||||
})
|
})
|
||||||
.then((response) => response.data.image);
|
.then((response) => response.data.image);
|
||||||
|
|||||||
Reference in New Issue
Block a user