From 13d56066abe1726c99e1a3f7ec77fbde8eceae23 Mon Sep 17 00:00:00 2001 From: Lilfade Date: Fri, 27 Jun 2025 17:43:50 -0500 Subject: [PATCH] things --- README.md | 375 +++++++++----- Security.md | 151 ++++++ app/errors.py | 2 +- entrypoint.sh | 4 +- migrations/env.py | 2 +- .../versions/209596f02c2a_auto_migrate.py | 28 ++ .../versions/42ce181f4eab_auto_migrate.py | 28 ++ .../versions/93f8a5cbc643_auto_migrate.py | 28 ++ .../versions/9cc2626a6e79_auto_migrate.py | 28 ++ .../versions/d54a88422a68_auto_migrate.py | 28 ++ .../versions/d7bbffbbc931_auto_migrate.py | 32 ++ .../versions/f00a9585a348_auto_migrate.py | 28 ++ nip.zip | Bin 260803 -> 270114 bytes plugins/core_ui/templates/core_ui/base.html | 288 +++++++---- plugins/core_ui/templates/core_ui/home.html | 53 +- plugins/growlog/forms.py | 16 +- plugins/growlog/models.py | 1 + plugins/growlog/routes.py | 183 ++++++- .../growlog/templates/growlog/log_form.html | 47 +- .../growlog/templates/growlog/log_list.html | 132 +++-- plugins/plant/routes.py | 82 +++- plugins/plant/templates/plant/index.html | 461 ++++++++++-------- 22 files changed, 1500 insertions(+), 497 deletions(-) create mode 100644 Security.md create mode 100644 migrations/versions/209596f02c2a_auto_migrate.py create mode 100644 migrations/versions/42ce181f4eab_auto_migrate.py create mode 100644 migrations/versions/93f8a5cbc643_auto_migrate.py create mode 100644 migrations/versions/9cc2626a6e79_auto_migrate.py create mode 100644 migrations/versions/d54a88422a68_auto_migrate.py create mode 100644 migrations/versions/d7bbffbbc931_auto_migrate.py create mode 100644 migrations/versions/f00a9585a348_auto_migrate.py diff --git a/README.md b/README.md index eeb9bfb..bcbc759 100644 --- a/README.md +++ b/README.md @@ -1,179 +1,320 @@ -# 🌿 Nature In Pots β€” Ultra Plant Tracker Platform +# Nature In Pots Community Site -> Modular, collaborative, end-to-end plant tracking and pricing platform with QR+barcode IDs, propagation logs, resale tools, and role-based management. +![License](https://img.shields.io/badge/license-MIT-blue) ![Flask](https://img.shields.io/badge/Flask-2.2-green) ![SQLAlchemy](https://img.shields.io/badge/SQLAlchemy-1.4-blue) ![Neo4j](https://img.shields.io/badge/Neo4j-5.0-yellow) + +A modular, plugin-driven platform for tracking plants, propagation lineage, growth logs, pricing, and community submissionsβ€”built with Flask, MySQL, and Neo4j. --- -## 🧩 Overview +## πŸ“Œ Table of Contents -This is a full-feature, plugin-driven Flask 2+ web application for managing and tracking plant ownership, propagation, pricing, and growth. It supports dynamic plant attributes, collaboration groups, trade logs, QR/barcode labeling, resale workflows, offline sync, moderator tools, and future AI/ML modules. +1. [Introduction & Goals](#introduction--goals) +2. [Architecture & Tech Stack](#architecture--tech-stack) +3. [Quickstart & Installation](#quickstart--installation) +4. [Project Structure](#project-structure) +5. [Core Features](#core-features) -Built for hobbyists, businesses, breeders, and community gardens. + 1. [Plant Profiles](#plant-profiles) + 2. [Grow Logs](#grow-logs) + 3. [Verified Lineage Tracking](#verified-lineage-tracking) + 4. [Pricing Logic](#pricing-logic) + 5. [Substrate & Fertilizer Tracking](#substrate--fertilizer-tracking) + 6. [Shipping Tracker](#shipping-tracker) + 7. [Plant Folders](#plant-folders) + 8. [Media Gallery & Voting](#media-gallery--voting) + 9. [QR & Barcode Labeling](#qr--barcode-labeling) + 10. [Offline Sync (PWA)](#offline-sync-pwa) + 11. [Smart Tools](#smart-tools) +6. [Plugin Ecosystem](#plugin-ecosystem) +7. [Data Models & Schema](#data-models--schema) +8. [APIs & CLI](#apis--cli) +9. [User Interface & PWA](#user-interface--pwa) +10. [Security & Privacy](#security--privacy) +11. [Permissions Matrix](#permissions-matrix) +12. [Admin & Dev Tools](#admin--dev-tools) +13. [Internationalization](#internationalization) +14. [Roadmap & Future Enhancements](#roadmap--future-enhancements) +15. [Contributing](#contributing) +16. [License](#license) --- -## πŸš€ Core Features +## πŸ“ Introduction & Goals + +Nature In Pots empowers hobbyists, breeders, and businesses to: + +* **Create & manage** rich plant profiles (names, lineage, pricing, notes). +* **Track growth** via logs with metrics, health/pest events, and custom traits. +* **Visualize propagation** on a Neo4j-powered ancestry graph. +* **Upload & curate** imagesβ€”community-voted, featured selections. +* **Handle secure transfers** of ownership, preserving full history and privacy. +* **Organize** plants into folders with shareable QR/back-barcodes. +* **Import & export** comprehensive CSV/ZIP bundles, including media. +* **Extend** via plugins: materials, ledger, inventory, vendor collectives, and more. + +--- + +## πŸ— Architecture & Tech Stack + +* **Backend**: Python 3.11, Flask 2+, Flask-Login, Flask-Migrate (Alembic) +* **ORM**: SQLAlchemy (MySQL) & Neo4j Bolt driver +* **Storage**: Local FS (`UPLOAD_FOLDER`), optional S3 sync +* **Frontend**: Bootstrap 5, responsive + PWA caching +* **QR/Barcode**: Pillow + qrcode, CODE-128 barcodes +* **Security**: End-to-End encryption with optional key escrow +* **Testing**: pytest + coverage; CI/CD via GitHub Actions +* **Containerization**: Docker & Docker Compose + +--- + +## πŸš€ Quickstart & Installation + +1. **Clone** + + ```bash + git clone https://github.com/yourorg/nip-community.git + cd nip-community + ``` +2. **Virtualenv & Dependencies** + + ```bash + python3 -m venv venv; source venv/bin/activate + pip install -r requirements.txt + ``` +3. **Env & Config** + Copy `.env.example` β†’ `.env`, set `FLASK_APP=app`, DB/Neo4j URLs, `SECRET_KEY`, `UPLOAD_FOLDER`. +4. **Migrations** + + ```bash + flask db init + flask db migrate + flask db upgrade + ``` +5. **Run** + + ```bash + flask run --reload + ``` + + Access [http://localhost:5000](http://localhost:5000) + +--- + +## πŸ“‚ Project Structure + +``` +. +β”œβ”€β”€ app/ # Core app factory, auth, errors, Neo4j utils +β”œβ”€β”€ plugins/ # Feature modules (plant, media, utility, etc.) +β”‚ β”œβ”€β”€ plant/ +β”‚ β”œβ”€β”€ media/ +β”‚ β”œβ”€β”€ utility/ +β”‚ β”œβ”€β”€ growlog/ +β”‚ β”œβ”€β”€ submissions/ +β”‚ β”œβ”€β”€ vendor/ +β”‚ └── (future: materials, ledger, inventory, collective) +β”œβ”€β”€ migrations/ # Alembic scripts +β”œβ”€β”€ static/ # Global assets +β”œβ”€β”€ templates/ # Shared base templates +β”œβ”€β”€ tests/ # pytest suite +β”œβ”€β”€ Dockerfile +β”œβ”€β”€ docker-compose.yml +β”œβ”€β”€ requirements.txt +└── README.md # ← this file +``` + +--- + +## ⭐ Core Features ### 🌱 Plant Profiles -- Add, edit, and log plants with full propagation and ownership history -- Each plant is assigned a permanent, scannable **QR code** and **barcode** -- Plants can be marked as `Public`, `Unlisted`, or `Folder-only` -- All pricing, logs, and lineage are tied to a plant ID and user -### 🧾 Grow Logs -- Add logs with images, notes, and growth metrics -- Track success/failure events, mutation events, pest/disease sightings -- Link logs to substrate recipes and fertilizers +* **Create/Edit** plants with: + + * UUID & custom slug + * Plant type (seed, cutting, tissue culture, division, etc.) + * Common & scientific names (with lookup/autocomplete) + * Vendor, notes, active flag + * Parent (`mother_uuid`) references +* **Detail page** shows metadata, lineage nav, QR links, folders. + +### πŸ““ Grow Logs + +* Timestamped logs with: + + * Size, leaf count, substrate mix, potting notes + * Health/pest/disease events & treatments + * Up to 5 images per log +* **Timeline** view on plant detail. ### πŸ”— Verified Lineage Tracking -- Lineage links are created by the new owner -- Parent plant's owner must **approve** the linkage -- Verified lineage is marked with a badge and shown in plant lineage tree -- Pending links are visible only to the creator + +* **Neo4j** graph for parentβ†’child relationships. +* Pending link requests: parent-owner approval required. +* Verified links get a badge; unverified shown in draft. ### πŸ’° Pricing Logic -- Only the current owner and admins can see pricing -- On transfer, original price is retained but hidden from the buyer -- Buyer must submit their own price for tracking resale data -- Admins see full price history; mods and others do not -### πŸ§ͺ Substrate + Fertilizer Tracking -- Track custom mixes by ingredient (e.g., β€œFine Pumice”, β€œLarge Bark”) -- Store cost per ingredient and auto-calculate total mix cost -- Recipes can be reused across plants -- Fertilizer schedules can be attached to logs and outcomes tracked +* **Owner & admin** see full pricing history; others do not. +* On transfer, seller’s last price is retained but hidden; buyer sets new price. +* **Price records** tracked as `PriceHistory` entries. +* Visibility toggles: `public`, `unlisted`, `folder-only`. + +### πŸ§ͺ Substrate & Fertilizer Tracking + +* Define **mix recipes**: ingredient list with cost per unit. +* Auto-calculate total mix cost based on usage (e.g., ounces, cups). +* Reusable recipes attachable to grow logs. +* **Fertilizer schedules** logged and outcomes tracked. ### πŸ“¦ Shipping Tracker -- When a plant is sold, sellers can add: - - Carrier, tracking number, est. delivery date -- Ownership updates post buyer confirmation -- Shipping logs are attached to the plant transfer log + +* During sale, seller enters: carrier, tracking number, est. delivery. +* Transfer completes after buyer confirmation. +* Shipping events attached to ownership log. ### πŸ“ Plant Folders -- Organize plants into folders (e.g., β€œFor Sale”, β€œ2025 Spring Batch”) -- Each folder gets its own QR code: + +* Organize plants into **named folders** (e.g., β€œFor Sale”, β€œ2025 Seedlings”). +* Each folder has its own QR code and slug: `https://domain.com/{username}/folder/{id}|{slug}` -- Folders can be public, private, or unlisted +* Folder visibility: `public`, `private`, `unlisted`. + +### πŸ–Ό Media Gallery & Voting + +* **Upload**, rotate, delete images per plant/growlog. +* Per-user β€œheart” or β€œbroken heart” voting. +* **Featured image** toggle via media plugin; batch fallback to top-voted. +* EXIF data stripped on upload. + +### πŸ“‡ QR & Barcode Labeling + +* **QR codes** (SVG & PNG) unique per plant/folder. +* **Barcode (CODE-128)** fallback; splits long data into stacked barcodes. +* Printable labels via dashboard. + +### πŸ“Ά Offline Sync (PWA) + +* Full form support offline (plants, logs, submissions). +* Sync queue when back online. +* QR/barcode generation deferred until server sync. + +### πŸ€– Smart Tools + +* **Reputation System**: users rated by buyers (accuracy, responsiveness). +* β€œTrusted Grower” badge auto-granted. +* **Inter-Plant Comparison**: side-by-side charts of growth metrics or events. --- -## πŸ§β€β™‚οΈ Users, Roles, and Groups +## πŸ”Œ Plugin Ecosystem -### πŸ‘€ User Roles -- **User** – default -- **Moderator** – can manage flags, notes -- **Admin** – full backend, plugin, pricing, banning control -- Roles are extensible via admin UI - -### πŸ›‘ Moderator Panel -- View and resolve reports -- Add private notes to users or plants (e.g., warnings, suspicion) -- Ban users - - Banned users' plants become read-only - - Cannot add new plants - - Buyers can request transfer via email approval from banned seller - -### πŸ‘₯ Collaboration Groups -- Users can form groups to share: - - Logs - - Images - - Pricing (opt-in) -- Groups have role-based permissions (manager, editor, viewer) -- Useful for stores, teams, or shared collections +| Plugin | Purpose | Status | +| --------------- | --------------------------------------------- | ---------- | +| **plant** | Core plant CRUD & lineage | βœ… Live | +| **media** | Image storage, EXIF, voting, featured | βœ… Live | +| **utility** | Import/Export CSV/ZIP, QR code generation | βœ… Live | +| **growlog** | Growth logs & update images | βœ… Live | +| **submissions** | Community submissions & voting | βœ… Live | +| **vendor** | Vendor/collective profiles, membership, roles | βœ… Live | +| **materials** | Potting mixes, proprietary flags | πŸ”œ Planned | +| **ledger** | Cost logs, fees, tax, shipping | πŸ”œ Planned | +| **inventory** | Stock management, restock/depletion | πŸ”œ Planned | +| **collective** | Shared groups with RBAC | πŸ”œ Planned | --- -## 🏷️ Labeling System: QR + Barcode +## πŸ“Š Data Models & Schema -### QR Code -- Generated on server after initial sync -- Unique to plant, never changes -- SVG and PNG available +Refer to `/migrations/` for full schema. Key tables include: -### Barcode Fallback -- CODE-128 format -- If data too long, split into stacked barcodes -- Same encoded info: plant ID, owner ID, visibility, timestamp -- Printable as label from dashboard +* `users`, `roles`, `user_roles` +* `plant_common_name`, `plant_scientific_name` +* **`plant`**: FKs β†’ common, scientific, owner, mother\_uuid, featured\_media +* `media`: FKs β†’ plant\_id, growlog\_id, uploader +* `featured_image` +* `plant_update`, `update_image` +* `plant_ownership_log`, `transfer_request` +* `submission`, `submission_image` +* `health_event`, `trait`, lookup tables +* `vendor_profile`, `vendor_member`, `affiliation_request`, `claim_request` +* `listing`, `price_history` +* `inventory_item`, `restock_event`, `depletion_event` --- -## πŸ” Permissions Matrix +## πŸ›  APIs & CLI -| Feature | Owner | Group Member | Moderator | Admin | -|--------------------------|-------|---------------|-----------|--------| -| View Logs | βœ… | βœ… (if shared) | βœ… | βœ… | -| Edit Logs | βœ… | πŸ”* | 🚫 | βœ… | -| View Pricing | βœ… | βœ… (opt-in) | 🚫 | βœ… | -| Ban User / Flag Review | 🚫 | 🚫 | βœ… | βœ… | -| Approve Lineage | 🚫 | 🚫 | 🚫 | βœ… | -| Confirm Lineage | βœ… | 🚫 | 🚫 | βœ… | +* **REST**: `/api/v1/` CRUD, OpenAPI docs, JWT auth, rate limiting +* **GraphQL**: `/graphql` batched queries for plants + relations +* **CLI**: -πŸ”* if granted by group manager + * `flask db {init,migrate,upgrade}` + * `flask user create` + * `flask plugin {install,list,enable}` + * `flask preload-data` --- -## 🌍 Offline Sync (PWA) -- Full add/log/edit possible offline -- Sync queue uploads on connection -- QR/barcodes generated **after** server confirms sync -- Client-side validation before queue +## 🌐 User Interface & PWA + +* **Bootstrap 5** responsive layouts +* **Desktop**: large gallery + thumbnail carousel +* **Mobile**: grid lightbox with pinch-zoom & close button +* Offline caching via service worker --- -## 🧠 Smart Tools +## πŸ”’ Security & Privacy -### ⭐️ User Reputation System -- Users rated after trades (accuracy, responsiveness, helpfulness) -- β€œTrusted Grower” tag auto-assigned above threshold -- Can be revoked via vote or admin action - -### 🌿 Inter-Plant Comparison -- Timeline comparison for growth, size, or log outcomes -- Side-by-side charts and event overlays +* **End-to-End Encryption** for notes, logs, pricing +* **Key Escrow** (opt-in) vs **Maximum Privacy** (no escrow) +* **Blind Transfers**: admin can reassign without decryption +* **Audit Logs**: immutable record of all actions +* **Role-Based Access**: owner, group member, moderator, admin --- -## πŸ”§ Admin & Dev Tools +## πŸ›‚ Permissions Matrix -### πŸ“€ Seed Data Generator -- Seeds with common aroids, herbs, and test users -- Covers full range of roles, plant types, and edge cases +| Action | Owner | Group | Mod | Admin | +| ----------------------------- | :---: | :---: | :-: | :---: | +| Create/Edit own plants & logs | βœ… | βœ…\* | βœ… | βœ… | +| View public plants/logs | βœ… | βœ… | βœ… | βœ… | +| Approve lineage & submissions | ❌ | ❌ | βœ… | βœ… | +| Manage vendors/collectives | ❌ | ❌ | ❌ | βœ… | +| Transfer override (no-owner) | ❌ | ❌ | ❌ | βœ… | +| Plugin management & settings | ❌ | ❌ | ❌ | βœ… | -### πŸ—‚ Plugin System -- CLI & plugin discovery system -- Admin can toggle plugins -- Plugin types: CLI, UI Panel, API extension, webhook, scheduler - -### πŸ—ƒ Data Export / Disaster Recovery -- Export: SQL dump, file archive, JSON profile -- Restore: Admin-initiated rollback or full upload restore +\* if granted by group manager --- -## πŸ›£ API System +## βš™ Admin & Dev Tools -### REST & GraphQL APIs -- REST: OpenAPI-documented endpoints -- GraphQL: Advanced multi-entity queries -- JWT-secured -- Follows role-based access rules +* **Moderator Panel**: flag review, user notes, bans +* **Seed Data Generator**: sample users, plants, logs +* **Plugin CLI**: install/enable/disable plugins at runtime +* **ERD Viewer**: visualize database schema +* **Disaster Recovery**: SQL dump + file archive + JSON profiles --- -## 🌐 Internationalization -- Flask-Babel integration -- Language switcher in UI -- Community-managed translation interface (admin toggled) +## 🌍 Internationalization + +* **Flask-Babel** for translations +* Language switcher in UI +* Community-managed translation portal (admin toggle) --- -## πŸ“… Future Enhancements +## πŸ›£ Roadmap & Future Enhancements -- 🧠 AI Journal Assistant (log suggestions, summarization) -- πŸ“† Calendar View for logs/reminders -- 🧰 Visual ERD Generator Tool -- πŸ›’ Live Auctions Plugin (for curated resale events) +* AI-powered journal assistant & mutation detection +* Calendar reminders for watering, fertilizing +* Visual ERD generator tool in admin UI +* Live auction & escrow plugin +* Third-party webhook integrations (Zapier, Discord) --- diff --git a/Security.md b/Security.md new file mode 100644 index 0000000..0f338b2 --- /dev/null +++ b/Security.md @@ -0,0 +1,151 @@ +# πŸ” SECURITY.md +_Nature In Pots Community – Data & Platform Security Policy_ + +--- + +## πŸ”’ Overview + +This document outlines the security practices, encryption policies, and recovery procedures used by the **Nature In Pots Community** platform. Our goal is to maintain the privacy and integrity of user data while offering secure collaboration, recovery, and administrative tooling where appropriate. + +--- + +## βœ… Security Principles + +We follow a simple core policy: + +> **Your data is yours.** You choose who sees it, how it's stored, and what happens to it. + +To support this, we implement: + +- **End-to-End Encryption (E2EE)** for sensitive records. +- **User-controlled privacy flags** and public visibility toggles. +- **Role-based access control** for owners, groups, vendors, and admins. +- **Optional key escrow** to allow secure, auditable recovery when necessary. +- **Strict audit trails** for all user and admin actions. +- **Granular ownership transfers** that preserve privacy unless explicitly permitted. + +--- + +## πŸ§‘β€πŸŒΎ User Data Encryption + +When a user creates or imports plants, grow logs, health reports, media, or related records, the following options apply for encryption and recovery: + +### πŸ” Option 1: Maximum Privacy Mode (No Escrow) + +- Data is encrypted with a user-owned key never shared with the server. +- Only the user can decrypt or transfer ownership. +- If the key is lost, **data is unrecoverable**. Even admins cannot assist. + +### πŸ—οΈ Option 2: Recovery-Enabled Mode (Escrow) + +- A securely wrapped recovery key is stored using *key escrow*. +- Admins may **transfer ownership** of encrypted records to a new user (e.g., due to account inactivity or verified reassignment), but cannot read or decrypt the data. +- All access and recovery actions are **audited** and must be explicitly justified. + +Users are prompted to choose between these options on signup and may change their preference at any time from **Account Settings β†’ Privacy Options**. + +#### TL;DR (Explain Like I’m 5) + +- **Full Privacy Mode**: Only you have the key to your secret garden. Lose it = locked out forever. +- **Recovery Mode (Default)**: Still private, but we keep a spare key in a vault. We can give your garden to a new gardener if needed, but we still can’t peek inside. + +--- + +## πŸ§‘β€πŸ€β€πŸ§‘ Groups, Vendors, and Collectives + +A "collective identity" (e.g., vendor, grow group, brand) may be created and owned by one or more users. + +- Each collective has its own permission rules. +- Permissions include: `read`, `edit`, `propose changes`, `submit grow logs`, `mark as sold`, and `manage members`. +- Collective-owned content inherits the encryption mode of the creator or the designated owner. + +All actions taken under a collective identity are tagged with the acting user and timestamped. + +--- + +## πŸ” Ownership & Record Transfers + +Records (plants, logs, vendors, mixes, etc.) can be transferred between: + +- Individuals ↔ Individuals +- Individuals ↔ Vendors / Groups +- Vendors ↔ Vendors + +**Transfer rules:** + +| Encryption Mode | Owner Action Required | Admin Recovery Allowed | +|------------------|------------------------|-------------------------| +| No Escrow | βœ… Yes | ❌ No | +| Escrow Enabled | 🚫 Optional (if owner inactive) | βœ… Yes | + +All transfers are logged with before/after states and include initiator ID, reason, and timestamp. + +--- + +## πŸͺ΅ Audit Logging + +All significant actions are audit-logged: + +- Logins, failed logins, and 2FA attempts +- Data modifications (create, edit, delete) +- Media uploads +- Grow log entries +- Transfers and permission changes +- Escrow-based recoveries + +Logs are not publicly accessible but may be disclosed to the user on request or subpoena. + +--- + +## ⚠️ Admin Privileges & Limitations + +Admins can: + +- Approve or remove public content +- Recover records **only** under escrow-enabled mode +- View metadata (timestamps, image hashes, plant IDs) +- **Not** decrypt user content in maximum privacy mode +- **Not** alter audit trails or impersonate users + +--- + +## πŸ§ͺ Developer Guidelines + +### Secret Management + +- All crypto secrets must be kept in `.env` or secure vaults. +- Never commit user-generated keys or tokens to Git. + +### Input Sanitization + +- All user inputs are escaped before rendering. +- Media uploads are validated and stripped of EXIF/GPS metadata. + +### TLS & HTTPS + +- All public and private routes must use HTTPS. +- Local dev servers use self-signed certs or SSL proxy. + +--- + +## πŸ›‘οΈ Future Features (Planned) + +- βœ… Invite-only registration support +- βœ… Per-record expiration and auto-archival +- πŸ”’ Self-destructing records (for sensitive notes) +- 🧬 Cryptographic signatures on propagation history +- 🧾 Printable audit exports per plant/vendor + +--- + +## πŸ“ž Contact & Reporting Security Issues + +If you find a vulnerability or need to report a breach: + +- Email: [security@natureinpots.com](mailto:security@natureinpots.com) +- PGP Key: Coming soon +- Please include reproduction steps and affected data + +--- + +_This document is maintained by the Nature In Pots security team. Last updated: {{ current_year }}._ diff --git a/app/errors.py b/app/errors.py index 177089e..06d4677 100644 --- a/app/errors.py +++ b/app/errors.py @@ -4,7 +4,7 @@ bp = Blueprint('errors', __name__) @bp.app_errorhandler(400) def bad_request(error): - return render_template('400.html'), 400 + return render_template('400.html', error=error), 400 @bp.app_errorhandler(404) def bad_request(error): diff --git a/entrypoint.sh b/entrypoint.sh index a1878fb..82f0f2b 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -24,9 +24,7 @@ fi # Autogenerate new migration if needed echo "[πŸ› οΈ] Checking for new schema changes" -if ! flask db migrate -m "auto-migrate" --compare-type --render-as-batch; then - echo "[ℹ️] No schema changes detected" -fi +flask db migrate -m "auto-migrate" || echo "[ℹ️] No schema changes detected" # Apply migrations echo "[▢️] Applying database migrations" diff --git a/migrations/env.py b/migrations/env.py index f47ac5c..12671da 100644 --- a/migrations/env.py +++ b/migrations/env.py @@ -53,7 +53,7 @@ def run_migrations_online(): target_metadata=target_metadata, compare_type=True, sort_tables=True, - render_as_batch=True, # βœ… important! + render_as_batch=True, ) with context.begin_transaction(): context.run_migrations() diff --git a/migrations/versions/209596f02c2a_auto_migrate.py b/migrations/versions/209596f02c2a_auto_migrate.py new file mode 100644 index 0000000..eca65e2 --- /dev/null +++ b/migrations/versions/209596f02c2a_auto_migrate.py @@ -0,0 +1,28 @@ +"""auto-migrate + +Revision ID: 209596f02c2a +Revises: 42ce181f4eab +Create Date: 2025-06-27 09:50:03.962692 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '209596f02c2a' +down_revision = '42ce181f4eab' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + pass + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + pass + # ### end Alembic commands ### diff --git a/migrations/versions/42ce181f4eab_auto_migrate.py b/migrations/versions/42ce181f4eab_auto_migrate.py new file mode 100644 index 0000000..d043d9c --- /dev/null +++ b/migrations/versions/42ce181f4eab_auto_migrate.py @@ -0,0 +1,28 @@ +"""auto-migrate + +Revision ID: 42ce181f4eab +Revises: 93f8a5cbc643 +Create Date: 2025-06-27 09:47:28.698481 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '42ce181f4eab' +down_revision = '93f8a5cbc643' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + pass + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + pass + # ### end Alembic commands ### diff --git a/migrations/versions/93f8a5cbc643_auto_migrate.py b/migrations/versions/93f8a5cbc643_auto_migrate.py new file mode 100644 index 0000000..4ba265e --- /dev/null +++ b/migrations/versions/93f8a5cbc643_auto_migrate.py @@ -0,0 +1,28 @@ +"""auto-migrate + +Revision ID: 93f8a5cbc643 +Revises: 9cc2626a6e79 +Create Date: 2025-06-27 09:31:27.528072 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '93f8a5cbc643' +down_revision = '9cc2626a6e79' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + pass + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + pass + # ### end Alembic commands ### diff --git a/migrations/versions/9cc2626a6e79_auto_migrate.py b/migrations/versions/9cc2626a6e79_auto_migrate.py new file mode 100644 index 0000000..b456be3 --- /dev/null +++ b/migrations/versions/9cc2626a6e79_auto_migrate.py @@ -0,0 +1,28 @@ +"""auto-migrate + +Revision ID: 9cc2626a6e79 +Revises: d54a88422a68 +Create Date: 2025-06-27 09:28:40.656166 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '9cc2626a6e79' +down_revision = 'd54a88422a68' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + pass + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + pass + # ### end Alembic commands ### diff --git a/migrations/versions/d54a88422a68_auto_migrate.py b/migrations/versions/d54a88422a68_auto_migrate.py new file mode 100644 index 0000000..fb6ac3f --- /dev/null +++ b/migrations/versions/d54a88422a68_auto_migrate.py @@ -0,0 +1,28 @@ +"""auto-migrate + +Revision ID: d54a88422a68 +Revises: d7bbffbbc931 +Create Date: 2025-06-27 09:24:27.947480 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'd54a88422a68' +down_revision = 'd7bbffbbc931' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + pass + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + pass + # ### end Alembic commands ### diff --git a/migrations/versions/d7bbffbbc931_auto_migrate.py b/migrations/versions/d7bbffbbc931_auto_migrate.py new file mode 100644 index 0000000..ead1201 --- /dev/null +++ b/migrations/versions/d7bbffbbc931_auto_migrate.py @@ -0,0 +1,32 @@ +"""auto-migrate + +Revision ID: d7bbffbbc931 +Revises: +Create Date: 2025-06-27 09:20:35.600333 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'd7bbffbbc931' +down_revision = None +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('grow_logs', schema=None) as batch_op: + batch_op.add_column(sa.Column('event_type', sa.String(length=50), nullable=False)) + + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + with op.batch_alter_table('grow_logs', schema=None) as batch_op: + batch_op.drop_column('event_type') + + # ### end Alembic commands ### diff --git a/migrations/versions/f00a9585a348_auto_migrate.py b/migrations/versions/f00a9585a348_auto_migrate.py new file mode 100644 index 0000000..5fd857f --- /dev/null +++ b/migrations/versions/f00a9585a348_auto_migrate.py @@ -0,0 +1,28 @@ +"""auto-migrate + +Revision ID: f00a9585a348 +Revises: 209596f02c2a +Create Date: 2025-06-27 09:55:08.249023 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'f00a9585a348' +down_revision = '209596f02c2a' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + pass + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + pass + # ### end Alembic commands ### diff --git a/nip.zip b/nip.zip index 44a807a9cf4c47ced43e72a7ffd51a2328de8045..54feb4081495bdb2df51fb1b374a065f3c627ce8 100644 GIT binary patch delta 70970 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 delta 61406 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 - - - - {% block title %}Nature In Pots Community{% endblock %} - - + + + {% block title %}Nature In Pots Community{% endblock %} + + + -

+ +
+ {% with messages = get_flashed_messages(with_categories=true) %} + {% if messages %} +
+ {% for category, message in messages %} + + {% endfor %} +
+ {% endif %} {% endwith %} {% block content %}{% endblock %} -
-
+ + +
© {{ current_year | default(2025) }} Nature In Pots Community. All rights reserved. -
- +
+ + diff --git a/plugins/core_ui/templates/core_ui/home.html b/plugins/core_ui/templates/core_ui/home.html index b68933c..9fcb38a 100644 --- a/plugins/core_ui/templates/core_ui/home.html +++ b/plugins/core_ui/templates/core_ui/home.html @@ -1,6 +1,55 @@ {% extends 'core_ui/base.html' %} {% block title %}Home | Nature In Pots{% endblock %} + {% block content %} -

Welcome to Nature In Pots 🌿

-

This is the community hub for plant tracking, propagation history, and price sharing.

+ +
+

Welcome to Nature In Pots

+

+ Your internal platform for comprehensive plant tracking, propagation history, and collaborative logging. +

+

+ Free to use for the time being
+ (A future subscription or licensing model may be introduced as needed.) +

+
+ + +
+
+

Plant Profiles

+

Quickly create and manage detailed recordsβ€”type, names, lineage, notes, and custom slugs for easy sharing.

+
+
+

Grow Logs

+

Maintain a timeline of growth metrics, health events, substrate mixes, and propagation notes.

+
+
+

Image Gallery

+

Upload, rotate, and feature photos for each plant. Community voting and one-click β€œfeatured” selection.

+
+
+

Lineage Tracking

+

Visualize parent–child relationships with a graph powered by Neo4jβ€”track every cutting, seed, and division.

+
+
+

Pricing & Transfers

+

Securely log acquisition costs, resale prices, and ownership changesβ€”with history retained and protected.

+
+
+

Import & Export

+

Bulk-import plants and media via CSV/ZIP. Export your entire dataset and images for backups or reporting.

+
+
+ + +
+ {% if current_user.is_authenticated %} + View My Plants + Import Data + {% else %} + Register Now + Log In + {% endif %} +
{% endblock %} diff --git a/plugins/growlog/forms.py b/plugins/growlog/forms.py index ddf1bd7..01b3f7c 100644 --- a/plugins/growlog/forms.py +++ b/plugins/growlog/forms.py @@ -1,8 +1,16 @@ +# plugins/growlog/forms.py + from flask_wtf import FlaskForm -from wtforms import TextAreaField, SelectField, SubmitField +from wtforms import SelectField, StringField, TextAreaField, BooleanField, SubmitField from wtforms.validators import DataRequired, Length class GrowLogForm(FlaskForm): + plant_uuid = SelectField( + 'Plant', + choices=[], # injected in view + validators=[DataRequired()] + ) + event_type = SelectField('Event Type', choices=[ ('water', 'Watered'), ('fertilizer', 'Fertilized'), @@ -11,5 +19,7 @@ class GrowLogForm(FlaskForm): ('pest', 'Pest Observed') ], validators=[DataRequired()]) - note = TextAreaField('Notes', validators=[Length(max=1000)]) - submit = SubmitField('Add Log') \ No newline at end of file + title = StringField('Title', validators=[Length(max=255)]) + notes = TextAreaField('Notes', validators=[Length(max=1000)]) + is_public = BooleanField('Public?') + submit = SubmitField('Add Log') diff --git a/plugins/growlog/models.py b/plugins/growlog/models.py index e922bec..7b2bc8f 100644 --- a/plugins/growlog/models.py +++ b/plugins/growlog/models.py @@ -7,6 +7,7 @@ class GrowLog(db.Model): id = db.Column(db.Integer, primary_key=True) plant_id = db.Column(db.Integer, db.ForeignKey("plant.id"), nullable=False) + event_type = db.Column(db.String(50), nullable=False) title = db.Column(db.String(255), nullable=True) notes = db.Column(db.Text, nullable=True) is_public = db.Column(db.Boolean, default=False, nullable=False) diff --git a/plugins/growlog/routes.py b/plugins/growlog/routes.py index 5987941..c3b7fdb 100644 --- a/plugins/growlog/routes.py +++ b/plugins/growlog/routes.py @@ -1,31 +1,176 @@ -from flask import Blueprint, render_template, redirect, url_for, request -from flask_login import login_required +from uuid import UUID as _UUID +from werkzeug.exceptions import NotFound +from flask import ( + Blueprint, render_template, abort, redirect, url_for, request, flash +) +from flask_login import login_required, current_user from app import db from .models import GrowLog from .forms import GrowLogForm -from plugins.plant.models import Plant +from plugins.plant.models import Plant, PlantCommonName -bp = Blueprint('growlog', __name__, template_folder='templates') -@bp.route('/plants//logs') +bp = Blueprint( + 'growlog', + __name__, + url_prefix='/growlogs', + template_folder='templates', +) + + +def _get_plant_by_uuid(uuid_val): + """ + uuid_val may already be a uuid.UUID (from a route converter) + or a string (from form POST). Normalize & validate it, then lookup. + """ + # 1) If Flask route gave us a UUID instance, just stringify it + if isinstance(uuid_val, _UUID): + val = str(uuid_val) + else: + # 2) Otherwise try to parse it as a hex string + try: + val = str(_UUID(uuid_val)) + except (ValueError, TypeError): + # invalid format β†’ 404 + abort(404) + + # 3) Only return plants owned by current_user + return ( + Plant.query + .filter_by(uuid=val, owner_id=current_user.id) + .first_or_404() + ) + + +def _user_plant_choices(): + # join to the common‐name table and sort by its name + plants = ( + Plant.query + .filter_by(owner_id=current_user.id) + .join(PlantCommonName, Plant.common_id == PlantCommonName.id) + .order_by(PlantCommonName.name) + .all() + ) + return [ + (p.uuid, f"{p.common_name.name} – {p.uuid}") + for p in plants + ] + + +@bp.route('/add', methods=['GET','POST']) +@bp.route('//add', methods=['GET','POST']) @login_required -def view_logs(plant_id): - plant = Plant.query.get_or_404(plant_id) - logs = GrowLog.query.filter_by(plant_id=plant.id).order_by(GrowLog.timestamp.desc()).all() - return render_template('growlog/log_list.html', plant=plant, logs=logs) - -@bp.route('/plants//logs/add', methods=['GET', 'POST']) -@login_required -def add_log(plant_id): - plant = Plant.query.get_or_404(plant_id) +def add_log(plant_uuid=None): form = GrowLogForm() + # 1) always populate the dropdown behind the scenes + form.plant_uuid.choices = _user_plant_choices() + + plant = None + hide_select = False + + # 2) if URL had a plant_uuid, load & pre-select it, hide dropdown + if plant_uuid: + plant = _get_plant_by_uuid(plant_uuid) + form.plant_uuid.data = str(plant_uuid) + hide_select = True + if form.validate_on_submit(): + # 3) on POST, resolve via form.plant_uuid + plant = _get_plant_by_uuid(form.plant_uuid.data) log = GrowLog( - plant_id=plant.id, - event_type=form.event_type.data, - note=form.note.data + plant_id = plant.id, + event_type = form.event_type.data, + title = form.title.data, + notes = form.notes.data, + is_public = form.is_public.data, ) db.session.add(log) db.session.commit() - return redirect(url_for('growlog.view_logs', plant_id=plant.id)) - return render_template('growlog/log_form.html', form=form, plant=plant) \ No newline at end of file + flash('Grow log added.', 'success') + return redirect( + url_for('growlog.list_logs', plant_uuid=plant.uuid) + ) + + return render_template( + 'growlog/log_form.html', + form = form, + plant = plant, + hide_plant_select = hide_select + ) + + +@bp.route('/', defaults={'plant_uuid': None}) +@bp.route('/') +@login_required +def list_logs(plant_uuid): + # how many to show? + limit = request.args.get('limit', default=10, type=int) + + if plant_uuid: + # logs for a single plant + plant = _get_plant_by_uuid(plant_uuid) + query = GrowLog.query.filter_by(plant_id=plant.id) + else: + # logs for all your plants + plant = None + query = ( + GrowLog.query + .join(Plant, GrowLog.plant_id == Plant.id) + .filter(Plant.owner_id == current_user.id) + ) + + logs = ( + query + .order_by(GrowLog.created_at.desc()) + .limit(limit) + .all() + ) + + return render_template( + 'growlog/log_list.html', + plant=plant, + logs=logs, + limit=limit + ) + + +@bp.route('//edit/', methods=['GET', 'POST']) +@login_required +def edit_log(plant_uuid, log_id): + plant = _get_plant_by_uuid(plant_uuid) + log = GrowLog.query.filter_by(id=log_id, plant_id=plant.id).first_or_404() + form = GrowLogForm(obj=log) + + # Lock the dropdown to this one plant + form.plant_uuid.choices = [(plant.uuid, plant.common_name.name)] + form.plant_uuid.data = plant.uuid + + if form.validate_on_submit(): + log.event_type = form.event_type.data + log.title = form.title.data + log.notes = form.notes.data + log.is_public = form.is_public.data + db.session.commit() + + flash('Grow log updated.', 'success') + return redirect(url_for('growlog.list_logs', plant_uuid=plant_uuid)) + + return render_template( + 'growlog/log_form.html', + form=form, + plant_uuid=plant_uuid, + plant=plant, + log=log + ) + + +@bp.route('//delete/', methods=['POST']) +@login_required +def delete_log(plant_uuid, log_id): + plant = _get_plant_by_uuid(plant_uuid) + log = GrowLog.query.filter_by(id=log_id, plant_id=plant.id).first_or_404() + db.session.delete(log) + db.session.commit() + + flash('Grow log deleted.', 'warning') + return redirect(url_for('growlog.list_logs', plant_uuid=plant_uuid)) diff --git a/plugins/growlog/templates/growlog/log_form.html b/plugins/growlog/templates/growlog/log_form.html index 235dfa4..ecef5f9 100644 --- a/plugins/growlog/templates/growlog/log_form.html +++ b/plugins/growlog/templates/growlog/log_form.html @@ -1,10 +1,41 @@ {% extends 'core_ui/base.html' %} +{% block title %}Add Grow Log{% endblock %} + {% block content %} -

Add Log for Plant #{{ plant.id }}

-
- {{ form.hidden_tag() }} -

{{ form.event_type.label }}
{{ form.event_type() }}

-

{{ form.note.label }}
{{ form.note(rows=4) }}

-

{{ form.submit() }}

-
-{% endblock %} \ No newline at end of file +

Add Grow Log{% if plant %} for {{ plant.common_name.name }}{% endif %}

+
+ {{ form.hidden_tag() }} + + {# only show this when not pre-selecting via URL #} + {% if not hide_plant_select %} +
+ {{ form.plant_uuid.label(class="form-label") }} + {{ form.plant_uuid(class="form-select") }} +
+ {% else %} + {{ form.plant_uuid(type="hidden") }} + {% endif %} + +
+ {{ form.event_type.label(class="form-label") }} + {{ form.event_type(class="form-select") }} +
+ +
+ {{ form.title.label(class="form-label") }} + {{ form.title(class="form-control") }} +
+ +
+ {{ form.notes.label(class="form-label") }} + {{ form.notes(class="form-control", rows=4) }} +
+ +
+ {{ form.is_public(class="form-check-input") }} + {{ form.is_public.label(class="form-check-label") }} +
+ + +
+{% endblock %} diff --git a/plugins/growlog/templates/growlog/log_list.html b/plugins/growlog/templates/growlog/log_list.html index e3f146c..322c7dc 100644 --- a/plugins/growlog/templates/growlog/log_list.html +++ b/plugins/growlog/templates/growlog/log_list.html @@ -1,36 +1,104 @@ {# plugins/growlog/templates/growlog/log_list.html #} -{% import 'core_ui/_media_macros.html' as media %} {% extends 'core_ui/base.html' %} -{% block content %} -

Logs for Plant #{{ plant.id }}

-Add New Log - -
    - {% for log in logs %} -
  • - {{ log.timestamp.strftime('%Y-%m-%d') }}: - {{ log.event_type }} – {{ log.note }} - {% if log.media_items %} -
    Images: -
      - {% for image in log.media_items %} -
    • - Log image
      - {{ image.caption or "No caption" }} -
    • - {% endfor %} -
    - {% endif %} -
  • - {% endfor %} -
- -{# Use shared macro for any remaining media lists #} -{{ media.render_media_list(logs|map(attribute='media_items')|sum, thumb_width=150, current_user=current_user) }} +{% block title %} + {% if plant %} + Logs for {{ plant.common_name.name }} + {% else %} + Recent Grow Logs + {% endif %} +{% endblock %} + +{% block content %} +
+

+ {% if plant %} + Grow Logs for {{ plant.common_name.name }} + {% else %} + Recent Grow Logs + {% endif %} +

+ {# β€œAdd” button: carry plant_uuid when in single-plant view #} + + Add Log + +
+ + {% if logs %} +
+ {% for log in logs %} +
+
+
+
{{ log.title or 'Untitled' }}
+ + {{ log.created_at.strftime('%Y-%m-%d %H:%M') }} + +
+ {% if not plant %} + {# Show which plant this log belongs to when listing across all plants #} + + {% endif %} +
+ +

{{ log.notes or 'β€”' }}

+ + + {% if log.is_public %}Public{% else %}Private{% endif %} + + + {% if log.media_items.count() %} +
+ {% for media in log.media_items %} + {{ media.caption or '' }} + {% endfor %} +
+ {% endif %} + +
+ + Edit + +
+ + +
+
+
+ {% endfor %} +
+ {% else %} +

+ No grow logs found{% if plant %} for {{ plant.common_name.name }}{% endif %}. + + Add one now + . +

+ {% endif %} {% endblock %} diff --git a/plugins/plant/routes.py b/plugins/plant/routes.py index 9c9abba..b0fc613 100644 --- a/plugins/plant/routes.py +++ b/plugins/plant/routes.py @@ -40,44 +40,74 @@ def inject_image_helper(): @bp.route('/', methods=['GET']) @login_required def index(): - plants = ( + # ── 1) Read query-params ─────────────────────────────────────────── + page = request.args.get('page', 1, type=int) + per_page = request.args.get( + 'per_page', + current_app.config.get('PLANTS_PER_PAGE', 12), + type=int + ) + view_mode = request.args.get('view', 'grid', type=str) # 'grid' or 'list' + q = request.args.get('q', '', type=str).strip() + type_filter= request.args.get('type', '', type=str).strip().lower() + + # ── 2) Build base SQLAlchemy query ──────────────────────────────── + qry = ( Plant.query - .options(joinedload(Plant.media_items)) - .filter_by(owner_id=current_user.id) - .order_by(Plant.id.desc()) - .all() + .options(joinedload(Plant.media_items)) + .filter_by(owner_id=current_user.id) ) - user_plants_count = Plant.query.filter_by(owner_id=current_user.id).count() - user_images_count = Media.query.filter_by(uploader_id=current_user.id).count() - total_plants_count = Plant.query.count() - total_images_count = Media.query.count() + # ── 3) Optional name search ─────────────────────────────────────── + if q: + qry = qry.join(PlantCommonName).filter( + PlantCommonName.name.ilike(f'%{q}%') + ) + + # ── 4) Optional type filter ─────────────────────────────────────── + if type_filter: + qry = qry.filter(Plant.plant_type.ilike(type_filter)) + + # ── 5) Apply ordering + paginate ───────────────────────────────── + pagination = ( + qry.order_by(Plant.id.desc()) + .paginate(page=page, per_page=per_page, error_out=False) + ) + plants = pagination.items + + # ── 6) Gather stats and distinct types as before ───────────────── + stats = { + 'user_plants': Plant.query.filter_by(owner_id=current_user.id).count(), + 'user_images': Media.query.filter_by(uploader_id=current_user.id).count(), + 'total_plants': Plant.query.count(), + 'total_images': Media.query.count(), + } plant_types = [ - pt[0] - for pt in ( - db.session.query(Plant.plant_type) - .filter_by(owner_id=current_user.id) - .distinct() - .all() + row[0] + for row in ( + db.session + .query(Plant.plant_type) + .filter_by(owner_id=current_user.id) + .distinct() + .all() ) ] - stats = { - 'user_plants': user_plants_count, - 'user_images': user_images_count, - 'total_plants': total_plants_count, - 'total_images': total_images_count, - } - + # ── 7) Render, passing both pagination AND per-page items ───────── return render_template( 'plant/index.html', - plants=plants, - plant_types=plant_types, - stats=stats, + plants = plants, + pagination = pagination, + view_mode = view_mode, + q = q, + type_filter = type_filter, + per_page = per_page, + plant_types = plant_types, + stats = stats ) -@bp.route('/', methods=['GET', 'POST']) +@bp.route('/create', methods=['GET', 'POST']) @login_required def create(): form = PlantForm() diff --git a/plugins/plant/templates/plant/index.html b/plugins/plant/templates/plant/index.html index 8ae6472..2e2066c 100644 --- a/plugins/plant/templates/plant/index.html +++ b/plugins/plant/templates/plant/index.html @@ -14,7 +14,114 @@ - +

View Entries

+ + {# ── Import / Export, Stats, Filters & View Toggle ─────────────────────── #} +
+ +
+ + + Export My Data + + + +
+ + +
+
+ Search + +
+ + + + + + {# keep the current view so Apply doesn’t reset it #} + + + + +
+ + + +
+
+
+ +
Statistics
@@ -95,214 +202,168 @@
-

View Entries

- - -
-
- - Export My Data - - -
-
-
- Search - -
- - -
-
- - -
- {% for plant in plants %} -
-
- {# Determine featured image: first any marked featured, else first media #} - {% set featured = plant.media|selectattr('featured')|first %} - {% if not featured and plant.media %} - {% set featured = plant.media[0] %} - {% endif %} - - - Image for {{ plant.common_name.name }} - - -
-
+ {# ── Results (list vs grid) ──────────────────────────────────────────── #} + {% if view_mode=='list' %} +
+ {% for plant in plants %} +
+
+
+ {%- set f = (plant.media_items|selectattr('featured')|first) + or (plant.media_items|first) -%} - {{ plant.common_name.name }} + Image for {{ plant.common_name.name }} -
-
{{ plant.uuid }}
-

Type: {{ plant.plant_type }}

-

Scientific Name: {{ plant.scientific_name.name }}

- {% if plant.mother_uuid %} -

- Mother: - - {{ plant.mother_uuid }} +

+
+
+ + {{ plant.common_name.name }} -

- {% endif %} - -
+ {{ plant.uuid }} +
+ {{ plant.plant_type }} +
+
+
+ View + Edit
-
- {% endfor %} - + {% endfor %} + + {% else %} +
+ {% for plant in plants %} +
+
+ {%- set f = (plant.media_items|selectattr('featured')|first) + or (plant.media_items|first) -%} + + Image for {{ plant.common_name.name }} + +
+
+ + {{ plant.common_name.name }} + +
+ {{ plant.uuid }} +
+ View + Edit +
+
+
+
+ {% endfor %} +
+ {% endif %} - -