Coverage for src/backend/InvenTree/part/admin.py: 100%
45 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 17:47 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-10-07 17:47 +0000
1"""Admin class definitions for the 'part' app."""
3from django.contrib import admin
5from part import models
8@admin.register(models.Part)
9class PartAdmin(admin.ModelAdmin):
10 """Admin class for the Part model."""
12 list_display = ('full_name', 'description', 'total_stock', 'category')
14 list_filter = ('active', 'assembly', 'is_template', 'virtual')
16 search_fields = (
17 'name',
18 'description',
19 'category__name',
20 'category__description',
21 'IPN',
22 )
24 autocomplete_fields = [
25 'variant_of',
26 'category',
27 'default_location',
28 'bom_checked_by',
29 'creation_user',
30 ]
32 inlines = []
35@admin.register(models.PartPricing)
36class PartPricingAdmin(admin.ModelAdmin):
37 """Admin class for PartPricing model."""
39 list_display = ('part', 'overall_min', 'overall_max')
41 autocomplete_fields = ['part']
44@admin.register(models.PartStocktake)
45class PartStocktakeAdmin(admin.ModelAdmin):
46 """Admin class for PartStocktake model."""
48 list_display = ['part', 'date', 'quantity']
51@admin.register(models.PartCategory)
52class PartCategoryAdmin(admin.ModelAdmin):
53 """Admin class for the PartCategory model."""
55 list_display = ('name', 'pathstring', 'description')
57 search_fields = ('name', 'description')
59 autocomplete_fields = ('parent', 'default_location')
62@admin.register(models.PartRelated)
63class PartRelatedAdmin(admin.ModelAdmin):
64 """Class to manage PartRelated objects."""
66 autocomplete_fields = ('part_1', 'part_2')
69@admin.register(models.PartTestTemplate)
70class PartTestTemplateAdmin(admin.ModelAdmin):
71 """Admin class for the PartTestTemplate model."""
73 list_display = ('part', 'test_name', 'required')
74 readonly_fields = ['key']
76 autocomplete_fields = ('part',)
79@admin.register(models.BomItem)
80class BomItemAdmin(admin.ModelAdmin):
81 """Admin class for the BomItem model."""
83 list_display = ('part', 'sub_part', 'quantity')
85 search_fields = (
86 'part__name',
87 'part__description',
88 'sub_part__name',
89 'sub_part__description',
90 )
92 autocomplete_fields = ('part', 'sub_part')
95@admin.register(models.PartSellPriceBreak)
96class PartSellPriceBreakAdmin(admin.ModelAdmin):
97 """Admin class for the PartSellPriceBreak model."""
99 class Meta:
100 """Metaclass options."""
102 model = models.PartSellPriceBreak
104 list_display = ('part', 'quantity', 'price')
107@admin.register(models.PartInternalPriceBreak)
108class PartInternalPriceBreakAdmin(admin.ModelAdmin):
109 """Admin class for the PartInternalPriceBreak model."""
111 class Meta:
112 """Metaclass options."""
114 model = models.PartInternalPriceBreak
116 list_display = ('part', 'quantity', 'price')
118 autocomplete_fields = ('part',)