diff --git a/cards/templates/cards/bulk_edit.html b/cards/templates/cards/bulk_edit.html index 889995e..517de24 100644 --- a/cards/templates/cards/bulk_edit.html +++ b/cards/templates/cards/bulk_edit.html @@ -22,6 +22,19 @@ .table-container .table{min-width:1100px} +
+
+ {% csrf_token %} +
+ +
+ +
+
+
{% csrf_token %}
diff --git a/cards/urls.py b/cards/urls.py index d74a488..b1642f6 100644 --- a/cards/urls.py +++ b/cards/urls.py @@ -15,4 +15,5 @@ urlpatterns = [ path('backgrounds//delete/', views.background_delete, name='background_delete'), path('overview/', views.cards_overview, name='overview'), path('overview/bulk-update/', views.cards_bulk_update, name='overview_bulk_update'), + path('overview/create-images/', views.cards_bulk_create_images, name='overview_create_images'), ] diff --git a/cards/views.py b/cards/views.py index 0c5de6d..75c2039 100644 --- a/cards/views.py +++ b/cards/views.py @@ -192,3 +192,26 @@ def cards_bulk_update(request): # If invalid, re-render the overview with errors backgrounds = BackgroundImage.objects.all() return render(request, 'cards/bulk_edit.html', {'formset': formset, 'backgrounds': backgrounds}) + + +def cards_bulk_create_images(request): + """Create multiple Dinosaur cards from uploaded images (one card per image). + + Expects a multipart POST with one or more files in the `images` field. + The card `name` is derived from the filename if not provided. + """ + if request.method != 'POST': + return HttpResponseBadRequest('Only POST allowed') + files = request.FILES.getlist('images') + if not files: + return HttpResponseBadRequest('No images uploaded') + created = [] + for f in files: + # derive a friendly name from filename + base = os.path.splitext(getattr(f, 'name', '') or '')[0] + name = base.replace('_', ' ').replace('-', ' ').strip().title() or 'New Dinosaur' + d = Dinosaur(name=name, image=f) + d.save() + created.append(d) + # Redirect back to overview + return redirect('cards:overview') diff --git a/db.sqlite3 b/db.sqlite3 index 0ea7313..8cecf62 100644 Binary files a/db.sqlite3 and b/db.sqlite3 differ diff --git a/media/dinosaurs/Ankylosaurus.png b/media/dinosaurs/Ankylosaurus.png new file mode 100644 index 0000000..e803def Binary files /dev/null and b/media/dinosaurs/Ankylosaurus.png differ diff --git a/media/dinosaurs/Barosaurus_PnMVlPA.png b/media/dinosaurs/Barosaurus_PnMVlPA.png new file mode 100644 index 0000000..131ec43 Binary files /dev/null and b/media/dinosaurs/Barosaurus_PnMVlPA.png differ diff --git a/media/dinosaurs/Baryonyx.png b/media/dinosaurs/Baryonyx.png new file mode 100644 index 0000000..81e078b Binary files /dev/null and b/media/dinosaurs/Baryonyx.png differ diff --git a/media/dinosaurs/Brachiosaurus.png b/media/dinosaurs/Brachiosaurus.png new file mode 100644 index 0000000..878e950 Binary files /dev/null and b/media/dinosaurs/Brachiosaurus.png differ diff --git a/media/dinosaurs/Brontosaurus.png b/media/dinosaurs/Brontosaurus.png new file mode 100644 index 0000000..d1334b0 Binary files /dev/null and b/media/dinosaurs/Brontosaurus.png differ diff --git a/media/dinosaurs/Diplodocus_5A9Zul1.png b/media/dinosaurs/Diplodocus_5A9Zul1.png new file mode 100644 index 0000000..453087e Binary files /dev/null and b/media/dinosaurs/Diplodocus_5A9Zul1.png differ diff --git a/media/dinosaurs/Edmontonia.png b/media/dinosaurs/Edmontonia.png new file mode 100644 index 0000000..9fb4daf Binary files /dev/null and b/media/dinosaurs/Edmontonia.png differ diff --git a/media/dinosaurs/Elasmosaurus.png b/media/dinosaurs/Elasmosaurus.png new file mode 100644 index 0000000..cc16a0a Binary files /dev/null and b/media/dinosaurs/Elasmosaurus.png differ diff --git a/media/dinosaurs/Gallimimus_6poz3o3.png b/media/dinosaurs/Gallimimus_6poz3o3.png new file mode 100644 index 0000000..2aad9a2 Binary files /dev/null and b/media/dinosaurs/Gallimimus_6poz3o3.png differ diff --git a/media/dinosaurs/Giganotosaurus.png b/media/dinosaurs/Giganotosaurus.png new file mode 100644 index 0000000..83535fa Binary files /dev/null and b/media/dinosaurs/Giganotosaurus.png differ diff --git a/media/dinosaurs/Hypsilophodon.png b/media/dinosaurs/Hypsilophodon.png new file mode 100644 index 0000000..98acc26 Binary files /dev/null and b/media/dinosaurs/Hypsilophodon.png differ diff --git a/media/dinosaurs/Ichthyosaurus.png b/media/dinosaurs/Ichthyosaurus.png new file mode 100644 index 0000000..9ecb5d2 Binary files /dev/null and b/media/dinosaurs/Ichthyosaurus.png differ diff --git a/media/dinosaurs/Iguanadon.png b/media/dinosaurs/Iguanadon.png new file mode 100644 index 0000000..92db374 Binary files /dev/null and b/media/dinosaurs/Iguanadon.png differ diff --git a/media/dinosaurs/Maiasaura.png b/media/dinosaurs/Maiasaura.png new file mode 100644 index 0000000..10e99a5 Binary files /dev/null and b/media/dinosaurs/Maiasaura.png differ diff --git a/media/dinosaurs/Microraptor.png b/media/dinosaurs/Microraptor.png new file mode 100644 index 0000000..82c25e9 Binary files /dev/null and b/media/dinosaurs/Microraptor.png differ diff --git a/media/dinosaurs/Oviraptor.png b/media/dinosaurs/Oviraptor.png new file mode 100644 index 0000000..a061474 Binary files /dev/null and b/media/dinosaurs/Oviraptor.png differ diff --git a/media/dinosaurs/Pachycephalosaurus.png b/media/dinosaurs/Pachycephalosaurus.png new file mode 100644 index 0000000..69e0833 Binary files /dev/null and b/media/dinosaurs/Pachycephalosaurus.png differ diff --git a/media/dinosaurs/Protoceratops.png b/media/dinosaurs/Protoceratops.png new file mode 100644 index 0000000..7374b4e Binary files /dev/null and b/media/dinosaurs/Protoceratops.png differ diff --git a/media/dinosaurs/Pteranodon.png b/media/dinosaurs/Pteranodon.png new file mode 100644 index 0000000..25d1cb3 Binary files /dev/null and b/media/dinosaurs/Pteranodon.png differ diff --git a/media/dinosaurs/Saltasaurus.png b/media/dinosaurs/Saltasaurus.png new file mode 100644 index 0000000..e736c1a Binary files /dev/null and b/media/dinosaurs/Saltasaurus.png differ diff --git a/media/dinosaurs/Spinosaurus.png b/media/dinosaurs/Spinosaurus.png new file mode 100644 index 0000000..a0efb37 Binary files /dev/null and b/media/dinosaurs/Spinosaurus.png differ diff --git a/media/dinosaurs/Stegosaurus.png b/media/dinosaurs/Stegosaurus.png new file mode 100644 index 0000000..c1131bd Binary files /dev/null and b/media/dinosaurs/Stegosaurus.png differ diff --git a/media/dinosaurs/Styracosaurus.png b/media/dinosaurs/Styracosaurus.png new file mode 100644 index 0000000..e454cc5 Binary files /dev/null and b/media/dinosaurs/Styracosaurus.png differ diff --git a/media/dinosaurs/Triceratops.png b/media/dinosaurs/Triceratops.png new file mode 100644 index 0000000..52c59a2 Binary files /dev/null and b/media/dinosaurs/Triceratops.png differ diff --git a/media/dinosaurs/Troodon.png b/media/dinosaurs/Troodon.png new file mode 100644 index 0000000..057aa79 Binary files /dev/null and b/media/dinosaurs/Troodon.png differ diff --git a/media/dinosaurs/Tyrannosaurus_rex_.png b/media/dinosaurs/Tyrannosaurus_rex_.png new file mode 100644 index 0000000..f228150 Binary files /dev/null and b/media/dinosaurs/Tyrannosaurus_rex_.png differ diff --git a/media/dinosaurs/Velociraptor.png b/media/dinosaurs/Velociraptor.png new file mode 100644 index 0000000..7f92da8 Binary files /dev/null and b/media/dinosaurs/Velociraptor.png differ diff --git a/templates/cards/bulk_edit.html b/templates/cards/bulk_edit.html index 864b7ce..a8a3a9d 100644 --- a/templates/cards/bulk_edit.html +++ b/templates/cards/bulk_edit.html @@ -21,6 +21,19 @@ .table-container .table{min-width:1100px} +
+ + {% csrf_token %} +
+ +
+ + +
+
{% csrf_token %}