Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 92bea9a87e | |||
| 84ac9e812a |
+4
-20
@@ -7060,9 +7060,7 @@ def register():
|
||||
|
||||
permission_preset = (request.form.get('permission_preset') or 'standard_user').strip()
|
||||
use_custom_permissions = request.form.get('use_custom_permissions') == 'on'
|
||||
is_student = bool(request.form.get('is_student')) if cfg.STUDENT_CARDS_MODULE_ENABLED else False
|
||||
student_card_id = us.normalize_student_card_id(request.form.get('student_card_id')) if cfg.STUDENT_CARDS_MODULE_ENABLED else ''
|
||||
max_borrow_days_raw = request.form.get('max_borrow_days') if cfg.STUDENT_CARDS_MODULE_ENABLED else None
|
||||
|
||||
if not username or not password or not name or not last_name:
|
||||
flash('Bitte füllen Sie alle Felder aus', 'error')
|
||||
return redirect(url_for('register'))
|
||||
@@ -7081,28 +7079,14 @@ def register():
|
||||
for endpoint_name, _ in PERMISSION_PAGE_OPTIONS:
|
||||
page_permissions[endpoint_name] = request.form.get(f'page_{endpoint_name}') == 'on'
|
||||
|
||||
max_borrow_days = None
|
||||
if is_student:
|
||||
if not student_card_id:
|
||||
flash('Für Schüler muss eine Ausweis-ID angegeben werden.', 'error')
|
||||
return redirect(url_for('register'))
|
||||
if us.student_card_exists(student_card_id):
|
||||
flash('Die Ausweis-ID ist bereits vergeben.', 'error')
|
||||
return redirect(url_for('register'))
|
||||
try:
|
||||
max_borrow_days = int(max_borrow_days_raw) if max_borrow_days_raw else cfg.STUDENT_DEFAULT_BORROW_DAYS
|
||||
except (TypeError, ValueError):
|
||||
max_borrow_days = cfg.STUDENT_DEFAULT_BORROW_DAYS
|
||||
max_borrow_days = max(1, min(max_borrow_days, cfg.STUDENT_MAX_BORROW_DAYS))
|
||||
|
||||
us.add_user(
|
||||
username,
|
||||
password,
|
||||
name,
|
||||
last_name,
|
||||
is_student=is_student,
|
||||
student_card_id=student_card_id if is_student else None,
|
||||
max_borrow_days=max_borrow_days,
|
||||
is_student=False,
|
||||
student_card_id=None,
|
||||
max_borrow_days=None,
|
||||
permission_preset=permission_preset,
|
||||
action_permissions=action_permissions,
|
||||
page_permissions=page_permissions,
|
||||
|
||||
+4
-4
@@ -71,6 +71,10 @@ def get_current_status(ausleihung, log_changes=False, user=None):
|
||||
# Bei stornierten Ausleihungen bleibt der Status immer storniert
|
||||
if original_status == 'cancelled':
|
||||
return 'cancelled'
|
||||
|
||||
# Wenn die Ausleihung bereits abgeschlossen ist, bleibt sie es
|
||||
if original_status == 'completed':
|
||||
return 'completed'
|
||||
|
||||
current_time = datetime.datetime.now()
|
||||
start_time = ausleihung.get('Start')
|
||||
@@ -79,10 +83,6 @@ def get_current_status(ausleihung, log_changes=False, user=None):
|
||||
# Wenn kein Startdatum vorhanden ist, Status auf 'planned' setzen
|
||||
if not start_time:
|
||||
new_status = 'planned'
|
||||
# Wenn die Ausleihung als 'completed' markiert wurde und ein Enddatum hat,
|
||||
# bleibt sie bei 'completed'
|
||||
elif original_status == 'completed' and end_time:
|
||||
new_status = 'completed'
|
||||
# Wenn die aktuelle Zeit vor dem Startdatum liegt, ist die Ausleihung geplant
|
||||
elif current_time < start_time:
|
||||
# DEBUG: Log info wenn Booking noch lange in der Zukunft ist
|
||||
|
||||
@@ -324,7 +324,8 @@ def _send_web_push_notification(subscription, payload):
|
||||
data=json.dumps(payload),
|
||||
vapid_private_key=VAPID_PRIVATE_KEY,
|
||||
vapid_claims={'sub': VAPID_SUBJECT},
|
||||
timeout=10
|
||||
timeout=10,
|
||||
ttl=3600 # Notification expires after 1 hour if device is offline
|
||||
)
|
||||
|
||||
return True
|
||||
|
||||
@@ -70,27 +70,6 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if student_cards_module_enabled %}
|
||||
<div class="form-group">
|
||||
<label style="display:flex; align-items:center; gap:8px; color:#1f2937;">
|
||||
<input type="checkbox" id="is-student" name="is_student" style="width:auto;">
|
||||
Schülerkonto mit Ausweis
|
||||
</label>
|
||||
<div id="student-fields" style="display:none; margin-top:10px;">
|
||||
<label for="student-card-id">Ausweis-ID</label>
|
||||
<div class="input-container">
|
||||
<span class="input-icon">🪪</span>
|
||||
<input type="text" id="student-card-id" name="student_card_id" placeholder="z.B. S-2026-001">
|
||||
</div>
|
||||
<label for="max-borrow-days" style="margin-top:10px;">Standard-Ausleihdauer (Tage)</label>
|
||||
<div class="input-container">
|
||||
<span class="input-icon">📅</span>
|
||||
<input type="number" id="max-borrow-days" name="max_borrow_days" min="1" max="{{ student_max_borrow_days }}" value="{{ student_default_borrow_days }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="form-group">
|
||||
<label for="permission-preset">Berechtigungs-Preset</label>
|
||||
<select id="permission-preset" name="permission_preset" class="form-select">
|
||||
@@ -561,25 +540,6 @@ document.addEventListener('DOMContentLoaded', function () {
|
||||
passwordInput.addEventListener('blur', updatePasswordRules);
|
||||
updatePasswordRules();
|
||||
}
|
||||
|
||||
{% if student_cards_module_enabled %}
|
||||
const studentCheckbox = document.getElementById('is-student');
|
||||
const studentFields = document.getElementById('student-fields');
|
||||
const studentCardInput = document.getElementById('student-card-id');
|
||||
|
||||
if (!studentCheckbox || !studentFields || !studentCardInput) {
|
||||
return;
|
||||
}
|
||||
|
||||
function toggleStudentFields() {
|
||||
const isChecked = studentCheckbox.checked;
|
||||
studentFields.style.display = isChecked ? 'block' : 'none';
|
||||
studentCardInput.required = isChecked;
|
||||
}
|
||||
|
||||
studentCheckbox.addEventListener('change', toggleStudentFields);
|
||||
toggleStudentFields();
|
||||
{% endif %}
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user