May 14, 2020

Тестовое задание

👋 Привет! Меня зовут Карина. Я дипломированный лингвист. Более 2 лет работаю редактором в одном из юнитов Progression Group, до этого занимала аналогичную позицию в агентстве Socialist.

Работаю с большими объемами рекламных материалов различного формата (от SMS и электронных писем до посадочных страниц сайта и юридической информации), в том числе с профессиональными текстами из банковской сферы.

Ценю возможность получать новый опыт и развиваться в профессии. К делу подхожу ответственно и с интересом.

Задание 1

РЕГИСТРАЦИЯ

Мы почти готовы регистрировать пользователей прямо в приложении.

Для этого нам понадобятся следующие компоненты:

☑️ форма регистрации;
☑️ соответствующий view;
☑️ шаблон для регистрации;
☑️ зарегистрированный view в urls.ру.

Форма

Добавьте такую форму в accounts/forms.py:

💡Отметим сразу несколько моментов.

Форма содержит два поля для пароля, чтобы можно было реализовать паттерн «Введите пароль два раза». Мы ограничиваем в этой форме поля, запросив у пользователя только username, имя, и email.

За совпадение паролей отвечает функция clean_password2

Функции в формах, которые начинаются с clean, обозначают правила, по которым то или иное поле попадает в словарь cleaned_data после валидации. 
Когда мы вызываем метод form.is_valid из любого нашего view, Django начинает поиск похожих по названию методов, и вызывает их. Ожидается, что результат, к примеру, метода сlean() method, попадет в словарь cleaned_data с ключом Something. Внутри формы, при условии, что указанные пароли не совпадают, мы вызываем соответствующее исключение.

В целом такой подход можно назвать «ручным», потому что в django.contrib.auth.forms на этот случай есть класс формы, который называется UserCreationForm. Практически все то же самое можно делать с его помощью.

Разработчик

Далее необходимо добавить вкладку «Разработчик», которая будет отображать шаблон и валидировать форму. Для разнообразия создадим ее с помощью функции. Допишите следующие строки в accounts/views.py:

💡 Не забудьте в шапке документа импортировать форму.
Глобально здесь не происходит ничего нового, за исключением одного нюанса: Django не хранит пароли в чистом виде, поэтому мы не можем просто написать user.password = 'qwerty'. Мы используем для этого метод set_password, который зашифрует пароль и сохранит его в базу для этого пользователя, когда мы вызовем newuser.save().

Шаблоны

Как можно видеть из кода выше — нам нужно два шаблона для регистрации, первый —  это accounts/register.html:

И второй, который мы показываем после того, как успешно создали пользователя:

Urls

В accounts/urls.py мы регистрируем нашу функцию. Обратите внимание, что так как это уже функция, нам не надо вызывать каких-то as_view(). Некоторым такой подход кажется более «чистым»:

path('register/', views.register, name='register').

👇 Убедимся, что все работает:

👇 После регистрации:

👇 Пользователя можно будет найти в админке:

Еще один момент. Будет считаться хорошим тоном, если добавить в шаблон для логина ссылку на страницу регистрации, например, такого типа:


Задание 2
<h2>ПРИВЕТ И ДОБРО ПОЖАЛОВАТЬ!</h2>
 
<p>Ваше погружение в обучение и <i>IT</i>-специальность начнется с <b>Онбординг-курса</b>, состоящего из 4 модулей. Каждый модуль будет открываться раз в неделю на платформе и занимать у вас от 3 до 8 часов на ознакомление с материалом и выполнение заданий.</p>
 
<p>Во время Онбординг-курса мы:<p>
<ul type="circle">
<li>Поймем, как учиться на курсе эффективно и с удовольствием.</li>
<li>Пройдем курс молодого <i>IT</i>-бойца и поймем, что технологии — это просто.</li>
<li>Узнаем, какие технологии стоят за такими понятиями, как <i>frontend, AI, blockchain</i> и как устроена <i>IT</i>-область.</li>
<li>Научимся подбирать технологии и другие ресурсы под конкретную задачу.</li>
</ul>
<p>Все начинается с модуля <b>«Введение»</b>.</p> 
 


Задание 3
  1. Я напишу письмо продюсеру курса в копии с методистом. В письме спрашиваю, какой статус по готовности материалов. Фиксирую в письме важный момент — максимальный дедлайн предоставления материалов для загрузки — 9:00 24 мая. В противном случае я не успею его загрузить с учетом планируемого времени на эту задачу.

    Здесь также надо понимать, требуется ли редактура этим материалам или их нужно только загрузить на платформу. Если редактура требуется, это означает, что времени потребуется больше. Оценить время на редактуру можно только изучив полученные материалы. В этом случае я буду обсуждать с продюсером курса и методистом сроки, на которые требуется сдвинуть открытие модуля, чтобы произвести не только загрузку, но и редактуру текста.
    На будущее попрошу зафиксировать четкие рамки для отправки материалов и персональную ответственность за это продюсера и методиста.
  2. В зависимости от типа ошибки:
    – если ошибка грамматическая или просто опечатка — зайду в редактирование модуля и поправлю это как можно скорее. При этом сообщу продюсеру курса о том, что обнаружила и исправила.

    – если ошибка более критическая и касается сути материала, то свяжусь с продюсером и буду обсуждать возможные варианты решения ситуации. Могу предположить, что нужно будет поправить ошибку и сообщить всем студентам, которые его изучали, о том, что были внесены корректировки.
  3. Напишу письмо продюсеру и методисту курса.

    Предложу обсудить этот вопрос. При этом обосную свои сомнения и предложу варианты исправлений.