Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -127,3 +127,7 @@ dmypy.json

# Pyre type checker
.pyre/

# media
media/

6 changes: 6 additions & 0 deletions advertisements/advertisements/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -126,3 +126,9 @@
# https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field

DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

# Media conf

MEDIA_ROOT = Path.joinpath(BASE_DIR, 'media/')

MEDIA_URL = 'media/'
5 changes: 5 additions & 0 deletions advertisements/advertisements/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,15 @@
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
path('admin/', admin.site.urls),
path('', include('app_advertisements.urls')),
]

if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
8 changes: 6 additions & 2 deletions advertisements/app_advertisements/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,17 @@


class AdvertisementAdmin(admin.ModelAdmin):
list_display = ['id', 'title', 'description', 'price', 'created_date', 'auction', 'updated_date']
list_display = [
'id', 'title', 'description', 'price',
'created_date', 'auction', 'updated_date', 'image',
]

list_filter = ['auction', 'created_at']
actions = ['make_auction_as_false', 'make_auction_as_true']

fieldsets = (
('Общее', {
'fields': ('title', 'description'),
'fields': ('title', 'description', 'image'),
}),
('Финансы', {
'fields': ('price', 'auction'),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Generated by Django 4.2 on 2023-05-11 10:51

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


class Migration(migrations.Migration):

dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('app_advertisements', '0002_alter_advertisement_table'),
]

operations = [
migrations.AddField(
model_name='advertisement',
name='user',
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='пользователь'),
preserve_default=False,
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Generated by Django 4.2 on 2023-05-12 20:56

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('app_advertisements', '0003_advertisement_user'),
]

operations = [
migrations.AddField(
model_name='advertisement',
name='image',
field=models.ImageField(default='', upload_to='advertisements/', verbose_name='изображение'),
preserve_default=False,
),
]
5 changes: 5 additions & 0 deletions advertisements/app_advertisements/models.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
from django.contrib.auth import get_user_model
from django.db import models
from django.contrib import admin
from django.utils.html import format_html

User = get_user_model()


class Advertisement(models.Model):
title = models.CharField("заголовок", max_length=128)
Expand All @@ -10,6 +13,8 @@ class Advertisement(models.Model):
auction = models.BooleanField("торг", help_text="Отметьте, если торг уместен")
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
user = models.ForeignKey(User, verbose_name='пользователь', on_delete=models.CASCADE)
image = models.ImageField("изображение", upload_to="advertisements/")

@admin.display(description='дата создания')
def created_date(self):
Expand Down
6 changes: 4 additions & 2 deletions advertisements/app_advertisements/views.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
from django.http import HttpResponse
from django.shortcuts import render
from .models import Advertisement


def index(request):
return render(request, 'index.html')
advertisements = Advertisement.objects.all()
context = {'advertisements': advertisements}
return render(request, 'index.html', context)


def top_sellers(request):
Expand Down
Empty file.
73 changes: 8 additions & 65 deletions advertisements/templates/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -94,90 +94,33 @@
</div>
</form>
</div>
{% for adv in advertisements %}
<div class="col">
<div class="card mb-2" style="max-width: 1200px; margin-top: 20px;">
<div class="row g-0">
<div class="col-md-4">
<a href="advertisement.html" class="nav-link">
<img src="{% static 'img/adv.png' %}" class="img-fluid rounded-start" alt="Card title">
<img src="{% if adv.image %} {{ adv.image.url }} {% endif %}" class="img-fluid rounded-start" alt="Card title">
</a>
</div>
<div class="col-md-8">
<div class="card-body">
<h5 class="card-title">
<a href="advertisement.html" class="nav-link"><strong>Продаю балкон</strong></a>
<a href="advertisement.html" class="nav-link"><strong>{{ adv.title }}</strong></a>
</h5>
<a href="advertisement.html" class="nav-link">
<p class="card-text">
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quas, nulla eos neque dolorum quis aliquid
deleniti molestias, nobis debitis expedita, fugiat ea. Delectus harum quo dolores modi cupiditate in
tempore. Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptas quis similique quas
architecto doloremque culpa consequatur excepturi provident quo fugit repudiandae inventore quae ea
sequi, recusandae aliquid veritatis rerum quibusdam?
{{ adv.description }}
</p>
<span>Автор: Никнейм автора объявления</span>
<p class="card-text"><small class="text-muted">Размещено: здесь должна стоять дата</small></p>
<span>Автор: {{ adv.user }}</span>
<p class="card-text"><small class="text-muted">Размещено: {{ adv.created_at }}</small></p>
<span>Цена: {{ adv.price }}</span>
</a>
</div>
</div>
</div>
</div>
<div class="card mb-2" style="max-width: 1200px; margin-top: 20px;">
<div class="row g-0">
<div class="col-md-4">
<a href="advertisement.html" class="nav-link">
<img src="{% static 'img/adv.png' %}" class="img-fluid rounded-start" alt="Card title">
</a>
</div>
<div class="col-md-8">
<div class="card-body">
<h5 class="card-title">
<a href="advertisement.html" class="nav-link"><strong>Продам гараж</strong></a>
</h5>
<a href="advertisement.html" class="nav-link">
<p class="card-text">
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quas, nulla eos neque dolorum quis aliquid
deleniti molestias, nobis debitis expedita, fugiat ea. Delectus harum quo dolores modi cupiditate in
tempore. Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptas quis similique quas
architecto doloremque culpa consequatur excepturi provident quo fugit repudiandae inventore quae ea
sequi, recusandae aliquid veritatis rerum quibusdam?
</p>
<span>Автор: Никнейм автора объявления</span>
<p class="card-text"><small class="text-muted">Размещено: здесь должна стоять дата</small></p>
</a>
</div>
</div>
</div>
</div>
<div class="card mb-2" style="max-width: 1200px; margin-top: 20px;">
<div class="row g-0">
<div class="col-md-4">
<a href="advertisement.html" class="nav-link">
<img src="{% static 'img/adv.png' %}" class="img-fluid rounded-start" alt="Card title">
</a>
</div>
<div class="col-md-8">
<div class="card-body">
<h5 class="card-title">
<a href="advertisement.html" class="nav-link"><strong>Куплю баню</strong></a>
</h5>
<a href="advertisement.html" class="nav-link">
<p class="card-text">
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quas, nulla eos neque dolorum quis aliquid
deleniti molestias, nobis debitis expedita, fugiat ea. Delectus harum quo dolores modi cupiditate in
tempore. Lorem ipsum dolor sit amet consectetur adipisicing elit. Voluptas quis similique quas
architecto doloremque culpa consequatur excepturi provident quo fugit repudiandae inventore quae ea
sequi, recusandae aliquid veritatis rerum quibusdam?
</p>
<span>Автор: Никнейм автора объявления</span>
<p class="card-text"><small class="text-muted">Размещено: здесь должна стоять дата</small></p>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
{% endfor %}
<footer style="padding: 100px;" class="bg-primary">
<nav class="navbar navbar-expand-sm navbar-dark">
<a class="navbar-brand" href="#">Добавьте</a>
Expand Down