feat: второй вложенный цикл users_loop_all (все пользователи с админом)

- users_loop — пользователи БЕЗ администратора (для таблицы доступа,
  где админ отдельной строкой)
- users_loop_all — ВСЕ пользователи включая администратора (для других
  документов, где нужен полный список)
This commit is contained in:
2026-08-03 15:10:50 +04:00
parent 98e84fb155
commit efe937fe0d
+7 -2
View File
@@ -278,13 +278,17 @@ def _build_loop_data(company: Company, is_list: List) -> Dict[str, List[Dict]]:
admin_fio = (getattr(company, 'ispdn_fio', '') or '').strip()
admin_norm = _norm_name(admin_fio)
for isys in is_list:
# Пользователи ИС для вложенного цикла <!-- loop:item_users -->
# (без администратора, чтобы он не дублировался)
# Пользователи ИС для вложенного цикла <!-- loop:users_loop -->
# БЕЗ администратора (чтобы он не дублировался в таблице доступа,
# где админ уже выведен отдельной строкой)
users_loop = []
for u in (isys.users_list or []):
if admin_norm and _norm_name(u) == admin_norm:
continue
users_loop.append({'fio': u, 'position': ''})
# ВСЕ пользователи (включая администратора) — для других документов,
# где нужен полный список: <!-- loop:users_loop_all -->
users_loop_all = [{'fio': u, 'position': ''} for u in (isys.users_list or [])]
items.append({
'name': isys.name or '',
'description': isys.description or '',
@@ -298,6 +302,7 @@ def _build_loop_data(company: Company, is_list: List) -> Dict[str, List[Dict]]:
'pd_count': str(isys.pd_count or ''),
'users': ', '.join(isys.users_list or []) or '',
'users_loop': users_loop,
'users_loop_all': users_loop_all,
'defense_tools_list': ', '.join(isys.defense_tools_list or []) or '',
'processing_modes': isys.processing_modes or '',
'pd_subjects': '; '.join(isys.pd_subjects_list or []) or '',