Skip to content

Commit 27e4ca6

Browse files
committed
added the required fields for the models, but the borrower stuff may need to move to another table
1 parent b60e55d commit 27e4ca6

4 files changed

Lines changed: 84 additions & 4 deletions

File tree

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# Generated by Django 5.2.8 on 2026-01-08 14:38
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('inventory', '0001_initial'),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name='inventoryitem',
15+
name='availability',
16+
field=models.BooleanField(default=True),
17+
),
18+
migrations.AddField(
19+
model_name='inventoryitem',
20+
name='borrowerName',
21+
field=models.CharField(blank=True, max_length=100, null=True),
22+
),
23+
migrations.AddField(
24+
model_name='inventoryitem',
25+
name='collectionPoint',
26+
field=models.CharField(default='Demo Collection Point', max_length=100),
27+
),
28+
migrations.AddField(
29+
model_name='inventoryitem',
30+
name='organization',
31+
field=models.CharField(default='Demo Organization', max_length=100),
32+
),
33+
migrations.AddField(
34+
model_name='inventoryitem',
35+
name='returnedOn',
36+
field=models.DateTimeField(blank=True, null=True),
37+
),
38+
migrations.AlterField(
39+
model_name='inventoryitem',
40+
name='id',
41+
field=models.BigAutoField(primary_key=True, serialize=False),
42+
),
43+
]

server/inventory/models.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,30 @@
11
# Create your models here.
22
# this is the db models
3+
# you can have multiple tables here
34
# whenever you make changes here do this
45
# python manage.py makemigrations
56
# python manage.py migrate
67

78
from django.db import models
89

910
class InventoryItem(models.Model):
11+
# BigAutoField is for primary keys
12+
id = models.BigAutoField(primary_key=True)
13+
1014
# CharField is for short text (like titles)
1115
name = models.CharField(max_length=255)
1216

1317
# TextField is for long-form content (like descriptions)
1418
details = models.TextField(blank=True, null=True)
1519
categories = models.CharField(max_length=100, default="General")
20+
21+
availability = models.BooleanField(default=True)
22+
organization = models.CharField(max_length=100, default="Demo Organization")
1623

24+
collectionPoint = models.CharField(max_length=100, default="Demo Collection Point")
25+
borrowerName = models.CharField(max_length=100, blank=True, null=True)
26+
returnedOn = models.DateTimeField(blank=True, null=True)
27+
1728
# Dates
1829
borrowed_on = models.DateTimeField(blank=True, null=True)
1930
due_on = models.DateTimeField(blank=True, null=True)

server/inventory/urls.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
from .views import InventoryItemViewSet
44

55
router = DefaultRouter()
6-
router.register(r'items', InventoryItemViewSet) # This creates /items/
6+
# router.register(r'items', InventoryItemViewSet) # This creates /items/
7+
router.register(r'items', InventoryItemViewSet, basename='inventoryitem') # to fix error with missing basename
78

89
urlpatterns = [
910
path('', include(router.urls)),

server/inventory/views.py

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,31 @@
88
from .serializers import InventoryItemSerializer
99

1010
class InventoryItemViewSet(viewsets.ModelViewSet):
11-
# This tells the view where to get the data and how to translate it
12-
queryset = InventoryItem.objects.all()
13-
serializer_class = InventoryItemSerializer
11+
serializer_class = InventoryItemSerializer
12+
13+
def get_queryset(self):
14+
# 1. Start with all items
15+
# does not talk to the database yet, its just a query plan
16+
queryset = InventoryItem.objects.all()
17+
18+
# 2. Grab 'categories' from the URL (e.g., ?categories=Tools)
19+
category = self.request.query_params.get('categories')
20+
21+
# 3. Grab 'ordering' from the URL (e.g., ?ordering=name)
22+
sort_by = self.request.query_params.get('ordering')
23+
24+
# 4. Apply filters manually if the user provided them
25+
if category is not None:
26+
queryset = queryset.filter(categories=category)
27+
28+
# 5. Apply sorting manually
29+
if sort_by is not None:
30+
queryset = queryset.order_by(sort_by)
31+
32+
return queryset
33+
34+
# the original that works
35+
# class InventoryItemViewSet(viewsets.ModelViewSet):
36+
# # This tells the view where to get the data and how to translate it
37+
# queryset = InventoryItem.objects.all()
38+
# serializer_class = InventoryItemSerializer

0 commit comments

Comments
 (0)