Skip to content

Commit fbb07c5

Browse files
committed
UI improvements to the admin area
1 parent 1f384cc commit fbb07c5

File tree

2 files changed

+43
-7
lines changed

2 files changed

+43
-7
lines changed

inventory/admin.py

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Inventory Admin Area for Meander
22

33
from django.contrib import admin
4-
from inventory.models import System, SystemModel, Peripheral, Accessory
4+
from inventory.models import System, SystemModel, Peripheral, PeripheralModel, Accessory
55

66
class SystemAdmin(admin.ModelAdmin):
77
list_display = ('tag', 'model')
@@ -14,12 +14,40 @@ class SystemAdmin(admin.ModelAdmin):
1414
})
1515
)
1616

17+
# Don't allow editing of the PK after creation
18+
def get_readonly_fields(self, request, obj=None):
19+
if obj:
20+
return ['tag']
21+
else:
22+
return []
23+
1724
admin.site.register(System, SystemAdmin)
18-
admin.site.register(SystemModel)
1925

20-
admin.site.register(Peripheral)
26+
class SystemModelAdmin(admin.ModelAdmin):
27+
fieldsets = (
28+
(None, { 'fields': ('manufacturer', 'product_name')}),
29+
("Advanced", { 'classes':('collapse',),'fields': ('sku_number', 'family')})
30+
)
31+
32+
admin.site.register(SystemModel, SystemModelAdmin)
33+
34+
class PeripheralModelAdmin(admin.ModelAdmin):
35+
list_display = ('__unicode__', 'total')
36+
admin.site.register(PeripheralModel, PeripheralModelAdmin)
37+
38+
class PeripheralAdmin(admin.ModelAdmin):
39+
fields = ('tag', 'model')
40+
list_display = ('tag', 'model')
41+
42+
# Don't allow editing of the PK after creation
43+
def get_readonly_fields(self, request, obj=None):
44+
if obj:
45+
return ['tag']
46+
else:
47+
return []
48+
admin.site.register(Peripheral, PeripheralAdmin)
2149

2250
class AccessoryAdmin(admin.ModelAdmin):
2351
list_display = ('__unicode__', 'stock', 'needs_reorder')
24-
52+
list_editable = ('stock',)
2553
admin.site.register(Accessory, AccessoryAdmin)

inventory/models.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ class BaseModel(models.Model):
1919
manufacturer = models.CharField(max_length=255) # must be non-null
2020
product_name = models.CharField(max_length=255) # must be non-null
2121

22+
def __unicode__(self):
23+
return self.manufacturer + " " + self.product_name
24+
2225
class Meta:
2326
abstract = True
2427

@@ -35,8 +38,8 @@ class Meta:
3538
# the inventory system and may have support contracts and software licences.
3639
##
3740
class SystemModel(BaseModel):
38-
sku_number = models.CharField(max_length=255, blank=True, null=True)
39-
family = models.CharField(max_length=255, blank=True, null=True)
41+
sku_number = models.CharField(max_length=255, blank=True, null=True, help_text="A number which uniquly idenfies this configuration (eg. nc2400#abu).")
42+
family = models.CharField(max_length=255, blank=True, null=True, help_text="The family of products this unit it from (eg. Compaq 6200 Pro series)")
4043

4144
def __unicode__(self):
4245
return "%s %s" % (self.manufacturer, self.product_name)
@@ -55,11 +58,16 @@ def __unicode__(self):
5558
# tagged and tracked like systems.
5659
##
5760
class PeripheralModel(BaseModel):
58-
pass
61+
62+
def total(self):
63+
return self.peripheral_set.count()
5964

6065
class Peripheral(BaseAsset):
6166
model = models.ForeignKey(PeripheralModel)
6267

68+
def __unicode__(self):
69+
return self.tag
70+
6371
##
6472
# Accessories
6573
# Arn't indivually tracked, they mearly have a stock level. This category is mostly for alerting IT staff

0 commit comments

Comments
 (0)