Доаповнити інформацію в енпоінті для експорту відповідей опитування
Для ендпоінту, що був створений у расках задачі #89 (closed) і використовується для експорту відповідей у модуль аналітики, додати поле з id питання.
Це потрібно для можливості на стороні модулю аналітики виключати з розрахунку показників окремі питання.
AR: ендпонт не повертає id питання
ER: разом з існуючими даними повертати id питання
Update
Необходимо:
- В Answer.answers добавить следующий поля:
-
question_id
- pk вопроса из моделиQuestion
(integer) -
question_version
- timestamp сгенерированный из Question.updated_at (integer)
Данные должны возвращяться в JS из вьюхи и в дальнейшем отправляться для сохранения https://gitlab.prozorro.sale/prozorro-sale/survey/-/blob/master/js_src/components/actions.js?ref_type=heads#L24 в ответах.
-
Добавить
question_id
иquestion_version
в выводе эндпоинта/api/survey/answers
https://gitlab.prozorro.sale/prozorro-sale/survey/-/blob/master/src/survey/forms/models/answer.py?ref_type=heads#L76 -
Сделать миграцию для старых данных
Миграция:
- Сравнивает данные из Answer.answers с Question по
survey
,question_type
,description
и берем значения дляquestion_id
иquestion_version
- Если сопоставления не нашлось, ишем просто по
survey
,question_type
и берем первый - Если сопоставления не нашлось то превращает Answer.answers.question.description в отрицательное число -int и используем его для значения
question_id
иquestion_version
Вариант превращения Answer.answers.question.description в отризательное число -int__
import binascii
for test in [
'Коротке відкрите питання.',
'Коротке відкрите питання. ',
'Відповідь може містити від 5 до 50 знаків',
'Коротке відкрите питання. Відповідь може містити від 5 до 50 знаків'
]:
int_id = (binascii.crc32(str(test).encode('utf-8')) % (1 << 32)) * -1
print(f'"{test}"\t = {int_id}')