Finder als eigene Abfrage entfernen

Fixes #62
This commit is contained in:
gw3000 2023-10-10 08:12:40 +02:00
parent cb0696b0bd
commit 3a3bcea588
32 changed files with 32 additions and 615 deletions

View file

@ -26,6 +26,7 @@ class BirdAddForm(forms.ModelForm):
"find_circumstances",
"diagnostic_finding",
"comment",
"finder",
]
labels = {
"bird_identifier": _("Kennung"),
@ -37,6 +38,7 @@ class BirdAddForm(forms.ModelForm):
"find_circumstances": _("Fundumstände"),
"diagnostic_finding": _("Diagnose bei Fund"),
"comment": _("Bermerkung"),
"finder": _("Finder"),
}

View file

@ -1,5 +1,6 @@
# Generated by Django 4.2.5 on 2023-09-17 21:04
# Generated by Django 4.2.6 on 2023-10-09 21:31
import ckeditor.fields
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
@ -11,7 +12,6 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
('rescuer', '0002_alter_rescuer_options'),
('aviary', '0001_initial'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
@ -22,7 +22,7 @@ class Migration(migrations.Migration):
fields=[
('id', models.BigAutoField(primary_key=True, serialize=False)),
('name', models.CharField(max_length=256, unique=True, verbose_name='Bezeichnung')),
('description', models.CharField(blank=True, max_length=256, null=True, verbose_name='Beschreibung')),
('description', ckeditor.fields.RichTextField(verbose_name='Erläuterungen')),
],
options={
'verbose_name': 'Vogel',
@ -65,11 +65,11 @@ class Migration(migrations.Migration):
('updated', models.DateTimeField(auto_now=True, verbose_name='geändert am')),
('diagnostic_finding', models.CharField(max_length=256, verbose_name='Diagnose bei Fund')),
('sent_to', models.CharField(blank=True, max_length=256, null=True, verbose_name='Übersandt nach')),
('comment', models.TextField(blank=True, null=True, verbose_name='Bemerkung')),
('comment', models.TextField(blank=True, null=True, verbose_name='Bemerkungen')),
('finder', models.TextField(blank=True, null=True, verbose_name='Finder')),
('aviary', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='aviary.aviary', verbose_name='Voliere')),
('bird', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='bird.bird', verbose_name='Vogel')),
('find_circumstances', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='bird.circumstance', verbose_name='Fundumstände')),
('rescuer', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='rescuer.rescuer', verbose_name='Finder')),
('status', models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='bird.birdstatus')),
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Benutzer')),
],

View file

@ -1,19 +0,0 @@
# Generated by Django 4.2.6 on 2023-10-08 09:07
import ckeditor.fields
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('bird', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='birdstatus',
name='description',
field=ckeditor.fields.RichTextField(verbose_name='Erläuterungen'),
),
]

View file

@ -8,7 +8,6 @@ from django.utils.translation import gettext_lazy as _
from ckeditor.fields import RichTextField
from aviary.models import Aviary
from rescuer.models import Rescuer
CHOICE_AGE = [
@ -51,13 +50,6 @@ class FallenBird(models.Model):
diagnostic_finding = models.CharField(
max_length=256, verbose_name=_("Diagnose bei Fund")
)
rescuer = models.ForeignKey(
Rescuer,
on_delete=models.SET_NULL,
blank=True,
null=True,
verbose_name=_("Finder"),
)
user = models.ForeignKey(
settings.AUTH_USER_MODEL, on_delete=models.CASCADE, verbose_name=_("Benutzer")
)
@ -73,6 +65,7 @@ class FallenBird(models.Model):
max_length=256, null=True, blank=True, verbose_name=_("Übersandt nach")
)
comment = models.TextField(blank=True, null=True, verbose_name=_("Bemerkung"))
finder = models.TextField(blank=True, null=True, verbose_name=_("Finder"))
class Meta:
verbose_name = _("Patient")

View file

@ -48,9 +48,7 @@
mehr in Behandlung befindlichen Patienten finden Sie <a href="{% url 'bird_inactive' %}">hier</a>.
</p>
<p>
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#addPatientModal">einen Patienten
anlegen
</button>
<p><a href="{% url 'bird_create' %}" class="btn btn-primary">einen Patienten anlegen</a></p>
</p>
<table class="table table-striped table-hover display responsive nowrap" id="t__bird_all">
<thead>
@ -58,7 +56,6 @@
<th>Patienten Alias</th>
<th>Vogel</th>
<th>gefunden am</th>
<th>Finder</th>
<th>Fundort</th>
<th>Status</th>
<th>Voliere</th>
@ -73,7 +70,6 @@
<td><a href="{% url 'bird_single' bird.id %}">{{ bird.bird_identifier }}</a></td>
<td>{{ bird.bird }}</td>
<td data-order="{{ forloop.counter }}">{{ bird.date_found }}</td>
<td><a href="{% url 'rescuer_single' bird.rescuer_id %}">{{ bird.rescuer|default_if_none:"" }}</a></td>
<td>{{ bird.place }}</td>
<td>{{ bird.status }}</td>
<td>{{ bird.aviary|default_if_none:"" }}</td>
@ -84,37 +80,5 @@
{% endfor %}
</tbody>
</table>
<div class="modal fade" id="addPatientModal" tabindex="-1" data-bs-backdrop="static"
aria-labelledby="addRescuerModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header bg-primary">
<h5 class="modal-title text-white" id="addRescuerModalLabel">(neuen) Finder zuweisen</h5>
</div>
<form method="post">
{% csrf_token %}
<div class="modal-body">
<label for="rescuer" class="form-label mt-3">Wählen Sie einen <strong>bereits angelegten</strong>
Finder aus oder legen Sie einen <strong>neuen</strong> Finder an:</label>
<select id="rescuer" class="form-select" name="rescuer_id">
<option value="new_rescuer"><strong>neuen
Finder anlegen</strong></option>
{% for rescuer in rescuer_modal %}
<option value={{rescuer.id}}>
{{rescuer.last_name}}, {{rescuer.first_name}},
{{rescuer.street}} {{rescuer.street_number}},
{{rescuer.city}}
</option>
{% endfor %}
</select>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-danger" data-bs-dismiss="modal">Abbrechen</button>
<button class="btn btn-primary" type="submit">Übernehmen und weiter</button>
</div>
</div>
</div>
</div>
</form>
{% endblock content %}

View file

@ -3,15 +3,14 @@
{% load crispy_forms_tags %}
{% block content %}
<h3>Patient anlegen</h3>
<p>(Retter: {{rescuer.first_name}} {{rescuer.last_name}})</p>
<h3>Einen Patienten anlegen</h3>
<div class="row">
<div class="col-lg-8 mb-3">
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ form|crispy }}
<a href="{% url 'bird_all' %}" class="btn btn-success">Abbrechen</a>
<button class="btn btn-primary" type="submit">Patient anlegen</button>
<button class="btn btn-primary" type="submit">Speichern</button>
<div class="mt-3"><small>* Pflichtfeld</small></div>
</form>
</div>

View file

@ -52,7 +52,6 @@
<th>Patienten Alias</th>
<th>Vogel</th>
<th>gefunden am</th>
<th>Finder</th>
<th>Fundort</th>
<th>Status</th>
<th>Kosten</th>
@ -66,9 +65,6 @@
<td><a href="{% url 'bird_single' bird.id %}">{{ bird.bird_identifier }}</a></td>
<td>{{ bird.bird }}</td>
<td data-order="{{ forloop.counter }}">{{ bird.date_found }}</td>
<td>
<a href="{% url 'rescuer_single' bird.rescuer_id %}">{{ bird.rescuer|default_if_none:"" }}</a>
</td>
<td>{{ bird.place }}</td>
<td>{{ bird.status }}</td>
<td>{{ bird.total_costs|default_if_none:"0,00" }} &euro;</td>

View file

@ -4,7 +4,6 @@
{% block content %}
<h3>Patient <strong>{{ bird.bird_identifier }}</strong> bearbeiten </h3>
<p>Finder des Patienten: <strong> <a href="{% url 'rescuer_single' bird.rescuer_id %}">{{ bird.rescuer|default_if_none:"" }}</a></strong>.
Das Alter des Patienten bei Fund wurde mit <strong>{{ bird.age }}</strong> angegeben.</p>
<div class="row">
<div class="col-lg-6 mb-3">

View file

@ -5,23 +5,17 @@ from django.shortcuts import HttpResponse, redirect, render
from .forms import BirdAddForm, BirdEditForm
from .models import Bird, FallenBird
from rescuer.models import Rescuer
@login_required(login_url="account_login")
def bird_create(request):
form = BirdAddForm(initial={"bird_identifier": names.get_first_name()})
# Rescuer for modal usage
rescuer_id = request.session.get("rescuer_id")
rescuer = Rescuer.objects.get(id=rescuer_id)
rescuer_id = None
# Just show only related rescuers in select field of the form.
if request.method == "POST":
form = BirdAddForm(request.POST or None, request.FILES or None)
# circumstances = Circumstance.objects.all()
rescuer_id = request.session.get("rescuer_id")
rescuer = Rescuer.objects.get(id=rescuer_id)
rescuer_id = None
if form.is_valid():
fs = form.save(commit=False)
@ -30,7 +24,7 @@ def bird_create(request):
fs.save()
request.session["rescuer_id"] = None
return redirect("bird_all")
context = {"form": form, "rescuer": rescuer}
context = {"form": form}
return render(request, "bird/bird_create.html", context)
@ -55,16 +49,7 @@ def bird_all(request):
.annotate(total_costs=Sum("costs__costs"))
.order_by("date_found")
)
rescuer_modal = Rescuer.objects.all()
context = {"birds": birds, "rescuer_modal": rescuer_modal}
# Post came from the modal form.
if request.method == "POST":
rescuer_id = request._post["rescuer_id"]
if rescuer_id != "new_rescuer":
request.session["rescuer_id"] = rescuer_id
return redirect("bird_create")
else:
return redirect("rescuer_create")
context = {"birds": birds}
return render(request, "bird/bird_all.html", context)