Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • konstantin/akplanning
  • matedealer/akplanning
  • kif/akplanning
  • mirco/akplanning
  • lordofthevoid/akplanning
  • voidptr/akplanning
  • xayomer/akplanning-fork
  • mollux/akplanning
  • neumantm/akplanning
  • mmarx/akplanning
  • nerf/akplanning
  • felix_bonn/akplanning
  • sebastian.uschmann/akplanning
13 results
Show changes
Showing
with 974 additions and 0 deletions
from django.apps import apps
from django.conf import settings
from django.core.mail import EmailMessage
from django.db.models.signals import post_save
from django.dispatch import receiver
from AKModel.models import AKOrgaMessage, AKSlot
@receiver(post_save, sender=AKOrgaMessage)
def orga_message_saved_handler(sender, instance: AKOrgaMessage, created, **kwargs): # pylint: disable=unused-argument
"""
React to newly created Orga message by sending an email
"""
if created and settings.SEND_MAILS:
host = 'https://' + settings.ALLOWED_HOSTS[0] if len(settings.ALLOWED_HOSTS) > 0 else 'http://127.0.0.1:8000'
url = f"{host}{instance.ak.detail_url}"
mail = EmailMessage(
f"[AKPlanning] New message for AK '{instance.ak}' ({instance.ak.event})",
f"{instance.text}\n\n{url}",
settings.DEFAULT_FROM_EMAIL,
[instance.ak.event.contact_email]
)
mail.send(fail_silently=True)
@receiver(post_save, sender=AKSlot)
def slot_created_handler(sender, instance: AKSlot, created, **kwargs): # pylint: disable=unused-argument
"""
React to slots that are created after the plan was already published by sending an email
"""
if created and settings.SEND_MAILS and apps.is_installed("AKPlan") \
and not instance.event.plan_hidden and instance.room is None and instance.start is None: # pylint: disable=too-many-boolean-expressions,line-too-long
host = 'https://' + settings.ALLOWED_HOSTS[0] if len(settings.ALLOWED_HOSTS) > 0 else 'http://127.0.0.1:8000'
url = f"{host}{instance.ak.detail_url}"
mail = EmailMessage(
f"[AKPlanning] New slot for AK '{instance.ak}' ({instance.ak.event}) added",
f"New slot requested.\n\nAK: {instance.ak}\nDuration: {instance.duration}\n\n{url}",
settings.DEFAULT_FROM_EMAIL,
[instance.ak.event.contact_email]
)
mail.send(fail_silently=True)
{% extends 'AKSubmission/submission_base.html' %}
{% load i18n %}
{% load fontawesome_6 %}
{% load tz %}
{% load tags_AKSubmission %}
{% load tags_AKModel %}
{% block title %}{{ ak.name }} ({{ ak.event.name }}) {% endblock %}
{% block meta %}
<meta name="twitter:card" content="summary" />
<meta name="twitter:title" content="{{ak.name}} ({{ak.event.name }})" />
<meta name="twitter:description" content="{{ ak.description }}" />
{% endblock %}
{% block breadcrumbs %}
{% include "AKSubmission/submission_breadcrumbs.html" %}
<li class="breadcrumb-item"><a
href="{% url 'submit:submission_overview' event_slug=ak.event.slug %}">{% trans "AK Submission" %}</a></li>
<li class="breadcrumb-item active">{{ ak.name }}</li>
{% endblock %}
{% if 'AKPlan'|check_app_installed %}
{% block imports %}
{% include "AKPlan/plan_akslot.html" %}
<script type="module">
const { createApp } = Vue
function getCurrentTimestamp() {
return Date.now() / 1000
}
createApp({
delimiters: ["[[", "]]"],
data() {
return {
featuredSlot: "{% if featured_slot %}true{% else %}false{% endif %}",
timer: null,
now: getCurrentTimestamp(),
akStart: "{{ featured_slot.start | date:'U' }}",
akEnd: "{{ featured_slot.end | date:'U' }}",
showBoxWithoutJS: false,
}
},
computed: {
showFeatured() {
return this.featuredSlot && this.now < this.akEnd
},
isBefore() {
return this.featuredSlot && this.now < this.akStart
},
isDuring() {
return this.featuredSlot && this.akStart < this.now && this.now < this.akEnd
},
timeUntilStart() {
return Math.ceil((this.akStart - this.now) / 60)
},
timeUntilEnd() {
return Math.floor((this.akEnd - this.now) / 60)
}
},
mounted: function () {
if(this.featuredSlot) {
this.timer = setInterval(() => {
this.now = getCurrentTimestamp()
}, 10000)
}
},
beforeUnmount() {
clearInterval(this.timer)
}
}).mount('#app')
</script>
<script>
document.addEventListener('DOMContentLoaded', function () {
// CSRF Protection/Authentication
function getCookie(name) {
let cookieValue = null;
if (document.cookie && document.cookie !== '') {
const cookies = document.cookie.split(';');
for (let i = 0; i < cookies.length; i++) {
const cookie = cookies[i].trim();
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) === (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
const csrftoken = getCookie('csrftoken');
function csrfSafeMethod(method) {
// these HTTP methods do not require CSRF protection
return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}
$.ajaxSetup({
beforeSend: function (xhr, settings) {
if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
}
});
function indicate_interest(ak_id, btn) {
$.ajax({
url: "{% url "model:AK-list" event_slug=event.slug %}" + ak_id + "/indicate-interest/",
type: 'POST',
data: {
},
success: function (response) {
btn.html('{% fa6_icon 'check' 'fas' %}');
btn.off('click');
$('#interest-counter').html(response.interest_counter);
},
error: function (response) {
if(response.status === 403)
alert("{% trans 'Interest indication currently not allowed. Sorry.' %}");
else
alert("{% trans 'Could not save your interest. Sorry.' %}");
}
});
}
// Update counter
$('#btn-indicate-interest').click(function () {
indicate_interest({{ ak.pk }}, $(this));
});
});
</script>
{% endblock %}
{% endif %}
{% block content %}
{% include "messages.html" %}
<div class="text-end">
{% if ak.interest_counter >= 0 %}
{% if ak.event.active and interest_indication_active %}
{% trans 'Interest' %}: <b class='mx-1 text-muted' id="interest-counter">{{ ak.interest_counter }}</b>
<a href="#" data-bs-toggle="tooltip"
title="{% trans 'Show Interest' %}"
class="btn btn-primary" id="btn-indicate-interest">{% fa6_icon 'thumbs-up' 'fas' %}</a>
{% endif %}
{% endif %}
{% if ak.link != "" %}
<a href="{{ ak.link }}" data-bs-toggle="tooltip"
title="{% trans 'Open external link' %}"
class="btn btn-info">{% fa6_icon 'external-link-alt' 'fas' %}</a>
{% endif %}
{% if ak.protocol_link != "" %}
<a href="{{ ak.protocol_link }}" data-bs-toggle="tooltip"
title="{% trans 'Open protocol link' %}"
class="btn btn-warning">{% fa6_icon 'file-alt' 'far' %}</a>
{% endif %}
<a href="{% url 'submit:ak_history' event_slug=ak.event.slug pk=ak.pk %}"
data-bs-toggle="tooltip"
title="{% trans 'History' %}" class="btn btn-light">{% fa6_icon 'clock' 'fas' %}</a>
{% if ak.event.active %}
<a href="{% url 'submit:akmessage_add' event_slug=ak.event.slug pk=ak.pk %}" data-bs-toggle="tooltip"
title="{% trans 'Add confidential message to organizers' %}"
class="btn btn-warning">{% fa6_icon 'envelope' 'fas' %}</a>
<a href="{{ ak.edit_url }}" data-bs-toggle="tooltip"
title="{% trans 'Edit' %}"
class="btn btn-success">{% fa6_icon 'pencil-alt' 'fas' %}</a>
{% endif %}
</div>
<h2>{% if ak.wish %}{% trans "AK Wish" %}: {% endif %}{{ ak.name }}</h2>
<div id="app">
{# Show current or upcoming slot featured in a box on top of the plage #}
{% if featured_slot_type != "NONE" %}
<div class="card border-success mt-3 mb-3" v-show="showFeatured">
<div class="card-body font-weight-bold">
<span v-show="isDuring" style="{% if not featured_slot_type == "CURRENT" %}display:none;{% endif %}">
{% blocktrans with room=featured_slot.room %}This AK currently takes place for another <span v-html="timeUntilEnd">{{ featured_slot_remaining }}</span> minute(s) in {{ room }}.&nbsp;{% endblocktrans %}
</span>
<span v-show="isBefore" style="{% if not featured_slot_type == "UPCOMING" %}display:none;{% endif %}">
{% blocktrans with room=featured_slot.room %}This AK starts in <span v-html="timeUntilStart">{{ featured_slot_remaining }}</span> minute(s) in {{ room }}.&nbsp;{% endblocktrans %}
</span>
{% if "AKOnline"|check_app_installed and featured_slot.room.virtual and featured_slot.room.virtual.url != '' %}
<a class="btn btn-success" target="_parent" href="{{ featured_slot.room.virtual.url }}">
{% fa6_icon 'external-link-alt' 'fas' %} {% trans "Go to virtual room" %}
</a>
{% endif %}
</div>
</div>
{% endif %}
</div>
<table class="table table-borderless">
<tr>
<td>{% trans "Who?" %}</td>
<td>
{% include "AKSubmission/owners_list.html" with owners=ak.owners %}
</td>
</tr>
<tr>
<td>{% trans 'Category' %}</td>
<td>
{% category_linked_badge ak.category ak.event.slug %}
</td>
</tr>
{% if ak.types.count > 0 %}
<tr>
<td>{% trans "Types" %}</td>
<td>
{% for type in ak.types.all %}
<span class="badge bg-info">{{ type }}</span>
{% endfor %}
</td>
</tr>
{% endif %}
{% if ak.track %}
<tr>
<td>{% trans 'Track' %}</td>
<td>{{ ak.track }}</td>
</tr>
{% endif %}
{% if not ak.wish %}
<tr>
<td>{% trans "Present this AK" %}</td>
<td>
{% if ak.present != None %}
{{ ak.present | bool_symbol }}
{% else %}
{{ ak.category.present_by_default | bool_symbol }} <span class="text-muted">{% trans "(Category Default)" %}</span>
{% endif %}
</td>
</tr>
{% endif %}
<tr>
<td>{% trans "Reso intention?" %}</td>
<td>
{{ ak.reso | bool_symbol }}
</td>
</tr>
{% if ak.requirements.count > 0 %}
<tr>
<td>{% trans "Requirements" %}</td>
<td>
{% for requirement in ak.requirements.all %}
{% if forloop.counter0 > 0 %}
,&nbsp;
{% endif %}
{{ requirement }}
{% endfor %}
</td>
</tr>
{% endif %}
{% if ak.conflicts.count > 0 %}
<tr>
<td>{% trans "Conflicting AKs" %}</td>
<td>
{% include "AKSubmission/ak_linked_list_inline.html" with aks=ak.conflicts slug=ak.event.slug %}
</td>
</tr>
{% endif %}
{% if ak.prerequisites.count > 0 %}
<tr>
<td>{% trans "Prerequisite AKs" %}</td>
<td>
{% include "AKSubmission/ak_linked_list_inline.html" with aks=ak.prerequisites slug=ak.event.slug %}
</td>
</tr>
{% endif %}
{% if ak.notes %}
<tr>
<td>{% trans "Notes" %}</td>
<td>{{ ak.notes }}</td>
</tr>
{% endif %}
</table>
<p style="margin-top: 30px;margin-bottom: 30px;">{{ ak.description|linebreaks }}</p>
{% if not ak.wish %}
<table class="table">
<thead>
<tr>
{% if not ak.event.plan_hidden or user.is_staff %}
<th>{% trans "When?" %}</th>
{% endif %}
<th>{% trans "Duration" %}</th>
{% if not ak.event.plan_hidden or user.is_staff %}
<th>{% trans "Room" %}</th>
{% endif %}
<th></th>
</tr>
</thead>
<tbody>
{% for slot in ak.akslot_set.all %}
<tr>
{% if not ak.event.plan_hidden or user.is_staff %}
<td>{{ slot.time_simplified }}</td>
{% endif %}
<td>{{ slot.duration_simplified }}</td>
{% if not ak.event.plan_hidden or user.is_staff %}
<td>
{% if slot.room %}
{% if "AKPlan"|check_app_installed %}
<a href="{% url 'plan:plan_room' event_slug=ak.event.slug pk=slot.room.pk %}">{{ slot.room }}</a>
{% else %}
{{ slot.room }}
{% endif %}
{% else %}
-
{% endif %}
</td>
{% endif %}
<td>
{% if not slot.start %}
<a href="{% url 'submit:akslot_edit' event_slug=ak.event.slug pk=slot.pk %}"
data-bs-toggle="tooltip" title="{% trans 'Edit' %}"
class="btn btn-success">{% fa6_icon 'pencil-alt' 'fas' %}</a>
<a href="{% url 'submit:akslot_delete' event_slug=ak.event.slug pk=slot.pk %}"
data-bs-toggle="tooltip" title="{% trans 'Delete' %}"
class="btn btn-danger">{% fa6_icon 'times' 'fas' %}</a>
{% else %}
{% if "AKOnline"|check_app_installed and slot.room and slot.room.virtual and slot.room.virtual.url != '' %}
<a class="btn btn-success" target="_parent" href="{{ slot.room.virtual.url }}">
{% fa6_icon 'external-link-alt' 'fas' %} {% trans "Go to virtual room" %}
</a>
{% endif %}
{% endif %}
{% if user.is_staff %}
<a href="{% url 'admin:AKModel_akslot_change' slot.pk %}"
data-bs-toggle="tooltip" title="{% trans 'Schedule' %}"
class="btn btn-outline-success">{% fa6_icon 'stream' 'fas' %}</a>
{% endif %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% if ak.event.active %}
<div class="">
<a href="{% url 'submit:akslot_add' event_slug=ak.event.slug pk=ak.pk %}"
class="btn btn-success">{% fa6_icon 'plus' 'fas' %} {% trans "Add another slot" %}</a>
</div>
{% endif %}
{% if 'AKPlan'|check_app_installed %}
<div id='akSlotCalendar' style="margin-top: 50px;margin-bottom: 50px;"></div>
{% endif %}
<h4 style="margin-top: 30px;">{% trans "Possible Times" %}</h4>
<table class="table">
<thead>
<tr>
<th>{% trans "Start" %}</th>
<th>{% trans "End" %}</th>
</tr>
</thead>
<tbody>
{% for a in availabilities %}
<tr>
<td>{{ a.start | timezone:event.timezone | date:"l H:i" }}</td>
<td>{{ a.end | timezone:event.timezone | date:"l H:i" }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
{% endblock %}
{% extends 'AKSubmission/submit_new.html' %}
{% load i18n %}
{% load django_bootstrap5 %}
{% load fontawesome_6 %}
{% load static %}
{% block title %}{% trans "AKs" %}: {{ event.name }} - {% trans "Edit AK" %}: {{ ak.name }}{% endblock %}
{% block breadcrumbs %}
{% include "AKSubmission/submission_breadcrumbs.html" %}
<li class="breadcrumb-item"><a
href="{% url 'submit:submission_overview' event_slug=event.slug %}">{% trans "AK Submission" %}</a></li>
<li class="breadcrumb-item"><a
href="{{ ak.detail_url }}">{{ ak.short_name }}</a></li>
<li class="breadcrumb-item active">{% trans "Edit" %}</li>
{% endblock %}
{% block form_contents %}
{% bootstrap_field form.name %}
<div class="form-group">
{% bootstrap_field form.owners form_group_class="" %}
<a href="{% url 'submit:akowner_create' event_slug=event.slug %}?add_to_existing_ak={{ ak.pk }}">
{% fa6_icon "plus" "fas" %} {% trans "Add person not in the list yet. Unsaved changes in this form will be lost." %}
</a>
</div>
{% bootstrap_form form exclude='name,owners' %}
{% endblock %}
{% block headline %}
<h2>{% trans 'Edit AK' %}</h2>
{% endblock %}
{% extends 'AKSubmission/submission_base.html' %}
{% load tz %}
{% load i18n %}
{% load fontawesome_6 %}
{% load tags_AKSubmission %}
{% load tags_AKModel %}
{% block title %}{% trans "AKs" %}: {{ ak.event.name }} - {% trans "AK" %}: {{ ak.name }}{% endblock %}
{% block breadcrumbs %}
{% include "AKSubmission/submission_breadcrumbs.html" %}
<li class="breadcrumb-item"><a
href="{% url 'submit:submission_overview' event_slug=ak.event.slug %}">{% trans "AK Submission" %}</a></li>
<li class="breadcrumb-item"><a
href='{{ ak.detail_url }}'>{{ ak.short_name }}</a></li>
<li class="breadcrumb-item active">{% trans 'History' %}</li>
{% endblock %}
{% block content %}
{% include "messages.html" %}
<div class="float-end">
<a href='{{ ak.detail_url }}' data-bs-toggle="tooltip"
title="{% trans 'Back' %}"
class="btn btn-info">{% fa6_icon 'arrow-circle-left' 'fas' %}</a>
</div>
<h2>{% if ak.wish %}{% trans "AK Wish" %}: {% endif %}{{ ak.name }} ({% trans 'History' %})</h2>
<table id="akTable" class="table table-striped">
<thead>
<tr>
<th>{% trans "Name" %}</th>
<th>{% trans 'Category' %}</th>
<th>{% trans 'Track' %}</th>
<th>{% trans 'Time' %}</th>
</tr>
</thead>
<tbody>
{% for h in ak.history.all %}
<tr>
<td>
<b>{{ h.name }}</b>
{% if h.present %}
<span class="badge bg-dark rounded-pill"
title="{% trans 'Present results of this AK' %}">{% fa6_icon "bullhorn" 'fas' %}</span>
{% endif %}
{% if h.reso %}
<span class="badge bg-dark rounded-pill"
title="{% trans 'Intends to submit a resolution' %}">{% fa6_icon "scroll" 'fas' %}</span>
{% endif %}
</td>
<td>{% category_linked_badge h.category event.slug %}</td>
<td><span class="badge bg-success rounded-pill">{{ h.track }}</span></td>
<td>{{ h.history_date | timezone:ak.event.timezone | date:"Y-m-d H:i:s" }}</td>
</tr>
<tr>
<td colspan="4" class="small">{{ h.description }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endblock %}
{% load i18n %}
{% load fontawesome_6 %}
<script>
document.addEventListener('DOMContentLoaded', function () {
// CSRF Protection/Authentication
function getCookie(name) {
let cookieValue = null;
if (document.cookie && document.cookie !== '') {
const cookies = document.cookie.split(';');
for (let i = 0; i < cookies.length; i++) {
const cookie = cookies[i].trim();
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) === (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
const csrftoken = getCookie('csrftoken');
function csrfSafeMethod(method) {
// these HTTP methods do not require CSRF protection
return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}
$.ajaxSetup({
beforeSend: function (xhr, settings) {
if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
}
});
function indicate_interest(ak_id, btn) {
$.ajax({
url: "{% url "model:AK-list" event_slug=event.slug %}" + ak_id + "/indicate-interest/",
type: 'POST',
data: {
},
success: function (response) {
btn.html('{% fa6_icon 'check' 'fas' %}');
btn.off('click');
},
error: function (response) {
if(response.status === 403)
alert("{% trans 'Interest indication currently not allowed. Sorry.' %}");
else
alert("{% trans 'Could not save your interest. Sorry.' %}");
}
});
}
// Update counter
$('.btn-interest').click(function () {
indicate_interest($(this).data('ak_id'), $(this));
});
});
</script>
{% for ak in aks.all %}
{% if forloop.counter0 > 0 %}
,&nbsp;
{% endif %}
<a href="{{ ak.detail_url }}">{{ ak }}</a>
{% empty %}
-
{% endfor %}
{% load i18n %}
<div class="float-end">
<ul class="nav nav-pills">
<li class="nav-item">
<a class="nav-link" href="{% url 'submit:ak_list' event_slug=event.slug %}">{% trans "All AKs" %}</a>
</li>
{% if event.aktrack_set.count > 0 %}
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#" role="button" aria-haspopup="true"
aria-expanded="false">{% trans "Tracks" %}</a>
<div class="dropdown-menu" style="">
{% for track in event.aktrack_set.all %}
<a class="dropdown-item"
href="{% url 'submit:ak_list_by_track' event_slug=event.slug track_pk=track.pk %}">
{{ track }}</a>
{% endfor %}
</div>
</li>
{% endif %}
</ul>
</div>
<h2>{{ table_title }}</h2>
<noscript>
{% include "AKSubmission/ak_table.html" %}
</noscript>
<ul class="nav nav-tabs" style="margin-bottom:15px">
{% for category, _ in categories_with_aks %}
<li class="nav-item">
<a class="nav-link {% if category.name == active_category %}active{% endif %}" data-bs-toggle="tab"
href="#category_{{ category.pk }}">{{ category.name }}</a>
</li>
{% endfor %}
</ul>
<div id="akListTabbed" class="tab-content">
{% for category, AKs in categories_with_aks %}
<div class="tab-pane fade {% if category.name == active_category %}show active{% endif %}" id="category_{{ category.pk }}">
<p><b>{{ category.name }}:</b> {{ category.description }}</p>
{% include "AKSubmission/ak_table.html" %}
</div>
{% endfor %}
</div>
{% extends 'AKSubmission/submission_base.html' %}
{% load i18n %}
{% load fontawesome_6 %}
{% load tags_AKSubmission %}
{% block title %}{% trans "AKs" %}: {{ event.name }} - {% trans "AKs" %}{% endblock %}
{% block meta %}
<meta name="twitter:card" content="summary" />
<meta name="twitter:title" content="{{ event.name }} - {% trans "AKs" %}" />
{% endblock %}
{% block imports %}
{% include "AKSubmission/ak_interest_script.html" %}
{% endblock %}
{% block breadcrumbs %}
{% include "AKSubmission/submission_breadcrumbs.html" %}
<li class="breadcrumb-item"><a
href="{% url 'submit:submission_overview' event_slug=event.slug %}">{% trans "AK Submission" %}</a></li>
<li class="breadcrumb-item active">{% trans "AK List" %}</li>
{% endblock %}
{% block content %}
{% if event.active %}
<a class="btn btn-success float-end" href="{% url 'submit:submission_overview' event_slug=event.slug %}">
{% fa6_icon 'plus' 'fas' %} {% trans "Add AK" %}
</a>
{% endif %}
<h1>{% trans "AKs" %}: {{ event.name }}</h1>
{% include "AKSubmission/ak_list.html" %}
{% endblock %}
{% load i18n %}
{% load fontawesome_6 %}
{% load tags_AKSubmission %}
<table id="akTable" class="table table-striped">
<thead>
<tr>
<th>{% trans "Name" %}</th>
<th>{% trans "Who?" %}</th>
<th>{% trans 'Category' %}</th>
{% if show_types %}
<th>{% trans 'Types' %}</th>
{% endif %}
<th></th>
</tr>
</thead>
<tbody>
{% for ak in AKs %}
<tr>
<td>
<a href="{{ ak.detail_url }}"
class="text-dark text-decoration-none font-weight-bold">
{{ ak.name }}
</a>
{% if ak.present %}
<span class="badge bg-dark rounded-pill"
title="{% trans 'Present results of this AK' %}">{% fa6_icon "bullhorn" 'fas' %}</span>
{% endif %}
{% if ak.reso %}
<span class="badge bg-dark rounded-pill"
title="{% trans 'Intends to submit a resolution' %}">{% fa6_icon "scroll" 'fas' %}</span>
{% endif %}
</td>
<td>
{% if ak.wish %}
<span class="badge bg-dark rounded-pill">{% trans "AK Wish" %}</span>
{% else %}
{% include "AKSubmission/owners_list.html" with owners=ak.owners %}
{% endif %}
</td>
<td>{% category_linked_badge ak.category event.slug %}</td>
{% if show_types %}
<td>
{% for aktype in ak.types.all %}
<span class="badge bg-info">{{ aktype }}</span>
{% endfor %}
</td>
{% endif %}
<td class="text-end" style="white-space: nowrap;">
<a href="{{ ak.detail_url }}" data-bs-toggle="tooltip"
title="{% trans 'Details' %}"
class="btn btn-primary">{% fa6_icon 'info' 'fas' %}</a>
{% if ak.link %}
<a href="{{ ak.link }}" data-bs-toggle="tooltip"
title="{% trans 'Open external link' %}"
class="btn btn-info">{% fa6_icon 'external-link-alt' 'fas' %}</a>
{% endif %}
{% if event.active %}
<a href="{{ ak.edit_url }}" data-bs-toggle="tooltip"
title="{% trans 'Edit' %}"
class="btn btn-success">{% fa6_icon 'pencil-alt' 'fas' %}</a>
{% if interest_indication_active %}
<span data-ak_id="{{ ak.pk }}" data-bs-toggle="tooltip"
title="{% trans 'Show Interest' %}"
class="btn btn-primary btn-interest" style="cursor: pointer">{% fa6_icon 'thumbs-up' 'fas' %}</span>
{% endif %}
{% endif %}
</td>
</tr>
<tr>
<td colspan="5" class="small">{{ ak.description|linebreaks }}</td>
</tr>
{% empty %}
<tr>
<td colspan="5" class="small">{% trans "There are no AKs in this category yet" %}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% extends 'AKSubmission/submission_base.html' %}
{% load i18n %}
{% load django_bootstrap5 %}
{% load fontawesome_6 %}
{% block title %}{% trans "AKs" %}: {{ event.name }} -
{% trans "Add confidential message to organizers" %}{% endblock %}
{% block breadcrumbs %}
{% include "AKSubmission/submission_breadcrumbs.html" %}
<li class="breadcrumb-item"><a
href="{% url 'submit:submission_overview' event_slug=event.slug %}">{% trans "AK Submission" %}</a></li>
<li class="breadcrumb-item"><a
href="{{ ak.detail_url }}">{{ ak.short_name }}</a></li>
<li class="breadcrumb-item active">{% trans "Add confidential message to organizers" %}</li>
{% endblock %}
{% block content %}
{% block headline %}
<h2>{{ ak.name }}</h2>
<h4 class="mt-3">{% trans 'Add confidential message to organizers' %}</h4>
{% endblock %}
<form method="POST" class="post-form">{% csrf_token %}
{% bootstrap_form form %}
<button type="submit" class="save btn btn-primary float-end">
{% fa6_icon "check" 'fas' %} {% trans "Send" %}
</button>
<button type="reset" class="btn btn-danger">
{% fa6_icon "undo-alt" 'fas' %} {% trans "Reset Form" %}
</button>
<a href="{{ ak.detail_url }}" class="btn btn-secondary">
{% fa6_icon "times" 'fas' %} {% trans "Cancel" %}
</a>
</form>
{% endblock %}
{% extends 'AKSubmission/submission_base.html' %}
{% load i18n %}
{% load django_bootstrap5 %}
{% load fontawesome_6 %}
{% block title %}{% trans "AKs" %}: {{ event.name }} - {% trans "AK Owner" %}{% endblock %}
{% block breadcrumbs %}
{% include "AKSubmission/submission_breadcrumbs.html" %}
<li class="breadcrumb-item"><a
href="{% url 'submit:submission_overview' event_slug=event.slug %}">{% trans "AK Submission" %}</a></li>
<li class="breadcrumb-item active">{% trans "AK Owner" %}</li>
{% endblock %}
{% block content %}
{% block headline %}
<h2>{% trans 'AK Owner' %}</h2>
{% endblock %}
<form method="POST" class="post-form">{% csrf_token %}
{% bootstrap_form form %}
<button type="submit" class="save btn btn-primary float-end">
{% fa6_icon "check" 'fas' %} {% trans "Continue" %}
</button>
<button type="reset" class="btn btn-danger">
{% fa6_icon "undo-alt" 'fas' %} {% trans "Reset Form" %}
</button>
<a href="{% url 'submit:submission_overview' event_slug=event.slug %}" class="btn btn-secondary">
{% fa6_icon "times" 'fas' %} {% trans "Cancel" %}
</a>
</form>
{% endblock %}
\ No newline at end of file
{% extends 'AKSubmission/submission_base.html' %}
{% load i18n %}
{% load django_bootstrap5 %}
{% load fontawesome_6 %}
{% block title %}{% trans "AKs" %}: {{ event.name }} - {% trans "AK Duration(s)" %}{% endblock %}
{% block breadcrumbs %}
{% include "AKSubmission/submission_breadcrumbs.html" %}
<li class="breadcrumb-item"><a
href="{% url 'submit:submission_overview' event_slug=event.slug %}">{% trans "AK Submission" %}</a></li>
<li class="breadcrumb-item"><a
href="{{ ak.detail_url }}">{{ ak.short_name }}</a></li>
<li class="breadcrumb-item active">{% trans "AK Duration(s)" %}</li>
{% endblock %}
{% block content %}
{% block headline %}
<h2>{% trans 'AK Duration(s)' %}</h2>
{% endblock %}
<form method="POST" class="post-form">{% csrf_token %}
{% bootstrap_form form %}
<button type="submit" class="save btn btn-primary float-end">
{% fa6_icon "check" 'fas' %} {% trans "Continue" %}
</button>
<button type="reset" class="btn btn-danger">
{% fa6_icon "undo-alt" 'fas' %} {% trans "Reset Form" %}
</button>
<a href="{{ ak.detail_url }}" class="btn btn-secondary">
{% fa6_icon "times" 'fas' %} {% trans "Cancel" %}
</a>
</form>
{% endblock %}
{% extends 'AKSubmission/submission_base.html' %}
{% load i18n %}
{% load django_bootstrap5 %}
{% load fontawesome_6 %}
{% block title %}{% trans "AKs" %}: {{ event.name }} - {% trans "AK Duration(s)" %}{% endblock %}
{% block breadcrumbs %}
{% include "AKSubmission/submission_breadcrumbs.html" %}
<li class="breadcrumb-item"><a
href="{% url 'submit:submission_overview' event_slug=event.slug %}">{% trans "AK Submission" %}</a></li>
<li class="breadcrumb-item"><a
href="{{ ak.detail_url }}">{{ ak.short_name }}</a></li>
<li class="breadcrumb-item active">{% trans "AK Duration(s)" %}</li>
{% endblock %}
{% block content %}
{% block headline %}
<h2>{% trans 'AK Duration(s)' %}</h2>
{% endblock %}
<form method="POST" class="post-form">{% csrf_token %}
<div class="alert alert-danger" style="margin-top:20px;margin-bottom: 20px;">
<h4>{% trans "Do you really want to delete this AK Slot?" %}</h4>
</div>
<table class="table">
<tbody>
<tr>
<td>{% trans "AK" %}</td>
<td>{{ akslot.ak }}</td>
</tr>
<tr>
<td>{% trans "Duration" %}</td>
<td>{{ akslot.duration }}</td>
</tr>
</tbody>
</table>
<button type="submit" class="save btn btn-danger float-end" value="Confirm">
{% fa6_icon "check" 'fas' %} {% trans "Confirm" %}
</button>
<a href="{{ ak.detail_url }}" class="btn btn-secondary">
{% fa6_icon "times" 'fas' %} {% trans "Cancel" %}
</a>
</form>
{% endblock %}
<a href="{% url 'submit:ak_list_by_category' event_slug=event_slug category_pk=category.pk %}">
<span class="badge bg-primary">{{ category }}</span>
</a>
{% load tags_AKSubmission %}
{% for category in categories %}
{% category_linked_badge category event_slug %}
{% endfor %}
{% for owner in owners.all %}{% if not forloop.first %}, {% endif %}{% if owner.link %}<a href="{{ owner.link }}">{{ owner }}</a>{% else %}{{ owner }}{% endif %}{% endfor %}
{% extends "base.html" %}
{% load fontawesome_6 %}
{% load i18n %}
{% block breadcrumbs %}
{% include "AKSubmission/submission_breadcrumbs.html" %}
{% endblock %}
{% block footer_custom %}
{% if event.contact_email %}
<h4>
<a href="mailto:{{ event.contact_email }}">{% fa6_icon "envelope" 'fas' %} {% trans "Write to organizers of this event for questions and comments" %}</a>
</h4>
{% endif %}
{% endblock %}
{% load tags_AKModel %}
<li class="breadcrumb-item">
{% if 'AKDashboard'|check_app_installed %}
<a href="{% url 'dashboard:dashboard' %}">AKPlanning</a>
{% else %}
AKPlanning
{% endif %}
</li>
<li class="breadcrumb-item">
{% if 'AKDashboard'|check_app_installed %}
<a href="{% url 'dashboard:dashboard_event' slug=event.slug %}">{{ event }}</a>
{% else %}
{{ event }}
{% endif %}
</li>
{% extends 'AKSubmission/submission_base.html' %}
{% load i18n %}
{% load fontawesome_6 %}
{% load static %}
{% block title %}{% trans "AKs" %}: {{ event.name }} - {% trans "AK Submission" %}{% endblock %}
{% block breadcrumbs %}
{% include "AKSubmission/submission_breadcrumbs.html" %}
<li class="breadcrumb-item active">{% trans "AK Submission" %}</li>
{% endblock %}
{% block content %}
<h1>{{ event.name }}</h1>
{% include "messages.html" %}
<div class="alert alert-warning" style="margin-top:20px;margin-bottom: 20px;">
{% trans "System is not yet configured for AK submission and listing. Please try again later." %}
</div>
{% endblock %}