diff --git a/cmp/forms.py b/cmp/forms.py index 4f54687..809a77e 100644 --- a/cmp/forms.py +++ b/cmp/forms.py @@ -7,6 +7,7 @@ from .models import Rank from .models import Cemetery from .models import PowCamp +from .models import Soldier class CustomUserCreationForm(UserCreationForm): @@ -44,3 +45,9 @@ class Meta: model = Rank fields = "__all__" + +class editSoldierForm(forms.ModelForm): + class Meta: + model = Soldier + fields = "__all__" + diff --git a/cmp/urls.py b/cmp/urls.py index 5551af2..6f816e7 100644 --- a/cmp/urls.py +++ b/cmp/urls.py @@ -25,4 +25,10 @@ path('pow-camps/', views.powcamps, name='powcamps'), path("mgmt/pow-camps", views.edit_powcamps, name="powcamps"), + # Soldiers + path('soldiers/', views.soldiers, name='soldiers'), + path("mgmt/soldiers", views.edit_soldiers, name="soldiers"), + path("mgmt/soldiers//", views.detail_soldiers, name="soldiers"), + path("mgmt/soldiers/edit/", views.edit_soldiers, name="edit-soldiers"), + ] diff --git a/cmp/views.py b/cmp/views.py index af3501c..a0e23a1 100644 --- a/cmp/views.py +++ b/cmp/views.py @@ -12,6 +12,9 @@ from .models import PowCamp from cmp.forms import editPowCampForm +from .models import Soldier +from cmp.forms import editSoldierForm + def powcamps(request): powcamps = PowCamp.objects.all() @@ -27,6 +30,11 @@ def countries(request): return render(request, 'cmp/countries.html', {'countries': countries}) +def soldiers(request): + soldiers = Soldier.objects.all() + return render(request, 'cmp/soldiers.html', {'soldiers': soldiers}) + + def ranks(request): ranks = Rank.objects.all() return render(request, 'cmp/ranks.html', {'ranks': ranks}) @@ -271,16 +279,34 @@ def edit_countries(request, country_id): return render(request, "cmp/edit-countries.html", {"form": form}) +def edit_soldiers(request, soldier_id): + post = request.POST + form = editSoldierForm(post or None) + if soldier_id: + soldier = Soldier.objects.get(id=soldier_id) + form = editSoldierForm(post or None, instance=soldier) + if post and form.is_valid(): + form.save() + return HttpResponse("Soldier Added") + return render(request, "cmp/edit-soldiers.html", {"form": form}) + + def detail_countries(request, country_id): # get or return a 404 country = get_object_or_404(Country, pk=country_id) return render(request, "cmp/detail-countries.html", {"country": country}) +def detail_soldiers(request, soldier_id): + # get or return a 404 + soldier = get_object_or_404(Soldier, pk=soldier_id) + return render(request, "cmp/detail-soldiers.html", {"soldier": soldier}) + + def edit_ranks(request): post = request.POST form = editRankForm(post or None) if post and form.is_valid(): form.save() return HttpResponse("Rank Added") - return render(request, "cmp/edit-ranks.html", {"form": form}) \ No newline at end of file + return render(request, "cmp/edit-ranks.html", {"form": form}) diff --git a/templates/cmp/detail-soldiers.html b/templates/cmp/detail-soldiers.html new file mode 100644 index 0000000..4376211 --- /dev/null +++ b/templates/cmp/detail-soldiers.html @@ -0,0 +1,28 @@ +{% extends "base.html" %} +{% load static crispy_forms_tags %} +{% block title %}Soldiers{% endblock %} +{% block content %} + +

Soldier Details

+ + + + + + + + + + + + + + + + +
SurnameInitialsRank
{{ soldier.surname }}{{ soldier.initials}}{{ soldier.rank}} + Edit + +
+ +{% endblock %} \ No newline at end of file diff --git a/templates/cmp/edit-soldiers.html b/templates/cmp/edit-soldiers.html new file mode 100644 index 0000000..97bdcd5 --- /dev/null +++ b/templates/cmp/edit-soldiers.html @@ -0,0 +1,17 @@ +{% extends "base.html" %} +{% load static crispy_forms_tags %} +{% block title %}Soldiers Form{% endblock %} +{% block content %} + +
+
+ {% csrf_token %} + {{ form.management_form }} + {{ form.errors }} + {{form | crispy}} + +
+ +
+ +{% endblock %} \ No newline at end of file diff --git a/templates/cmp/soldiers.html b/templates/cmp/soldiers.html new file mode 100644 index 0000000..da514fd --- /dev/null +++ b/templates/cmp/soldiers.html @@ -0,0 +1,24 @@ +{% extends "base.html" %} +{% load static crispy_forms_tags %} +{% block title %}Soldiers{% endblock %} +{% block content %} + +

Soldiers

+ + + + + + + + + {% for soldier in soldiers|dictsort:"surname" %} + + + + {% endfor %} + +

Surname

{{ soldier.surname }}
+ + +{% endblock %} \ No newline at end of file