{% extends "base.html" %} {% block title %}Posiedzenie {{ meeting.meeting_identifier }} - Strefa RADA{% endblock %} {% block extra_css %} {% endblock %} {% block content %}
Powrót do listy posiedzeń

Posiedzenie Rady Izby nr {{ meeting.meeting_identifier }}

{% if meeting.meeting_date %} {{ meeting.meeting_date.strftime('%d.%m.%Y') }} {% endif %} {% if meeting.start_time %} {{ meeting.start_time.strftime('%H:%M') }}{% if meeting.end_time %} - {{ meeting.end_time.strftime('%H:%M') }}{% endif %} {% endif %} {{ meeting.location or 'Siedziba Izby' }}
{{ meeting.status_label }} {% if can_manage %}
Edytuj {% if meeting.status == 'draft' %}
{% elif meeting.status in ['agenda_published', 'protocol_draft'] %}
{% endif %}
{% endif %}

Dane posiedzenia

{{ meeting.chairperson.name if meeting.chairperson else '—' }}
{{ meeting.secretary.name if meeting.secretary else '—' }}
{{ meeting.guests or 'brak' }}

Program posiedzenia

{% if meeting.agenda_items %}
    {% for item in meeting.agenda_items %}
  1. {% if item.time_start %}{{ item.time_start }}{% endif %} {% if item.time_end %} - {{ item.time_end }}{% endif %} {{ item.title }}
  2. {% endfor %}
{% else %}

Program posiedzenia nie został jeszcze uzupełniony.

{% endif %}

Lista obecności

{% if meeting.attendance %} {% for member in board_members %} {% set att = meeting.attendance.get(member.id|string, {}) %} {% set status = att.get('status', 'unknown') %} {% endfor %}
Lp. Imię i nazwisko Inicjały Obecność
{{ loop.index }} {{ member.name or member.email.split('@')[0] }} {{ att.get('initials', '') }} {% if status == 'present' or att.get('present') %} obecny {% elif status == 'absent' %} nieobecny {% else %} nieoznaczony {% endif %}
{% if meeting.quorum_count is not none %}
Kworum: {{ meeting.quorum_count }} / {{ board_members|length }} obecnych {% if meeting.quorum_confirmed %} — Kworum osiągnięte {% else %} — Brak kworum {% endif %}
{% endif %} {% else %}

Lista obecności nie została jeszcze uzupełniona.

{% endif %}
{% if meeting.proceedings %}

Przebieg posiedzenia i ustalenia

{% for proc in meeting.proceedings or [] %} {% set agenda_item = meeting.agenda_items[proc.agenda_item] if meeting.agenda_items and proc.agenda_item < meeting.agenda_items|length else none %}

Ad. {{ proc.agenda_item + 1 }}. {{ proc.title or (agenda_item.title if agenda_item else 'Punkt programu') }}

{% set discussion_text = proc.discussion or proc.discussed %} {% if discussion_text %}

Omówiono:

{{ discussion_text|replace('\n\n', '

')|replace('\n', '
')|safe }}

{% endif %} {% if proc.decisions is iterable and proc.decisions is not string and proc.decisions|length > 0 %}

Ustalono / decyzje:

    {% for decision in proc.decisions %}
  • {{ decision }}
  • {% endfor %}
{% elif proc.decisions is string and proc.decisions %}

Ustalono / decyzje:

{{ proc.decisions }}

{% endif %} {% if proc.tasks is iterable and proc.tasks is not string and proc.tasks|length > 0 %}

Zadania:

    {% for task in proc.tasks %}
  • {{ task }}
  • {% endfor %}
{% endif %}
{% endfor %}
{% endif %}

Dokumenty

{% if documents %} {% for doc in documents %} {% endfor %}
Tytuł Typ Plik Rozmiar Dodano
{{ doc.title }} {% if doc.description %}
{{ doc.description }} {% endif %}
{{ doc.type_label }} {{ doc.original_filename }} {{ doc.size_display }} {{ doc.uploaded_at.strftime('%d.%m.%Y') if doc.uploaded_at else '—' }} {% if doc.uploader %}
{{ doc.uploader.name }}{% endif %}
Pobierz {% if can_manage %}
{% endif %}
{% else %}

Brak dokumentów przypisanych do tego posiedzenia.

{% endif %} {% if can_manage %}

Dodaj dokument

Dozwolone formaty: PDF, DOCX, DOC (max 50 MB)

{% endif %}
{% endblock %} {% block extra_js %} function printAgenda() { const meetingId = '{{ meeting.meeting_identifier }}'; const meetingDate = '{{ meeting.meeting_date.strftime("%d.%m.%Y") if meeting.meeting_date else "" }}'; const location = '{{ meeting.location or "Siedziba Izby" }}'; const chairperson = '{{ meeting.chairperson.name if meeting.chairperson else "—" }}'; // Collect agenda items const agendaItems = [ {% for item in meeting.agenda_items or [] %} { time: '{{ item.time_start }}{% if item.time_end %} - {{ item.time_end }}{% endif %}', title: '{{ item.title|e }}' }, {% endfor %} ]; // Create print window const printWindow = window.open('', '_blank'); printWindow.document.write(` Program Posiedzenia ${meetingId}

Program Posiedzenia Rady Izby Przedsiębiorców NORDA

Posiedzenie nr ${meetingId}

${meetingDate} | ${location}

Prowadzący: ${chairperson}
${agendaItems.map((item, i) => ``).join('')}
GodzinaPunkt programu
${item.time || '—'}${i+1}. ${item.title}
`); printWindow.document.close(); printWindow.onload = function() { printWindow.print(); }; } function printProtocol() { const meetingId = '{{ meeting.meeting_identifier }}'; const meetingDate = '{{ meeting.meeting_date.strftime("%d.%m.%Y") if meeting.meeting_date else "" }}'; const startTime = '{{ meeting.start_time.strftime("%H:%M") if meeting.start_time else "" }}'; const endTime = '{{ meeting.end_time.strftime("%H:%M") if meeting.end_time else "" }}'; const location = '{{ meeting.location or "Siedziba Izby" }}'; const chairperson = '{{ meeting.chairperson.name if meeting.chairperson else "—" }}'; const secretary = '{{ meeting.secretary.name if meeting.secretary else "—" }}'; const guests = '{{ meeting.guests or "brak" }}'; // Collect attendance const attendance = [ {% for member in board_members %} {% set att = meeting.attendance.get(member.id|string, {}) %} {% set status = att.get('status', 'unknown') %} { name: '{{ member.name or member.email.split("@")[0] }}', initials: '{{ att.get("initials", "") }}', status: '{{ "obecny" if status == "present" or att.get("present") else ("nieobecny" if status == "absent" else "—") }}' }, {% endfor %} ]; // Collect agenda items const agendaItems = [ {% for item in meeting.agenda_items or [] %} '{{ item.title|e }}', {% endfor %} ]; // Collect proceedings const proceedings = [ {% for proc in meeting.proceedings or [] %} { index: {{ proc.agenda_item }}, title: `{{ (proc.title or '')|e }}`, discussion: `{{ (proc.discussion or proc.discussed or '')|e|replace('\n', '\\n') }}`, decisions: [{% for d in proc.decisions or [] %}`{{ d|e }}`,{% endfor %}], tasks: [{% for t in proc.tasks or [] %}`{{ t|e }}`,{% endfor %}] }, {% endfor %} ]; // Create print window const printWindow = window.open('', '_blank'); printWindow.document.write(` Protokół Posiedzenia ${meetingId}

PROTOKÓŁ

z Posiedzenia Rady Izby Przedsiębiorców NORDA

Posiedzenie nr ${meetingId}

Data${meetingDate}
Godzina${startTime}${endTime ? ' - ' + endTime : ''}
Miejsce${location}
Prowadzący${chairperson}
Protokolant${secretary}
Goście${guests}

Lista obecności

${attendance.map((m, i) => ``).join('')}
Lp.Imię i nazwiskoInicjałyObecność
${i+1}${m.name}${m.initials}${m.status}

Kworum: ${attendance.filter(m => m.status === 'obecny').length} / ${attendance.length} obecnych

Przebieg posiedzenia

${proceedings.map(p => `

Ad. ${p.index + 1}. ${p.title || agendaItems[p.index] || 'Punkt programu'}

${p.discussion ? `

Omówiono:

${p.discussion.replace(/\\n/g, '
')}

` : ''} ${p.decisions.length > 0 ? `

Ustalono / decyzje:

` : ''} ${p.tasks.length > 0 ? `

Zadania:

` : ''}
`).join('')}
Prowadzący posiedzenie
${chairperson}
Protokolant
${secretary}
`); printWindow.document.close(); printWindow.onload = function() { printWindow.print(); }; } {% endblock %}