- New plants/services/vpc.py: search VPC (vasteplantencatalogus.nl) by keyword and scrape full plant detail on select - Both searches run in parallel via ThreadPoolExecutor - species_results partial shows results from both sources with colour-coded source badges (green = Perenual, blue = VPC) - vpc_select view scrapes the detail page on select, creates Species with bloom_months, max_height_cm, sunlight from the VPC page - Species.vpc_slug field (migration 0005) prevents re-importing the same plant - beautifulsoup4 added to requirements - Handles VPC unavailability gracefully (empty results, no error shown to user) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
19 lines
1.1 KiB
Python
19 lines
1.1 KiB
Python
from django.urls import path
|
|
from plants.views import dashboard, plants, pruning, species
|
|
|
|
urlpatterns = [
|
|
path('', dashboard.dashboard, name='dashboard'),
|
|
path('plants/', plants.plant_list, name='plant_list'),
|
|
path('plants/add/', plants.plant_add, name='plant_add'),
|
|
path('plants/<int:pk>/', plants.plant_detail, name='plant_detail'),
|
|
path('plants/<int:pk>/edit/', plants.plant_edit, name='plant_edit'),
|
|
path('plants/<int:pk>/delete/', plants.plant_delete, name='plant_delete'),
|
|
path('plants/<int:pk>/log-pruning/', plants.log_pruning, name='log_pruning'),
|
|
path('plants/<int:pk>/upload-photo/', plants.upload_photo, name='upload_photo'),
|
|
path('photos/<int:photo_pk>/set-thumbnail/', plants.set_thumbnail, name='set_thumbnail'),
|
|
path('photos/<int:photo_pk>/delete/', plants.delete_photo, name='delete_photo'),
|
|
path('pruning/', pruning.pruning_calendar, name='pruning_calendar'),
|
|
path('species/search/', species.species_search, name='species_search'),
|
|
path('species/select/', species.species_select, name='species_select'),
|
|
path('species/select/vpc/', species.vpc_select, name='vpc_select'),
|
|
]
|