fix: merge main branch and renumber migration 027→037
Resolve 3 merge conflicts and renumber the automation_hooks migration to follow main's migration chain (036_add_document_translation_fields). Conflicts resolved: - app/api/__init__.py: add automation_router alongside main's new routers - app/utils/settings_service.py: add automation_hooks_enabled alongside compliance_enabled - tests/conftest.py: add AutomationHook alongside AuditLog/ComplianceTemplate imports Migration renumbered: - 027_add_automation_hooks → 037_add_automation_hooks - down_revision: 026_add_scheduled_jobs → 036_add_document_translation_fields Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
{% extends "base.html" %}
|
||||
{% block title %}Search Documents - DocuElevate{% endblock %}
|
||||
{% block title %}{{ _("search.page_title") }} - DocuElevate{% endblock %}
|
||||
|
||||
{% block head_extra %}
|
||||
<script src="/static/js/common.js"></script>
|
||||
@@ -121,74 +121,74 @@
|
||||
{% block content %}
|
||||
<div class="container mx-auto px-4 py-8">
|
||||
<div class="search-container">
|
||||
<h1 class="text-3xl font-bold mb-6"><i class="fas fa-search text-blue-500" aria-hidden="true"></i> Document Search</h1>
|
||||
<h1 class="text-3xl font-bold mb-6"><i class="fas fa-search text-blue-500" aria-hidden="true"></i> {{ _("search.heading") }}</h1>
|
||||
|
||||
<!-- Search box -->
|
||||
<div class="search-box" role="search">
|
||||
<label for="search-input" class="sr-only">Search documents</label>
|
||||
<label for="search-input" class="sr-only">{{ _("search.input_aria_label") }}</label>
|
||||
<input
|
||||
type="search"
|
||||
id="search-input"
|
||||
placeholder="Search documents by content, sender, tags, type..."
|
||||
placeholder="{{ _('search.input_placeholder') }}"
|
||||
value="{{ query }}"
|
||||
autofocus
|
||||
>
|
||||
<button type="button" id="search-btn" aria-label="Search documents">
|
||||
<i class="fas fa-search" aria-hidden="true"></i> Search
|
||||
<button type="button" id="search-btn" aria-label="{{ _('search.input_aria_label') }}">
|
||||
<i class="fas fa-search" aria-hidden="true"></i> {{ _("search.button") }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<!-- Content-finding filters -->
|
||||
<div class="search-filters" id="search-filters">
|
||||
<div class="search-filter-item">
|
||||
<label for="filter-document-type">Document Type</label>
|
||||
<input type="text" id="filter-document-type" placeholder="e.g. Invoice" aria-label="Filter by document type">
|
||||
<label for="filter-document-type">{{ _("search.filter_document_type") }}</label>
|
||||
<input type="text" id="filter-document-type" placeholder="{{ _('search.filter_document_type_placeholder') }}" aria-label="{{ _('search.filter_aria_document_type') }}">
|
||||
</div>
|
||||
<div class="search-filter-item">
|
||||
<label for="filter-tags">Tags</label>
|
||||
<input type="text" id="filter-tags" placeholder="e.g. amazon" aria-label="Filter by tag">
|
||||
<label for="filter-tags">{{ _("search.filter_tags") }}</label>
|
||||
<input type="text" id="filter-tags" placeholder="{{ _('search.filter_tags_placeholder') }}" aria-label="{{ _('search.filter_aria_tag') }}">
|
||||
</div>
|
||||
<div class="search-filter-item">
|
||||
<label for="filter-sender">Sender</label>
|
||||
<input type="text" id="filter-sender" placeholder="e.g. ACME Corp" aria-label="Filter by sender">
|
||||
<label for="filter-sender">{{ _("search.filter_sender") }}</label>
|
||||
<input type="text" id="filter-sender" placeholder="{{ _('search.filter_sender_placeholder') }}" aria-label="{{ _('search.filter_aria_sender') }}">
|
||||
</div>
|
||||
<div class="search-filter-item">
|
||||
<label for="filter-language">Language</label>
|
||||
<input type="text" id="filter-language" placeholder="e.g. de" aria-label="Filter by language code">
|
||||
<label for="filter-language">{{ _("search.filter_language") }}</label>
|
||||
<input type="text" id="filter-language" placeholder="{{ _('search.filter_language_placeholder') }}" aria-label="{{ _('search.filter_aria_language') }}">
|
||||
</div>
|
||||
<div class="search-filter-item">
|
||||
<label for="filter-text-quality">Text Quality</label>
|
||||
<select id="filter-text-quality" aria-label="Filter by OCR text quality">
|
||||
<option value="">All</option>
|
||||
<option value="high">High</option>
|
||||
<option value="medium">Medium</option>
|
||||
<option value="low">Low</option>
|
||||
<option value="no_text">No text</option>
|
||||
<label for="filter-text-quality">{{ _("search.filter_text_quality") }}</label>
|
||||
<select id="filter-text-quality" aria-label="{{ _('search.filter_aria_text_quality') }}">
|
||||
<option value="">{{ _("search.filter_text_quality_all") }}</option>
|
||||
<option value="high">{{ _("search.filter_text_quality_high") }}</option>
|
||||
<option value="medium">{{ _("search.filter_text_quality_medium") }}</option>
|
||||
<option value="low">{{ _("search.filter_text_quality_low") }}</option>
|
||||
<option value="no_text">{{ _("search.filter_text_quality_no_text") }}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="search-filter-item">
|
||||
<label for="filter-date-from">Date From</label>
|
||||
<input type="date" id="filter-date-from" aria-label="Filter from date">
|
||||
<label for="filter-date-from">{{ _("search.filter_date_from") }}</label>
|
||||
<input type="date" id="filter-date-from" aria-label="{{ _('search.filter_aria_date_from') }}">
|
||||
</div>
|
||||
<div class="search-filter-item">
|
||||
<label for="filter-date-to">Date To</label>
|
||||
<input type="date" id="filter-date-to" aria-label="Filter to date">
|
||||
<label for="filter-date-to">{{ _("search.filter_date_to") }}</label>
|
||||
<input type="date" id="filter-date-to" aria-label="{{ _('search.filter_aria_date_to') }}">
|
||||
</div>
|
||||
<div class="search-filter-item" style="align-self: flex-end;">
|
||||
<button type="button" id="clear-filters-btn" style="padding: 0.4rem 0.75rem; border: 1px solid #d1d5db; border-radius: 0.375rem; font-size: 0.8rem; cursor: pointer; background: white; color: #374151;" aria-label="Clear all filters">
|
||||
Clear Filters
|
||||
<button type="button" id="clear-filters-btn" style="padding: 0.4rem 0.75rem; border: 1px solid #d1d5db; border-radius: 0.375rem; font-size: 0.8rem; cursor: pointer; background: white; color: #374151;" aria-label="{{ _('search.filter_aria_clear') }}">
|
||||
{{ _("search.filter_clear_button") }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Saved Searches -->
|
||||
<div class="search-saved-bar" id="saved-searches-bar">
|
||||
<span class="saved-label"><i class="fas fa-bookmark" aria-hidden="true"></i> Saved Searches:</span>
|
||||
<span class="saved-label"><i class="fas fa-bookmark" aria-hidden="true"></i> {{ _("search.saved_label") }}:</span>
|
||||
<span id="saved-searches-list" aria-live="polite" style="display: flex; gap: 0.25rem; flex-wrap: wrap;">
|
||||
<span style="color: #9ca3af; font-size: 0.85rem;">Loading...</span>
|
||||
<span style="color: #9ca3af; font-size: 0.85rem;">{{ _("search.saved_loading") }}</span>
|
||||
</span>
|
||||
<button type="button" id="save-search-btn" class="btn-save-search" aria-label="Save current search and filters as a saved search">
|
||||
<i class="fas fa-plus" aria-hidden="true"></i> Save Current
|
||||
<button type="button" id="save-search-btn" class="btn-save-search" aria-label="{{ _('search.saved_aria_save') }}">
|
||||
<i class="fas fa-plus" aria-hidden="true"></i> {{ _("search.saved_button") }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user