Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Задания для занятия 3 #9

Open
btseytlin opened this issue Apr 25, 2016 · 0 comments
Open

Задания для занятия 3 #9

btseytlin opened this issue Apr 25, 2016 · 0 comments

Comments

@btseytlin
Copy link
Member

btseytlin commented Apr 25, 2016

Несколько задач по улучшению сайта

Задачи актуальны для версии репозитория от 25 Апреля 2016

Список задач:

  1. Реализовать поиск по сообществам
  2. Реализовать голосвания за сообщества через "лайки"
  3. Добавить систему обратной связи, которая позволит посетителям сайта указать на необходимость исправления или добавления страницы сообщества.

Подбронее о каждой из задач ниже.

Реализовать поиск

Требуется отдельная страница community/search, содержащая строку ввода запроса поиска и вывод подходящих под запрос сообществ.
Поиск должен производиться по названию сообщества. Если в названии сообщества встречается строка запроса оно считается подходящим под запрос.
Например для ввода фрэла подходят, например, сообщества Радиокружок ФРЭЛА и Лямбда ФРЭЛА. Они же подходят для ввода эл.
Поиск должен быть независим от регистра вводимого запроса и названий сообществ!

Для выполнения задачи нужно:

  1. Создать вид search в community.views. На GET запрос вид должен отрисовать страничку search.html со строкой запроса и результатами поиска (подходящими сообществами). Вид должен принимать GET параметр query с запросом для поиска. При отсутствии запроса должен рисовать пустой список результатов.
    Например
    localhost:8000/community/search - выводит строку запроса и пустую страницу.
    localhost:8000/community/search?query=ФРЭЛА - выводит строку запроса и сообщества содержащие "фрэла" в названии.
    Таким образом кнопка "искать" рядом со строкой запроса должна перенаправлять пользователя на страницу /search и передавать как параметр query её содержимое.
    Для того, чтобы "отыскать", среди объектов модели Communities соответствующие запросу нужно использовать такие методы моделей как filter и, возможно, exclude.
    Подробнее в доках
    Вид должен возвращать сообщества в алфавитном порядке!
  2. Создать шаблон search.html, вызываемый видом search. Он должен использовать для отрисовки результатов существующий шаблон community/list.html. Он так же должен содержать <input> для ввода поискового запроса.
    Шаблон должен выводить строку "Ничего не найдено" вместо списка сообществ если ничего не было найдено.
    Шаблон должен быть оформлен с помощью bootstrap!
  3. Создать ссылку на вид поиска в communities/urls.
  4. Протестировать основные случаи: пустой запрос, неверный запрос, верный запрос.

Дополнительное задание: реализовать поиск по множеству полей.

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

Реализовать голосования через лайки

Требуется, чтобы рядом с названием сообщества была кнопка "лайкнуть" и количество текущих лайков.
Для выполнения задания необходимо:

  1. Установить и интегрировать приложение secretballot.
    Настроить secretballot: лайки должны быть привязаны к IP и UserAgent пользователя.
    Адаптировать модель Community для работы с лайками средствами secretballot.
  2. Добавить новый вид like.
    Вид должен принимать GET запрос без параметров.
    like должен использовать вид vote модуля secretballot.
    Задача вида: определить, пытается пользователь поставить или снять лайк и передать 1 или 0 соответственно в вид vote. Вернуть результат.
    Повторный "лайк" сообщества должен отменять предыдущий лайк.
    Возвращать вид должен количество лайков за данное сообщество.
  3. Добавить ссылки в community.urls.
    Вид like должен быть доступен по ссылке /community/<id>/like, где <id> заменяется на id этого сообщества.
  4. Изменить шаблон community/detail.html, добавив туда счетчик лайков и кнопку "лайк" рядом с названием сообщества.

Реализовать систему обратной связи

Требуется форма, позволяющая пользователю сайта отправить запрос на изменение странички сообщества.
Это должна быть отдельная страница /feedback.
Для выполнения:

  1. Создать новую модель FeedbackMessage с полями text, created_date.
  2. Используя django forms создать форму для модели.
  3. В project/views добавить вид feedback.
    По GET запросу он должен отрисовывать шаблон feedback.html с формой для создания нового FeedbackMessage.
    По POST запросу он должен создавать новое сообщение FeedbackMessage.
  4. В project/urls добавить ссылку на вид feedback.
  5. Создать шаблон feedback.html с формой используя forms. По кнопке отправить форма должна отправлять всё, что ввёл пользователь, POST запросом в вид feedback.
    Добавить в navbar.html кнопку для перехода на страницу feedback.
    Добавить в feedback.html инструкцию для пользователя:
Если вы хотите изменить существующее сообщество, то укажите ссылку на него и требуемые изменения.
Если вы хотите добавить сообщество, то опишите его по примеру существующих.

После выполнения каждого задания необходимо исправить баги, сделать коммит и пулреквест!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant