mirror of
https://gitverse.ru/kpa39l/vesti.git
synced 2026-09-29 09:55:03 +00:00
8592a82381
Форма добавления не имела поля channel, валидатор требует его для crawler=telegram → 'telegram-источнику нужен channel'. Добавлено поле в add-форму (required для telegram через JS), показ channel в таблице у telegram-источников. Backend не менялся. web/templates/sources.html ранее отсутствовал в git — добавлен.
2.4 KiB
2.4 KiB
fix-sources-add-channel
Дизайн
1. Форма добавления — поле channel (web/templates/sources.html)
Вставить после поля url (перед crawler), чтобы telegram-поля шли вместе:
<div class="col-auto">
<label class="form-label mb-0 small">channel (telegram)</label>
<input type="text" name="channel" class="form-control form-control-sm"
placeholder="@handle или t.me/..." id="add_channel">
</div>
Поле обязательное только для telegram: маленький inline-скрипт в конце формы
переключает атрибут required при смене select[name=crawler]:
<script>
const addCrawler = document.querySelector('form[action="/sources/add"] select[name="crawler"]');
const addChannel = document.getElementById('add_channel');
function toggleChannelRequired() {
addChannel.required = addCrawler.value === 'telegram';
}
addCrawler.addEventListener('change', toggleChannelRequired);
toggleChannelRequired();
</script>
2. Таблица — показ channel у telegram (web/templates/sources.html)
В колонке crawler (строки 91-93) добавить вывод channel для telegram, по аналогии с feed_url для rss:
<td><span class="badge text-bg-secondary">{{ s['crawler'] }}</span>
{% if s['crawler'] == 'rss' and s['feed_url'] %}<br><small class="text-muted">{{ s['feed_url'] }}</small>{% endif %}
{% if s['crawler'] == 'telegram' and s['channel'] %}<br><small class="text-muted">{{ s['channel'] }}</small>{% endif %}
</td>
3. Backend — без изменений
web/app.py::_form_source уже собирает channel (строка 877),
sources/sources.py::_validate_source уже проверяет (строка 218),
db_source_to_yaml уже пишет в yaml (строка 181). Правки только в шаблоне.
Проверка
openspec validate fix-sources-add-channel— чисто.- Ручной тест через веб: добавить telegram-источник с channel → success; без channel → браузер подсветит поле, серверная ошибка не нужна.
- Рестарт
vesti-web, проверить страницу /sources.