Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0be4e3ca58 | |||
| e2aeea46f9 | |||
| 865fddd45b |
@@ -265,7 +265,9 @@ def remove_done():
|
||||
|
||||
|
||||
def get_upcoming_for_user(user: str, limit: int = 25):
|
||||
"""Return upcoming appointment plans for a user, matching by encrypted username."""
|
||||
"""
|
||||
Return upcoming appointment plans for a user, handling encrypted database records.
|
||||
"""
|
||||
try:
|
||||
if hasattr(globals(), 'remove_done'):
|
||||
remove_done()
|
||||
@@ -279,22 +281,26 @@ def get_upcoming_for_user(user: str, limit: int = 25):
|
||||
items = db['appointments']
|
||||
|
||||
today = datetime.date.today().strftime('%Y-%m-%d')
|
||||
|
||||
encrypted_user = dp.encrypt_text(str(user or '').strip())
|
||||
target_user = str(user or '').strip()
|
||||
|
||||
cursor = items.find(
|
||||
_active_record_query(
|
||||
{
|
||||
'user': encrypted_user,
|
||||
'date_end': {'$gte': today},
|
||||
}
|
||||
)
|
||||
_active_record_query({
|
||||
'date_end': {'$gte': today},
|
||||
})
|
||||
).sort('date_start', 1)
|
||||
|
||||
results = []
|
||||
for item in cursor:
|
||||
item['_id'] = str(item.get('_id'))
|
||||
results.append(_decrypt_appointment(item))
|
||||
decrypted_item = _decrypt_appointment(item)
|
||||
if not decrypted_item:
|
||||
continue
|
||||
|
||||
if decrypted_item.get('user', '').strip() != target_user:
|
||||
continue
|
||||
|
||||
decrypted_item['_id'] = str(decrypted_item.get('_id'))
|
||||
results.append(decrypted_item)
|
||||
|
||||
if len(results) >= max(1, int(limit)):
|
||||
break
|
||||
|
||||
|
||||
@@ -374,7 +374,6 @@ def main():
|
||||
upcoming_events = appointment_service.get_user_upcoming_events(current_user) if current_user else []
|
||||
tenant_id = _current_tenant_id()
|
||||
|
||||
flash(f'{upcoming_events[0].title}' if upcoming_events else 'No upcoming events', 'info')
|
||||
|
||||
return render_template(
|
||||
'terminplaner.html',
|
||||
|
||||
@@ -155,7 +155,7 @@
|
||||
const slotLengthInput = document.getElementById('slot_length');
|
||||
const clientsperslot = document.getElementById('clients_per_slot')
|
||||
const slotsAmountsInput = document.getElementById('slots_amounts');
|
||||
const slotsAmountsDisplay = document.getElementById('slots_amounts_display'); // Neu: Anzeige-Element
|
||||
const slotsAmountsDisplay = document.getElementById('slots_amounts_display');
|
||||
|
||||
if (!startDateInput || !endDateInput || !buildButton || !daysContainer || !timeFrameTextarea) {
|
||||
return;
|
||||
@@ -442,6 +442,19 @@
|
||||
if (startDateInput.value && endDateInput.value) {
|
||||
renderRows();
|
||||
}
|
||||
|
||||
|
||||
const configForm = document.querySelector('form');
|
||||
if (configForm) {
|
||||
configForm.addEventListener('keydown', function(event) {
|
||||
if (event.key === 'Enter') {
|
||||
if (event.target.tagName === 'TEXTAREA') return;
|
||||
if (event.target.tagName === 'BUTTON' && event.target.type === 'submit') return;
|
||||
event.preventDefault();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
})();
|
||||
</script>
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user