Initial implementation of a studentcard abgleich.
Release Inventarsystem / release-docker (push) Successful in 2m15s
Release Inventarsystem / release-docker (push) Successful in 2m15s
This commit is contained in:
@@ -45,6 +45,33 @@
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.rollover-box {
|
||||
background: #fff3cd;
|
||||
border: 1px solid #ffeeba;
|
||||
border-radius: 6px;
|
||||
padding: 10px 12px;
|
||||
margin-top: 4px;
|
||||
}
|
||||
|
||||
.rollover-label {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
cursor: pointer;
|
||||
font-size: 13px;
|
||||
color: #856404;
|
||||
font-weight: 700;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.rollover-hint {
|
||||
display: block;
|
||||
margin-top: 4px;
|
||||
font-size: 11px;
|
||||
color: #856404;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
.form-row {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
@@ -303,7 +330,7 @@
|
||||
placeholder="z.B. Max Mustermann">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="class_name">Klasse (optional)</label>
|
||||
<label for="class_name">Klasse</label>
|
||||
<input type="text" id="class_name" name="class_name" list="class_list"
|
||||
value="{{ form_data.get('class_name', '') }}"
|
||||
placeholder="z.B. 10A (Tippen oder Auswählen)">
|
||||
@@ -318,22 +345,22 @@
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-group">
|
||||
<label for="ausweis_id">Ausweis-ID (optional)</label>
|
||||
<label for="ausweis_id">Ausweis-ID</label>
|
||||
<input type="text" id="ausweis_id" name="ausweis_id"
|
||||
value="{{ form_data.get('ausweis_id', '') }}"
|
||||
placeholder="z.B. SIS2024001">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="ausweis_ident">Lokales Differenzierungsmerkmal (optional aber empfohlen)</label>
|
||||
<label for="ausweis_ident">Lokales Differenzierungsmerkmal</label>
|
||||
<input type="text" id="ausweis_ident" name="ausweis_ident"
|
||||
value="{{ form_data.get('ausweis_ident', '') }}"
|
||||
placeholder="z.B. xw5oo123bbe">
|
||||
placeholder="z.B. xw5oo123bbe">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<div class="form-group">
|
||||
<label for="default_borrow_days">Standard Ausleihdauer (Tage) (optional)</label>
|
||||
<label for="default_borrow_days">Standard Ausleihdauer (Tage) *</label>
|
||||
<input type="number" id="default_borrow_days" name="default_borrow_days"
|
||||
min="1" max="365" required
|
||||
value="{{ form_data.get('default_borrow_days', config.get('default', 14)) }}">
|
||||
@@ -359,16 +386,29 @@
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<!-- Excel-Import -->
|
||||
<!-- Excel-Import mit Abgleich (Rollover-Modus) -->
|
||||
<div class="import-card">
|
||||
<div>
|
||||
<h3 style="margin:0 0 8px 0;">Excel-Import</h3>
|
||||
<p style="margin:0 0 15px 0; color:#555; font-size:13px; line-height:1.4;">
|
||||
<p style="margin:0 0 12px 0; color:#555; font-size:13px; line-height:1.4;">
|
||||
Laden Sie eine <strong>.xlsx</strong>- oder <strong>.csv</strong>-Datei hoch (z. B. aus <strong>ASV</strong>). Erkannt werden Name, Nachname, Klasse, Ausweis-ID, lokales Differenzierungsmerkmal, Notizen & Ausleihdauer.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<form method="POST" action="{{ url_for('upload_student_cards_excel') }}" enctype="multipart/form-data" style="display:flex; flex-direction:column; gap:12px;">
|
||||
<input type="file" name="student_cards_excel" accept=".xlsx,.csv" required style="font-size:13px;">
|
||||
|
||||
<!-- Rollover / Abgleich Option -->
|
||||
<div class="rollover-box">
|
||||
<label class="rollover-label">
|
||||
<input type="checkbox" name="rollover_mode" value="true">
|
||||
<span>Rollover-Modus (Abgleich / Destruktiv)</span>
|
||||
</label>
|
||||
<span class="rollover-hint">
|
||||
⚠️ <strong>Warnung:</strong> Nicht mehr vorhandene Ausweise/Schüler werden beim Import entfernt bzw. abgeglichen.
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div style="display:flex; gap:8px;">
|
||||
<button type="submit" class="btn btn-secondary" name="excel_action" value="validate" style="flex:1;">Validieren</button>
|
||||
<button type="submit" class="btn btn-primary" name="excel_action" value="import" style="flex:1;">Importieren</button>
|
||||
|
||||
Reference in New Issue
Block a user