Aviary only on specific status

This commit is contained in:
gnuter3000 2023-07-05 21:05:58 +02:00
parent 41d60eaee8
commit e38aacafbe
6 changed files with 39 additions and 21 deletions

View file

@ -22,4 +22,4 @@ class BirdAdmin(admin.ModelAdmin):
@admin.register(BirdStatus)
class BirdStatusAdmin(admin.ModelAdmin):
list_display = ["description"]
list_display = ["id","description"]

View file

@ -11,21 +11,17 @@ from rescuer.models import Rescuer
class FallenBird(models.Model):
id = models.UUIDField(primary_key=True, default=uuid4, editable=False)
bird_identifier = models.CharField(max_length=256,default=names.get_full_name(), verbose_name=_("Kennung"))
bird = models.ForeignKey(
"Bird", on_delete=models.CASCADE, verbose_name=_("Patient")
)
bird_identifier = models.CharField(max_length=256, verbose_name=_("Kennung"))
bird = models.ForeignKey("Bird", on_delete=models.CASCADE, verbose_name=_("Patient"))
date_found = models.DateField(verbose_name=_("Datum des Fundes"))
place = models.CharField(max_length=256, verbose_name=_("Ort des Fundes"))
created = models.DateTimeField(auto_now_add=True, verbose_name=_("angelegt am"))
updated = models.DateTimeField(auto_now=True, verbose_name=_("geändert am"))
diagnostic_finding = models.CharField(max_length=256)
cost_sum = models.DecimalField(max_digits=5, decimal_places=2, default=0.00)
rescuer = models.ForeignKey(
Rescuer, on_delete=models.SET_NULL, blank=True, null=True
)
rescuer = models.ForeignKey(Rescuer, on_delete=models.SET_NULL, blank=True, null=True)
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
status = models.ForeignKey("BirdStatus", on_delete=models.CASCADE)
status = models.ForeignKey("BirdStatus", on_delete=models.CASCADE, default=1)
aviary = models.ForeignKey(Aviary, on_delete=models.SET_NULL, blank=True, null=True)
class Meta:
@ -49,7 +45,7 @@ class Bird(models.Model):
class BirdStatus(models.Model):
id = models.UUIDField(primary_key=True, default=uuid4, editable=False)
id = models.BigAutoField(primary_key=True)
description = models.CharField(max_length=256, unique=True)
class Meta:

View file

@ -49,4 +49,7 @@
</p>
</div>
</div>
{% endblock content %}
<script src="{% static 'js/bird.js' %}"></script
{% endblock content %}

View file

@ -1,3 +1,4 @@
import names
from django.contrib.auth.decorators import login_required
from django.shortcuts import HttpResponse, redirect, render
@ -8,12 +9,12 @@ from rescuer.models import Rescuer
@login_required(login_url="account_login")
def bird_create(request):
form = BirdAddForm(initial={"bird_identifier": names.get_full_name()})
# Rescuer for modal usage
form = BirdAddForm()
rescuer_id = request.session.get("rescuer_id")
rescuer = Rescuer.objects.get(id=rescuer_id, user=request.user)
# just show only related rescuers in select field of the form
# 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)
rescuer_id = request.session.get("rescuer_id")
@ -35,7 +36,7 @@ def bird_all(request):
birds = FallenBird.objects.all()
rescuer_modal = Rescuer.objects.all()
context = {"birds": birds, "rescuer_modal": rescuer_modal}
# Post came from the modal form
# Post came from the modal form.
if request.method == "POST":
rescuer_id = request._post["rescuer_id"]
if rescuer_id != "new_rescuer":
@ -57,7 +58,10 @@ def bird_single(request, id):
form = BirdEditForm(request.POST or None, request.FILES or None, instance=bird)
if request.method == "POST":
if form.is_valid():
form.save()
fs = form.save(commit=False)
if fs.status.description!="In Auswilderung":
fs.aviary = None
fs.save()
return redirect("bird_all")
context = {"form": form, "bird": bird}
return render(request, "bird/bird_single.html", context)

21
static/js/bird.js Normal file
View file

@ -0,0 +1,21 @@
function showHideAviary() {
let statusField = document.getElementById("id_status");
let aviaryField = document.getElementById("div_id_aviary");
let statusText = statusField.options[statusField.selectedIndex].text;
if (statusText == 'In Auswilderung') {
aviaryField.hidden = false
} else {
aviaryField.hidden = true
}
}
// Load function on windows load.
(showHideAviary)();
// Load function on change.
document.getElementById("id_status").addEventListener("change", (event) => {
showHideAviary()
});

View file

@ -1,6 +0,0 @@
let sel = document.getElementById("id_status");
let text = sel.options[sel.selectedIndex].text;
if (text === 'In Auswilderung') {
console.log("Yes");
}