Skip to content

Commit

Permalink
Merge pull request #206 from gm3dmo/acknowledgements
Browse files Browse the repository at this point in the history
Add acknowledgements page
  • Loading branch information
gm3dmo authored Aug 19, 2024
2 parents 99c1dfb + 39d19f3 commit 298fcb9
Show file tree
Hide file tree
Showing 12 changed files with 188 additions and 4 deletions.
6 changes: 6 additions & 0 deletions cmp/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
from .models import SoldierDeath
from .models import Company
from .models import Decoration
from .models import Acknowledgement


class CustomUserCreationForm(UserCreationForm):
Expand Down Expand Up @@ -43,6 +44,11 @@ class Meta:
model = Country
fields = "__all__"

class editAcknowledgementForm(forms.ModelForm):
class Meta:
model = Acknowledgement
fields = "__all__"


class editCompanyForm(forms.ModelForm):
class Meta:
Expand Down
8 changes: 8 additions & 0 deletions cmp/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,14 @@ def __str__(self):
return self.pow_camp.name


class Acknowledgement(models.Model):
surname = models.CharField(max_length=50, blank=True)
name = models.CharField(max_length=50, blank=True)
notes = models.TextField(max_length=50000, blank=True)
def __str__(self) -> str:
return self.surname


class SoldierDecoration(models.Model):
soldier = models.ForeignKey(
Soldier, null=False, blank=False, on_delete=models.CASCADE
Expand Down
7 changes: 6 additions & 1 deletion cmp/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,14 @@
path("mgmt/ranks/edit/<int:rank_id>", views.edit_ranks, name="edit-ranks"),
path('mgmt/ranks/search/', views.search_ranks, name='search-ranks'),

# Acknowledgements
#path("mgmt/acknowledgements", views.edit_acknowledgements, name="edit-acknowledgement"),
path("mgmt/acknowledgements/<int:acknowledgement_id>/", views.detail_acknowledgements, name="acknowledgements"),
path("mgmt/acknowledgements/edit/<int:acknowledgement_id>", views.edit_acknowledgements, name="edit-acknowledgements"),
path('mgmt/acknowledgements/search/', views.search_acknowledgements, name='search-acknowledgements'),

# Soldiers
path('soldiers/', views.soldiers, name='soldiersrn'),
path('soldiers/', views.soldiers, name='soldiers'),

# Soldier management
path("mgmt/soldiers", views.edit_soldiers, name="soldiersa"),
Expand Down
33 changes: 33 additions & 0 deletions cmp/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@

from django.contrib.auth.decorators import login_required

from .models import Acknowledgement
from cmp.forms import editAcknowledgementForm

from .models import Country
from cmp.forms import editCountryForm

Expand Down Expand Up @@ -386,6 +389,18 @@ def edit_soldiers(request, soldier_id):
return render(request, "cmp/edit-soldiers.html", {"form": form, 'death_form': death_form})


def search_acknowledgements(request):
query = request.GET.get('q')
page_number = request.GET.get('page')
if query:
acknowledgements = Acknowledgement.objects.filter(name__icontains=query).order_by('surname')
else:
acknowledgements = Acknowledgement.objects.all().order_by('surname')
paginator = Paginator(acknowledgements, settings.PAGE_SIZE)
page_obj = paginator.get_page(page_number)
return render(request, 'cmp/search-acknowledgements.html', {'page_obj': page_obj})


def search_ranks(request):
query = request.GET.get('q')
page_number = request.GET.get('page')
Expand Down Expand Up @@ -471,6 +486,12 @@ def search_countries(request):
return render(request, 'cmp/search-countries.html', {'page_obj': page_obj})


def detail_acknowledgements(request, acknowledgement_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_ranks(request, rank_id):
# get or return a 404
rank = get_object_or_404(Rank, pk=rank_id)
Expand Down Expand Up @@ -523,6 +544,18 @@ def edit_ranks(request, rank_id):
form.save()
return HttpResponse("Rank Added")
return render(request, "cmp/edit-ranks.html", {"form": form})


def edit_acknowledgements(request, acknowledgement_id):
post = request.POST
form = editAcknowledgementForm(post or None)
if acknowledgement_id:
acknowledgement = Acknowledgement.objects.get(id=acknowledgement_id)
form = editAcknowledgementForm(post or None, instance=acknowledgement)
if post and form.is_valid():
form.save()
return HttpResponse("Acknowledgement Added")
return render(request, "cmp/edit-acknowledgements.html", {"form": form})


def edit_cemeteries(request, cemetery_id):
Expand Down
2 changes: 2 additions & 0 deletions insertall.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,5 @@ python manage.py runscript insert-all-soldiers
python manage.py runscript insert-all-soldier-imprisonments
python manage.py runscript insert-all-soldier-deaths
python manage.py runscript insert-all-soldier-decorations
python manage.py runscript insert-all-acknowledgements

6 changes: 3 additions & 3 deletions photo.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ def __init__(self, surname, initials, army_number, rank, notes):

def main():

origin_archive = '/Users/gm3dmo/src/old-cmp/grave-images-2023-12-31.zip'
origin_archive = '/Users/gm3dmo/src/old-cmp/grave-images-2024-07-29.zip'

target_archive = "/Users/gm3dmo/src/old-cmp/memorial-image-by-soldier-id.zip"
# createa writeable zip archive called target_archive
Expand All @@ -44,7 +44,7 @@ def main():
logger.info(f"{counter} Soldier: {soldier.army_number} == {filename}")
soldier.photo_in_original = True
counter += 1
new_filename = f"media/{soldier.id}/memorial/{soldier.id}.jpg"
new_filename = f"{soldier.id}/memorial/{soldier.id}.jpg"
directory_path = os.path.dirname(new_filename)
os.makedirs(directory_path, exist_ok=True)
file_bytes = zip_ref.read(item)
Expand All @@ -63,4 +63,4 @@ def main():
logger.info(f"Total number of soldiers: {counter}")

if __name__ == "__main__":
main()
main()
5 changes: 5 additions & 0 deletions scripts/delete-all-acknowledgements.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
from cmp.models import Acknowledgement

def run():
Acknowledgements = Acknowledgement.objects.all()
Acknowledgements.delete()
38 changes: 38 additions & 0 deletions scripts/insert-all-acknowledgements.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@

def run():

import sys
import urllib3
import csv
import time
from cmp.models import Acknowledgement

print()
title = sys.argv[2]

start_fetch_time = time.time()
ref_data_url = "https://raw.githubusercontent.com/gm3dmo/old-cmp/main/data/acknowledgement.csv"
http = urllib3.PoolManager()
r = http.request('GET', ref_data_url)
end_fetch_time = time.time()
# load the response into a csv dictionary reader
reader = csv.DictReader(r.data.decode('utf-8').splitlines())

start_insert_time = time.time()
for row in reader:
#print(row['name'])
try:
Acknowledgement.objects.create(
id=row['id'],
surname=row['surname'],
name=row['name'],
notes=row['notes']
)
except Exception as e:
print(f"""💥row: ({row}) """)
raise e

end_insert_time = time.time()
time_to_fetch = end_fetch_time - start_fetch_time
time_to_insert = end_insert_time - start_insert_time
print(f"""\033[4;33m{title}\033[0m Fetch table response code: {r.status} time (seconds) to fetch: {time_to_fetch:.2f} time to insert {time_to_insert:.2f}""")
31 changes: 31 additions & 0 deletions templates/cmp/acknowledgements.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{% extends "base.html" %}
{% load static crispy_forms_tags %}
{% block title %}Acknowledgements{% endblock %}
{% block content %}

<div class="center-content">
<h1>Acknowledgements</h1>

<table>
<thead>
<tr>

<th><h3>Name</h3></th>
<th><h3>Tasks</h3></th>
</tr>
</thead>
<tbody>
{% for person in acknowledgements |dictsort:"surname" %}
<tr>
<td>{{ person.surname }}</td>
<td>
{{ person.notes }}
</a>
</h2>
</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endblock %}
<div>
17 changes: 17 additions & 0 deletions templates/cmp/edit-acknowledgements.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{% extends "base.html" %}
{% load static crispy_forms_tags %}
{% block title %}Acknowledgement Form{% endblock %}
{% block content %}

<h1> Edit Acknowledgement</h1>
<div>
<form method="POST">
{% csrf_token %}
{{ form.management_form }}
{{ form.errors }}
{{form | crispy}}
<button type="submit" class="btn btn-primary">Save</button>
</form>
</div>

{% endblock %}
1 change: 1 addition & 0 deletions templates/cmp/mgmt-index.html
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ <h3>Management Index</h3>
<li><a href="/mgmt/decorations/search/">Decorations</a></li>
<li><a href="/mgmt/ranks/search/">Ranks</a></li>
<li><a href="/mgmt/prisoner-of-war-camps/search/">Prisoner of War Camps</a></li>
<li><a href="/mgmt/acknowledgements/search/">Acknowledgements</a></li>
</ul>
{% endblock %}
</div>
38 changes: 38 additions & 0 deletions templates/cmp/search-acknowledgements.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
{% extends "base.html" %}
{% load static crispy_forms_tags %}
{% block title %}Acknowledgements{% endblock %}
{% block content %}

<div class="center-content">
<h3>Search Acknowledgements</h3>

<div name="search-input" class="search-input">
<form method="get">
<input type="text" name="q" placeholder="Search acknowledgements to edit">
<input type="submit" value="Search">
</form>
</div>

<div>
<table class="content-table">
<thead class="">
<tr>
<th></th>
<th>Surname</th><th>Name</th><th>Notes</th>
</tr>
</thead>
{% for acknowledgement in page_obj%}
<tr>
<td><button class="glossy-button" onclick="location.href='{% url 'edit-acknowledgements' acknowledgement.id %}'" type="button">EDIT</button></td>
<td><span class="soldier-info">{{ acknowledgement.surname}}</span></td>
<td><span class="soldier-info">{{ acknowledgement.name}}</span></td>
<td><span class="soldier-info">{{ acknowledgement.notes}}</span></td>
</tr>
{% endfor %}
</table>
</div>

{% include 'cmp/pagination-footer.html' %}

{% endblock %}
</div>

0 comments on commit 298fcb9

Please sign in to comment.