Aviary only on specific status
This commit is contained in:
parent
41d60eaee8
commit
e38aacafbe
6 changed files with 39 additions and 21 deletions
|
@ -22,4 +22,4 @@ class BirdAdmin(admin.ModelAdmin):
|
||||||
|
|
||||||
@admin.register(BirdStatus)
|
@admin.register(BirdStatus)
|
||||||
class BirdStatusAdmin(admin.ModelAdmin):
|
class BirdStatusAdmin(admin.ModelAdmin):
|
||||||
list_display = ["description"]
|
list_display = ["id","description"]
|
||||||
|
|
|
@ -11,21 +11,17 @@ from rescuer.models import Rescuer
|
||||||
|
|
||||||
class FallenBird(models.Model):
|
class FallenBird(models.Model):
|
||||||
id = models.UUIDField(primary_key=True, default=uuid4, editable=False)
|
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_identifier = models.CharField(max_length=256, verbose_name=_("Kennung"))
|
||||||
bird = models.ForeignKey(
|
bird = models.ForeignKey("Bird", on_delete=models.CASCADE, verbose_name=_("Patient"))
|
||||||
"Bird", on_delete=models.CASCADE, verbose_name=_("Patient")
|
|
||||||
)
|
|
||||||
date_found = models.DateField(verbose_name=_("Datum des Fundes"))
|
date_found = models.DateField(verbose_name=_("Datum des Fundes"))
|
||||||
place = models.CharField(max_length=256, verbose_name=_("Ort des Fundes"))
|
place = models.CharField(max_length=256, verbose_name=_("Ort des Fundes"))
|
||||||
created = models.DateTimeField(auto_now_add=True, verbose_name=_("angelegt am"))
|
created = models.DateTimeField(auto_now_add=True, verbose_name=_("angelegt am"))
|
||||||
updated = models.DateTimeField(auto_now=True, verbose_name=_("geändert am"))
|
updated = models.DateTimeField(auto_now=True, verbose_name=_("geändert am"))
|
||||||
diagnostic_finding = models.CharField(max_length=256)
|
diagnostic_finding = models.CharField(max_length=256)
|
||||||
cost_sum = models.DecimalField(max_digits=5, decimal_places=2, default=0.00)
|
cost_sum = models.DecimalField(max_digits=5, decimal_places=2, default=0.00)
|
||||||
rescuer = models.ForeignKey(
|
rescuer = models.ForeignKey(Rescuer, on_delete=models.SET_NULL, blank=True, null=True)
|
||||||
Rescuer, on_delete=models.SET_NULL, blank=True, null=True
|
|
||||||
)
|
|
||||||
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
|
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)
|
aviary = models.ForeignKey(Aviary, on_delete=models.SET_NULL, blank=True, null=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
@ -49,7 +45,7 @@ class Bird(models.Model):
|
||||||
|
|
||||||
|
|
||||||
class BirdStatus(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)
|
description = models.CharField(max_length=256, unique=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
|
@ -49,4 +49,7 @@
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<script src="{% static 'js/bird.js' %}"></script
|
||||||
|
|
||||||
{% endblock content %}
|
{% endblock content %}
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import names
|
||||||
from django.contrib.auth.decorators import login_required
|
from django.contrib.auth.decorators import login_required
|
||||||
from django.shortcuts import HttpResponse, redirect, render
|
from django.shortcuts import HttpResponse, redirect, render
|
||||||
|
|
||||||
|
@ -8,12 +9,12 @@ from rescuer.models import Rescuer
|
||||||
|
|
||||||
@login_required(login_url="account_login")
|
@login_required(login_url="account_login")
|
||||||
def bird_create(request):
|
def bird_create(request):
|
||||||
|
form = BirdAddForm(initial={"bird_identifier": names.get_full_name()})
|
||||||
# Rescuer for modal usage
|
# Rescuer for modal usage
|
||||||
form = BirdAddForm()
|
|
||||||
rescuer_id = request.session.get("rescuer_id")
|
rescuer_id = request.session.get("rescuer_id")
|
||||||
rescuer = Rescuer.objects.get(id=rescuer_id, user=request.user)
|
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":
|
if request.method == "POST":
|
||||||
form = BirdAddForm(request.POST or None, request.FILES or None)
|
form = BirdAddForm(request.POST or None, request.FILES or None)
|
||||||
rescuer_id = request.session.get("rescuer_id")
|
rescuer_id = request.session.get("rescuer_id")
|
||||||
|
@ -35,7 +36,7 @@ def bird_all(request):
|
||||||
birds = FallenBird.objects.all()
|
birds = FallenBird.objects.all()
|
||||||
rescuer_modal = Rescuer.objects.all()
|
rescuer_modal = Rescuer.objects.all()
|
||||||
context = {"birds": birds, "rescuer_modal": rescuer_modal}
|
context = {"birds": birds, "rescuer_modal": rescuer_modal}
|
||||||
# Post came from the modal form
|
# Post came from the modal form.
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
rescuer_id = request._post["rescuer_id"]
|
rescuer_id = request._post["rescuer_id"]
|
||||||
if rescuer_id != "new_rescuer":
|
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)
|
form = BirdEditForm(request.POST or None, request.FILES or None, instance=bird)
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
if form.is_valid():
|
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")
|
return redirect("bird_all")
|
||||||
context = {"form": form, "bird": bird}
|
context = {"form": form, "bird": bird}
|
||||||
return render(request, "bird/bird_single.html", context)
|
return render(request, "bird/bird_single.html", context)
|
||||||
|
|
21
static/js/bird.js
Normal file
21
static/js/bird.js
Normal 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()
|
||||||
|
});
|
|
@ -1,6 +0,0 @@
|
||||||
let sel = document.getElementById("id_status");
|
|
||||||
let text = sel.options[sel.selectedIndex].text;
|
|
||||||
|
|
||||||
if (text === 'In Auswilderung') {
|
|
||||||
console.log("Yes");
|
|
||||||
}
|
|
Loading…
Add table
Add a link
Reference in a new issue