{% extends "base.html" %} {% block title %}{{ tr('Машины') }} — Puntavia{% endblock %} {% block nav_team %}on{% endblock %} {% block head %} {% endblock %} {% block crumb %}/{{ tr('Машины') }}{{ tr('машин') }} {{ rows|length }}{% endblock %} {% block content %} {% from "_ava.html" import ava, avapick with context %} {# Без .foldable: сворачивать на странице нечего, шеврон в шапке только путал (владелец, 26.08). #}
{% with tab = 'devices' %}{% include "_tabs_team.html" %}{% endwith %}
{{ tr('Машины') }}{{ rows|length }} {% if can_manage %} {% endif %} {% if rows %}
{% endif %}
{# два селекта легко спутать — одна строка, кто из них про что (владелец, 26.08) #}

{{ tr('Сотрудник склеивает машины одного человека в одну строку отчёта. Группа решает, кому машина видна: наблюдателю выдаётся группа на вкладке «Доступ».') }}

{% if not rows %}
{{ tr('Пока ни одна машина не подключилась') }} {{ tr('Нажмите «+» вверху: поставьте агента на машину сотрудника и дайте ему код подключения.') }}
{% endif %} {# СПИСОК — строки; компактнее, когда парк большой. Спрятан до выбора. #} {# КАРТОЧКИ — плитки; вид по умолчанию, поэтому видимы с сервера. #}
{% for r in rows %}
{% if r.pause[0] %}{{ tr(r.pause[1]).format(**r.pause[2]) }} {% elif r.alive %}{{ tr('на связи') }} {% else %}{{ tr('молчит') }}{% endif %} {{ ava(r.row.name, r.row.avatar, 22) }} {{ r.row.name }}
{{ r.row.platform or '—' }} · {{ r.row.backend or '—' }}
{{ tr('сотрудник') }}
{% if can_manage %}
{% else %}
{{ r.person.name if r.person else '—' }}
{% endif %}
{{ tr('группа') }}
{% if can_manage %}
{% else %}
{{ r.department or '—' }}
{% endif %}
{{ tr('пояс') }}
{{ r.tz_label }} · {{ r.local_time }}
{{ tr('прислано') }}
{{ tr('замеров {a} · скриншотов {b}').format(a=r.samples, b=r.shots) }}
{% include "_dev_edit.html" %}
{% endfor %}
{# Группы машин — единица доступа: создать группу, положить в неё машины, выдать группу наблюдателю на «Доступе». Каталог правит только полный охват. #} {% if can_groups or departments %}
{{ tr('Группы') }}{{ departments|length }} {% if can_groups %} {% endif %}

{{ tr('Единица доступа: наблюдателю выдаётся группа, и он видит машины из неё.') }} {{ tr('Кому какая группа выдана —') }} {{ tr('на вкладке «Доступ»') }}.

{% if departments %} {% else %}
{{ tr('Групп нет') }} {{ tr('Пока их нет, доступ выдаётся сразу на всю компанию. Группа нужна, чтобы показать наблюдателю только часть машин — в ней может быть и одна машина, и много.') }}
{% endif %}
{% endif %} {% if can_groups %}
{{ tr('Добавить группу') }}
{% endif %}
{{ tr('Подключить компьютер') }}

{{ tr('Программы для Windows, macOS и Linux —') }} {{ tr('на странице загрузок') }}.

{% if can('manage_settings') %}

{{ tr('Отдайте этот код тому, кто ставит агента: в нём и адрес сервера, и ключ регистрации — программа спросит одну строку.') }} {{ tr('После первой связи агент получает личный токен, а ключ со своей машины стирает.') }}

{% else %}

{{ tr('Код подключения спросите у владельца или руководителя.') }}

{% endif %}
  1. Windows: {{ tr('распакуйте архив и запустите') }} Setup.bat. {{ tr('Для всего парка сразу — установщик') }} Puntavia.msi (msiexec).
  2. {{ tr('Несколько учётных записей на одном компьютере:') }} {{ tr('из админской —') }} install-for-user.bat, {{ tr('он подготовит все учётки сразу.') }}
  3. Linux: ./install.sh {{ tr('от обычного пользователя.') }}
  4. macOS: {{ tr('перетащить Puntavia в «Программы» и разрешить запись экрана.') }}
  5. {{ tr('Проверить связь на машине:') }} python -m timelog status.
  • {{ tr('адрес сервера') }}
    {{ server_url }}
  • {{ tr('компания') }}
    {{ org.name }}
  • {{ tr('ключ регистрации') }}
    {{ tr('на странице «Настройки»') if can('manage_settings') else tr('спросите у владельца') }}
{% endblock %}