from django.shortcuts import render, redirect from django.urls import reverse from plants.models import Species from plants.services.perenual import search_species, PerenualError _MONTH_MAP = { 'January': 1, 'February': 2, 'March': 3, 'April': 4, 'May': 5, 'June': 6, 'July': 7, 'August': 8, 'September': 9, 'October': 10, 'November': 11, 'December': 12, } def species_search(request): q = request.GET.get('q', '').strip() results = [] error = None if len(q) >= 2: try: results = search_species(q) except PerenualError as e: error = str(e) return render(request, 'plants/partials/species_results.html', { 'results': results, 'q': q, 'error': error, }) def species_select(request): perenual_id = int(request.POST['perenual_id']) if not Species.objects.filter(perenual_id=perenual_id).exists(): pruning_str = request.POST.get('pruning_months', '') pruning_months = [ _MONTH_MAP[m.strip()] for m in pruning_str.split(',') if m.strip() in _MONTH_MAP ] Species.objects.create( perenual_id=perenual_id, common_name=request.POST.get('common_name', ''), scientific_name=request.POST.get('scientific_name', ''), watering=request.POST.get('watering', ''), sunlight=request.POST.get('sunlight', ''), pruning_months=pruning_months, api_image_url=request.POST.get('api_image_url', ''), ) species = Species.objects.get(perenual_id=perenual_id) return redirect(f"{reverse('plant_add')}?species_id={species.pk}")