manager: fix column width of booking check table (#52677)

This commit is contained in:
Frédéric Péters 2021-04-02 15:12:50 +02:00
parent 46cf0f6923
commit 8c2f5ceb4e
4 changed files with 50 additions and 39 deletions

View File

@ -368,6 +368,20 @@ p.email-subject {
text-align: center;
}
table.check-bookings {
td.booking-username {
width: 30%;
}
td.booking-status {
width: 20%;
}
td.booking-actions {
form {
display: inline-block;
}
}
}
// booking colors
$booking-colors: (
0: hsl(30, 100%, 46%),

View File

@ -14,7 +14,7 @@
{% blocktrans with places=object.places booked_places=booked|length %}Bookings ({{ booked_places }}/{{ places }}){% endblocktrans %}
</h3>
<div>
<table class="main">
<table class="main check-bookings">
<tbody>
{% for booking in booked %}
<tr class="booking">

View File

@ -1,27 +1,32 @@
{% load i18n %}
<td>{{ booking.user_name|default:booking.label|default:_('Unknown') }}</td>
<td>
{% trans "Status:" %} {{ booking.user_was_present|yesno:_('Present,Absent,Unknown') }}
{% if booking.user_was_present is False %}
<br />
{{ booking.user_absence_reason }}
<td class="booking-username">{{ booking.user_name|default:booking.label|default:_('Unknown') }}</td>
<td class="booking-status">
{{ booking.user_was_present|yesno:_('Present,Absent,-') }}
{% if booking.user_was_present is False and booking.user_absence_reason %}
({{ booking.user_absence_reason }})
{% endif %}
</td>
<td>
{% if booking.user_was_present is not True %}
<td class="booking-actions" data-booking-id="{{ booking.id }}">
<form method="post" action="{% url 'chrono-manager-booking-presence' pk=agenda.pk booking_pk=booking.pk %}">
{% csrf_token %}
<button class="submit-button">{% trans "Presence" %}</button>
<button class="submit-button"
{% if booking.user_was_present is True %}disabled{% endif %}
>{% trans "Presence" %}</button>
</form>
{% endif %}
</td>
<td>
{% if booking.user_was_present is not False or booking.form.reason.field.choices.1 %}
<form method="post" action="{% url 'chrono-manager-booking-absence' pk=agenda.pk booking_pk=booking.pk %}">
{% csrf_token %}
<button class="submit-button"
{% if booking.user_was_present is False %}disabled{% endif %}
>{% trans "Absence" %}</button>
{% if booking.form.reason.field.choices.1 %}{{ booking.form.reason }}{% endif %}
<button class="submit-button">{% if booking.user_was_present is False %}{% trans "Set absence reason" %}{% else %}{% trans "Absence" %}{% endif %}</button>
<script>
$(function() {
$('td[data-booking-id="{{ booking.id }}"] select').on('change',
function() {
$(this).parents('form').submit();
});
});
</script>
</form>
{% endif %}
</td>

View File

@ -1172,11 +1172,10 @@ def test_event_check_booking(app, admin_user):
login(app)
resp = app.get('/manage/agendas/%s/events/%s/check' % (agenda.pk, event.pk))
assert 'Status: Unknown' in resp
assert resp.pyquery.find('td.booking-status')[0].text.strip() == '-'
assert len(resp.pyquery.find('td.booking-actions button[disabled]')) == 0
assert '/manage/agendas/%s/bookings/%s/presence' % (agenda.pk, booking.pk) in resp
assert 'Presence' in resp
assert '/manage/agendas/%s/bookings/%s/absence' % (agenda.pk, booking.pk) in resp
assert 'Absence' in resp
# set as present
token = resp.context['csrf_token']
@ -1184,10 +1183,9 @@ def test_event_check_booking(app, admin_user):
'/manage/agendas/%s/bookings/%s/presence' % (agenda.pk, booking.pk),
params={'csrfmiddlewaretoken': token},
).follow()
assert 'Status: Present' in resp
assert '/manage/agendas/%s/bookings/%s/presence' % (agenda.pk, booking.pk) not in resp
assert '/manage/agendas/%s/bookings/%s/absence' % (agenda.pk, booking.pk) in resp
assert 'Absence' in resp
assert resp.pyquery.find('td.booking-status')[0].text.strip() == 'Present'
assert len(resp.pyquery.find('td.booking-actions button[disabled]')) == 1
assert resp.pyquery.find('td.booking-actions button[disabled]')[0].text == 'Presence'
booking.refresh_from_db()
assert booking.user_was_present is True
assert booking.user_absence_reason == ''
@ -1197,10 +1195,9 @@ def test_event_check_booking(app, admin_user):
'/manage/agendas/%s/bookings/%s/absence' % (agenda.pk, booking.pk),
params={'csrfmiddlewaretoken': token},
).follow()
assert 'Status: Absent' in resp
assert '/manage/agendas/%s/bookings/%s/presence' % (agenda.pk, booking.pk) in resp
assert 'Presence' in resp
assert '/manage/agendas/%s/bookings/%s/absence' % (agenda.pk, booking.pk) not in resp
assert resp.pyquery.find('td.booking-status')[0].text.strip() == 'Absent'
assert len(resp.pyquery.find('td.booking-actions button[disabled]')) == 1
assert resp.pyquery.find('td.booking-actions button[disabled]')[0].text == 'Absence'
booking.refresh_from_db()
assert booking.user_was_present is False
assert booking.user_absence_reason == ''
@ -1208,12 +1205,11 @@ def test_event_check_booking(app, admin_user):
agenda.absence_reasons_group = group
agenda.save()
resp = app.get('/manage/agendas/%s/events/%s/check' % (agenda.pk, event.pk))
assert '/manage/agendas/%s/bookings/%s/absence' % (agenda.pk, booking.pk) not in resp
assert len(resp.pyquery.find('td.booking-actions select')) == 0
AbsenceReason.objects.create(label='Foo reason', group=group)
resp = app.get('/manage/agendas/%s/events/%s/check' % (agenda.pk, event.pk))
assert '/manage/agendas/%s/bookings/%s/absence' % (agenda.pk, booking.pk) in resp
assert 'Set absence reason' in resp
assert len(resp.pyquery.find('td.booking-actions select')) == 1
# set as absent with reason
resp = app.post(
@ -1259,10 +1255,9 @@ def test_event_check_booking_ajax(app, admin_user):
extra_environ={'HTTP_X_REQUESTED_WITH': 'XMLHttpRequest'},
)
assert '<tr>' not in resp # because this is a fragment
assert 'Status: Present' in resp
assert '/manage/agendas/%s/bookings/%s/presence' % (agenda.pk, booking.pk) not in resp
assert '/manage/agendas/%s/bookings/%s/absence' % (agenda.pk, booking.pk) in resp
assert 'Absence' in resp
assert resp.pyquery.find('td.booking-status')[0].text.strip() == 'Present'
assert len(resp.pyquery.find('td.booking-actions button[disabled]')) == 1
assert resp.pyquery.find('td.booking-actions button[disabled]')[0].text == 'Presence'
# set as absent
resp = app.post(
@ -1271,9 +1266,6 @@ def test_event_check_booking_ajax(app, admin_user):
extra_environ={'HTTP_X_REQUESTED_WITH': 'XMLHttpRequest'},
)
assert '<tr>' not in resp # because this is a fragment
assert 'Status: Absent' in resp
assert '/manage/agendas/%s/bookings/%s/presence' % (agenda.pk, booking.pk) in resp
assert 'Presence' in resp
assert '/manage/agendas/%s/bookings/%s/absence' % (agenda.pk, booking.pk) in resp
assert 'Set absence reason' in resp
assert len(resp.pyquery.find('td.booking-actions button[disabled]')) == 1
assert resp.pyquery.find('td.booking-actions button[disabled]')[0].text.startswith('Absence')
assert '<option value="Foo reason" selected>Foo reason</option>' in resp