NewsPaper

Форк
0

6 месяцев назад
6 месяцев назад
6 месяцев назад
8 месяцев назад
6 месяцев назад
9 месяцев назад
6 месяцев назад
9 месяцев назад
7 месяцев назад
README.md

NewsPaper

Module no.16.4
Homework

Ваши настройки логирования должны выполнять следующее:

  • В консоль должны выводиться все сообщения уровня DEBUG и выше, включающие время, уровень сообщения, сообщения. Для сообщений WARNING и выше дополнительно должен выводиться путь к источнику события (используется аргумент pathname в форматировании). А для сообщений ERROR и CRITICAL еще должен выводить стэк ошибки (аргумент exc_info). Сюда должны попадать все сообщения с основного логгера django.
  • В файл general.log должны выводиться сообщения уровня INFO и выше только с указанием времени, уровня логирования, модуля, в котором возникло сообщение (аргумент module) и само сообщение. Сюда также попадают сообщения с регистратора django.
  • В файл errors.log должны выводиться сообщения только уровня ERROR и CRITICAL. В сообщении указывается время, уровень логирования, само сообщение, путь к источнику сообщения и стэк ошибки. В этот файл должны попадать сообщения только из логгеров django.request, django.server, django.template, django.db.backends.
  • В файл security.log должны попадать только сообщения, связанные с безопасностью, а значит только из логгера django.security. Формат вывода предполагает время, уровень логирования, модуль и сообщение.
  • На почту должны отправляться сообщения уровней ERROR и выше из django.request и django.server по формату, как в errors.log, но без стэка ошибок.

Более того, при помощи фильтров нужно указать, что в консоль сообщения отправляются только при DEBUG = True, а на почту и в файл general.log — только при DEBUG = False.

Module no.11.3
Homework

Дополните свой новостной портал:

  • Добавьте кэширование на страницы с новостями (по 5 минут на каждую) и на главную страницу (одну минуту).
  • В шаблонах постарайтесь кэшировать все навигационные элементы (меню, сайдбары и т. д.). Количество кэшируемого времени остаётся на ваше усмотрение. Кроме того, можете использовать любую систему кэширования, какая вам более по нраву.

Module no.10.5.1
Homework

Продолжаем работать над проектом новостного приложения. В этом модуле мы, конечно же, добавим работу с асинхронными запросами. Для успешного выполнения этого итогового задания модуля вам необходимо:

  • Установить Redis.
  • Установить Celery.
  • Произвести необходимые конфигурации Django для соединения всех компонентов системы.
  • Реализовать рассылку уведомлений подписчикам после создания новости.
  • Реализовать еженедельную рассылку с последними новостями (каждый понедельник в 8:00 утра).

Module no.9.5.4
Homework

По итогу работы в модуле вы должны были усовершенствовать ваше новостное приложение:

  • В категории должна быть возможность пользователей подписываться на рассылку новых статей в этой категории.
  • Если пользователь подписан на какую-либо категорию, то, как только в неё добавляется новая статья, её краткое содержание приходит пользователю на электронную почту, которую он указал при регистрации. В письме обязательно должна быть гиперссылка на саму статью, чтобы он мог по клику перейти и прочитать её.
  • Если пользователь подписан на какую-либо категорию, то каждую неделю ему приходит на почту список новых статей, появившийся за неделю с гиперссылкой на них, чтобы пользователь мог перейти и прочесть любую из статей.
  • Добавьте приветственное письмо пользователю при регистрации в приложении.

Module no.8.6.2
Homework

Все действия, которые вы должны выполнить для модификации приложения:

  • В классе-представлении редактирования профиля добавить проверку аутентификации.
  • Выполнить необходимые настройки пакета allauth в файле конфигурации.
  • В файле конфигурации определить адрес для перенаправления на страницу входа в систему и адрес перенаправления после успешного входа.
  • Реализовать шаблон с формой входа в систему и выполнить настройку конфигурации URL.
  • Реализовать шаблон страницы регистрации пользователей.
  • Реализовать возможность регистрации через Google-аккаунт.
  • Создать группы common и authors.
  • Реализовать автоматическое добавление новых пользователей в группу common.
  • Создать возможность стать автором (быть добавленным в группу authors).
  • Для группы authors предоставить права создания и редактирования объектов модели Post (новостей и статей).
  • В классах-представлениях добавления и редактирования новостей и статей добавить проверку прав доступа.
  • Исходный код залить в git-репозиторий.

Module no.7.7
Homework

Фильтры и пагинация

Добавьте постраничный вывод на /news/, чтобы на одной странице было не больше 10 новостей и были видны номера лишь ближайших страниц, а также возможность перехода к первой или последней странице.
Добавьте страницу /news/search. На ней должна быть реализована возможность искать новости по определённым критериям. Критерии должны быть следующие:

  • по названию
  • по имени автора
  • позже указываемой даты
Убедитесь, что можно выполнить фильтрацию сразу по нескольким критериям.

Создание, редактирование и удаление объектов

Запрограммируйте страницы создания, редактирования и удаления новостей и статей. Предлагаем вам расположить страницы по следующим ссылкам:

  • /news/create/
  • /news/>int:pk</edit/
  • /news/>int:pk</delete/
  • /articles/create/
  • /articles/>int:pk</edit/
  • /articles/>int:pk</delete/

Module no.6.6
Homework

Что входит в задание:

  • Создать новую страницу с адресом /news/, на которой должен выводиться список всех новостей.
  • Вывести все статьи в виде заголовка, даты публикации и первых 20 символов текста.
  • Новости должны выводиться в порядке от более свежей к самой старой.
  • Сделать отдельную страницу для полной информации о статье /news/<id новости>.
  • На этой странице должна быть вся информация о статье. Название, текст и дата загрузки в формате день.месяц.год.
  • Написать собственный фильтр censor, который заменяет буквы нежелательных слов в заголовках и текстах статей на символ «*».
  • Все новые страницы должны использовать шаблон default.html как основу.

Module no.5.9
Homework

Что входит в задание:

Модель Author

Модель, содержащая объекты всех авторов.

Имеет следующие поля:

  • cвязь «один к одному» с встроенной моделью пользователей User;
  • рейтинг пользователя. Ниже будет дано описание того, как этот рейтинг можно посчитать.

Модель Category

Категории новостей/статей — темы, которые они отражают (спорт, политика, образование и т. д.).

Имеет единственное поле:

  • название категории. Поле должно быть уникальным (в определении поля необходимо написать параметр unique = True).

Модель Post

Эта модель должна содержать в себе статьи и новости, которые создают пользователи. Каждый объект может иметь одну или несколько категорий.

Соответственно, модель должна включать следующие поля:

  • связь «один ко многим» с моделью Author;
  • поле с выбором — «статья» или «новость»;
  • автоматически добавляемая дата и время создания;
  • связь «многие ко многим» с моделью Category (с дополнительной моделью PostCategory);
  • заголовок статьи/новости;
  • текст статьи/новости;
  • рейтинг статьи/новости.

Модель PostCategory

Промежуточная модель для связи «многие ко многим»:

  • связь «один ко многим» с моделью Post;
  • связь «один ко многим» с моделью Category.

Модель Comment

Под каждой новостью/статьёй можно оставлять комментарии, поэтому необходимо организовать их способ хранения тоже.

Модель будет иметь следующие поля:

  • связь «один ко многим» с моделью Post;
  • связь «один ко многим» со встроенной моделью User (комментарии может оставить любой пользователь, необязательно автор);
  • текст комментария;
  • дата и время создания комментария;
  • рейтинг комментария.

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.