diff --git a/pflaenzli/pflaenzli/forms.py b/pflaenzli/pflaenzli/forms.py index d563fb9..fe2f368 100644 --- a/pflaenzli/pflaenzli/forms.py +++ b/pflaenzli/pflaenzli/forms.py @@ -1,6 +1,6 @@ from django import forms -from .models import User, Offer +from .models import PflaenzliUser, Offer class CreateOfferForm(forms.ModelForm): diff --git a/pflaenzli/pflaenzli/migrations/0001_initial.py b/pflaenzli/pflaenzli/migrations/0001_initial.py index 3f3cfd7..0cbdf65 100644 --- a/pflaenzli/pflaenzli/migrations/0001_initial.py +++ b/pflaenzli/pflaenzli/migrations/0001_initial.py @@ -1,8 +1,10 @@ -# Generated by Django 4.1.7 on 2023-02-19 12:38 +# Generated by Django 4.1.7 on 2023-04-05 15:27 from django.conf import settings +import django.contrib.auth.models from django.db import migrations, models import django.db.models.deletion +import django.utils.timezone class Migration(migrations.Migration): @@ -10,10 +12,59 @@ class Migration(migrations.Migration): initial = True dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ("auth", "0012_alter_user_first_name_max_length"), ] operations = [ + migrations.CreateModel( + name="PflaenzliUser", + fields=[ + ( + "user_ptr", + models.OneToOneField( + auto_created=True, + on_delete=django.db.models.deletion.CASCADE, + parent_link=True, + primary_key=True, + serialize=False, + to=settings.AUTH_USER_MODEL, + ), + ), + ("zipcode", models.PositiveIntegerField()), + ], + options={ + "verbose_name": "user", + "verbose_name_plural": "users", + "abstract": False, + }, + bases=("auth.user",), + managers=[ + ("objects", django.contrib.auth.models.UserManager()), + ], + ), + migrations.CreateModel( + name="Wish", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("created", models.DateTimeField(default=django.utils.timezone.now)), + ("title", models.CharField(max_length=200)), + ( + "user", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to="pflaenzli.pflaenzliuser", + ), + ), + ], + ), migrations.CreateModel( name="Offer", fields=[ @@ -26,14 +77,16 @@ class Migration(migrations.Migration): verbose_name="ID", ), ), + ("created", models.DateTimeField(default=django.utils.timezone.now)), ("title", models.CharField(max_length=50)), ("description", models.TextField(max_length=5000)), ("zipcode", models.IntegerField(blank=True, default=0)), + ("image", models.ImageField(upload_to="uploads/")), ( "user", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, - to=settings.AUTH_USER_MODEL, + to="pflaenzli.pflaenzliuser", ), ), ], diff --git a/pflaenzli/pflaenzli/migrations/0002_offer_created_wish.py b/pflaenzli/pflaenzli/migrations/0002_offer_created_wish.py deleted file mode 100644 index 2509467..0000000 --- a/pflaenzli/pflaenzli/migrations/0002_offer_created_wish.py +++ /dev/null @@ -1,45 +0,0 @@ -# Generated by Django 4.1.7 on 2023-02-19 22:03 - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion -import django.utils.timezone - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ("pflaenzli", "0001_initial"), - ] - - operations = [ - migrations.AddField( - model_name="offer", - name="created", - field=models.DateTimeField(default=django.utils.timezone.now), - ), - migrations.CreateModel( - name="Wish", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("created", models.DateTimeField(default=django.utils.timezone.now)), - ("title", models.CharField(max_length=200)), - ( - "user", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - to=settings.AUTH_USER_MODEL, - ), - ), - ], - ), - ] diff --git a/pflaenzli/pflaenzli/migrations/0003_offer_image.py b/pflaenzli/pflaenzli/migrations/0003_offer_image.py deleted file mode 100644 index d68af6b..0000000 --- a/pflaenzli/pflaenzli/migrations/0003_offer_image.py +++ /dev/null @@ -1,19 +0,0 @@ -# Generated by Django 4.1.7 on 2023-02-19 22:09 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ("pflaenzli", "0002_offer_created_wish"), - ] - - operations = [ - migrations.AddField( - model_name="offer", - name="image", - field=models.ImageField(default="placeholder.png", upload_to="uplaods"), - preserve_default=False, - ), - ] diff --git a/pflaenzli/pflaenzli/models.py b/pflaenzli/pflaenzli/models.py index e0c7413..8f3f3b6 100644 --- a/pflaenzli/pflaenzli/models.py +++ b/pflaenzli/pflaenzli/models.py @@ -5,9 +5,13 @@ from django.utils import timezone from django.core.files.storage import default_storage +class PflaenzliUser(User): + zipcode = models.PositiveIntegerField() + + class Offer(models.Model): created = models.DateTimeField(default=timezone.now) - user = models.ForeignKey(User, on_delete=models.CASCADE) + user = models.ForeignKey(PflaenzliUser, on_delete=models.CASCADE) title = models.CharField(max_length=50) description = models.TextField(max_length=5000) zipcode = models.IntegerField(blank=True, default=0) @@ -16,7 +20,7 @@ class Offer(models.Model): class Wish(models.Model): created = models.DateTimeField(default=timezone.now) - user = models.ForeignKey(User, on_delete=models.CASCADE) + user = models.ForeignKey(PflaenzliUser, on_delete=models.CASCADE) title = models.CharField(max_length=200) diff --git a/pflaenzli/pflaenzli/views.py b/pflaenzli/pflaenzli/views.py index 5feda5a..aeb09dc 100644 --- a/pflaenzli/pflaenzli/views.py +++ b/pflaenzli/pflaenzli/views.py @@ -2,11 +2,10 @@ from django.shortcuts import render, get_object_or_404, redirect from django.utils import timezone from django.contrib import messages from django.contrib.auth.decorators import login_required -from django.contrib.auth.models import User from django.http import HttpResponseForbidden from .forms import CreateOfferForm -from .models import Offer, Wish +from .models import PflaenzliUser, Offer, Wish from .mail import send_offer_email from .upload import generate_unique_filename @@ -93,7 +92,7 @@ def offer_trade(request, offer_id): def user_detail(request, user_id): - user = get_object_or_404(User, id=user_id) + user = get_object_or_404(PflaenzliUser, id=user_id) offers = Offer.objects.filter(user=user_id) wishes = Wish.objects.filter(user=user_id)