diff --git a/src/author/__init__.py b/src/author/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/author/admin.py b/src/author/admin.py new file mode 100644 index 0000000..75f0284 --- /dev/null +++ b/src/author/admin.py @@ -0,0 +1,28 @@ +""" +Функции панели управления для приложения "Автор". +""" + +from django.contrib import admin +from author.models import Author + + +@admin.register(Author) +class AuthorAdmin(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", + ) \ No newline at end of file diff --git a/src/author/apps.py b/src/author/apps.py new file mode 100644 index 0000000..9606d38 --- /dev/null +++ b/src/author/apps.py @@ -0,0 +1,11 @@ +from django.apps import AppConfig + + +class AuthorConfig(AppConfig): + """ + Конфигурация приложения. + """ + + default_auto_field = "django.db.models.BigAutoField" + name = "author" + verbose_name = "Автор" \ No newline at end of file diff --git a/src/author/context_processors.py b/src/author/context_processors.py new file mode 100644 index 0000000..2f0a2da --- /dev/null +++ b/src/author/context_processors.py @@ -0,0 +1,9 @@ +from django.http import HttpRequest +from author.models import Author + + +def author(request: HttpRequest) -> dict: + """ + Контекстный процессор для информации об авторе + """ + return {"author": Author.objects.last()} \ No newline at end of file diff --git a/src/author/migrations/0001_initial.py b/src/author/migrations/0001_initial.py new file mode 100644 index 0000000..e69de29 diff --git a/src/author/migrations/__init__.py b/src/author/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/author/models.py b/src/author/models.py new file mode 100644 index 0000000..0a23d86 --- /dev/null +++ b/src/author/models.py @@ -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})' \ No newline at end of file diff --git a/src/jobs/models.py b/src/jobs/models.py index a5525d1..5d0fded 100644 --- a/src/jobs/models.py +++ b/src/jobs/models.py @@ -3,7 +3,7 @@ """ from django.db import models - +from ckeditor_uploader.fields import RichTextUploadingField from base.models import TimeStampMixin @@ -22,6 +22,10 @@ class Job(TimeStampMixin): verbose_name="Описание", help_text="Краткое описание выполненной работы", ) + detailed_description = RichTextUploadingField( + verbose_name="Подробное описание", + help_text="Подробное описание выполненной работы", + ) class Meta: verbose_name = "Выполненная работа" @@ -29,3 +33,10 @@ class Meta: def __str__(self) -> str: return f'Объект "Выполненная работа" (id={self.pk})' + + def summary(self) -> str: + """ + Представление подробного описания работы. + :return: + """ + return self.detailed_description[:50] + "..." diff --git a/src/jobs/templates/jobs/job_detail.html b/src/jobs/templates/jobs/job_detail.html index 6b40e3f..f62ac36 100644 --- a/src/jobs/templates/jobs/job_detail.html +++ b/src/jobs/templates/jobs/job_detail.html @@ -5,9 +5,9 @@
{{ blog.pub_date }}
-{{ blog.content }}
- Вернуться в блог +{{ job.detailed_description|safe }}
+ На главнуюПривет!
-Меня зовут Иван Иванов.
Я профессионально занимаюсь разработкой на Python.
Меня зовут Дмитрий Зубарев.
Я профессионально занимаюсь разработкой на Python.
-
+
Написать мне @@ -33,7 +33,7 @@ alt="job image"/>
{{ job.description }}
+{{ job.summary|safe }}