diff --git a/apps/member/tables.py b/apps/member/tables.py index 86fc386a52d9673ed99e5a8e39204316708a68dd..4e09d72e2594e8a0a38c98e3d6c7e094c0e8869d 100644 --- a/apps/member/tables.py +++ b/apps/member/tables.py @@ -96,26 +96,30 @@ class MembershipTable(tables.Table): t = pretty_money(value) # If it is required and if the user has the right, the renew button is displayed. - if record.club.membership_start is not None: - if record.date_start < record.club.membership_start: # If the renew is available - if not Membership.objects.filter( - club=record.club, - user=record.user, - date_start__gte=record.club.membership_start, - date_end__lte=record.club.membership_end, - ).exists(): # If the renew is not yet performed - empty_membership = Membership( - club=record.club, - user=record.user, - date_start=date.today(), - date_end=date.today(), - fee=0, + if record.club.membership_start is not None \ + and record.date_start < record.club.membership_start: + if not Membership.objects.filter( + club=record.club, + user=record.user, + date_start__gte=record.club.membership_start, + date_end__lte=record.club.membership_end, + ).exists(): # If the renew is not yet performed + empty_membership = Membership( + club=record.club, + user=record.user, + date_start=date.today(), + date_end=date.today(), + fee=0, + ) + if PermissionBackend.check_perm(get_current_authenticated_user(), + "member:add_membership", empty_membership): # If the user has right + renew_url = reverse_lazy('member:club_renew_membership', + kwargs={"pk": record.pk}) + t = format_html( + t + ' <a class="btn btn-sm btn-warning" title="{text}"' + ' href="{renew_url}"><i class="fa fa-repeat"></i></a>', + renew_url=renew_url, text=_("Renew") ) - if PermissionBackend.check_perm(get_current_authenticated_user(), - "member:add_membership", empty_membership): # If the user has right - t = format_html(t + ' <a class="btn btn-warning" href="{url}">{text}</a>', - url=reverse_lazy('member:club_renew_membership', - kwargs={"pk": record.pk}), text=_("Renew")) return t def render_roles(self, record): diff --git a/apps/member/templates/member/add_members.html b/apps/member/templates/member/add_members.html index 909e72b330c05804a894e9abfdec9fb288dfdba3..fa0a958caf113b826f25216e7f6b7b7f9de783b7 100644 --- a/apps/member/templates/member/add_members.html +++ b/apps/member/templates/member/add_members.html @@ -1,72 +1,75 @@ {% extends "member/base.html" %} -{% load crispy_forms_tags %} -{% load static %} -{% load i18n %} -{% load pretty_money %} - -{% block profile_info %} -{% include "member/club_info.html" %} -{% endblock %} +{% comment %} +SPDX-License-Identifier: GPL-3.0-or-later +{% endcomment %} +{% load crispy_forms_tags i18n pretty_money %} {% block profile_content %} - {% if additional_fee_renewal %} +<div class="card bg-light"> + <h3 class="card-header text-center"> + {{ title }} + </h3> + <div class="card-body"> + {% if additional_fee_renewal %} <div class="alert alert-warning"> {% if renewal %} - {% blocktrans trimmed with clubs=clubs_renewal|join:", " pretty_fee=additional_fee_renewal|pretty_money %} - The user is not a member of the club·s {{ clubs }}. An additional fee of {{ pretty_fee }} - will be charged to renew automatically the membership in this/these club·s. - {% endblocktrans %} + {% blocktrans trimmed with clubs=clubs_renewal|join:", " pretty_fee=additional_fee_renewal|pretty_money %} + The user is not a member of the club·s {{ clubs }}. An additional fee of {{ pretty_fee }} + will be charged to renew automatically the membership in this/these club·s. + {% endblocktrans %} {% else %} - {% blocktrans trimmed with clubs=clubs_renewal|join:", " pretty_fee=additional_fee_renewal|pretty_money %} - This club has parents {{ clubs }}. An additional fee of {{ pretty_fee }} - will be charged to adhere automatically to this/these club·s. - {% endblocktrans %} + {% blocktrans trimmed with clubs=clubs_renewal|join:", " pretty_fee=additional_fee_renewal|pretty_money %} + This club has parents {{ clubs }}. An additional fee of {{ pretty_fee }} + will be charged to adhere automatically to this/these club·s. + {% endblocktrans %} {% endif %} </div> - {% endif %} + {% endif %} - <form method="post" action=""> - {% csrf_token %} - {{ form|crispy }} - <button class="btn btn-primary" type="submit">{% trans "Submit" %}</button> - </form> + <form method="post" action=""> + {% csrf_token %} + {{ form|crispy }} + <button class="btn btn-primary" type="submit">{% trans "Submit" %}</button> + </form> + </div> +</div> {% endblock %} {% block extrajavascript %} - <script> - function autocompleted(user) { - $("#id_last_name").val(user.last_name); - $("#id_first_name").val(user.first_name); - $.getJSON("/api/members/profile/" + user.id + "/", function(profile) { - let fee = profile.paid ? {{ club.membership_fee_paid }} : {{ club.membership_fee_unpaid }}; - $("#id_credit_amount").val((fee / 100).toFixed(2)); - }); - } +<script> + function autocompleted(user) { + $("#id_last_name").val(user.last_name); + $("#id_first_name").val(user.first_name); + $.getJSON("/api/members/profile/" + user.id + "/", function (profile) { + let fee = profile.paid ? "{{ club.membership_fee_paid }}" : "{{ club.membership_fee_unpaid }}"; + $("#id_credit_amount").val((Number(fee) / 100).toFixed(2)); + }); + } - soge_field = $("#id_soge"); + soge_field = $("#id_soge"); - function fillFields() { - let checked = soge_field.is(':checked'); - if (!checked) { - $("input").attr('disabled', false); - $("#id_user").attr('disabled', true); - $("select").attr('disabled', false); - return; - } + function fillFields() { + let checked = soge_field.is(':checked'); + if (!checked) { + $("input").attr('disabled', false); + $("#id_user").attr('disabled', true); + $("select").attr('disabled', false); + return; + } - let credit_type = $("#id_credit_type"); - credit_type.attr('disabled', true); - credit_type.val(4); + let credit_type = $("#id_credit_type"); + credit_type.attr('disabled', true); + credit_type.val(4); - let credit_amount = $("#id_credit_amount"); - credit_amount.attr('disabled', true); - credit_amount.val('{{ total_fee }}'); + let credit_amount = $("#id_credit_amount"); + credit_amount.attr('disabled', true); + credit_amount.val('{{ total_fee }}'); - let bank = $("#id_bank"); - bank.attr('disabled', true); - bank.val('Société générale'); - } + let bank = $("#id_bank"); + bank.attr('disabled', true); + bank.val('Société générale'); + } - soge_field.change(fillFields); - </script> -{% endblock %} + soge_field.change(fillFields); +</script> +{% endblock %} \ No newline at end of file diff --git a/apps/member/templates/member/base.html b/apps/member/templates/member/base.html index b61d869cc4f751f592944e98c9315dd0fe1d1482..b474f73656ec1ddf39c215a43787ae4383b98c4d 100644 --- a/apps/member/templates/member/base.html +++ b/apps/member/templates/member/base.html @@ -2,6 +2,7 @@ {% comment %} SPDX-License-Identifier: GPL-3.0-or-later {% endcomment %} +{% load i18n perms %} {% block contenttitle %}{% endblock %} {# Use a fluid-width container #} @@ -11,24 +12,74 @@ SPDX-License-Identifier: GPL-3.0-or-later <div class="row mt-4"> <div class="col-xl-4"> {% block profile_info %} - {% include "member/profile_info.html" %} - {% endblock %} + <div class="card bg-light"> + <h4 class="card-header text-center"> + {% if user_object %} + {% trans "Account #" %}{{ user_object.pk }} + {% elif club %} + Club {{ club.name }} + {% endif %} + </h4> + <div class="text-center"> + {% if user_object %} + <a href="{% url 'member:user_update_pic' user_object.pk %}"> + <img src="{{ user_object.note.display_image.url }}" class="img-thumbnail mt-2"> + </a> + {% elif club %} + <a href="{% url 'member:club_update_pic' club.pk %}"> + <img src="{{ club.note.display_image.url }}" class="img-thumbnail mt-2"> + </a> + {% endif %} + </div> + <div class="card-body" id="profile_infos"> + {% if user_object %} + {% include "member/includes/profile_info.html" %} + {% elif club %} + {% include "member/includes/club_info.html" %} + {% endif %} + {% endblock %} + </div> + <div class="card-footer"> + {% if user_object %} + <a class="btn btn-sm btn-secondary" href="{% url 'member:user_update_profile' user_object.pk %}"> + <i class="fa fa-edit"></i> {% trans 'Update Profile' %} + </a> + {% url 'member:user_detail' user_object.pk as user_profile_url %} + {% if request.path_info != user_profile_url %} + <a class="btn btn-sm btn-primary" href="{{ user_profile_url }}">{% trans 'View Profile' %}</a> + {% endif %} + {% elif club and not club.weiclub %} + {% if can_add_members %} + <a class="btn btn-sm btn-success" href="{% url 'member:club_add_member' club_pk=club.pk %}" + data-turbolinks="false"> {% trans "Add member" %}</a> + {% endif %} + {% if ".change_"|has_perm:club %} + <a class="btn btn-sm btn-secondary" href="{% url 'member:club_update' pk=club.pk %}" + data-turbolinks="false"> + <i class="fa fa-edit"></i> {% trans 'Update Profile' %} + </a> + {% endif %} + {% url 'member:club_detail' club.pk as club_detail_url %} + {% if request.path_info != club_detail_url %} + <a class="btn btn-sm btn-primary" href="{{ club_detail_url }}">{% trans 'View Profile' %}</a> + {% endif %} + {% endif %} + </div> + </div> </div> <div class="col-xl-8"> - {% block profile_content %} - {% include "member/profile_tables.html" %} - {% endblock %} + {% block profile_content %}{% endblock %} </div> </div> {% endblock %} {% block extrajavascript %} +{% if object %} <script> - {% if object %} function refreshHistory() { $("#history_list").load("{% url 'member:user_detail' pk=object.pk %} #history_list"); $("#profile_infos").load("{% url 'member:user_detail' pk=object.pk %} #profile_infos"); } - {% endif %} </script> +{% endif %} {% endblock %} \ No newline at end of file diff --git a/apps/member/templates/member/club_alias.html b/apps/member/templates/member/club_alias.html index 60e2bef043774cecbecd8471afbd7c0a7c9ab452..d80dfa0b62d605144f94b9ed90e534e55e5b104e 100644 --- a/apps/member/templates/member/club_alias.html +++ b/apps/member/templates/member/club_alias.html @@ -1,4 +1,7 @@ -{% extends "member/club_detail.html" %} +{% extends "member/base.html" %} +{% comment %} +SPDX-License-Identifier: GPL-3.0-or-later +{% endcomment %} {% load static django_tables2 i18n %} {% block profile_content %} diff --git a/apps/member/templates/member/club_detail.html b/apps/member/templates/member/club_detail.html index c3afee7b8e4356e9471e114113c76284abfc48e1..b6cd1e33cb45ef48400d24232949d0b86b931222 100644 --- a/apps/member/templates/member/club_detail.html +++ b/apps/member/templates/member/club_detail.html @@ -1,11 +1,50 @@ {% extends "member/base.html" %} - -{% block profile_info %} -{% include "member/club_info.html" %} -{% endblock %} +{% comment %} +SPDX-License-Identifier: GPL-3.0-or-later +{% endcomment %} +{% load render_table from django_tables2 %} +{% load i18n perms %} {% block profile_content %} -{% include "member/club_tables.html" %} +{% if managers.data %} +<div class="card"> + <div class="card-header position-relative" id="clubListHeading"> + <a class="font-weight-bold"> + <i class="fa fa-users"></i> {% trans "Club managers" %} + </a> + </div> + {% render_table managers %} +</div> + +<hr> +{% endif %} + +{% if member_list.data %} +<div class="card"> + <div class="card-header position-relative" id="clubListHeading"> + <a class="stretched-link font-weight-bold" href="{% url 'member:club_members' pk=club.pk %}"> + <i class="fa fa-users"></i> {% trans "Club members" %} + </a> + </div> + {% render_table member_list %} +</div> + +<hr> +{% endif %} + +{% if history_list.data %} +<div class="card"> + <div class="card-header position-relative" id="historyListHeading"> + <a class="stretched-link font-weight-bold" {% if "note.view_note"|has_perm:club.note %} + href="{% url 'note:transactions' pk=club.note.pk %}" {% endif %}> + <i class="fa fa-euro"></i> {% trans "Transaction history" %} + </a> + </div> + <div id="history_list"> + {% render_table history_list %} + </div> +</div> +{% endif %} {% endblock %} {% block extrajavascript %} diff --git a/apps/member/templates/member/club_form.html b/apps/member/templates/member/club_form.html index fc4e79e302366ba791889698c2acf13b5cf6d8d9..bd44ff161c56de8182e0577a2dbd7c1b3a850c0b 100644 --- a/apps/member/templates/member/club_form.html +++ b/apps/member/templates/member/club_form.html @@ -1,11 +1,11 @@ -{% extends "base.html" %} +{% extends "member/base.html" %} {% comment %} SPDX-License-Identifier: GPL-3.0-or-later {% endcomment %} {% load i18n crispy_forms_tags %} {% block contenttitle %}{% endblock %} -{% block content %} +{% block profile_content %} <div class="card bg-light"> <h3 class="card-header text-center"> {{ title }} diff --git a/apps/member/templates/member/club_info.html b/apps/member/templates/member/club_info.html deleted file mode 100644 index bc76385b16447148fe60a57d0b79ba987811c54e..0000000000000000000000000000000000000000 --- a/apps/member/templates/member/club_info.html +++ /dev/null @@ -1,80 +0,0 @@ -{% load i18n pretty_money perms %} - -<div class="card bg-light"> - <h4 class="card-header text-center"> - Club {{ club.name }} - </h4> - <div class="card-top text-center"> - <a href="{% url 'member:club_update_pic' club.pk %}"> - <img src="{{ club.note.display_image.url }}" class="img-thumbnail mt-2"> - </a> - </div> - <div class="card-body" id="profile_infos"> - <dl class="row"> - <dt class="col-xl-6">{% trans 'name'|capfirst %}</dt> - <dd class="col-xl-6">{{ club.name }}</dd> - - {% if club.parent_club %} - <dt class="col-xl-6"> - <a href="{% url 'member:club_detail' club.parent_club.pk %}">{% trans 'Club Parent'|capfirst %}</a> - </dt> - <dd class="col-xl-6"> {{ club.parent_club.name }}</dd> - {% endif %} - - {% if club.require_memberships %} - {% if club.membership_start %} - <dt class="col-xl-6">{% trans 'membership start'|capfirst %}</dt> - <dd class="col-xl-6">{{ club.membership_start }}</dd> - {% endif %} - - {% if club.membership_end %} - <dt class="col-xl-6">{% trans 'membership end'|capfirst %}</dt> - <dd class="col-xl-6">{{ club.membership_end }}</dd> - {% endif %} - - {% if club.membership_duration %} - <dt class="col-xl-6">{% trans 'membership duration'|capfirst %}</dt> - <dd class="col-xl-6">{{ club.membership_duration }} {% trans "days" %}</dd> - {% endif %} - - {% if club.membership_fee_paid == club.membership_fee_unpaid %} - <dt class="col-xl-6">{% trans 'membership fee'|capfirst %}</dt> - <dd class="col-xl-6">{{ club.membership_fee_paid|pretty_money }}</dd> - {% else %} - <dt class="col-xl-6">{% trans 'membership fee (paid students)'|capfirst %}</dt> - <dd class="col-xl-6">{{ club.membership_fee_paid|pretty_money }}</dd> - - <dt class="col-xl-6">{% trans 'membership fee (unpaid students)'|capfirst %}</dt> - <dd class="col-xl-6">{{ club.membership_fee_unpaid|pretty_money }}</dd> - {% endif %} - {% endif %} - - {% if "note.view_note"|has_perm:club.note %} - <dt class="col-xl-6">{% trans 'balance'|capfirst %}</dt> - <dd class="col-xl-6">{{ club.note.balance | pretty_money }}</dd> - {% endif %} - - <dt class="col-xl-6"><a href="{% url 'member:club_alias' club.pk %}">{% trans 'aliases'|capfirst %}</a></dt> - <dd class="col-xl-6 text-truncate">{{ club.note.alias_set.all|join:", " }}</dd> - - <dt class="col-xl-4">{% trans 'email'|capfirst %}</dt> - <dd class="col-xl-8"><a href="mailto:{{ club.email }}">{{ club.email }}</a></dd> - </dl> - </div> - {% if not club.weiclub %} - <div class="card-footer text-center"> - {% if can_add_members %} - <a class="btn btn-primary btn-sm my-1" href="{% url 'member:club_add_member' club_pk=club.pk %}" - data-turbolinks="false"> {% trans "Add member" %}</a> - {% endif %} - {% if ".change_"|has_perm:club %} - <a class="btn btn-primary btn-sm my-1" href="{% url 'member:club_update' pk=club.pk %}" data-turbolinks="false"> - {% trans "Edit" %}</a> - {% endif %} - {% url 'member:club_detail' club.pk as club_detail_url %} - {%if request.path_info != club_detail_url %} - <a class="btn btn-primary btn-sm my-1" href="{{ club_detail_url }}">{% trans 'View Profile' %}</a> - {% endif %} - </div> - {% endif %} -</div> \ No newline at end of file diff --git a/apps/member/templates/member/club_list.html b/apps/member/templates/member/club_list.html index f6d039e746dccd3e7b5120a520a68de3b3d9a020..66863a3c7436cb5f3984fb4ff8f9dedfac6292ae 100644 --- a/apps/member/templates/member/club_list.html +++ b/apps/member/templates/member/club_list.html @@ -13,4 +13,4 @@ SPDX-License-Identifier: GPL-3.0-or-later {# Search panel #} {{ block.super }} -{% endblock %} +{% endblock %} \ No newline at end of file diff --git a/apps/member/templates/member/club_members.html b/apps/member/templates/member/club_members.html index 9faff271f1f10618db1a4403ea37b20b753a6401..0da9524273fc79d7f8ba1648d0ed31cf4875093b 100644 --- a/apps/member/templates/member/club_members.html +++ b/apps/member/templates/member/club_members.html @@ -2,68 +2,65 @@ {% load i18n %} {% load render_table from django_tables2 %} -{% block profile_info %} - {% include "member/club_info.html" %} -{% endblock %} - {% block profile_content %} - <input id="searchbar" type="text" class="form-control" placeholder="Nom/prénom/note ..."> - <div class="form-group"> +<div class="card bg-light"> + <h3 class="card-header text-center"> + {{ title }} + </h3> + <div class="card-body"> + <input id="searchbar" type="text" class="form-control" placeholder="Nom/prénom/note…"> <div class="form-check"> <label class="form-check-label" for="only_active"> <input type="checkbox" class="checkboxinput form-check-input" id="only_active" - {% if only_active %}checked{% endif %}> + {% if only_active %}checked{% endif %}> {% trans "Display only active memberships" %} </label> </div> - </div> - <div id="div_id_roles" class="form-group"> - <label for="id_roles" class="col-form-label">{% trans "Filter roles:" %}</label> - <div class=""> + <div id="div_id_roles"> + <label for="roles" class="col-form-label">{% trans "Filter roles:" %}</label> <select name="roles" class="selectmultiple form-control" id="roles" multiple=""> {% for role in applicable_roles %} - <option value="{{ role.id }}" selected>{{ role.name }}</option> + <option value="{{ role.id }}" selected>{{ role.name }}</option> {% endfor %} </select> </div> </div> - <hr> - <div id="memberships_table"> {% if table.data %} - {% render_table table %} + {% render_table table %} {% else %} - <div class="alert alert-warning"> - {% trans "There is no membership found with this pattern." %} - </div> + <div class="alert alert-warning"> + {% trans "There is no membership found with this pattern." %} + </div> {% endif %} </div> +</div> {% endblock %} {% block extrajavascript %} - <script type="text/javascript"> - $(document).ready(function () { - let searchbar_obj = $("#searchbar"); - let only_active_obj = $("#only_active"); - let roles_obj = $("#roles"); +<script type="text/javascript"> + $(document).ready(function () { + let searchbar_obj = $("#searchbar"); + let only_active_obj = $("#only_active"); + let roles_obj = $("#roles"); - function reloadTable() { - let pattern = searchbar_obj.val(); + function reloadTable() { + let pattern = searchbar_obj.val(); - let roles = []; - $("#roles option:selected").each(function() { - roles.push($(this).val()); - }); - let roles_str = roles.join(','); + let roles = []; + $("#roles option:selected").each(function () { + roles.push($(this).val()); + }); + let roles_str = roles.join(','); - $("#memberships_table").load(location.pathname + "?search=" + pattern.replace(" ", "%20") - + "&only_active=" + (only_active_obj.is(':checked') ? '1' : '0') - + "&roles=" + roles_str + " #memberships_table"); - } + $("#memberships_table").load(location.pathname + "?search=" + pattern.replace(" ", "%20") + + "&only_active=" + (only_active_obj.is(':checked') ? '1' : '0') + + "&roles=" + roles_str + " #memberships_table"); + } - searchbar_obj.keyup(reloadTable); - only_active_obj.change(reloadTable); - roles_obj.change(reloadTable); - }); - </script> -{% endblock %} + searchbar_obj.keyup(reloadTable); + only_active_obj.change(reloadTable); + roles_obj.change(reloadTable); + }); +</script> +{% endblock %} \ No newline at end of file diff --git a/apps/member/templates/member/club_picture_update.html b/apps/member/templates/member/club_picture_update.html deleted file mode 100644 index 358fdd6e882399c2cb9654e9f650f35ba6d2b554..0000000000000000000000000000000000000000 --- a/apps/member/templates/member/club_picture_update.html +++ /dev/null @@ -1,5 +0,0 @@ -{% extends "member/club_detail.html" %} - -{% block profile_content%} -{% include "member/picture_update.html" %} -{% endblock%} diff --git a/apps/member/templates/member/club_tables.html b/apps/member/templates/member/club_tables.html deleted file mode 100644 index 063c00c5d9561d2f7acbbd1d6f12bf5125aa915d..0000000000000000000000000000000000000000 --- a/apps/member/templates/member/club_tables.html +++ /dev/null @@ -1,42 +0,0 @@ -{% load render_table from django_tables2 %} -{% load i18n %} -{% load perms %} - -{% if managers.data %} - <div class="card"> - <div class="card-header position-relative" id="clubListHeading"> - <a class="font-weight-bold"> - <i class="fa fa-users"></i> {% trans "Club managers" %} - </a> - </div> - {% render_table managers %} - </div> - - <hr> -{% endif %} - -{% if member_list.data %} - <div class="card"> - <div class="card-header position-relative" id="clubListHeading"> - <a class="stretched-link font-weight-bold" href="{% url 'member:club_members' pk=club.pk %}"> - <i class="fa fa-users"></i> {% trans "Club members" %} - </a> - </div> - {% render_table member_list %} - </div> - - <hr> -{% endif %} - -{% if history_list.data %} - <div class="card"> - <div class="card-header position-relative" id="historyListHeading"> - <a class="stretched-link font-weight-bold" {% if "note.view_note"|has_perm:club.note %} href="{% url 'note:transactions' pk=club.note.pk %}" {% endif %}> - <i class="fa fa-euro"></i> {% trans "Transaction history" %} - </a> - </div> - <div id="history_list"> - {% render_table history_list %} - </div> - </div> -{% endif %} diff --git a/apps/member/templates/member/includes/club_info.html b/apps/member/templates/member/includes/club_info.html new file mode 100644 index 0000000000000000000000000000000000000000..271083b83f77d3b68c13e2f3ffe9f06ec8d6fdc8 --- /dev/null +++ b/apps/member/templates/member/includes/club_info.html @@ -0,0 +1,56 @@ +{% load i18n pretty_money perms %} + +<dl class="row"> + <dt class="col-xl-6">{% trans 'name'|capfirst %}</dt> + <dd class="col-xl-6">{{ club.name }}</dd> + + {% if club.parent_club %} + <dt class="col-xl-6"> + <a href="{% url 'member:club_detail' club.parent_club.pk %}">{% trans 'Club Parent'|capfirst %}</a> + </dt> + <dd class="col-xl-6"> {{ club.parent_club.name }}</dd> + {% endif %} + + {% if club.require_memberships %} + {% if club.membership_start %} + <dt class="col-xl-6">{% trans 'membership start'|capfirst %}</dt> + <dd class="col-xl-6">{{ club.membership_start }}</dd> + {% endif %} + + {% if club.membership_end %} + <dt class="col-xl-6">{% trans 'membership end'|capfirst %}</dt> + <dd class="col-xl-6">{{ club.membership_end }}</dd> + {% endif %} + + {% if club.membership_duration %} + <dt class="col-xl-6">{% trans 'membership duration'|capfirst %}</dt> + <dd class="col-xl-6">{{ club.membership_duration }} {% trans "days" %}</dd> + {% endif %} + + {% if club.membership_fee_paid == club.membership_fee_unpaid %} + <dt class="col-xl-6">{% trans 'membership fee'|capfirst %}</dt> + <dd class="col-xl-6">{{ club.membership_fee_paid|pretty_money }}</dd> + {% else %} + <dt class="col-xl-6">{% trans 'membership fee (paid students)'|capfirst %}</dt> + <dd class="col-xl-6">{{ club.membership_fee_paid|pretty_money }}</dd> + + <dt class="col-xl-6">{% trans 'membership fee (unpaid students)'|capfirst %}</dt> + <dd class="col-xl-6">{{ club.membership_fee_unpaid|pretty_money }}</dd> + {% endif %} + {% endif %} + + {% if "note.view_note"|has_perm:club.note %} + <dt class="col-xl-6">{% trans 'balance'|capfirst %}</dt> + <dd class="col-xl-6">{{ club.note.balance | pretty_money }}</dd> + {% endif %} + + <dt class="col-xl-6">{% trans 'aliases'|capfirst %}</dt> + <dd class="col-xl-6"> + <a class="small" href="{% url 'member:club_alias' club.pk %}"> + {% trans 'Edit aliases' %} ({{ club.note.alias_set.all|length }}) + </a> + </dd> + + <dt class="col-xl-4">{% trans 'email'|capfirst %}</dt> + <dd class="col-xl-8"><a href="mailto:{{ club.email }}">{{ club.email }}</a></dd> +</dl> \ No newline at end of file diff --git a/apps/member/templates/member/includes/profile_info.html b/apps/member/templates/member/includes/profile_info.html new file mode 100644 index 0000000000000000000000000000000000000000..ba12572fe0b2b743355fb5f69f3a8254a567b173 --- /dev/null +++ b/apps/member/templates/member/includes/profile_info.html @@ -0,0 +1,52 @@ +{% load i18n pretty_money perms %} + +<dl class="row"> + <dt class="col-xl-6">{% trans 'name'|capfirst %}, {% trans 'first name' %}</dt> + <dd class="col-xl-6">{{ user_object.last_name }} {{ user_object.first_name }}</dd> + + <dt class="col-xl-6">{% trans 'username'|capfirst %}</dt> + <dd class="col-xl-6">{{ user_object.username }}</dd> + + {% if user_object.pk == user.pk %} + <dt class="col-xl-6">{% trans 'password'|capfirst %}</dt> + <dd class="col-xl-6"> + <a class="small" href="{% url 'password_change' %}"> + {% trans 'Change password' %} + </a> + </dd> + {% endif %} + + <dt class="col-xl-6">{% trans 'aliases'|capfirst %}</dt> + <dd class="col-xl-6"> + <a class="small" href="{% url 'member:user_alias' user_object.pk %}"> + {% trans 'Edit aliases' %} ({{ user_object.note.alias_set.all|length }}) + </a> + </dd> + + <dt class="col-xl-6">{% trans 'section'|capfirst %}</dt> + <dd class="col-xl-6">{{ user_object.profile.section }}</dd> + + <dt class="col-xl-6">{% trans 'email'|capfirst %}</dt> + <dd class="col-xl-6"><a href="mailto:{{ user_object.email }}">{{ user_object.email }}</a></dd> + + <dt class="col-xl-6">{% trans 'phone number'|capfirst %}</dt> + <dd class="col-xl-6"><a href="tel:{{ user_object.profile.phone_number }}">{{ user_object.profile.phone_number }}</a> + </dd> + + <dt class="col-xl-6">{% trans 'address'|capfirst %}</dt> + <dd class="col-xl-6">{{ user_object.profile.address }}</dd> + + {% if "note.view_note"|has_perm:user_object.note %} + <dt class="col-xl-6">{% trans 'balance'|capfirst %}</dt> + <dd class="col-xl-6">{{ user_object.note.balance | pretty_money }}</dd> + + <dt class="col-xl-6">{% trans 'paid'|capfirst %}</dt> + <dd class="col-xl-6">{{ user_object.profile.paid|yesno }}</dd> + {% endif %} +</dl> + +{% if user_object.pk == user_object.pk %} +<a class="small float-right text-decoration-none" href="{% url 'member:auth_token' %}"> + {% trans 'Manage auth token' %} +</a> +{% endif %} \ No newline at end of file diff --git a/apps/member/templates/member/manage_auth_tokens.html b/apps/member/templates/member/manage_auth_tokens.html index 0103fbbba7ff17d4c9650cd67806b9e556ffeb96..473286c1e07b1a0c4985596e2191dc99582e5a07 100644 --- a/apps/member/templates/member/manage_auth_tokens.html +++ b/apps/member/templates/member/manage_auth_tokens.html @@ -1,8 +1,11 @@ -{% extends "base.html" %} -{% load i18n static pretty_money django_tables2 %} +{% extends "member/base.html" %} +{% comment %} +SPDX-License-Identifier: GPL-3.0-or-later +{% endcomment %} +{% load i18n %} {% block content %} - <div class="alert alert-info"> +<div class="alert alert-info"> <h4>À quoi sert un jeton d'authentification ?</h4> Un jeton vous permet de vous connecter à <a href="/api/">l'API de la Note Kfet</a>.<br /> @@ -10,24 +13,24 @@ pour pouvoir vous identifier.<br /><br /> Une documentation de l'API arrivera ultérieurement. - </div> +</div> - <div class="alert alert-info"> - <strong>{%trans 'Token' %} :</strong> - {% if 'show' in request.GET %} - {{ token.key }} (<a href="?">cacher</a>) - {% else %} - <em>caché</em> (<a href="?show">montrer</a>) - {% endif %} - <br /> - <strong>{%trans 'Created' %} :</strong> {{ token.created }} - </div> +<div class="alert alert-info"> + <strong>{%trans 'Token' %} :</strong> + {% if 'show' in request.GET %} + {{ token.key }} (<a href="?">cacher</a>) + {% else %} + <em>caché</em> (<a href="?show">montrer</a>) + {% endif %} + <br /> + <strong>{%trans 'Created' %} :</strong> {{ token.created }} +</div> - <div class="alert alert-warning"> - <strong>Attention :</strong> regénérer le jeton va révoquer tout accès autorisé à l'API via ce jeton ! - </div> +<div class="alert alert-warning"> + <strong>Attention :</strong> regénérer le jeton va révoquer tout accès autorisé à l'API via ce jeton ! +</div> - <a href="?regenerate"> - <button class="btn btn-primary">{% trans 'Regenerate token' %}</button> - </a> -{% endblock %} +<a href="?regenerate"> + <button class="btn btn-primary">{% trans 'Regenerate token' %}</button> +</a> +{% endblock %} \ No newline at end of file diff --git a/apps/member/templates/member/picture_update.html b/apps/member/templates/member/picture_update.html index f0c43e47c52c659e2d308a48647486a0b7db26fc..41568cfbe05df5680b12214bd86a28498c6a26b8 100644 --- a/apps/member/templates/member/picture_update.html +++ b/apps/member/templates/member/picture_update.html @@ -1,95 +1,104 @@ +{% extends "member/base.html" %} {% load i18n crispy_forms_tags %} + {% block profile_content %} -<div class="text-center"> -<form method="post" enctype="multipart/form-data" id="formUpload"> - {% csrf_token %} - {{ form |crispy }} -</form> -</div> -<!-- MODAL TO CROP THE IMAGE --> -<div class="modal fade" id="modalCrop"> - <div class="modal-dialog"> - <div class="modal-content"> - <div class="modal-body"> - <img src="" id="modal-image" style="max-width: 100%;"> - </div> - <div class="modal-footer"> - <div class="btn-group pull-left" role="group"> - <button type="button" class="btn btn-default" id="js-zoom-in"> - <span class="glyphicon glyphicon-zoom-in"></span> - </button> - <button type="button" class="btn btn-default js-zoom-out"> - <span class="glyphicon glyphicon-zoom-out"></span> - </button> +<div class="card bg-light"> + <h3 class="card-header text-center"> + {{ title }} + </h3> + <div class="card-body"> + <div class="text-center"> + <form method="post" enctype="multipart/form-data" id="formUpload"> + {% csrf_token %} + {{ form |crispy }} + </form> + </div> + <!-- MODAL TO CROP THE IMAGE --> + <div class="modal fade" id="modalCrop"> + <div class="modal-dialog"> + <div class="modal-content"> + <div class="modal-body"> + <img src="" id="modal-image" style="max-width: 100%;"> + </div> + <div class="modal-footer"> + <div class="btn-group pull-left" role="group"> + <button type="button" class="btn btn-default" id="js-zoom-in"> + <span class="glyphicon glyphicon-zoom-in"></span> + </button> + <button type="button" class="btn btn-default js-zoom-out"> + <span class="glyphicon glyphicon-zoom-out"></span> + </button> + </div> + <button type="button" class="btn btn-default" data-dismiss="modal">Nevermind</button> + <button type="button" class="btn btn-primary js-crop-and-upload">Crop and upload</button> + </div> </div> - <button type="button" class="btn btn-default" data-dismiss="modal">Nevermind</button> - <button type="button" class="btn btn-primary js-crop-and-upload">Crop and upload</button> </div> </div> </div> </div> {% endblock %} + {% block extracss %} - <link href="https://cdnjs.cloudflare.com/ajax/libs/cropperjs/1.5.6/cropper.min.css" rel="stylesheet"> +<link href="https://cdnjs.cloudflare.com/ajax/libs/cropperjs/1.5.6/cropper.min.css" rel="stylesheet"> {% endblock %} {% block extrajavascript%} - <script src="https://cdnjs.cloudflare.com/ajax/libs/cropperjs/1.5.6/cropper.min.js"></script> - <script src="https://cdn.jsdelivr.net/npm/jquery-cropper@1.0.1/dist/jquery-cropper.min.js"></script> - <script> - $(function () { - - /* SCRIPT TO OPEN THE MODAL WITH THE PREVIEW */ - $("#id_image").change(function (e) { - if (this.files && this.files[0]) { - var reader = new FileReader(); - reader.onload = function (e) { - $("#modal-image").attr("src", e.target.result); - $("#modalCrop").modal("show"); - } - reader.readAsDataURL(this.files[0]); - } - }); +<script src="https://cdnjs.cloudflare.com/ajax/libs/cropperjs/1.5.6/cropper.min.js"></script> +<script src="https://cdn.jsdelivr.net/npm/jquery-cropper@1.0.1/dist/jquery-cropper.min.js"></script> +<script> + $(function () { - /* SCRIPTS TO HANDLE THE CROPPER BOX */ - var $image = $("#modal-image"); - var cropBoxData; - var canvasData; - $("#modalCrop").on("shown.bs.modal", function () { - $image.cropper({ - viewMode: 1, - aspectRatio: 1/1, - minCropBoxWidth: 200, - minCropBoxHeight: 200, - ready: function () { - $image.cropper("setCanvasData", canvasData); - $image.cropper("setCropBoxData", cropBoxData); - } - }); - }).on("hidden.bs.modal", function () { - cropBoxData = $image.cropper("getCropBoxData"); - canvasData = $image.cropper("getCanvasData"); - $image.cropper("destroy"); - }); + /* SCRIPT TO OPEN THE MODAL WITH THE PREVIEW */ + $("#id_image").change(function (e) { + if (this.files && this.files[0]) { + var reader = new FileReader(); + reader.onload = function (e) { + $("#modal-image").attr("src", e.target.result); + $("#modalCrop").modal("show"); + } + reader.readAsDataURL(this.files[0]); + } + }); - $(".js-zoom-in").click(function () { - $image.cropper("zoom", 0.1); - }); + /* SCRIPTS TO HANDLE THE CROPPER BOX */ + var $image = $("#modal-image"); + var cropBoxData; + var canvasData; + $("#modalCrop").on("shown.bs.modal", function () { + $image.cropper({ + viewMode: 1, + aspectRatio: 1 / 1, + minCropBoxWidth: 200, + minCropBoxHeight: 200, + ready: function () { + $image.cropper("setCanvasData", canvasData); + $image.cropper("setCropBoxData", cropBoxData); + } + }); + }).on("hidden.bs.modal", function () { + cropBoxData = $image.cropper("getCropBoxData"); + canvasData = $image.cropper("getCanvasData"); + $image.cropper("destroy"); + }); - $(".js-zoom-out").click(function () { - $image.cropper("zoom", -0.1); - }); + $(".js-zoom-in").click(function () { + $image.cropper("zoom", 0.1); + }); - /* SCRIPT TO COLLECT THE DATA AND POST TO THE SERVER */ - $(".js-crop-and-upload").click(function () { - var cropData = $image.cropper("getData"); - $("#id_x").val(cropData["x"]); - $("#id_y").val(cropData["y"]); - $("#id_height").val(cropData["height"]); - $("#id_width").val(cropData["width"]); - $("#formUpload").submit(); - }); + $(".js-zoom-out").click(function () { + $image.cropper("zoom", -0.1); + }); - }); - </script> -{% endblock %} + /* SCRIPT TO COLLECT THE DATA AND POST TO THE SERVER */ + $(".js-crop-and-upload").click(function () { + var cropData = $image.cropper("getData"); + $("#id_x").val(cropData["x"]); + $("#id_y").val(cropData["y"]); + $("#id_height").val(cropData["height"]); + $("#id_width").val(cropData["width"]); + $("#formUpload").submit(); + }); + }); +</script> +{% endblock %} \ No newline at end of file diff --git a/apps/member/templates/member/profile_alias.html b/apps/member/templates/member/profile_alias.html index ee2369e4bcfa744e337a0508538f3b5f8d4922b8..d80dfa0b62d605144f94b9ed90e534e55e5b104e 100644 --- a/apps/member/templates/member/profile_alias.html +++ b/apps/member/templates/member/profile_alias.html @@ -1,4 +1,7 @@ -{% extends "member/profile_detail.html" %} +{% extends "member/base.html" %} +{% comment %} +SPDX-License-Identifier: GPL-3.0-or-later +{% endcomment %} {% load static django_tables2 i18n %} {% block profile_content %} diff --git a/apps/member/templates/member/profile_detail.html b/apps/member/templates/member/profile_detail.html index 9df28c9fe365550ace46b55943096073ad2ee591..598b291dd1868ff148ddbd8ef4bb4934bb226318 100644 --- a/apps/member/templates/member/profile_detail.html +++ b/apps/member/templates/member/profile_detail.html @@ -1,4 +1,42 @@ {% extends "member/base.html" %} +{% comment %} +SPDX-License-Identifier: GPL-3.0-or-later +{% endcomment %} +{% load render_table from django_tables2 %} +{% load i18n perms %} + +{% block profile_content %} +{% if not object.profile.email_confirmed and "member.change_profile_email_confirmed"|has_perm:user_object.profile %} +<div class="alert alert-warning"> + {% trans "This user doesn't have confirmed his/her e-mail address." %} + <a href="{% url "registration:email_validation_resend" pk=user_object.pk %}"> + {% trans "Click here to resend a validation link." %} + </a> +</div> +{% endif %} + +<div class="card bg-light mb-3"> + <div class="card-header position-relative" id="clubListHeading"> + <a class="font-weight-bold"> + <i class="fa fa-users"></i> {% trans "View my memberships" %} + </a> + </div> + {% render_table club_list %} +</div> + +<div class="card bg-light"> + <div class="card-header position-relative" id="historyListHeading"> + <a class="stretched-link font-weight-bold text-decoration-none" + {% if "note.view_note"|has_perm:user_object.note %} + href="{% url 'note:transactions' pk=user_object.note.pk %}" {% endif %}> + <i class="fa fa-euro"></i> {% trans "Transaction history" %} + </a> + </div> + <div id="history_list"> + {% render_table history_list %} + </div> +</div> +{% endblock %} {% block extrajavascript %} <script> diff --git a/apps/member/templates/member/profile_info.html b/apps/member/templates/member/profile_info.html deleted file mode 100644 index 3fbf5e3dcc96be54a96eb623e17c94256b2f6122..0000000000000000000000000000000000000000 --- a/apps/member/templates/member/profile_info.html +++ /dev/null @@ -1,71 +0,0 @@ -{% load i18n pretty_money perms %} - -<div class="card bg-light"> - <h4 class="card-header text-center"> - {% trans "Account #" %}{{ user_object.pk }} - </h4> - <div class="card-top text-center"> - <a href="{% url 'member:user_update_pic' user_object.pk %}"> - <img src="{{ user_object.note.display_image.url }}" class="img-thumbnail mt-2"> - </a> - </div> - <div class="card-body" id="profile_infos"> - <dl class="row"> - <dt class="col-xl-6">{% trans 'name'|capfirst %}, {% trans 'first name' %}</dt> - <dd class="col-xl-6">{{ user_object.last_name }} {{ user_object.first_name }}</dd> - - <dt class="col-xl-6">{% trans 'username'|capfirst %}</dt> - <dd class="col-xl-6">{{ user_object.username }}</dd> - - {% if user_object.pk == user.pk %} - <dt class="col-xl-6">{% trans 'password'|capfirst %}</dt> - <dd class="col-xl-6"> - <a class="small" href="{% url 'password_change' %}"> - {% trans 'Change password' %} - </a> - </dd> - {% endif %} - - <dt class="col-xl-6">{% trans 'section'|capfirst %}</dt> - <dd class="col-xl-6">{{ user_object.profile.section }}</dd> - - <dt class="col-xl-6">{% trans 'email'|capfirst %}</dt> - <dd class="col-xl-6"><a href="mailto:{{ user_object.email }}">{{ user_object.email }}</a></dd> - - <dt class="col-xl-6">{% trans 'phone number'|capfirst %}</dt> - <dd class="col-xl-6"><a - href="tel:{{ user_object.profile.phone_number }}">{{ user_object.profile.phone_number }}</a></dd> - - <dt class="col-xl-6">{% trans 'address'|capfirst %}</dt> - <dd class="col-xl-6">{{ user_object.profile.address }}</dd> - - {% if "note.view_note"|has_perm:user_object.note %} - <dt class="col-xl-6">{% trans 'balance'|capfirst %}</dt> - <dd class="col-xl-6">{{ user_object.note.balance | pretty_money }}</dd> - - <dt class="col-xl-6">{% trans 'paid'|capfirst %}</dt> - <dd class="col-xl-6">{{ user_object.profile.paid|yesno }}</dd> - {% endif %} - </dl> - - <h4><a href="{% url 'member:user_alias' user_object.pk %}">{% trans 'aliases'|capfirst %}</a></h4> - {% for alias in user_object.note.alias_set.all %} - <span class="badge badge-secondary">{{ alias }}</span> - {% endfor %} - </div> - <div class="card-footer"> - <a class="btn btn-sm btn-secondary" href="{% url 'member:user_update_profile' user_object.pk %}"> - <i class="fa fa-edit"></i> {% trans 'Update Profile' %} - </a> - {% url 'member:user_detail' user_object.pk as user_profile_url %} - {% if request.path_info != user_profile_url %} - <a class="btn btn-sm btn-primary" href="{{ user_profile_url }}">{% trans 'View Profile' %}</a> - {% endif %} - </div> -</div> - -{% if user_object.pk == user_object.pk %} -<a class="small float-right text-decoration-none" href="{% url 'member:auth_token' %}"> - {% trans 'Manage auth token' %} -</a> -{% endif %} \ No newline at end of file diff --git a/apps/member/templates/member/profile_picture_update.html b/apps/member/templates/member/profile_picture_update.html deleted file mode 100644 index c50a82996b010535a06aca837e29a5c9239c82a0..0000000000000000000000000000000000000000 --- a/apps/member/templates/member/profile_picture_update.html +++ /dev/null @@ -1,5 +0,0 @@ -{% extends "member/profile_detail.html" %} - -{% block profile_content%} -{% include "member/picture_update.html" %} -{% endblock%} diff --git a/apps/member/templates/member/profile_tables.html b/apps/member/templates/member/profile_tables.html deleted file mode 100644 index 6c4cf662bfe7a06420b519763c64331fa35d9d3e..0000000000000000000000000000000000000000 --- a/apps/member/templates/member/profile_tables.html +++ /dev/null @@ -1,32 +0,0 @@ -{% load render_table from django_tables2 %} -{% load i18n %} -{% load perms %} - -{% if not object.profile.email_confirmed and "member.change_profile_email_confirmed"|has_perm:user_object.profile %} - <div class="alert alert-warning"> - {% trans "This user doesn't have confirmed his/her e-mail address." %} - <a href="{% url "registration:email_validation_resend" pk=user_object.pk %}">{% trans "Click here to resend a validation link." %}</a> - </div> -{% endif %} - -<div class="card"> - <div class="card-header position-relative" id="clubListHeading"> - <a class="font-weight-bold"> - <i class="fa fa-users"></i> {% trans "View my memberships" %} - </a> - </div> - {% render_table club_list %} -</div> - -<hr> - -<div class="card"> - <div class="card-header position-relative" id="historyListHeading"> - <a class="stretched-link font-weight-bold" {% if "note.view_note"|has_perm:user_object.note %} href="{% url 'note:transactions' pk=user_object.note.pk %}" {% endif %}> - <i class="fa fa-euro"></i> {% trans "Transaction history" %} - </a> - </div> - <div id="history_list"> - {% render_table history_list %} - </div> -</div> diff --git a/apps/member/templates/member/profile_update.html b/apps/member/templates/member/profile_update.html index 19d971892bd038c28464b39393c2abec8ceab9f1..a50f4afd33e98db7410fd9be5e66f0335feface1 100644 --- a/apps/member/templates/member/profile_update.html +++ b/apps/member/templates/member/profile_update.html @@ -1,11 +1,11 @@ -{% extends "base.html" %} -{% load i18n crispy_forms_tags %} +{% extends "member/base.html" %} {% comment %} SPDX-License-Identifier: GPL-3.0-or-later {% endcomment %} +{% load i18n crispy_forms_tags %} {% block contenttitle %}{% endblock %} -{% block content %} +{% block profile_content %} <div class="card bg-light"> <h3 class="card-header text-center"> {{ title }} diff --git a/apps/member/views.py b/apps/member/views.py index 267ae6580096c09b35d58927bc3747dffc4011d3..e7dc99252e48056be360b5a8883b7992fc7d2551 100644 --- a/apps/member/views.py +++ b/apps/member/views.py @@ -273,7 +273,7 @@ class PictureUpdateView(ProtectQuerysetMixin, LoginRequiredMixin, FormMixin, Det class ProfilePictureUpdateView(PictureUpdateView): model = User - template_name = 'member/profile_picture_update.html' + template_name = 'member/picture_update.html' context_object_name = 'user_object' @@ -452,7 +452,7 @@ class ClubPictureUpdateView(PictureUpdateView): Update the profile picture of a club. """ model = Club - template_name = 'member/club_picture_update.html' + template_name = 'member/picture_update.html' context_object_name = 'club' def get_success_url(self): diff --git a/apps/note/templates/note/search_transactions.html b/apps/note/templates/note/search_transactions.html index 2364a0b336e8d1e1c312378239128b2548438052..2a952e5afb3aecfc468f59b7d19b2a30e3bf1be6 100644 --- a/apps/note/templates/note/search_transactions.html +++ b/apps/note/templates/note/search_transactions.html @@ -1,65 +1,67 @@ -{% extends "member/base.html" %} +{% extends "base.html" %} +{% comment %} +SPDX-License-Identifier: GPL-3.0-or-later +{% endcomment %} {% load render_table from django_tables2 %} {% load crispy_forms_tags %} +{% block contenttitle %}{% endblock %} -{% block profile_info %} - {% if note.club.weiclub %} - {% with club=note.club.weiclub %} - {% include "wei/weiclub_info.html" %} - {% endwith %} - {% elif note.club %} - {% with club=note.club %} - {% include "member/club_info.html" %} - {% endwith %} - {% elif note.user %} - {% with user_object=note.user %} - {% include "member/profile_info.html" %} - {% endwith %} - {% endif %} -{% endblock %} - -{% block profile_content %} - {% crispy form %} -{% endblock %} +{# Use a fluid-width container #} +{% block containertype %}container-fluid{% endblock %} {% block content %} - {{ block.super }} - <div id="table"> - {% render_table table %} +<div class="row mt-4"> + <div class="col-xl-4"> + <div class="card bg-light mb-3"> + <h3 class="card-header text-center"> + {{ title }} + </h3> + <div class="card-body"> + {% crispy form %} + </div> + </div> + </div> + <div class="col-xl-8"> + <div class="card bg-light"> + <div id="table"> + {% render_table table %} + </div> + </div> </div> +</div> {% endblock %} {% block extrajavascript %} - <script> - function refreshHistory() { - $("#history_list").load("{% url 'note:transactions' pk=object.pk %} #history_list"); - $("#profile_infos").load("{% url 'note:transactions' pk=object.pk %} #profile_infos"); - } +<script> + function refreshHistory() { + $("#history_list").load("{% url 'note:transactions' pk=object.pk %} #history_list"); + $("#profile_infos").load("{% url 'note:transactions' pk=object.pk %} #profile_infos"); + } - function refreshFilters() { - let filters = ""; - filters += "source=" + $("#id_source_pk").val(); - filters += "&destination=" + $("#id_destination_pk").val(); - filters += $("input[name='type']:checked").map(function() { - return "&type=" + $(this).val(); - }).toArray().join(""); - filters += "&reason=" + $("#id_reason").val(); - filters += "&valid=" + ($("#id_valid").is(":checked") ? "1" : ""); - filters += "&amount_gte=" + $("#id_amount_gte").val(); - filters += "&amount_lte=" + $("#id_amount_lte").val(); - filters += "&created_after=" + $("#id_created_after").val(); - filters += "&created_before=" + $("#id_created_before").val(); - console.log(filters.replace(" ", "%20")); - $("#table").load(location.pathname + "?" + filters.replaceAll(" ", "%20") + " #table"); - } + function refreshFilters() { + let filters = ""; + filters += "source=" + $("#id_source_pk").val(); + filters += "&destination=" + $("#id_destination_pk").val(); + filters += $("input[name='type']:checked").map(function () { + return "&type=" + $(this).val(); + }).toArray().join(""); + filters += "&reason=" + $("#id_reason").val(); + filters += "&valid=" + ($("#id_valid").is(":checked") ? "1" : ""); + filters += "&amount_gte=" + $("#id_amount_gte").val(); + filters += "&amount_lte=" + $("#id_amount_lte").val(); + filters += "&created_after=" + $("#id_created_after").val(); + filters += "&created_before=" + $("#id_created_before").val(); + console.log(filters.replace(" ", "%20")); + $("#table").load(location.pathname + "?" + filters.replaceAll(" ", "%20") + " #table"); + } - function autocompleted() { - refreshFilters(); - } + function autocompleted() { + refreshFilters(); + } - $(document).ready(function() { - $("input").change(refreshFilters); - $("input").keyup(refreshFilters); - }); - </script> + $(document).ready(function () { + $("input").change(refreshFilters); + $("input").keyup(refreshFilters); + }); +</script> {% endblock %} \ No newline at end of file diff --git a/apps/wei/templates/wei/weiclub_detail.html b/apps/wei/templates/wei/weiclub_detail.html index 4282964cd183b8f65807fb57f4646fc07efd352b..52d918f112e954cb33bc4e0121a72a9d4ef9d2fb 100644 --- a/apps/wei/templates/wei/weiclub_detail.html +++ b/apps/wei/templates/wei/weiclub_detail.html @@ -1,8 +1,5 @@ {% extends "wei/base.html" %} -{# Use a fluid-width container #} -{% block containertype %}container-fluid{% endblock %} - {% block profile_info %} {% include "wei/weiclub_info.html" %} {% endblock %} diff --git a/note_kfet/inputs.py b/note_kfet/inputs.py index 45365bbdab73b6dc4f059f19ffae8149826dc28b..df5fc068ec7f24308a779343078680f4272f8b75 100644 --- a/note_kfet/inputs.py +++ b/note_kfet/inputs.py @@ -21,7 +21,7 @@ class AmountInput(NumberInput): class Autocomplete(TextInput): - template_name = "member/autocomplete_model.html" + template_name = "autocomplete_model.html" def __init__(self, model, resetable=False, attrs=None): super().__init__(attrs) diff --git a/apps/member/templates/member/autocomplete_model.html b/note_kfet/templates/autocomplete_model.html similarity index 100% rename from apps/member/templates/member/autocomplete_model.html rename to note_kfet/templates/autocomplete_model.html