{% extends "base.html" %} {% block title %}{% if project %}Edit {{ project.name }}{% else %}Create Project{% endif %}{% endblock %} {% block extra_head %} {% include "components/rich_text_editor_assets.html" %} {% endblock %} {% block breadcrumb %} {% endblock %} {% block content %}

{% if project %}Edit Project{% else %}Create Project{% endif %}

{% if project %}
{% csrf_token %}
{% endif %}
{% csrf_token %}
{% include "components/rich_text_editor.html" with input_name="description" initial_value=project.description %}

Choose a color for the project card and badge

{% if not project %}
After creating the project, you can define custom ticket statuses in the project settings.
{% endif %}
{% if not project %} {% endif %} Cancel
{% if project %}
{% include "components/project_tabs.html" with active_tab_var="activeTab" %} {% if statuses %}

Ticket Statuses

{% csrf_token %}
selected
{% for s in statuses %} {% empty %} {% endfor %}
Status Name Color Order Completed Status Actions
{{ s.name }} {{ s.color }} {{ s.sort_order }} {% if s.is_completed %}Yes{% else %}No{% endif %}
{% csrf_token %}
No statuses found.

Members

{% if members_search %}Clear{% endif %}
{% csrf_token %}
selected
{% for pm in members %} {% empty %} {% endfor %}
Name Email Joined Actions
{{ pm.user.get_full_name|default:pm.user.username|first|upper }}

{{ pm.user.get_full_name|default:pm.user.username }}

@{{ pm.user.username }}

{{ pm.user.email|default:"-" }} {{ pm.created_at|date:"d/m/Y" }}
{% csrf_token %}
No members found.
{% if epics %}

Epics

{% if epics_search %}Clear{% endif %}
{% csrf_token %}
selected
{% for e in epics %} {% empty %} {% endfor %}
Name Sort Order Start Date End Date Tickets Actions
{{ e.name }} {{ e.sort_order }} {{ e.start_date|date:"d/m/Y"|default:"-" }} {{ e.end_date|date:"d/m/Y"|default:"-" }} {{ e.ticket_count }}
{% csrf_token %}
No epics found.
{% if epics_paginator.paginator.num_pages > 1 %}

Showing {{ epics.start_index }}–{{ epics.end_index }} of {{ epics.paginator.count }}

{% if epics_search %}{% endif %}
{% if epics.has_previous %} « ‹ {% endif %} Page {{ epics.number }}/{{ epics.paginator.num_pages }} {% if epics.has_next %} › » {% endif %}
{% endif %}
{% endif %} {% if full_tickets %}

Tickets

{% if tickets_search or tickets_status or tickets_priority %}Clear{% endif %}
{% for col in all_ticket_columns %} {% endfor %}
Import from Excel
{% csrf_token %}
selected
{% if "uuid" in tickets_columns %}{% endif %} {% if "name" in tickets_columns %}{% endif %} {% if "status" in tickets_columns %}{% endif %} {% if "priority" in tickets_columns %}{% endif %} {% if "assignees" in tickets_columns %}{% endif %} {% if "start_date" in tickets_columns %}{% endif %} {% if "due_date" in tickets_columns %}{% endif %} {% if "created_at" in tickets_columns %}{% endif %} {% for t in tickets %} {% if "uuid" in tickets_columns %}{% endif %} {% if "name" in tickets_columns %}{% endif %} {% if "status" in tickets_columns %}{% endif %} {% if "priority" in tickets_columns %}{% endif %} {% if "assignees" in tickets_columns %}{% endif %} {% if "start_date" in tickets_columns %}{% endif %} {% if "due_date" in tickets_columns %}{% endif %} {% if "created_at" in tickets_columns %}{% endif %} {% empty %} {% endfor %}
UUIDNameStatusPriorityAssigneesStart DateDue DateCreatedActions
{{ t.uuid }}{{ t.name }}{{ t.status.name }}{% if t.priority %}{{ t.priority.name }}{% else %}-{% endif %}{% if t.assignees.all %}
{% for a in t.assignees.all|slice:":3" %}
{{ a.get_full_name|default:a.username|first|upper }}
{% endfor %}{% if t.assignees.all|length > 3 %}
+{{ t.assignees.all|length|add:"-3" }}
{% endif %}
{% else %}-{% endif %}
{{ t.start_date|date:"d/m/Y"|default:"-" }}{{ t.due_date|date:"d/m/Y"|default:"-" }}{{ t.created_at|date:"d/m/Y" }}
{% csrf_token %}
No tickets found.
{% if tickets_paginator.paginator.num_pages > 1 %}

Showing {{ tickets.start_index }}–{{ tickets.end_index }} of {{ tickets.paginator.count }}

{% if tickets_search %}{% endif %} {% if tickets_status %}{% endif %} {% if tickets_priority %}{% endif %}
{% if tickets.has_previous %} « ‹ {% endif %} Page {{ tickets.number }}/{{ tickets.paginator.num_pages }} {% if tickets.has_next %} › » {% endif %}
{% endif %}
{% endif %}

Project Notes

{% if notes_search %}Clear{% endif %}
{% csrf_token %}
selected
{% for n in notes %} {% empty %} {% endfor %}
Title Date Content Created By Actions
{{ n.title }} {{ n.note_date|date:"d/m/Y" }} {{ n.content|striptags|truncatewords:20|default:"-" }} {{ n.created_by.get_full_name|default:n.created_by.username }}
{% csrf_token %}
No notes found.
{% if notes_paginator.paginator.num_pages > 1 %}

Showing {{ notes.start_index }}–{{ notes.end_index }} of {{ notes.paginator.count }}

{% if notes_search %}{% endif %}
{% if notes.has_previous %} « ‹ {% endif %} Page {{ notes.number }}/{{ notes.paginator.num_pages }} {% if notes.has_next %} › » {% endif %}
{% endif %}
{% endif %} {% if project %} {% include "external/modals/dashboard.html" with show_state="externalModalOpen" %} {% endif %} {% if project %}

Create Status

{% csrf_token %}

Attach User

{% csrf_token %}
  • No users found

Create

{% csrf_token %}

Edit Status

{% csrf_token %}

Create Note

{% csrf_token %}
{% include "components/rich_text_editor.html" with input_name="content" initial_value="" %}

Edit Note

{% csrf_token %}
{% include "components/rich_text_editor.html" with input_name="content" alpine_model="editNoteData.content" %}

Create Epic

{% csrf_token %}
Lower numbers appear first
{% include "components/rich_text_editor.html" with input_name="description" alpine_model="createEpicData.description" %}
{% include "epics/modals/edit.html" %} {% include "tickets/modals/create.html" %}

Edit Ticket

{% csrf_token %}
{% include "components/rich_text_editor.html" with input_name="description" alpine_model="editTicketData.description" %}
{% endif %} {% endif %} {% endblock %} {% block extra_scripts %} {% endblock %}