diff --git a/cmp/migrations/0002_soldierdeath_image_alter_company_notes_and_more.py b/cmp/migrations/0002_soldierdeath_image_alter_company_notes_and_more.py new file mode 100644 index 0000000..25de60c --- /dev/null +++ b/cmp/migrations/0002_soldierdeath_image_alter_company_notes_and_more.py @@ -0,0 +1,81 @@ +# Generated by Django 5.0.6 on 2024-05-17 10:59 + +import cmp.models +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("cmp", "0001_initial"), + ] + + operations = [ + migrations.AddField( + model_name="soldierdeath", + name="image", + field=models.ImageField( + blank=True, null=True, upload_to=cmp.models.get_upload_to + ), + ), + migrations.AlterField( + model_name="company", + name="notes", + field=models.TextField(default=""), + ), + migrations.AlterField( + model_name="decoration", + name="notes", + field=models.TextField(default=""), + ), + migrations.AlterField( + model_name="powcamp", + name="notes", + field=models.TextField(default=""), + ), + migrations.AlterField( + model_name="soldier", + name="notes", + field=models.TextField(default=""), + ), + migrations.AlterField( + model_name="soldierdecoration", + name="notes", + field=models.TextField(blank=True), + ), + migrations.AlterField( + model_name="soldierimprisonment", + name="notes", + field=models.TextField(default=""), + ), + migrations.CreateModel( + name="ProvostAppointment", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("date", models.DateField(blank=True, null=True)), + ("notes", models.TextField(default="")), + ( + "rank", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name="provostappointments", + to="cmp.rank", + ), + ), + ( + "soldier", + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, to="cmp.soldier" + ), + ), + ], + ), + ] diff --git a/cmp/urls.py b/cmp/urls.py index 057dee9..535dcce 100644 --- a/cmp/urls.py +++ b/cmp/urls.py @@ -31,12 +31,18 @@ # create an index page for mgmt urls to link to /mgmt/countries path('mgmt/', views.mgmt_index, name='mgmt-index'), + # Countries path("mgmt/countries", views.edit_countries, name="edit-countries"), path("mgmt/countries//", views.detail_countries, name="countries"), path("mgmt/countries/edit/", views.edit_countries, name="edit-countries"), path('mgmt/countries/search/', views.search_countries, name='search-countries'), + # Ranks path("mgmt/ranks", views.edit_ranks, name="edit-ranks"), + path("mgmt/ranks//", views.detail_ranks, name="ranks"), + path("mgmt/ranks/edit/", views.edit_ranks, name="edit-ranks"), + path('mgmt/ranks/search/', views.search_ranks, name='search-ranks'), + path("mgmt/pow-camps", views.edit_powcamps, name="powcamps"), diff --git a/cmp/views.py b/cmp/views.py index 5396874..a48c489 100644 --- a/cmp/views.py +++ b/cmp/views.py @@ -338,6 +338,15 @@ def edit_soldiers(request, soldier_id): return render(request, "cmp/edit-soldiers.html", {"form": form, 'death_form': death_form}) +def search_ranks(request): + query = request.GET.get('q') + if query: + ranks = Rank.objects.filter(name__icontains=query) + else: + ranks = Rank.objects.all() + return render(request, 'cmp/search-ranks.html', {'ranks': ranks}) + + def search_soldiers(request): query = request.GET.get('q') if query: @@ -355,6 +364,11 @@ def search_countries(request): return render(request, 'cmp/search-countries.html', {'countries': countries}) +def detail_ranks(request, rank_id): + # get or return a 404 + rank = get_object_or_404(Rank, pk=rank_id) + return render(request, "cmp/detail-ranks.html", {"rank": rank}) + def detail_countries(request, country_id): # get or return a 404 @@ -368,10 +382,12 @@ def detail_soldiers(request, soldier_id): return render(request, "cmp/detail-soldiers.html", {"soldier": soldier}) - -def edit_ranks(request): +def edit_ranks(request, rank_id): post = request.POST form = editRankForm(post or None) + if rank_id: + rank= Rank.objects.get(id=rank_id) + form = editRankForm(post or None, instance=rank) if post and form.is_valid(): form.save() return HttpResponse("Rank Added") diff --git a/templates/cmp/edit-ranks.html b/templates/cmp/edit-ranks.html index 473d2f0..b459dae 100644 --- a/templates/cmp/edit-ranks.html +++ b/templates/cmp/edit-ranks.html @@ -3,6 +3,7 @@ {% block title %}Rank Form{% endblock %} {% block content %} +

Edit Rank

{% csrf_token %} diff --git a/templates/cmp/mgmt-index.html b/templates/cmp/mgmt-index.html index be25182..8dc9789 100644 --- a/templates/cmp/mgmt-index.html +++ b/templates/cmp/mgmt-index.html @@ -7,14 +7,13 @@

Management Index

{% endblock %} \ No newline at end of file diff --git a/templates/cmp/search-ranks.html b/templates/cmp/search-ranks.html new file mode 100644 index 0000000..9eacb1e --- /dev/null +++ b/templates/cmp/search-ranks.html @@ -0,0 +1,22 @@ +{% extends "base.html" %} +{% load static crispy_forms_tags %} +{% block title %}Ranks{% endblock %} +{% block content %} + +

Search Ranks

+ + + + +
+ + +{% for rank in ranks%} +

+ {{ rank.name }} +

+{% endfor %} + + + +{% endblock %} \ No newline at end of file