Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion cmp/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,10 @@ class Meta:
fields = "__all__"

class editDecorationForm(forms.ModelForm):
country = forms.ModelChoiceField(
queryset=Country.objects.all().order_by('name'),
)

def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.helper = FormHelper()
Expand Down Expand Up @@ -505,7 +509,7 @@ def __init__(self, *args, **kwargs):

class SoldierDecorationForm(forms.ModelForm):
country = forms.ModelChoiceField(
queryset=Country.objects.all(),
queryset=Country.objects.all().order_by('name'),
)

def __init__(self, *args, **kwargs):
Expand Down
17 changes: 17 additions & 0 deletions cmp/migrations/0002_alter_country_options.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Generated by Django 6.0.2 on 2026-02-11 12:09

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
("cmp", "0001_initial"),
]

operations = [
migrations.AlterModelOptions(
name="country",
options={"ordering": ["name"]},
),
]
3 changes: 3 additions & 0 deletions cmp/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,9 @@ class Country(models.Model):
country_number = models.CharField(max_length=3, unique=True)
flag = models.CharField(max_length=255, default="", blank=True)

class Meta:
ordering = ['name']

def __str__(self):
return self.name

Expand Down
1 change: 0 additions & 1 deletion requirements.in
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ ipdb
folium
Pillow
pip-tools
pip
gunicorn
azure-storage-blob
azure-identity
216 changes: 26 additions & 190 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,214 +1,50 @@
# This file was autogenerated by uv via the following command:
# uv pip compile requirements.in -o requirements.txt
asgiref==3.10.0
# via
# django
# django-allauth
# django-htmx
asttokens==3.0.1
# via stack-data
azure-core==1.36.0
# via
# azure-identity
# azure-storage-blob
# uv pip compile pyproject.toml --output-file requirements.txt --no-deps
azure-identity==1.25.1
# via -r requirements.in
# via cmp (pyproject.toml)
azure-storage-blob==12.27.1
# via -r requirements.in
# via cmp (pyproject.toml)
black==25.11.0
# via -r requirements.in
branca==0.8.2
# via folium
build==1.3.0
# via pip-tools
certifi==2025.11.12
# via
# requests
# sentry-sdk
cffi==2.0.0
# via cryptography
charset-normalizer==3.4.4
# via requests
click==8.3.1
# via
# black
# pip-tools
coverage==7.11.3
# via pytest-cov
# via cmp (pyproject.toml)
crispy-bootstrap5==2025.6
# via -r requirements.in
cryptography==46.0.3
# via
# azure-identity
# azure-storage-blob
# msal
# pyjwt
decorator==5.2.1
# via
# ipdb
# ipython
# via cmp (pyproject.toml)
django==5.2.8
# via
# -r requirements.in
# crispy-bootstrap5
# django-allauth
# django-crispy-forms
# django-debug-toolbar
# django-extensions
# django-htmx
# django-storages
# via cmp (pyproject.toml)
django-allauth==65.13.0
# via -r requirements.in
# via cmp (pyproject.toml)
django-crispy-forms==2.5
# via
# -r requirements.in
# crispy-bootstrap5
# via cmp (pyproject.toml)
django-debug-toolbar==6.1.0
# via -r requirements.in
# via cmp (pyproject.toml)
django-environ==0.12.0
# via -r requirements.in
# via cmp (pyproject.toml)
django-extensions==4.1
# via -r requirements.in
# via cmp (pyproject.toml)
django-htmx==1.26.0
# via -r requirements.in
# via cmp (pyproject.toml)
django-storages==1.14.6
# via -r requirements.in
executing==2.2.1
# via stack-data
# via cmp (pyproject.toml)
flake8==7.3.0
# via -r requirements.in
# via cmp (pyproject.toml)
folium==0.20.0
# via -r requirements.in
# via cmp (pyproject.toml)
gunicorn==23.0.0
# via -r requirements.in
idna==3.11
# via requests
iniconfig==2.3.0
# via pytest
# via cmp (pyproject.toml)
ipdb==0.13.13
# via -r requirements.in
ipython==9.7.0
# via ipdb
ipython-pygments-lexers==1.1.1
# via ipython
isodate==0.7.2
# via azure-storage-blob
jedi==0.19.2
# via ipython
jinja2==3.1.6
# via
# branca
# folium
# via cmp (pyproject.toml)
logzero==1.7.0
# via -r requirements.in
markupsafe==3.0.3
# via jinja2
matplotlib-inline==0.2.1
# via ipython
mccabe==0.7.0
# via flake8
msal==1.34.0
# via
# azure-identity
# msal-extensions
msal-extensions==1.3.1
# via azure-identity
mypy-extensions==1.1.0
# via black
numpy==2.3.4
# via folium
packaging==25.0
# via
# black
# build
# gunicorn
# pytest
parso==0.8.5
# via jedi
pathspec==0.12.1
# via black
pexpect==4.9.0
# via ipython
# via cmp (pyproject.toml)
pillow==12.0.0
# via -r requirements.in
pip==25.3
# via
# -r requirements.in
# pip-tools
# via cmp (pyproject.toml)
pip==26.0.1
# via cmp (pyproject.toml)
pip-tools==7.5.2
# via -r requirements.in
platformdirs==4.5.0
# via black
pluggy==1.6.0
# via
# pytest
# pytest-cov
prompt-toolkit==3.0.52
# via ipython
ptyprocess==0.7.0
# via pexpect
pure-eval==0.2.3
# via stack-data
pycodestyle==2.14.0
# via flake8
pycparser==2.23
# via cffi
pyflakes==3.4.0
# via flake8
pygments==2.19.2
# via
# ipython
# ipython-pygments-lexers
# pytest
pyjwt==2.10.1
# via msal
pyproject-hooks==1.2.0
# via
# build
# pip-tools
pytest==9.0.1
# via
# pytest-cov
# pytest-django
# via cmp (pyproject.toml)
pytest-cov==7.0.0
# via -r requirements.in
# via cmp (pyproject.toml)
pytest-django==4.11.1
# via -r requirements.in
pytokens==0.3.0
# via black
requests==2.32.5
# via
# azure-core
# folium
# msal
# via cmp (pyproject.toml)
sentry-sdk==2.44.0
# via -r requirements.in
setuptools==80.9.0
# via pip-tools
sqlparse==0.5.3
# via
# django
# django-debug-toolbar
stack-data==0.6.3
# via ipython
traitlets==5.14.3
# via
# ipython
# matplotlib-inline
typing-extensions==4.15.0
# via
# azure-core
# azure-identity
# azure-storage-blob
urllib3==2.5.0
# via
# requests
# sentry-sdk
wcwidth==0.2.14
# via prompt-toolkit
wheel==0.45.1
# via pip-tools
# via cmp (pyproject.toml)
whitenoise==6.11.0
# via -r requirements.in
xyzservices==2025.10.0
# via folium
# via cmp (pyproject.toml)
22 changes: 19 additions & 3 deletions templates/cmp/histories.html
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,14 @@ <h2>Corps of Military Police</h2>
{% include 'navbar.html' %}
</div>

<div class="center-content">
<h4>Corps March</h4>
<div class="diary-links">
<ul class="aligned-list">
<li><a href="https://docs.google.com/document/d/e/2PACX-1vT5qV0JWdO5oV5uihIJQ_YiCMbz0jMgl4-HGmoJMKgbC7PkqD4wudIFVTj0SjIR0mguLarG2Sls3YhK/pub" target="_blank">The Corps March (The Watchtower) by Lieutenant Colonel C Wilkinson</a></li>
</ul>
</div>
</div>

<div class="center-content">
<h4>Pre 1914</h4>
Expand All @@ -62,7 +70,7 @@ <h5>War Diaries</h5>
</ul>
</div>

<h5>Miscellaneous Information</h5>
<h5>Miscellaneous Information World War 1</h5>
<div class="diary-links">
<ul class="aligned-list">
<li><a href="https://docs.google.com/document/d/e/2PACX-1vQjrDl9abCTXe10p9NXTD-pNdfhoeT_y8bPFFnfrpMVQuiEd_lSWPDt3_PBkauQ-Mu_mw0nuG9HzAxN/pub" target="_blank">Military Police Standing Orders in World War 1</a></li>
Expand All @@ -74,6 +82,7 @@ <h5>Miscellaneous Information</h5>
<li><a href="https://docs.google.com/document/d/e/2PACX-1vRryXOZ2oAb7jWxPWXl8BVy76nNGSXF4cChOhdFWrSckctRyqzOwo_DOKXfxdj_1GFGOMqD4rSp2wFU/pub" target="_blank">Military Police Speed Checks 1917</a></li>
<li><a href="https://docs.google.com/document/d/e/2PACX-1vSULzH-ZdWhH0Up16DaQWkBWRUxSGEZyOUORAM8VsH-wJybPrAjrDupsZTpIZN6qn5xqGVHGkHOwFQH/pub" target="_blank">APM Western Command Test for Transfer to Military Police, 1917</a></li>
<li><a href="https://docs.google.com/document/d/e/2PACX-1vRhW2PLdi-OsnnyU2Ajk5Rqew3Axh3-jhyy8-jRrfdyF_2USQTpCibt6rK8goo_fFiqeI6qE3fVIGaV/pub" target="_blank">Traffic Control Squadrons 1917 - 1918</a></li>
<li><a href="https://docs.google.com/document/d/e/2PACX-1vT1_Fpy5gvPSnJUFR98YDAyzsDQZyfHyOoFfsC5QdH1kIWpyvvAwRYqRCtUKRX3RejF4fCi0ij6n1B9/pub" target="_blank">Photographs of Military Mounted Police World War 1</a></li>
</ul>
</div>

Expand All @@ -92,7 +101,6 @@ <h4 id="Inter-War-Period">Inter-War Period</h4>
<li><a href="" target="_blank">A New Military Police Corps</a></li>
<li><a href="" target="_blank">Court of Inquiry Gunner Bolton</a></li>
<li><a href="" target="_blank">MFP Training Course</a></li>
<li><a href="" target="_blank">Traffic Control</a></li>
<li><a href="https://docs.google.com/document/d/e/2PACX-1vSNK6a__Y3Ol4M-Gn3zaYGJ6qLBrUybUwWVGpsKF4W9ndMZlaOdUknBCAddC_9eHPWWvU7w5timFgHJ/pub" target="_blank">Murder & Suicide, Dieppe June 1919</a></li>
<li><a href="https://docs.google.com/document/d/e/2PACX-1vRQe3PnUboQ5ACRKvCmFbxUGqeyKFSUFV8-fDPWk9LY_NQ_-tZIcs7JtVK6PVcRBVaBHzvIdpqcrvhg/pub" target="_blank">Murder Trial of Sergeant Arthur Pank MFP, Old Bailey London May 1919</a></li>
<li><a href="https://docs.google.com/document/d/e/2PACX-1vR1cnsyJkySuKZISSfHuuYR9mHb1tvdUL_fueq5ixM8qW_NBNGJAYviTH3Z6rqWOBEquXGgICKgVN5q/pub" target="_blank">Military Policeman Shot by Sailor, Glasgow 1919</a></li>
Expand All @@ -106,6 +114,7 @@ <h4 id="World-War-II">World War II</h4>
<h5>War Diaries</h5>
<div class="diary-links">
<ul class="aligned-list">

<li><a href="https://docs.google.com/document/d/e/2PACX-1vRUv-YxGa6PYg0DeK7Pz_t77skJ9FCs4tKDEWrTdqffa90NXwVRQoGfbK_-huhHtGc89_ymtiREmmRs/pub" target="_blank">WO167 British Expeditionary Force 1939-1940</a></li>
<li><a href="https://docs.google.com/document/d/e/2PACX-1vRkaiUaIM5wyJPRSzomFDKo7B73d2Q_bgpaimsX7lzqjgnGBGG24Pb4tNJakWt3DUBPKhV1hObDxA9_/pub" target="_blank">WO168 North West Norway (Rupert Force)</a></li>
<li><a href="https://docs.google.com/document/d/e/2PACX-1vQUUoWyTc2cWYF4I0DKACc1G-iWFWiDMW-nHjDkZ7ebxj-FUFlFSzCmvYG7Ny40IM3UhDOrABL3R7SR/pub" target="_blank">WO169 Middle East</a></li>
Expand All @@ -130,12 +139,14 @@ <h5>Unit Histories</h5>
<li><a href="https://docs.google.com/document/d/e/2PACX-1vSxgyC2lyTi7x74828IW8kzyis_r4rZyrBKA3V07hEsTH_OAyf8F7_XDoWpMtQxTlntOHP3K9nAAPqD/pub" target="_blank">247 Provost Company (Berlin)</a></li>
<li><a href="https://docs.google.com/document/d/e/2PACX-1vQpwcRa-mBj8yuSqmnRhAvLM9sZSKlKbGow0rGSOa6bsRXhKT3NX8gNglWoUJlT1mC9-lHJpkBgBnmf/pub" target="_blank">Auxiliary Territorial Service Provost</a></li>
<li><a href="https://docs.google.com/document/d/e/2PACX-1vS9tReVBeZMfVam1eRWQfAxnid87AP5ovmTq8FNbkid3Z3jSBgeub2a7KQxYi0yzrOtwAY7-zAbwKtO/pub" target="_blank">53 (Welch) Division Provost Company</a></li>
<li><a href="https://docs.google.com/document/d/e/2PACX-1vR4Xl9GCEvt7L2KiZR07pgwiXwLrWgRVNKYsOCkhmFhPDAp_EYp2BS1RI1tJ-V63g8ko-hCFx-BnC1P/pub" target="_blank">WO166/5846 D Group Traffic Control Yorkshire &amp; Lincolnshire 1941</a></li>
</ul>
</div>

<h5>Miscellaneous Information</h5>
<h5>Miscellaneous Information WW2</h5>
<div class="diary-links">
<ul class="aligned-list">
<li><a href="https://docs.google.com/document/d/e/2PACX-1vQ-erul32h5J4BirhHbmHnZqVburkbRDOv5KYi86OfqUyRVGXS_5RXk3YgJFItguhSchIGjG_RlGDlz/pub" target="_blank">Field Security Police Wing (Green Caps) 1937 - 1940</a></li>
<li><a href="https://rmpa.org.uk/corps-military-police-medals-awards-1939-1945/" target="_blank">Corps Military Police Medals & Awards 1939 – 1945</a></li>
<li><a href="https://docs.google.com/document/d/e/2PACX-1vQgCBwJESdnOrJiXdykFfjb19ogn_zhLtEAnNf4l76imduc_SlGxJEcMS_90ruQHOLB0LurGWqwKYS5/pub" target="_blank">World War 2 Order of Battle</a></li>
<li><a href="https://docs.google.com/document/d/e/2PACX-1vR_or0PnrUT3_LtuzG0x-dE84uFzVV3_Zc4TAPVR10woV3H-1vzLbX_RDBWRFYEjx_PSrMcFA1xivQq/pub" target="_blank">Vulnerable Points (VP) Companies in World War 2</a></li>
Expand All @@ -151,8 +162,13 @@ <h5>Miscellaneous Information</h5>
<li><a href="https://docs.google.com/document/d/e/2PACX-1vQi-jLkYY3Z_RZ1KDPqop1mJ_dtN3UwD8QUxsKhtjo_6vR70N2k0nv5AtuQg19xxytmvcccq0VgSoZa/pub" target="_blank">Black day at Brouai, Normandy 21st July 1944</a></li>
<li><a href="https://docs.google.com/document/d/e/2PACX-1vQDcTh5vrdR5CpH1ckntDA16PIp1Rps5nt858TW-Q-oHkQWsaXheywZzcy3zLbaHjaS9kjYKhWl04ZK/pub" target="_blank">SIB 60 & 78 Sections War Crime Investigations, Italy August 1944 </a></li>
<li><a href="https://docs.google.com/document/d/e/2PACX-1vSVd-1kPBUcLeNU0Nx9g0Rg92CgZ5Rvyb2A7UDM5qS03P9uY-pAsngclhpCao3_ei0HlbPVLlNCFIgL/pub" target="_blank">Arnhem Casualties, Netherlands 17th - 26th September 1944</a></li>
<li><a href="https://docs.google.com/document/d/e/2PACX-1vQTiqJOZOU_nMizfYN2lZxTWK-IzFor6eKD11cqGH2fOkgMgt9vYircWPw30BcX6FoGB5nIESO2vkKV/pub?embedded=true" target="_blank">Military Police Steel Helmet Insignia (November 1944)</a></li>
<li><a href="https://docs.google.com/document/d/e/2PACX-1vRhgt63PAdBhBjpmHICZjhM2y5c1-4vsd9SKr_j6r_Mpznzv3jC0lAp2mTJdR8vhtD9E1yLlh4L_saW/pub" target="_blank">WO205 Rhine Crossing (Operation Plunder), Germany March 1945 </a></li>
<li><a href="https://docs.google.com/document/d/e/2PACX-1vTbmmHpX7Nhcd2_oIH50gQCHWIOGGpZLacLPlIEEF92qw8UQQiI6R03ewTFAkdm8cCMMRcnjSbKUyVb/pub" target="_blank">Explosion at Bari Docks, Italy April 1945</a></li>
<li><a href="https://docs.google.com/document/d/e/2PACX-1vQozhcBOxkTE7EWaViBQY7OOMqKSEPlk2Ni_JBNdhnTx-joONyCa0C9Uj-GVh8iUBC4AwKyeW9d9DVO/pub" target="_blank">Traffic Control May 1941</a></li>
<li><a href="https://docs.google.com/document/d/e/2PACX-1vTK7rZUutGqMLKqgtydPXN6ufaiRinyYBgznfhIDY_SmwPPXDJshWAFT72TSc7ucR_RA4HtaD907qkC/pub" target="_blank">Black Day in London 5th July 1944</a></li>


</ul>
</div>
</div>
Expand Down
Loading