Skip to content

Commit

Permalink
feat: add biding model and improve listing model
Browse files Browse the repository at this point in the history
  • Loading branch information
LucasFASouza committed Jan 31, 2023
1 parent ad936f9 commit efd3375
Show file tree
Hide file tree
Showing 18 changed files with 155 additions and 5 deletions.
6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file modified auctions/__pycache__/admin.cpython-311.pyc
Binary file not shown.
Binary file modified auctions/__pycache__/models.cpython-311.pyc
Binary file not shown.
Binary file modified auctions/__pycache__/urls.cpython-311.pyc
Binary file not shown.
Binary file modified auctions/__pycache__/views.cpython-311.pyc
Binary file not shown.
3 changes: 2 additions & 1 deletion auctions/admin.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from django.contrib import admin

from .models import User, Listing
from .models import User, Listing, Biding

admin.site.register(User)
admin.site.register(Listing)
admin.site.register(Biding)
24 changes: 24 additions & 0 deletions auctions/migrations/0002_biding.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Generated by Django 4.1.5 on 2023-01-31 19:29

from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
('auctions', '0001_initial'),
]

operations = [
migrations.CreateModel(
name='Biding',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('value', models.FloatField()),
('buyer', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='bidings', to=settings.AUTH_USER_MODEL)),
('item', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='bidings', to='auctions.listing')),
],
),
]
23 changes: 23 additions & 0 deletions auctions/migrations/0003_listing_photo_alter_biding_value.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Generated by Django 4.1.5 on 2023-01-31 19:37

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('auctions', '0002_biding'),
]

operations = [
migrations.AddField(
model_name='listing',
name='photo',
field=models.ImageField(blank=True, upload_to='photos/'),
),
migrations.AlterField(
model_name='biding',
name='value',
field=models.DecimalField(decimal_places=2, max_digits=6),
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Generated by Django 4.1.5 on 2023-01-31 19:56

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('auctions', '0003_listing_photo_alter_biding_value'),
]

operations = [
migrations.RenameField(
model_name='listing',
old_name='name',
new_name='title',
),
migrations.RemoveField(
model_name='listing',
name='photo',
),
migrations.AddField(
model_name='listing',
name='category',
field=models.CharField(blank=True, choices=[('Fashion', 'Fashion'), ('Home', 'Home'), ('Electronics', 'Electronics'), ('Toys', 'Toys'), ('Other', 'Other')], max_length=24),
),
migrations.AddField(
model_name='listing',
name='initial_bid',
field=models.DecimalField(decimal_places=2, default=0.0, max_digits=6),
),
migrations.AddField(
model_name='listing',
name='photo_url',
field=models.URLField(blank=True),
),
]
Binary file not shown.
Binary file not shown.
Binary file not shown.
25 changes: 23 additions & 2 deletions auctions/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,30 @@ class User(AbstractUser):


class Listing(models.Model):
name = models.CharField(max_length=64)
title = models.CharField(max_length=64)
description = models.CharField(max_length=256)
initial_bid = models.DecimalField(max_digits=6, decimal_places=2, default=0.00)
photo_url = models.URLField(blank=True)

CATEGORIES_CHOICES = [
('Fashion', 'Fashion'),
('Home', 'Home'),
('Electronics', 'Electronics'),
('Toys', 'Toys'),
('Other', 'Other'),
]
category = models.CharField(choices=CATEGORIES_CHOICES, max_length=24, blank=True)

seller = models.ForeignKey(User, on_delete=models.CASCADE, related_name="listings")

def __str__(self):
return f"{self.name}, {self.description}"
return f"{self.title}: {self.description}"


class Biding(models.Model):
value = models.DecimalField(max_digits=6, decimal_places=2)
buyer = models.ForeignKey(User, on_delete=models.CASCADE, related_name="bidings")
item = models.ForeignKey(Listing, on_delete=models.CASCADE, related_name="bidings")

def __str__(self):
return f"{self.buyer} bids ${self.value} in {self.item.title}"
6 changes: 5 additions & 1 deletion auctions/templates/auctions/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,11 @@ <h2>Active Listings</h2>

<ul>
{% for listing in listings %}
<li>Listing {{ listing.id }}: {{ listing.name }} - {{ listing.description }}, made by {{ listing.seller }}</li>
<li>
<img src="{{ listing.photo_url }}" width="128">
<a href="{% url 'listing' listing.id %}">{{ listing.title }}:</a>
{{ listing.description }}, by {{ listing.seller }}
</li>
{% endfor %}
</ul>
{% endblock %}
24 changes: 24 additions & 0 deletions auctions/templates/auctions/listing.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{% extends "auctions/layout.html" %}

{% block body %}
<h2>{{ listing.title }}</h2>
<img src="{{ listing.photo_url }}" width="256">
<ul>
<li>Description: {{ listing.description }}</li>
<li>Seller: {{ listing.seller }}</li>
{% if listing.category %}
<li>Category: {{ listing.category }}</li>
{% endif %}
</ul>

<h2>Bidings</h2>
<ul>
{% for bid in bidings %}
<li>{{ bid }}</li>
{% empty %}
<li>Minimal bid: {{ listing.initial_bid }}</li>
{% endfor %}
</ul>

<a href="{% url 'index' %}">All Listings</a>
{% endblock %}
3 changes: 2 additions & 1 deletion auctions/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,6 @@
path("", views.index, name="index"),
path("login", views.login_view, name="login"),
path("logout", views.logout_view, name="logout"),
path("register", views.register, name="register")
path("register", views.register, name="register"),
path("<int:listing_id>", views.listing, name="listing"),
]
9 changes: 9 additions & 0 deletions auctions/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,3 +63,12 @@ def register(request):
return HttpResponseRedirect(reverse("index"))
else:
return render(request, "auctions/register.html")


def listing(request, listing_id):
auction = Listing.objects.get(id=listing_id)
bidings = auction.bidings.all()
return render(request, "auctions/listing.html", {
"listing": auction,
"bidings": bidings
})
Binary file modified db.sqlite3
Binary file not shown.

0 comments on commit efd3375

Please sign in to comment.