feat: save identify photos as plant thumbnails after wizard completes
Temp images uploaded during Pl@ntNet identification are now copied to PlantPhoto records when the plant is created in step 3. First image is auto-set as thumbnail. Temp files still deleted after transfer. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
bee9fe0cd8
commit
d1e588bbc3
1 changed files with 19 additions and 4 deletions
|
|
@ -1,4 +1,5 @@
|
||||||
import logging
|
import logging
|
||||||
|
import os
|
||||||
import uuid
|
import uuid
|
||||||
from django.shortcuts import render, redirect
|
from django.shortcuts import render, redirect
|
||||||
from django.core.files.base import ContentFile
|
from django.core.files.base import ContentFile
|
||||||
|
|
@ -6,7 +7,7 @@ from django.core.files.storage import default_storage
|
||||||
from plants.services import plantnet
|
from plants.services import plantnet
|
||||||
from plants.services.plantnet import PlantNetError
|
from plants.services.plantnet import PlantNetError
|
||||||
from plants.services.vpc import search_species as vpc_search
|
from plants.services.vpc import search_species as vpc_search
|
||||||
from plants.models import Plant, Species
|
from plants.models import Plant, PlantPhoto, Species
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
@ -171,9 +172,23 @@ def identify_fields(request):
|
||||||
plant = Plant.objects.create(name=name, species=species)
|
plant = Plant.objects.create(name=name, species=species)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
for p in request.session.get('identify_image_paths', []):
|
image_paths = request.session.get('identify_image_paths', [])
|
||||||
if default_storage.exists(p['path']):
|
for i, p in enumerate(image_paths):
|
||||||
default_storage.delete(p['path'])
|
if not default_storage.exists(p['path']):
|
||||||
|
continue
|
||||||
|
try:
|
||||||
|
with default_storage.open(p['path'], 'rb') as fh:
|
||||||
|
data = fh.read()
|
||||||
|
filename = os.path.basename(p['path'])
|
||||||
|
photo = PlantPhoto(plant=plant, is_thumbnail=(i == 0))
|
||||||
|
photo.image.save(filename, ContentFile(data), save=True)
|
||||||
|
except Exception:
|
||||||
|
logger.exception('identify_fields: failed to save photo %s', p['path'])
|
||||||
|
finally:
|
||||||
|
try:
|
||||||
|
default_storage.delete(p['path'])
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
finally:
|
finally:
|
||||||
_clear_session(request)
|
_clear_session(request)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue