diff --git a/server/registration/apps.py b/server/registration/apps.py index 127d8e4..50a576a 100644 --- a/server/registration/apps.py +++ b/server/registration/apps.py @@ -2,4 +2,4 @@ class RegistrationConfig(AppConfig): - name = 'registration' + name = 'registration' \ No newline at end of file diff --git a/server/registration/migrations/0001_initial.py b/server/registration/migrations/0001_initial.py index 5e9950b..aabd2cb 100644 --- a/server/registration/migrations/0001_initial.py +++ b/server/registration/migrations/0001_initial.py @@ -61,4 +61,4 @@ class Migration(migrations.Migration): name='accountManager', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='managed_businesses', to='registration.petcarer'), ), - ] + ] \ No newline at end of file diff --git a/server/server/settings.py b/server/server/settings.py index a3ef71d..0887fcb 100644 --- a/server/server/settings.py +++ b/server/server/settings.py @@ -53,9 +53,10 @@ "tasks.apps.TasksConfig", "dog.apps.DogConfig", "vet.apps.VetConfig", + "shop.apps.ShopConfig", + "registration.apps.RegistrationConfig", "landing_page", "health.apps.HealthConfig", - "registration", ] MIDDLEWARE = [ diff --git a/server/server/urls.py b/server/server/urls.py index 2698f1d..73fb9a1 100644 --- a/server/server/urls.py +++ b/server/server/urls.py @@ -31,5 +31,6 @@ path("home/", include("landing_page.urls")), path("dog/", include("dog.urls")), path("vet/", include("vet.urls")), + path("shop/", include("shop.urls")), path("health/", include("health.urls")) ] diff --git a/server/shop/__init__.py b/server/shop/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/server/shop/admin.py b/server/shop/admin.py new file mode 100644 index 0000000..e24586f --- /dev/null +++ b/server/shop/admin.py @@ -0,0 +1,6 @@ +from django.contrib import admin +from .models import ShopItem, ShopOrder, ShopSupplier +# Register your models here. +admin.site.register(ShopOrder) +admin.site.register(ShopItem) +admin.site.register(ShopSupplier) \ No newline at end of file diff --git a/server/shop/apps.py b/server/shop/apps.py new file mode 100644 index 0000000..1f05a2b --- /dev/null +++ b/server/shop/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class ShopConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'shop' diff --git a/server/shop/migrations/0001_initial.py b/server/shop/migrations/0001_initial.py new file mode 100644 index 0000000..ea9a280 --- /dev/null +++ b/server/shop/migrations/0001_initial.py @@ -0,0 +1,52 @@ +# Generated by Django 5.2.8 on 2025-12-11 05:37 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('registration', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='ShopSupplier', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('phoneNumber', models.CharField(max_length=15)), + ('email', models.EmailField(max_length=254)), + ('streetNo', models.CharField(max_length=10)), + ('streetNome', models.CharField(max_length=100)), + ('suburb', models.CharField(max_length=100)), + ('state', models.CharField(max_length=100)), + ('postcode', models.CharField(max_length=10)), + ('country', models.CharField(max_length=100)), + ], + ), + migrations.CreateModel( + name='ShopOrder', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('product_name', models.CharField(max_length=100)), + ('itemOrdered', models.CharField(max_length=100)), + ('dateOrdered', models.DateTimeField(auto_now_add=True)), + ('amountSpent', models.DecimalField(decimal_places=2, max_digits=10)), + ('useFor', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='registration.petcarer')), + ], + ), + migrations.CreateModel( + name='ShopItem', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('itemName', models.CharField(max_length=100)), + ('price', models.DecimalField(decimal_places=2, max_digits=10)), + ('inStock', models.IntegerField()), + ('supplierPrice', models.DecimalField(decimal_places=2, max_digits=10)), + ('supplier', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='shop.shopsupplier')), + ], + ), + ] diff --git a/server/shop/migrations/__init__.py b/server/shop/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/server/shop/models.py b/server/shop/models.py new file mode 100644 index 0000000..7a92abf --- /dev/null +++ b/server/shop/models.py @@ -0,0 +1,32 @@ +from django.db import models +from registration.models import PetCarer +# Create your models here. +class ShopOrder(models.Model): + useFor = models.ForeignKey(PetCarer, on_delete=models.CASCADE) + product_name = models.CharField(max_length=100) + itemOrdered = models.CharField(max_length=100) + dateOrdered = models.DateTimeField(auto_now_add=True) + amountSpent = models.DecimalField(max_digits=10, decimal_places=2) + def __str__(self): + return f"Order {self.order_id}: {self.product_name} (x{self.quantity})" + +class ShopItem(models.Model): + itemName = models.CharField(max_length=100) + price = models.DecimalField(max_digits=10, decimal_places=2) + inStock = models.IntegerField() + supplier = models.ForeignKey('ShopSupplier', on_delete=models.CASCADE) + supplierPrice = models.DecimalField(max_digits=10, decimal_places=2) + def __str__(self): + return self.itemName + +class ShopSupplier(models.Model): + phoneNumber = models.CharField(max_length=15) + email = models.EmailField() + streetNo = models.CharField(max_length=10) + streetNome = models.CharField(max_length=100) + suburb = models.CharField(max_length=100) + state = models.CharField(max_length=100) + postcode = models.CharField(max_length=10) + country = models.CharField(max_length=100) + def __str__(self): + return self.name \ No newline at end of file diff --git a/server/shop/shop_home.html b/server/shop/shop_home.html new file mode 100644 index 0000000..e4ab34b --- /dev/null +++ b/server/shop/shop_home.html @@ -0,0 +1,10 @@ + + + + + Welcome to Our Shop + + + + + diff --git a/server/shop/templates/shop/shop_home.html b/server/shop/templates/shop/shop_home.html new file mode 100644 index 0000000..87ebb42 --- /dev/null +++ b/server/shop/templates/shop/shop_home.html @@ -0,0 +1,14 @@ + + + + + + Shop — Placeholder + + +
+

Shop

+

This is a placeholder `shop_home.html` template. Replace with real content in a follow-up commit.

+
+ + diff --git a/server/shop/tests.py b/server/shop/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/server/shop/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/server/shop/urls.py b/server/shop/urls.py new file mode 100644 index 0000000..3f577c3 --- /dev/null +++ b/server/shop/urls.py @@ -0,0 +1,7 @@ +from django.urls import path +from . import views + +app_name = "shop" +urlpatterns = [ + path("", views.shop_home, name="shop-home"), +] diff --git a/server/shop/views.py b/server/shop/views.py new file mode 100644 index 0000000..f2494b6 --- /dev/null +++ b/server/shop/views.py @@ -0,0 +1,5 @@ +from django.shortcuts import render + +# Create your views here. +def shop_home(request): + return render(request, 'shop/shop_home.html') \ No newline at end of file