Skip to content

Commit

Permalink
Adding file uploader for photos
Browse files Browse the repository at this point in the history
  • Loading branch information
gm3dmo committed May 18, 2024
1 parent bc74a7d commit af24880
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 19 deletions.
21 changes: 21 additions & 0 deletions cmp/models.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
import os
from django.contrib.auth.models import AbstractUser
from django.db import models
from django.urls import reverse
from django.utils.translation import gettext_lazy as _

from PIL import Image
from django.conf import settings

from .managers import CustomUserManager


Expand Down Expand Up @@ -134,6 +138,13 @@ def __str__(self):


def get_upload_to(instance, filename):
# Django puts a random string into the filename with:
#return f"""static/media/{instance.soldier_id}/memorial/{instance.soldier_id}.jpg"""
#extension = filename.split('.')[-1]
print(filename)
print(instance.soldier_id)
#print(instance)
extension = "jpg"
return f"""static/media/{instance.soldier_id}/memorial/{instance.soldier_id}.jpg"""

# http://localhost:8000/media/3774/memorial/3774.jpg
Expand All @@ -146,6 +157,16 @@ class SoldierDeath(models.Model):
)
date = models.DateField(null=True, blank=True)
image = models.ImageField(upload_to=get_upload_to, null=True, blank=True)
def save(self, *args, **kwargs):
super().save(*args, **kwargs) # Call the "real" save() method.
if self.image: # if an image exists for this model
img = Image.open(self.image.path) # Open the image file
# Resize the image and save it.
img.thumbnail((300, 400), Image.LANCZOS)
print(f"settings.STATIC_ROOT: {settings.STATIC_ROOT}")
new_filename = os.path.join(settings.STATIC_ROOT, 'media', str(self.soldier_id), 'memorial', f'{self.soldier_id}.jpg')
print(f"new_filename: {new_filename}")
img.save(new_filename)
company = models.ForeignKey(
Company,
blank=True,
Expand Down
6 changes: 5 additions & 1 deletion cmp/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,15 @@
from django.conf import settings
from . import views

# ...

from .views import soldier_detail



urlpatterns = [

path('soldier/<int:soldier_id>/', soldier_detail, name='soldier_detail'),

path("", views.index, name="index"),

path("sentry-debug/", views.trigger_error ),
Expand Down
42 changes: 25 additions & 17 deletions cmp/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@

import folium
from django.views.generic import TemplateView
import logging


def mgmt_index(request):
Expand Down Expand Up @@ -308,26 +309,33 @@ def edit_countries(request, country_id=None):
return render(request, "cmp/edit-countries.html", {"form": form})


from django.shortcuts import render, get_object_or_404, redirect
from django.contrib import messages


def soldier_detail(request, soldier_id):
soldier = get_object_or_404(Soldier, id=soldier_id)
return render(request, 'cmp/soldier.html', {'soldier': soldier})

def edit_soldiers(request, soldier_id):
post = request.POST
form = editSoldierForm(post or None)
death_form = None
if soldier_id:
soldier = Soldier.objects.get(id=soldier_id)
form = editSoldierForm(post or None, instance=soldier)
try:
death = SoldierDeath.objects.get(soldier=soldier)
death_form = editSoldierDeathForm(post or None, request.FILES, instance=death)
except SoldierDeath.DoesNotExist:
death_form = editSoldierDeathForm(post or None)

if post and form.is_valid() and (death_form is None or death_form.is_valid()):
form.save()
if death_form is not None:
soldier = get_object_or_404(Soldier, id=soldier_id)
death, created = SoldierDeath.objects.get_or_create(soldier=soldier)

if request.method == 'POST':
form = editSoldierForm(request.POST, instance=soldier)
death_form = editSoldierDeathForm(request.POST, request.FILES, instance=death)

if form.is_valid() and death_form.is_valid():
form.save()
death_form.save()
return HttpResponse("Soldier Added")
return render(request, "cmp/edit-soldiers.html", {"form": form, 'death_form': death_form})
messages.success(request, "Soldier updated successfully")
return redirect('soldier_detail', soldier_id=soldier.id) # Redirect to the soldier detail page

else: # GET request
form = editSoldierForm(instance=soldier)
death_form = editSoldierDeathForm(instance=death)

return render(request, "cmp/edit-soldiers.html", {"form": form, 'death_form': death_form})


def search_soldiers(request):
Expand Down
3 changes: 2 additions & 1 deletion templates/cmp/edit-soldiers.html
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{% extends "base.html" %}
{% load static crispy_forms_tags %}
{% block title %}Soldiers Form{% endblock %}
{% block title %}Edit/Update Soldier{% endblock %}
{% block content %}

<div>
Expand All @@ -9,6 +9,7 @@ <h1 class="mgmt-title">Update/Edit Soldier Record </h1>
{% csrf_token %}
{{ form.management_form }}
{{ form.errors }}
{{ death_form.errors }}
{{form | crispy}}
<h2 class="mgmt-title">Soldier Death Details </h2>
{{ death_form|crispy }}
Expand Down

0 comments on commit af24880

Please sign in to comment.