This commit is contained in:
j3d1 2025-09-25 16:09:52 +02:00
parent 2fe8d14c2c
commit 4627f0aca2
14 changed files with 1064 additions and 11 deletions

View file

@ -1,11 +1,11 @@
from django.contrib import admin
from toolshed.models import InventoryItem, Property, Tag, Category
from toolshed.models import InventoryItem, Property, Tag, Category, StorageLocation, WorkflowInstance
class InventoryItemAdmin(admin.ModelAdmin):
list_display = ('name', 'description', 'category', 'availability_policy', 'owned_quantity', 'owner')
search_fields = ('name', 'description', 'category', 'availability_policy', 'owned_quantity', 'owner')
list_display = ('name', 'description', 'category', 'availability_policy', 'owned_quantity', 'owner', 'storage_location')
search_fields = ('name', 'description', 'category__name', 'availability_policy', 'owner__username', 'storage_location__name')
admin.site.register(InventoryItem, InventoryItemAdmin)
@ -13,7 +13,7 @@ admin.site.register(InventoryItem, InventoryItemAdmin)
class PropertyAdmin(admin.ModelAdmin):
list_display = ('name', 'description', 'category', 'unit_symbol', 'base2_prefix', 'dimensions', 'origin')
search_fields = ('name', 'description', 'category', 'unit_symbol', 'base2_prefix', 'dimensions', 'origin')
search_fields = ('name', 'description', 'category__name', 'unit_symbol', 'origin')
admin.site.register(Property, PropertyAdmin)
@ -21,7 +21,7 @@ admin.site.register(Property, PropertyAdmin)
class TagAdmin(admin.ModelAdmin):
list_display = ('name', 'description', 'category', 'origin')
search_fields = ('name', 'description', 'category', 'origin')
search_fields = ('name', 'description', 'category__name', 'origin')
admin.site.register(Tag, TagAdmin)
@ -29,7 +29,16 @@ admin.site.register(Tag, TagAdmin)
class CategoryAdmin(admin.ModelAdmin):
list_display = ('name', 'description', 'parent', 'origin')
search_fields = ('name', 'description', 'parent', 'origin')
search_fields = ('name', 'description', 'parent__name', 'origin')
admin.site.register(Category, CategoryAdmin)
class StorageLocationAdmin(admin.ModelAdmin):
list_display = ('name', 'description', 'category', 'parent', 'owner')
search_fields = ('name', 'description', 'category__name', 'parent__name', 'owner__username')
list_filter = ('category', 'owner')
admin.site.register(StorageLocation, StorageLocationAdmin)

View file

@ -72,6 +72,19 @@ class StorageLocationViewSet(viewsets.ModelViewSet):
return StorageLocation.objects.filter(owner=self.request.user.user.get())
return StorageLocation.objects.none()
def perform_create(self, serializer):
with transaction.atomic():
serializer.save(owner=self.request.user.user.get())
def perform_update(self, serializer):
with transaction.atomic():
if serializer.instance.owner == self.request.user.user.get():
serializer.save()
def perform_destroy(self, instance):
if instance.owner == self.request.user.user.get():
instance.delete()
router.register(r'inventory_items', InventoryItemViewSet, basename='inventory_items')
router.register(r'storage_locations', StorageLocationViewSet, basename='storage_locations')

View file

@ -1,5 +1,5 @@
from django.db import models
from django.core.validators import MinValueValidator
from django.core.validators import MinValueValidator, MaxValueValidator
from django_softdelete.models import SoftDeleteModel
from rest_framework.exceptions import ValidationError

View file

@ -50,12 +50,12 @@ class CategorySerializer(serializers.ModelSerializer):
class StorageLocationSerializer(serializers.ModelSerializer):
owner = OwnerSerializer(read_only=True)
category = CategorySerializer(required=False, allow_null=True)
category = serializers.CharField(required=False, allow_null=True, allow_blank=True)
path = serializers.SerializerMethodField()
class Meta:
model = StorageLocation
fields = ['id', 'name', 'description', 'path', 'category', 'owner']
fields = ['id', 'name', 'description', 'path', 'category', 'owner', 'parent']
read_only_fields = ['path']
@staticmethod