Suche konsolidiert, unterscheidet nicht mehr nach Abschnittstyp. Möglicherweise optimierungswürdig

This commit is contained in:
2025-10-21 15:55:49 +02:00
parent a08e2186f3
commit 4d713b3763
4 changed files with 14 additions and 49 deletions

View File

@@ -28,6 +28,6 @@
<div class="flex-fill">{% block content %}Main Content{% endblock %}</div>
<div class="col-md-2">{% block sidebar_right %}{% endblock %}</div>
</div>
<div>VorgabenUI v0.927</div>
<div>VorgabenUI v0.930</div>
</body>
</html>

View File

@@ -12,9 +12,9 @@
{% endfor %}
{% endif %}
{% if resultat.kurztext %}
<h2>Vorgaben mit "{{ suchbegriff }}" im Kurztext</h2>
{% for standard, vorgaben in resultat.kurztext.items %}
{% if resultat.all %}
<h2>Vorgaben mit "{{ suchbegriff }}"</h2>
{% for standard, vorgaben in resultat.all.items %}
<h4>{{ standard }}</h4>
<ul>
{% for vorgabe in vorgaben %}
@@ -24,18 +24,7 @@
{% endfor %}
{% endif %}
{% if resultat.langtext %}
<h2>Vorgaben mit "{{ suchbegriff }}" im Langtext</h2>
{% for standard, vorgaben in resultat.langtext.items %}
<h4>{{ standard }}</h4>
<ul>
{% for vorgabe in vorgaben %}
<li><a href="{% url 'standard_detail' nummer=vorgabe.dokument.nummer %}#{{vorgabe.Vorgabennummer}}">{{vorgabe}}</a></li>
{% endfor %}
</ul>
{% endfor %}
{% endif %}
{% if not resultat.langtext and not resultat.kurztext and not resultat.geltungsbereich %}
{% if not resultat.all %}
<h2>Keine Resultate für "{{suchbegriff}}"</h2>
{% endif %}
{% endblock %}

View File

@@ -15,27 +15,6 @@
placeholder="Suchbegriff eingeben …"
required>
</div>
<!-- Check-box group -->
<fieldset class="mb-4">
<legend class="h6 mb-2">In folgenden Bereichen suchen:</legend>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="kurztext" id="kurztext" name="suchbereich[]" checked>
<label class="form-check-label" for="kurztext">Kurztext</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="langtext" id="langtext" name="suchbereich[]" checked>
<label class="form-check-label" for="langtext">Langtext</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="geltungsbereich" id="geltungsbereich" name="suchbereich[]">
<label class="form-check-label" for="geltungsbereich">Geltungsbereich</label>
</div>
</fieldset>
<button type="submit" class="btn btn-primary">Suchen</button>
</form>
{% endblock %}

View File

@@ -14,21 +14,18 @@ def search(request):
elif request.method == "POST":
suchbegriff=request.POST.get("q")
areas=request.POST.getlist("suchbereich[]")
result= {}
geltungsbereich=set()
if "kurztext" in areas:
qs = VorgabeKurztext.objects.filter(inhalt__contains=suchbegriff).exclude(abschnitt__gueltigkeit_bis__lt=datetime.date.today())
result["kurztext"] = {k: [o.abschnitt for o in g] for k, g in groupby(qs, key=lambda o: o.abschnitt.dokument)}
if "langtext" in areas:
qs = VorgabeLangtext.objects.filter(inhalt__contains=suchbegriff).exclude(abschnitt__gueltigkeit_bis__lt=datetime.date.today())
result['langtext']= {k: [o.abschnitt for o in g] for k, g in groupby(qs, key=lambda o: o.abschnitt.dokument)}
if "geltungsbereich" in areas:
result["geltungsbereich"]={}
geltungsbereich=set(list([x.geltungsbereich for x in Geltungsbereich.objects.filter(inhalt__contains=suchbegriff)]))
result= {"all": {}}
qs = VorgabeKurztext.objects.filter(inhalt__contains=suchbegriff).exclude(abschnitt__gueltigkeit_bis__lt=datetime.date.today())
result["kurztext"] = {k: [o.abschnitt for o in g] for k, g in groupby(qs, key=lambda o: o.abschnitt.dokument)}
qs = VorgabeLangtext.objects.filter(inhalt__contains=suchbegriff).exclude(abschnitt__gueltigkeit_bis__lt=datetime.date.today())
result['langtext']= {k: [o.abschnitt for o in g] for k, g in groupby(qs, key=lambda o: o.abschnitt.dokument)}
result["geltungsbereich"]={}
geltungsbereich=set(list([x.geltungsbereich for x in Geltungsbereich.objects.filter(inhalt__contains=suchbegriff)]))
for s in geltungsbereich:
result["geltungsbereich"][s]=render_textabschnitte(s.geltungsbereich_set.order_by("order"))
for r in result.keys():
for s in result[r].keys():
result[r][s]=set(result[r][s])
result["all"][s] = set(result[r][s])
print (result)
return render(request,"results.html",{"suchbegriff":suchbegriff,"resultat":result})