feat: update nav, remove Perenual UI, fix delete button alignment
- Nav '+' button now links to identify_upload instead of plant_add - Remove Perenual toggle, results section, and 'Also search Perenual' link from species_results partial - Wrap Plant card / Crop thumbnail / Delete plant buttons in flex container for consistent mobile alignment - Fix pre-existing test assertion to match actual crop-thumbnail URL Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
e93809ccbf
commit
f308d006e4
4 changed files with 12 additions and 43 deletions
|
|
@ -31,7 +31,7 @@
|
|||
<div class="d-flex gap-2">
|
||||
<a href="{% url 'plant_list' %}" class="btn btn-sm btn-outline-light">Plants</a>
|
||||
<a href="{% url 'add_plant_from_scan' %}" class="btn btn-sm btn-outline-light" title="Add plant by card scan">📷</a>
|
||||
<a href="{% url 'plant_add' %}" class="btn btn-sm btn-light fw-bold">+</a>
|
||||
<a href="{% url 'identify_upload' %}" class="btn btn-sm btn-light fw-bold">+</a>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,35 +1,3 @@
|
|||
{% if error %}
|
||||
<p class="list-group-item text-warning small">⚠️ Perenual: {{ error }}</p>
|
||||
{% endif %}
|
||||
|
||||
{% for result in perenual_results %}
|
||||
<div class="list-group-item">
|
||||
<div class="d-flex align-items-center gap-2 mb-1">
|
||||
{% if result.default_image and result.default_image.thumbnail %}
|
||||
<img src="{{ result.default_image.thumbnail }}" width="40" height="40" class="rounded" style="object-fit:cover; flex-shrink:0;">
|
||||
{% else %}
|
||||
<div style="width:40px; height:40px; background:#d8f3dc; border-radius:.375rem; flex-shrink:0; display:flex; align-items:center; justify-content:center;">🌿</div>
|
||||
{% endif %}
|
||||
<div class="flex-grow-1">
|
||||
<div class="fw-semibold">{{ result.common_name }}</div>
|
||||
<small class="text-muted fst-italic">{{ result.scientific_name|join:", " }}</small>
|
||||
</div>
|
||||
<span class="badge bg-success" style="font-size:.65rem;">Perenual</span>
|
||||
</div>
|
||||
<form method="POST" action="{% url 'species_select' %}">
|
||||
{% csrf_token %}
|
||||
<input type="hidden" name="perenual_id" value="{{ result.id }}">
|
||||
<input type="hidden" name="common_name" value="{{ result.common_name }}">
|
||||
<input type="hidden" name="scientific_name" value="{{ result.scientific_name|join:', ' }}">
|
||||
<input type="hidden" name="watering" value="{{ result.watering|default:'' }}">
|
||||
<input type="hidden" name="sunlight" value="{{ result.sunlight|join:', ' }}">
|
||||
<input type="hidden" name="pruning_months" value="{{ result.pruning_month|join:', ' }}">
|
||||
<input type="hidden" name="api_image_url" value="{{ result.default_image.regular_url|default:'' }}">
|
||||
<button type="submit" class="btn btn-sm btn-success">Select →</button>
|
||||
</form>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
{% for result in vpc_results %}
|
||||
<div class="list-group-item">
|
||||
<div class="d-flex align-items-center gap-2 mb-1">
|
||||
|
|
@ -52,6 +20,6 @@
|
|||
</div>
|
||||
{% endfor %}
|
||||
|
||||
{% if not perenual_results and not vpc_results and not error and q %}
|
||||
<p class="list-group-item text-muted">No results for "{{ q }}"</p>
|
||||
{% if not vpc_results and not error and q %}
|
||||
<p class="list-group-item text-muted small">No VPC results for "{{ q }}"</p>
|
||||
{% endif %}
|
||||
|
|
|
|||
|
|
@ -87,11 +87,12 @@
|
|||
{% include "plants/partials/photo_gallery.html" %}
|
||||
</div>
|
||||
|
||||
<a href="{% url 'plant_card' plant.pk %}" class="btn btn-sm btn-outline-secondary mb-2">🪧 Plant card</a>
|
||||
<div class="d-flex flex-wrap gap-2 mt-2">
|
||||
<a href="{% url 'plant_card' plant.pk %}" class="btn btn-sm btn-outline-secondary">🪧 Plant card</a>
|
||||
{% if plant.card_photos.all %}
|
||||
<a href="{% url 'crop_thumbnail' plant.pk %}" class="btn btn-sm btn-outline-secondary mb-2">✂️ Crop thumbnail</a>
|
||||
<a href="{% url 'crop_thumbnail' plant.pk %}" class="btn btn-sm btn-outline-secondary">✂️ Crop thumbnail</a>
|
||||
{% endif %}
|
||||
|
||||
<a href="{% url 'plant_delete' plant.pk %}" class="btn btn-outline-danger btn-sm mt-2">Delete plant</a>
|
||||
<a href="{% url 'plant_delete' plant.pk %}" class="btn btn-sm btn-outline-danger">Delete plant</a>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
|
|
|||
|
|
@ -92,12 +92,12 @@ class TestPlantDetail:
|
|||
plant = Plant.objects.create(name='Fern')
|
||||
PlantCardPhoto.objects.create(plant=plant, image='plants/cards/card.jpg')
|
||||
resp = client.get(reverse('plant_detail', args=[plant.pk]))
|
||||
assert 'View plant card' in resp.content.decode()
|
||||
assert 'crop-thumbnail' in resp.content.decode()
|
||||
|
||||
def test_card_button_hidden_when_no_card_photos(self, client):
|
||||
plant = Plant.objects.create(name='Fern')
|
||||
resp = client.get(reverse('plant_detail', args=[plant.pk]))
|
||||
assert 'View plant card' not in resp.content.decode()
|
||||
assert 'crop-thumbnail' not in resp.content.decode()
|
||||
|
||||
|
||||
@pytest.mark.django_db
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue