Skip to content
Open
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
Empty file added src/author/__init__.py
Empty file.
11 changes: 11 additions & 0 deletions src/author/apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
from django.apps import AppConfig


class AuthorConfig(AppConfig):
"""
Конфигурация приложения.
"""

default_auto_field = "django.db.models.BigAutoField"
name = "author"
verbose_name = "Автор"
28 changes: 28 additions & 0 deletions src/author/author_admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
"""
Функции панели управления для приложения "Автор".
"""

from django.contrib import author_admin
from author.models import Author


@author_admin.register(Author)
class AuthorAdmin(author_admin.ModelAdmin):
list_display = (
"resume_url",
"github_url",
"email",
"created_at",
"updated_at",
)

search_fields = (
"github_url",
"resume_url",
"email",
)

list_filter = (
"created_at",
"updated_at",
)
9 changes: 9 additions & 0 deletions src/author/author_info.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
from django.http import HttpRequest
from author.models import Author


def author(request: HttpRequest) -> dict:
"""
Информация об авторе
"""
return {"author": Author.objects.last()}
46 changes: 46 additions & 0 deletions src/author/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Generated by Django 4.1.13 on 2024-03-28 16:58

from django.db import migrations, models


class Migration(migrations.Migration):

initial = True

dependencies = []

operations = [
migrations.CreateModel(
name="Author",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"created_at",
models.DateTimeField(
auto_now_add=True, verbose_name="Время создания записи"
),
),
(
"updated_at",
models.DateTimeField(
auto_now=True, verbose_name="Время обновления записи"
),
),
("resume_url", models.URLField(verbose_name="Ссылка на резюме")),
("github_url", models.URLField(verbose_name="Ссылка GitHub")),
("email", models.EmailField(max_length=254, verbose_name="Email")),
],
options={
"verbose_name": "Информация об авторе",
"verbose_name_plural": "Информация об авторе",
},
),
]
Empty file.
19 changes: 19 additions & 0 deletions src/author/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
from django.db import models
from base.models import TimeStampMixin


class Author(TimeStampMixin):
"""
Модель для хранения данных об авторе
"""

resume_url = models.URLField(verbose_name="Ссылка на резюме")
github_url = models.URLField(verbose_name="Ссылка GitHub")
email = models.EmailField(verbose_name="Email")

class Meta:
verbose_name = "Информация об авторе"
verbose_name_plural = "Информация об авторе"

def __str__(self) -> str:
return f'Объект "автор" (id={self.pk})'
25 changes: 25 additions & 0 deletions src/jobs/migrations/0002_job_detailed_description.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Generated by Django 4.1.13 on 2024-03-28 13:38

import ckeditor_uploader.fields
from django.db import migrations
import django.utils.timezone


class Migration(migrations.Migration):

dependencies = [
("jobs", "0001_initial"),
]

operations = [
migrations.AddField(
model_name="job",
name="detailed_description",
field=ckeditor_uploader.fields.RichTextUploadingField(
default=django.utils.timezone.now,
help_text="Подробное описание выполненной работы",
verbose_name="Подробное описание",
),
preserve_default=False,
),
]
12 changes: 12 additions & 0 deletions src/jobs/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from django.db import models

from base.models import TimeStampMixin
from ckeditor_uploader.fields import RichTextUploadingField


class Job(TimeStampMixin):
Expand All @@ -22,10 +23,21 @@ class Job(TimeStampMixin):
verbose_name="Описание",
help_text="Краткое описание выполненной работы",
)
detailed_description = RichTextUploadingField(
verbose_name="Подробное описание",
help_text="Подробное описание выполненной работы",
)

class Meta:
verbose_name = "Выполненная работа"
verbose_name_plural = "Выполненные работы"

def __str__(self) -> str:
return f'Объект "Выполненная работа" (id={self.pk})'

def summary(self) -> str:
"""
Краткое подробное описание работы.
:return:
"""
return self.detailed_description[:70] + "..."
10 changes: 5 additions & 5 deletions src/jobs/templates/jobs/job_detail.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
{% block content %}

<div class="container">
<h1 class="text-center pt-3 display-4">{{ blog.title }}</h1>
<p class="text-center">{{ blog.pub_date }}</p>
<p><img src="{{ blog.image.url }}" class="img-fluid" alt="{{ blog.title }}"></p>
<p>{{ blog.content }}</p>
<a href="{% url 'blogs' %}" class="btn btn-light" role="button">Вернуться в блог</a>
<h1 class="text-center pt-3 display-4">{{ job.title }}</h1>
<p class="text-center">{{ job.pub_date }}</p>
<p><img src="{{ job.image.url }}" class="img-fluid" alt="{{ job.description }}"></p>
<p>{{ job.detailed_description|safe }}</p>
<a href="{% url 'jobs' %}" class="btn btn-light" role="button">Вернуться на главную</a>
</div>

{% endblock %}
8 changes: 4 additions & 4 deletions src/jobs/templates/jobs/job_list.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@
<div class="row py-lg-5">
<div class="col-lg-6 col-md-8 mx-auto">
<p class="fw-light h1">Привет!</p>
<p class="lead text-muted">Меня зовут Иван Иванов. <br />Я профессионально занимаюсь разработкой на Python.</p>
<p class="lead text-muted">Меня зовут Деменева Анастасия. <br />Я профессионально занимаюсь разработкой на Python.</p>
<p>
<img src="{% static 'images/my_photo.jpeg' %}" height="300" alt="Иван Иванов"/>
<img src="{% static 'images/my_photo.jpeg' %}" height="300" alt="Деменева Анастасия"/>
</p>
<p>
<a href="mailto:username(att)somemailserver(dott)com" class="btn btn-primary my-2">Написать мне</a>
Expand All @@ -33,10 +33,10 @@
alt="job image"/>

<div class="card-body">
<p class="card-text">{{ job.description }}</p>
<p class="card-text">{{ job.summary|safe }}</p>
<div class="d-flex justify-content-between align-items-center">
<div class="btn-group">
<a href="#" type="button" class="btn btn-sm btn-outline-secondary">Подробнее</a>
<a href="{% url 'job' job.id %}" type="button" class="btn btn-sm btn-outline-secondary">Подробнее</a>
</div>
<small class="text-muted"><p>{{ job.created_at|date:"d E Y" }}</p></small>
</div>
Expand Down
7 changes: 7 additions & 0 deletions src/jobs/url.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
from django.urls import path
from jobs.views import IndexJobsListView, IndexJobDetailView

urlpatterns = [
path("", IndexJobsListView.as_view(), name='jobs'),
path("<int:pk>/", IndexJobDetailView.as_view(), name='job')
]
5 changes: 4 additions & 1 deletion src/jobs/views.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
from django.views.generic import ListView
from django.views.generic import ListView, DetailView

from jobs.models import Job


class IndexJobsListView(ListView):
model = Job

class IndexJobDetailView(DetailView):
model = Job
3 changes: 3 additions & 0 deletions src/portfolio/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,11 @@
# созданные приложения
"jobs.apps.JobsConfig",
"blog.apps.BlogConfig",
"author.apps.AuthorConfig",
# установленные приложения
"ckeditor",
"ckeditor_uploader",

]

MIDDLEWARE = [
Expand All @@ -73,6 +75,7 @@
"django.template.context_processors.request",
"django.contrib.auth.context_processors.auth",
"django.contrib.messages.context_processors.messages",
"author.author_info.author"
],
},
},
Expand Down
6 changes: 3 additions & 3 deletions src/portfolio/templates/base.html
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,9 @@ <h4 class="text-white">Обо мне</h4>
<div class="col-sm-4 offset-md-1 py-4">
<h4 class="text-white">Мои контакты</h4>
<ul class="list-unstyled">
<li><a href="#" class="text-white">Резюме</a></li>
<li><a href="https://github.com" target="_blank" class="text-white">GitHub</a></li>
<li><a href="mailto:username(att)somemailserver(dott)com" class="text-white">Email</a></li>
<li><a href="{{ author.resume_url }}" class="text-white">Резюме</a></li>
<li><a href="{{ author.github_url }}" target="_blank" class="text-white">GitHub</a></li>
<li><a href=":{{ author.email }}" class="text-white">Email</a></li>
</ul>
</div>
</div>
Expand Down
1 change: 1 addition & 0 deletions src/portfolio/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,6 @@
path("ckeditor/", include("ckeditor_uploader.urls")),
path("", IndexJobsListView.as_view(), name="home"),
path("blog/", include("blog.urls")),
path("job/", include("jobs.url")),
]
urlpatterns.extend(static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT))