mirror of
https://gitlab.crans.org/bde/nk20
synced 2024-11-26 18:37:12 +00:00
Cards for activity templates
This commit is contained in:
parent
1712d1725a
commit
22a0af640e
@ -1,22 +1,23 @@
|
|||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
{% load static %}
|
{% comment %}
|
||||||
{% load i18n %}
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
{% endcomment %}
|
||||||
|
{% load i18n perms %}
|
||||||
{% load render_table from django_tables2 %}
|
{% load render_table from django_tables2 %}
|
||||||
{% load pretty_money %}
|
|
||||||
{% load perms %}
|
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
{% include "activity/includes/activity_info.html" %}
|
||||||
|
|
||||||
{% include "activity/activity_info.html" %}
|
{% if guests.data %}
|
||||||
|
<div class="card bg-white mb-3">
|
||||||
{% if guests.data %}
|
<h3 class="card-header text-center">
|
||||||
<hr>
|
{% trans "Guests list" %}
|
||||||
<h2>{% trans "Guests list" %}</h2>
|
</h3>
|
||||||
<div id="guests_table">
|
<div id="guests_table">
|
||||||
{% render_table guests %}
|
{% render_table guests %}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
</div>
|
||||||
|
{% endif %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block extrajavascript %}
|
{% block extrajavascript %}
|
||||||
|
@ -1,152 +1,168 @@
|
|||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
{% load static %}
|
{% comment %}
|
||||||
{% load i18n %}
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
{% endcomment %}
|
||||||
|
{% load static i18n pretty_money perms %}
|
||||||
{% load render_table from django_tables2 %}
|
{% load render_table from django_tables2 %}
|
||||||
{% load pretty_money %}
|
|
||||||
{% load perms %}
|
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xl-12">
|
<div class="col-xl-12">
|
||||||
<div class="btn-group btn-group-toggle" style="width: 100%; padding: 0 0 2em 0" data-toggle="buttons">
|
<div class="btn-group btn-group-toggle" style="width: 100%; padding: 0 0 2em 0" data-toggle="buttons">
|
||||||
<a href="{% url "note:transfer" %}#transfer" class="btn btn-sm btn-outline-primary">
|
<a href="{% url "note:transfer" %}#transfer" class="btn btn-sm btn-outline-primary">
|
||||||
{% trans "Transfer" %}
|
{% trans "Transfer" %}
|
||||||
</a>
|
</a>
|
||||||
{% if "note.notespecial"|not_empty_model_list %}
|
{% if "note.notespecial"|not_empty_model_list %}
|
||||||
<a href="{% url "note:transfer" %}#credit" class="btn btn-sm btn-outline-primary">
|
<a href="{% url "note:transfer" %}#credit" class="btn btn-sm btn-outline-primary">
|
||||||
{% trans "Credit" %}
|
{% trans "Credit" %}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% for a in activities_open %}
|
{% for a in activities_open %}
|
||||||
<a href="{% url "activity:activity_entry" pk=a.pk %}" class="btn btn-sm btn-outline-primary{% if a.pk == activity.pk %} active{% endif %}">
|
<a href="{% url "activity:activity_entry" pk=a.pk %}"
|
||||||
{% trans "Entries" %} {{ a.name }}
|
class="btn btn-sm btn-outline-primary{% if a.pk == activity.pk %} active{% endif %}">
|
||||||
</a>
|
{% trans "Entries" %} {{ a.name }}
|
||||||
{% endfor %}
|
</a>
|
||||||
</div>
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<a href="{% url "activity:activity_detail" pk=activity.pk %}">
|
<a href="{% url "activity:activity_detail" pk=activity.pk %}">
|
||||||
<button class="btn btn-light">{% trans "Return to activity page" %}</button>
|
<button class="btn btn-light">{% trans "Return to activity page" %}</button>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
<input id="alias" type="text" class="form-control" placeholder="Nom/note ...">
|
<input id="alias" type="text" class="form-control" placeholder="Nom/note ...">
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<div id="entry_table">
|
<div id="entry_table">
|
||||||
<h2 class="text-center">{{ entries.count }} {% if entries.count >= 2 %}{% trans "entries" %}{% else %}{% trans "entry" %}{% endif %}</h2>
|
<h2 class="text-center">{{ entries.count }}
|
||||||
{% render_table table %}
|
{% if entries.count >= 2 %}{% trans "entries" %}{% else %}{% trans "entry" %}{% endif %}</h2>
|
||||||
</div>
|
{% render_table table %}
|
||||||
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block extrajavascript %}
|
{% block extrajavascript %}
|
||||||
<script>
|
<script>
|
||||||
old_pattern = null;
|
old_pattern = null;
|
||||||
alias_obj = $("#alias");
|
alias_obj = $("#alias");
|
||||||
|
|
||||||
function reloadTable(force=false) {
|
function reloadTable(force = false) {
|
||||||
let pattern = alias_obj.val();
|
let pattern = alias_obj.val();
|
||||||
|
|
||||||
if ((pattern === old_pattern || pattern === "") && !force)
|
if ((pattern === old_pattern || pattern === "") && !force)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
$("#entry_table").load(location.pathname + "?search=" + pattern.replace(" ", "%20") + " #entry_table", init);
|
$("#entry_table").load(location.pathname + "?search=" + pattern.replace(" ", "%20") + " #entry_table", init);
|
||||||
refreshBalance();
|
refreshBalance();
|
||||||
}
|
}
|
||||||
|
|
||||||
alias_obj.keyup(reloadTable);
|
alias_obj.keyup(reloadTable);
|
||||||
|
|
||||||
$(document).ready(init);
|
$(document).ready(init);
|
||||||
|
|
||||||
function init() {
|
function init() {
|
||||||
$(".table-row").click(function(e) {
|
$(".table-row").click(function (e) {
|
||||||
let target = e.target.parentElement;
|
let target = e.target.parentElement;
|
||||||
target = $("#" + target.id);
|
target = $("#" + target.id);
|
||||||
|
|
||||||
let type = target.attr("data-type");
|
let type = target.attr("data-type");
|
||||||
let id = target.attr("data-id");
|
let id = target.attr("data-id");
|
||||||
let last_name = target.attr("data-last-name");
|
let last_name = target.attr("data-last-name");
|
||||||
let first_name = target.attr("data-first-name");
|
let first_name = target.attr("data-first-name");
|
||||||
|
|
||||||
if (type === "membership") {
|
if (type === "membership") {
|
||||||
|
$.post("/api/activity/entry/?format=json", {
|
||||||
|
csrfmiddlewaretoken: CSRF_TOKEN,
|
||||||
|
activity: {{ activity.id }},
|
||||||
|
note: id,
|
||||||
|
guest: null
|
||||||
|
}).done(function () {
|
||||||
|
if (target.hasClass("table-info"))
|
||||||
|
addMsg(
|
||||||
|
"Entrée effectuée, mais attention : la personne n'est plus adhérente Kfet.",
|
||||||
|
"warning", 10000);
|
||||||
|
else
|
||||||
|
addMsg("Entrée effectuée !", "success", 4000);
|
||||||
|
reloadTable(true);
|
||||||
|
}).fail(function (xhr) {
|
||||||
|
errMsg(xhr.responseJSON, 4000);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
let line_obj = $("#buttons_guest_" + id);
|
||||||
|
if (line_obj.length || target.attr('class').includes("table-success")) {
|
||||||
|
line_obj.remove();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
let tr = "<tr class='text-center'>" +
|
||||||
|
"<td id='buttons_guest_" + id + "' style='table-danger center' colspan='5'>" +
|
||||||
|
"<button id='transaction_guest_" + id +
|
||||||
|
"' class='btn btn-secondary'>Payer avec la note de l'hôte</button> " +
|
||||||
|
"<button id='transaction_guest_" + id +
|
||||||
|
"_especes' class='btn btn-secondary'>Payer en espèces</button> " +
|
||||||
|
"<button id='transaction_guest_" + id +
|
||||||
|
"_cb' class='btn btn-secondary'>Payer en CB</button></td>" +
|
||||||
|
"<tr>";
|
||||||
|
$(tr).insertAfter(target);
|
||||||
|
|
||||||
|
let makeTransaction = function () {
|
||||||
$.post("/api/activity/entry/?format=json", {
|
$.post("/api/activity/entry/?format=json", {
|
||||||
csrfmiddlewaretoken: CSRF_TOKEN,
|
csrfmiddlewaretoken: CSRF_TOKEN,
|
||||||
activity: {{ activity.id }},
|
activity: {{ activity.id }},
|
||||||
note: id,
|
note: target.attr("data-inviter"),
|
||||||
guest: null
|
guest: id
|
||||||
}).done(function () {
|
}).done(function () {
|
||||||
if (target.hasClass("table-info"))
|
if (target.hasClass("table-info"))
|
||||||
addMsg("Entrée effectuée, mais attention : la personne n'est plus adhérente Kfet.", "warning", 10000);
|
addMsg(
|
||||||
|
"Entrée effectuée, mais attention : la personne n'est plus adhérente Kfet.",
|
||||||
|
"warning", 10000);
|
||||||
else
|
else
|
||||||
addMsg("Entrée effectuée !", "success", 4000);
|
addMsg("Entrée effectuée !", "success", 4000);
|
||||||
reloadTable(true);
|
reloadTable(true);
|
||||||
}).fail(function(xhr) {
|
}).fail(function (xhr) {
|
||||||
errMsg(xhr.responseJSON, 4000);
|
errMsg(xhr.responseJSON, 4000);
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
else {
|
|
||||||
let line_obj = $("#buttons_guest_" + id);
|
|
||||||
if (line_obj.length || target.attr('class').includes("table-success")) {
|
|
||||||
line_obj.remove();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let tr = "<tr class='text-center'>" +
|
let credit = function (credit_id, credit_name) {
|
||||||
"<td id='buttons_guest_" + id + "' style='table-danger center' colspan='5'>" +
|
return function () {
|
||||||
"<button id='transaction_guest_" + id + "' class='btn btn-secondary'>Payer avec la note de l'hôte</button> " +
|
$.post("/api/note/transaction/transaction/", {
|
||||||
"<button id='transaction_guest_" + id + "_especes' class='btn btn-secondary'>Payer en espèces</button> " +
|
"csrfmiddlewaretoken": CSRF_TOKEN,
|
||||||
"<button id='transaction_guest_" + id + "_cb' class='btn btn-secondary'>Payer en CB</button></td>" +
|
"quantity": 1,
|
||||||
"<tr>";
|
"amount": {
|
||||||
$(tr).insertAfter(target);
|
{
|
||||||
|
activity.activity_type.guest_entry_fee
|
||||||
let makeTransaction = function() {
|
}
|
||||||
$.post("/api/activity/entry/?format=json", {
|
},
|
||||||
csrfmiddlewaretoken: CSRF_TOKEN,
|
"reason": "Crédit " + credit_name +
|
||||||
activity: {{ activity.id }},
|
" (invitation {{ activity.name }})",
|
||||||
note: target.attr("data-inviter"),
|
"valid": true,
|
||||||
guest: id
|
"polymorphic_ctype": {
|
||||||
|
{
|
||||||
|
notespecial_ctype
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"resourcetype": "SpecialTransaction",
|
||||||
|
"source": credit_id,
|
||||||
|
"destination": target.attr('data-inviter'),
|
||||||
|
"last_name": last_name,
|
||||||
|
"first_name": first_name,
|
||||||
|
"bank": ""
|
||||||
}).done(function () {
|
}).done(function () {
|
||||||
if (target.hasClass("table-info"))
|
makeTransaction();
|
||||||
addMsg("Entrée effectuée, mais attention : la personne n'est plus adhérente Kfet.", "warning", 10000);
|
reset();
|
||||||
else
|
|
||||||
addMsg("Entrée effectuée !", "success", 4000);
|
|
||||||
reloadTable(true);
|
|
||||||
}).fail(function (xhr) {
|
}).fail(function (xhr) {
|
||||||
errMsg(xhr.responseJSON, 4000);
|
errMsg(xhr.responseJSON, 4000);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
|
||||||
let credit = function(credit_id, credit_name) {
|
$("#transaction_guest_" + id).click(makeTransaction);
|
||||||
return function() {
|
$("#transaction_guest_" + id + "_especes").click(credit(1, "espèces"));
|
||||||
$.post("/api/note/transaction/transaction/",
|
$("#transaction_guest_" + id + "_cb").click(credit(2, "carte bancaire"));
|
||||||
{
|
}
|
||||||
"csrfmiddlewaretoken": CSRF_TOKEN,
|
});
|
||||||
"quantity": 1,
|
}
|
||||||
"amount": {{ activity.activity_type.guest_entry_fee }},
|
</script>
|
||||||
"reason": "Crédit " + credit_name + " (invitation {{ activity.name }})",
|
{% endblock %}
|
||||||
"valid": true,
|
|
||||||
"polymorphic_ctype": {{ notespecial_ctype }},
|
|
||||||
"resourcetype": "SpecialTransaction",
|
|
||||||
"source": credit_id,
|
|
||||||
"destination": target.attr('data-inviter'),
|
|
||||||
"last_name": last_name,
|
|
||||||
"first_name": first_name,
|
|
||||||
"bank": ""
|
|
||||||
}).done(function () {
|
|
||||||
makeTransaction();
|
|
||||||
reset();
|
|
||||||
}).fail(function (xhr) {
|
|
||||||
errMsg(xhr.responseJSON, 4000);
|
|
||||||
});
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
$("#transaction_guest_" + id).click(makeTransaction);
|
|
||||||
$("#transaction_guest_" + id + "_especes").click(credit(1, "espèces"));
|
|
||||||
$("#transaction_guest_" + id + "_cb").click(credit(2, "carte bancaire"));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
{% endblock %}
|
|
@ -1,11 +1,21 @@
|
|||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
{% load static %}
|
{% comment %}
|
||||||
{% load i18n %}
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
{% load crispy_forms_tags %}
|
{% endcomment %}
|
||||||
|
{% load i18n crispy_forms_tags %}
|
||||||
|
{% block contenttitle %}{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<form method="post">
|
<div class="card bg-white mb-3">
|
||||||
{% csrf_token %}
|
<h3 class="card-header text-center">
|
||||||
{{form|crispy}}
|
{{ title }}
|
||||||
<button class="btn btn-primary" type="submit">{% trans "Submit" %}</button>
|
</h3>
|
||||||
</form>
|
<div class="card-body">
|
||||||
{% endblock %}
|
<form method="post">
|
||||||
|
{% csrf_token %}
|
||||||
|
{{ form|crispy }}
|
||||||
|
<button class="btn btn-primary" type="submit">{% trans "Submit" %}</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
@ -1,15 +0,0 @@
|
|||||||
{% extends "base.html" %}
|
|
||||||
{% load render_table from django_tables2 %}
|
|
||||||
{% load i18n crispy_forms_tags %}
|
|
||||||
{% block content %}
|
|
||||||
<form method="post">
|
|
||||||
{% csrf_token %}
|
|
||||||
{{ form|crispy }}
|
|
||||||
<button class="btn btn-primary" type="submit">{% trans "Submit" %}</button>
|
|
||||||
</form>
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block extrajavascript %}
|
|
||||||
<script type="text/javascript">
|
|
||||||
</script>
|
|
||||||
{% endblock %}
|
|
@ -1,41 +1,50 @@
|
|||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
|
{% comment %}
|
||||||
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
{% endcomment %}
|
||||||
{% load render_table from django_tables2 %}
|
{% load render_table from django_tables2 %}
|
||||||
{% load i18n crispy_forms_tags%}
|
{% load i18n %}
|
||||||
{% block content %}
|
{% block contenttitle %}{% endblock %}
|
||||||
{% if started_activities %}
|
|
||||||
<h2>{% trans "Current activity" %}</h2>
|
|
||||||
{% for activity in started_activities %}
|
|
||||||
{% include "activity/activity_info.html" %}
|
|
||||||
<hr>
|
|
||||||
{% endfor %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<h2>{% trans "Upcoming activities" %}</h2>
|
{% block content %}
|
||||||
|
{% if started_activities %}
|
||||||
|
<div class="card bg-info mb-3">
|
||||||
|
<h3 class="card-header text-center">
|
||||||
|
{% trans "Current activity" %}
|
||||||
|
</h3>
|
||||||
|
<div class="card-body">
|
||||||
|
{% for activity in started_activities %}
|
||||||
|
{% include "activity/includes/activity_info.html" %}
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<div class="card bg-light mb-3">
|
||||||
|
<h3 class="card-header text-center">
|
||||||
|
{% trans "Upcoming activities" %}
|
||||||
|
</h3>
|
||||||
{% if upcoming.data %}
|
{% if upcoming.data %}
|
||||||
{% render_table upcoming %}
|
{% render_table upcoming %}
|
||||||
{% else %}
|
{% else %}
|
||||||
|
<div class="card-body">
|
||||||
<div class="alert alert-warning">
|
<div class="alert alert-warning">
|
||||||
{% trans "There is no planned activity." %}
|
{% trans "There is no planned activity." %}
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
<div class="card-footer">
|
||||||
|
<a class="btn btn-sm btn-success" href="{% url 'activity:activity_create' %}" data-turbolinks="false">
|
||||||
|
<i class="fa fa-calendar-plus-o" aria-hidden="true"></i>
|
||||||
|
{% trans 'New activity' %}
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<a class="btn btn-primary" href="{% url 'activity:activity_create' %}" data-turbolinks="false">{% trans 'New activity' %}</a>
|
<div class="card bg-light mb-3">
|
||||||
|
<h3 class="card-header text-center">
|
||||||
<hr>
|
{% trans "All activities" %}
|
||||||
|
</h3>
|
||||||
<h2>{% trans "All activities" %}</h2>
|
|
||||||
|
|
||||||
{% render_table table %}
|
{% render_table table %}
|
||||||
{% endblock %}
|
</div>
|
||||||
|
{% endblock %}
|
||||||
{% block extrajavascript %}
|
|
||||||
<script type="text/javascript">
|
|
||||||
|
|
||||||
$(document).ready(function($) {
|
|
||||||
$(".table-row").click(function() {
|
|
||||||
window.document.location = $(this).data("href");
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
</script>
|
|
||||||
{% endblock %}
|
|
@ -1,10 +1,10 @@
|
|||||||
{% load i18n %}
|
{% comment %}
|
||||||
{% load perms %}
|
SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
{% load pretty_money %}
|
{% endcomment %}
|
||||||
|
{% load i18n perms pretty_money %}
|
||||||
{% url 'activity:activity_detail' activity.pk as activity_detail_url %}
|
{% url 'activity:activity_detail' activity.pk as activity_detail_url %}
|
||||||
|
|
||||||
<div id="activity_info" class="card bg-light shadow">
|
<div id="activity_info" class="card bg-light shadow mb-3">
|
||||||
<div class="card-header text-center">
|
<div class="card-header text-center">
|
||||||
<h4>
|
<h4>
|
||||||
{% if request.path_info != activity_detail_url %}
|
{% if request.path_info != activity_detail_url %}
|
@ -117,7 +117,7 @@ class ActivityInviteView(ProtectQuerysetMixin, ProtectedCreateView):
|
|||||||
"""
|
"""
|
||||||
model = Guest
|
model = Guest
|
||||||
form_class = GuestForm
|
form_class = GuestForm
|
||||||
template_name = "activity/activity_invite.html"
|
template_name = "activity/activity_form.html"
|
||||||
|
|
||||||
def get_sample_object(self):
|
def get_sample_object(self):
|
||||||
""" Creates a standart Guest binds to the Activity"""
|
""" Creates a standart Guest binds to the Activity"""
|
||||||
|
Loading…
Reference in New Issue
Block a user