From 6cf2fdec6149aab12a669f684b0b7ea9565fe3b7 Mon Sep 17 00:00:00 2001 From: Bryson Date: Wed, 4 Jun 2025 23:24:16 -0500 Subject: [PATCH] bunch of changes --- .gitignore | 4 +- app/__init__.py | 75 ++++--- app/neo4j_utils.py | 111 ++++++++-- files.zip | Bin 0 -> 165140 bytes main.zip | Bin 126584 -> 0 bytes migrations/README | 1 + migrations/alembic.ini | 50 +++++ migrations/env.py | 63 ++++++ migrations/script.py.mako | 24 +++ migrations/versions/0171b270afc1_auto.py | 28 +++ migrations/versions/07d152ee2ac2_auto.py | 28 +++ migrations/versions/1c7cef84b4ae_auto.py | 28 +++ migrations/versions/26803929dc3e_auto.py | 28 +++ migrations/versions/27a65a4e055c_auto.py | 28 +++ migrations/versions/2a0b02a42543_auto.py | 28 +++ migrations/versions/2fa6feb17477_auto.py | 28 +++ migrations/versions/48d93714beaf_auto.py | 28 +++ migrations/versions/48fee8a8a3be_auto.py | 28 +++ migrations/versions/4d9859ada63b_auto.py | 202 ++++++++++++++++++ migrations/versions/50d5ff358f96_auto.py | 28 +++ migrations/versions/58022b5ab921_auto.py | 28 +++ migrations/versions/761d0f8be3ff_auto.py | 93 ++++++++ migrations/versions/806e94a40aeb_auto.py | 28 +++ migrations/versions/93b893e47742_auto.py | 28 +++ migrations/versions/9b93a2dffe81_auto.py | 28 +++ migrations/versions/9cff183551e1_auto.py | 28 +++ migrations/versions/ad9ea9d31b58_auto.py | 28 +++ migrations/versions/af76c66c9075_auto.py | 28 +++ migrations/versions/b783b3b43713_auto.py | 28 +++ migrations/versions/b9c03e1ae0bf_auto.py | 28 +++ migrations/versions/bfc7a6bd8abc_auto.py | 28 +++ migrations/versions/c1a4158c8226_auto.py | 28 +++ migrations/versions/cc35036a6f94_auto.py | 28 +++ migrations/versions/e1cdc5f78f5e_auto.py | 28 +++ plant.csv | 61 ++++++ plugins/cli/seed.py | 86 +------- plugins/importer/routes.py | 175 ++++++++++----- .../importer/templates/importer/review.html | 55 +++-- .../importer/templates/importer/upload.html | 7 +- plugins/ownership/routes.py | 62 ++++++ plugins/plant/models.py | 153 +++++++------ 41 files changed, 1580 insertions(+), 286 deletions(-) create mode 100644 files.zip delete mode 100644 main.zip create mode 100644 migrations/README create mode 100644 migrations/alembic.ini create mode 100644 migrations/env.py create mode 100644 migrations/script.py.mako create mode 100644 migrations/versions/0171b270afc1_auto.py create mode 100644 migrations/versions/07d152ee2ac2_auto.py create mode 100644 migrations/versions/1c7cef84b4ae_auto.py create mode 100644 migrations/versions/26803929dc3e_auto.py create mode 100644 migrations/versions/27a65a4e055c_auto.py create mode 100644 migrations/versions/2a0b02a42543_auto.py create mode 100644 migrations/versions/2fa6feb17477_auto.py create mode 100644 migrations/versions/48d93714beaf_auto.py create mode 100644 migrations/versions/48fee8a8a3be_auto.py create mode 100644 migrations/versions/4d9859ada63b_auto.py create mode 100644 migrations/versions/50d5ff358f96_auto.py create mode 100644 migrations/versions/58022b5ab921_auto.py create mode 100644 migrations/versions/761d0f8be3ff_auto.py create mode 100644 migrations/versions/806e94a40aeb_auto.py create mode 100644 migrations/versions/93b893e47742_auto.py create mode 100644 migrations/versions/9b93a2dffe81_auto.py create mode 100644 migrations/versions/9cff183551e1_auto.py create mode 100644 migrations/versions/ad9ea9d31b58_auto.py create mode 100644 migrations/versions/af76c66c9075_auto.py create mode 100644 migrations/versions/b783b3b43713_auto.py create mode 100644 migrations/versions/b9c03e1ae0bf_auto.py create mode 100644 migrations/versions/bfc7a6bd8abc_auto.py create mode 100644 migrations/versions/c1a4158c8226_auto.py create mode 100644 migrations/versions/cc35036a6f94_auto.py create mode 100644 migrations/versions/e1cdc5f78f5e_auto.py create mode 100644 plant.csv create mode 100644 plugins/ownership/routes.py diff --git a/.gitignore b/.gitignore index b393411..ea4691b 100644 --- a/.gitignore +++ b/.gitignore @@ -7,10 +7,10 @@ __pycache__/ *.db # Flask/Migrations -migrations/ +#migrations/ instance/ .env -.env.* +#.env.* # VS Code .vscode/ diff --git a/app/__init__.py b/app/__init__.py index 91452c8..b1b25db 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -1,8 +1,9 @@ +# app/__init__.py + import os import json -import importlib +import glob import importlib.util - from flask import Flask from flask_sqlalchemy import SQLAlchemy from flask_migrate import Migrate @@ -10,32 +11,52 @@ from flask_login import LoginManager from flask_wtf.csrf import CSRFProtect from dotenv import load_dotenv -# Load environment variables load_dotenv() -# Initialize extensions -db = SQLAlchemy() -migrate = Migrate() +# ---------------------------------------------------------------- +# 1) Initialize core extensions +# ---------------------------------------------------------------- +db = SQLAlchemy() +migrate = Migrate() login_manager = LoginManager() -csrf = CSRFProtect() +csrf = CSRFProtect() def create_app(): app = Flask(__name__) app.config.from_object('app.config.Config') - # Initialize core extensions + # Initialize extensions with app csrf.init_app(app) db.init_app(app) migrate.init_app(app, db) login_manager.init_app(app) login_manager.login_view = 'auth.login' - # Register error handlers + # ---------------------------------------------------------------- + # 2) Register error handlers + # ---------------------------------------------------------------- from .errors import bp as errors_bp app.register_blueprint(errors_bp) - # Auto-discover and register plugins + # ---------------------------------------------------------------- + # 3) Auto-load each plugin’s models.py so that SQLAlchemy metadata + # knows about every table (Plant, PlantOwnershipLog, PlantUpdate, etc.) + # ---------------------------------------------------------------- + plugin_model_paths = glob.glob(os.path.join(os.path.dirname(__file__), '..', 'plugins', '*', 'models.py')) + for path in plugin_model_paths: + module_name = path.replace("/", ".").replace(".py", "") + try: + spec = importlib.util.spec_from_file_location(module_name, path) + mod = importlib.util.module_from_spec(spec) + spec.loader.exec_module(mod) + print(f"✅ (Startup) Loaded: {module_name}") + except Exception as e: + print(f"❌ (Startup) Failed to load {module_name}: {e}") + + # ---------------------------------------------------------------- + # 4) Auto-discover & register each plugin’s routes.py and CLI + # ---------------------------------------------------------------- plugin_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 'plugins')) for plugin in os.listdir(plugin_path): if plugin.endswith('.noload'): @@ -46,47 +67,37 @@ def create_app(): if not os.path.isdir(plugin_dir): continue - # 1. Register routes + # --- (a) Register routes blueprint if present --- route_file = os.path.join(plugin_dir, 'routes.py') if os.path.isfile(route_file): try: spec = importlib.util.spec_from_file_location(f"plugins.{plugin}.routes", route_file) - mod = importlib.util.module_from_spec(spec) + mod = importlib.util.module_from_spec(spec) spec.loader.exec_module(mod) if hasattr(mod, 'bp'): app.register_blueprint(mod.bp, strict_slashes=False) + print(f"✔️ Registered routes for plugin '{plugin}'") except Exception as e: - print(f"[⚠️] Failed to load routes from plugin '{plugin}': {e}") + print(f"❌ Failed to load routes from plugin '{plugin}': {e}") - # Define paths - init_file = os.path.join(plugin_dir, '__init__.py') + # --- (b) Register CLI & entry point if present --- + init_file = os.path.join(plugin_dir, '__init__.py') plugin_json = os.path.join(plugin_dir, 'plugin.json') - model_file = os.path.join(plugin_dir, 'models.py') - - # 2. Register CLI commands and run entry point if os.path.isfile(init_file): try: cli_module = importlib.import_module(f"plugins.{plugin}") if hasattr(cli_module, 'register_cli'): cli_module.register_cli(app) - + print(f"✔️ Registered CLI for plugin '{plugin}'") if os.path.isfile(plugin_json): with open(plugin_json, 'r') as f: meta = json.load(f) entry = meta.get('entry_point') if entry and hasattr(cli_module, entry): getattr(cli_module, entry)(app) + print(f"✔️ Ran entry point '{entry}' for plugin '{plugin}'") except Exception as e: - print(f"[⚠️] Failed to load CLI for plugin '{plugin}': {e}") - - ## 3. Auto-load plugin models for migrations - #if os.path.isfile(model_file): - # try: - # spec = importlib.util.spec_from_file_location(f"plugins.{plugin}.models", model_file) - # mod = importlib.util.module_from_spec(spec) - # spec.loader.exec_module(mod) - # except Exception as e: - # print(f"[⚠️] Failed to load models from plugin '{plugin}': {e}") + print(f"❌ Failed to load CLI for plugin '{plugin}': {e}") @app.context_processor def inject_current_year(): @@ -94,9 +105,3 @@ def create_app(): return {'current_year': datetime.now().year} return app - - -@login_manager.user_loader -def load_user(user_id): - from plugins.auth.models import User - return User.query.get(int(user_id)) diff --git a/app/neo4j_utils.py b/app/neo4j_utils.py index defc7c8..81cbfe4 100644 --- a/app/neo4j_utils.py +++ b/app/neo4j_utils.py @@ -1,32 +1,103 @@ +# app/neo4j_utils.py from neo4j import GraphDatabase from flask import current_app class Neo4jHandler: - def __init__(self, uri, user, password): - self.driver = GraphDatabase.driver(uri, auth=(user, password)) + def __init__(self, uri=None, user=None, password=None): + # We read from current_app.config if nothing is passed in explicitly. + # If you already set NEO4J_URI / NEO4J_USER / NEO4J_PASSWORD in your config.py, + # these defaults will be overridden by those values automatically. + uri = uri or current_app.config.get("NEO4J_URI", "bolt://nip_neo4j:7687") + user = user or current_app.config.get("NEO4J_USER", "neo4j") + pw = password or current_app.config.get("NEO4J_PASSWORD", "your_password_here") + + self.driver = GraphDatabase.driver(uri, auth=(user, pw)) def close(self): self.driver.close() - def create_plant_node(self, uuid, name): - with self.driver.session() as session: - session.run( - "MERGE (p:Plant {uuid: $uuid}) " - "SET p.name = $name", - uuid=uuid, name=name - ) + def create_plant_node(self, uuid: str, name: str = "Unknown"): + """ + MERGE a Plant node by UUID. On create, set its name. + We strip() and strip('"') in case the CSV had extra quotes or spaces around the UUID. + """ + if not uuid: + print("[⚠️] Skipped node creation: missing UUID") + return - def create_lineage(self, child_uuid, parent_uuid): - with self.driver.session() as session: - session.run( - "MATCH (child:Plant {uuid: $child_uuid}), (parent:Plant {uuid: $parent_uuid}) " - "MERGE (parent)-[:PARENT_OF]->(child)", - child_uuid=child_uuid, parent_uuid=parent_uuid - ) + # Remove surrounding quotes or whitespace + uuid_clean = uuid.strip().strip('"') + name_clean = (name or "Unknown").strip() -def get_neo4j_handler(): - uri = current_app.config['NEO4J_URI'] - user = current_app.config['NEO4J_USER'] - password = current_app.config['NEO4J_PASSWORD'] + print(f"[ℹ️] (Neo4j) MERGE Plant node → uuid='{uuid_clean}', name='{name_clean}'") + try: + with self.driver.session() as session: + session.run( + """ + MERGE (p:Plant {uuid: $uuid}) + ON CREATE SET p.name = $name + """, + uuid=uuid_clean, + name=name_clean + ) + except Exception as e: + print(f"[❌] Neo4j node creation failed for UUID={uuid_clean}: {e}") + + def create_lineage(self, child_uuid: str, parent_uuid: str): + """ + MATCH both child and parent by UUID, then MERGE a LINEAGE relationship. + Again, strip() any extraneous quotes or whitespace. + """ + if not child_uuid or not parent_uuid: + print(f"[⚠️] Skipped lineage creation: missing UUID(s) ({child_uuid!r} → {parent_uuid!r})") + return + + child_clean = child_uuid.strip().strip('"') + parent_clean = parent_uuid.strip().strip('"') + + print(f"[ℹ️] (Neo4j) Attempting to MERGE LINEAGE → child='{child_clean}', parent='{parent_clean}'") + try: + with self.driver.session() as session: + result = session.run( + """ + MATCH (c:Plant {uuid: $child_uuid}) + MATCH (p:Plant {uuid: $parent_uuid}) + MERGE (c)-[r:LINEAGE]->(p) + RETURN type(r) AS rel_type + """, + child_uuid=child_clean, + parent_uuid=parent_clean + ) + record = result.single() + if record and record.get("rel_type") == "LINEAGE": + print(f"[✅] (Neo4j) Created LINEAGE → {child_clean} → {parent_clean}") + else: + print(f"[⚠️] (Neo4j) No LINEAGE created (nodes may not match) → {child_clean} → {parent_clean}") + except Exception as e: + print(f"[❌] Neo4j lineage creation failed: {e}") + + def debug_check_node(self, uuid: str): + """ + Utility: check whether a Plant node with this UUID exists in Neo4j. + """ + uuid_clean = uuid.strip().strip('"') + with self.driver.session() as session: + result = session.run( + "MATCH (p:Plant {uuid: $uuid}) RETURN p", + uuid=uuid_clean + ) + record = result.single() + if record: + print(f"[✅] (Neo4j) Node '{uuid_clean}' exists.") + else: + print(f"[❌] (Neo4j) Node '{uuid_clean}' NOT found.") + +def get_neo4j_handler() -> Neo4jHandler: + """ + Factory: read NEO4J_URI / NEO4J_USER / NEO4J_PASSWORD from current_app.config. + """ + uri = current_app.config.get("NEO4J_URI", "bolt://nip_neo4j:7687") + user = current_app.config.get("NEO4J_USER", "neo4j") + password = current_app.config.get("NEO4J_PASSWORD", "your_password_here") return Neo4jHandler(uri, user, password) diff --git a/files.zip b/files.zip new file mode 100644 index 0000000000000000000000000000000000000000..fdafedcc97071f48f35b3f0597eb362b06d23357 GIT binary patch literal 165140 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

wq^wSSWH5jd{1t=Hl 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�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 diff --git a/migrations/README b/migrations/README new file mode 100644 index 0000000..0e04844 --- /dev/null +++ b/migrations/README @@ -0,0 +1 @@ +Single-database configuration for Flask. diff --git a/migrations/alembic.ini b/migrations/alembic.ini new file mode 100644 index 0000000..ec9d45c --- /dev/null +++ b/migrations/alembic.ini @@ -0,0 +1,50 @@ +# A generic, single database configuration. + +[alembic] +# template used to generate migration files +# file_template = %%(rev)s_%%(slug)s + +# set to 'true' to run the environment during +# the 'revision' command, regardless of autogenerate +# revision_environment = false + + +# Logging configuration +[loggers] +keys = root,sqlalchemy,alembic,flask_migrate + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = WARN +handlers = console +qualname = + +[logger_sqlalchemy] +level = WARN +handlers = +qualname = sqlalchemy.engine + +[logger_alembic] +level = INFO +handlers = +qualname = alembic + +[logger_flask_migrate] +level = INFO +handlers = +qualname = flask_migrate + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(levelname)-5.5s [%(name)s] %(message)s +datefmt = %H:%M:%S diff --git a/migrations/env.py b/migrations/env.py new file mode 100644 index 0000000..cd0a6b3 --- /dev/null +++ b/migrations/env.py @@ -0,0 +1,63 @@ +from __future__ import with_statement +import os +import logging +import importlib.util +from alembic import context +from sqlalchemy import engine_from_config, pool +from logging.config import fileConfig +from flask import current_app +from app import db + +# ----------------------------- +# 🔍 Automatically import all plugin models +# ----------------------------- +import glob +import importlib.util + +plugin_model_paths = glob.glob(os.path.join("plugins", "*", "models.py")) + +for path in plugin_model_paths: + module_name = path.replace("/", ".").replace(".py", "") + try: + spec = importlib.util.spec_from_file_location(module_name, path) + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + print(f"✅ Loaded: {module_name}") + except Exception as e: + print(f"❌ Failed to load {module_name}: {e}") +# ----------------------------- + +config = context.config +fileConfig(config.config_file_name) +logger = logging.getLogger('alembic.env') + +target_metadata = db.metadata + +def run_migrations_offline(): + context.configure( + url=current_app.config.get("SQLALCHEMY_DATABASE_URI"), + target_metadata=target_metadata, + literal_binds=True, + dialect_opts={"paramstyle": "named"}, + ) + with context.begin_transaction(): + context.run_migrations() + +print("🧠 Alembic sees these tables:") +print(sorted(db.metadata.tables.keys())) + +def run_migrations_online(): + connectable = db.engine + with connectable.connect() as connection: + context.configure( + connection=connection, + target_metadata=target_metadata, + compare_type=True, + ) + with context.begin_transaction(): + context.run_migrations() + +if context.is_offline_mode(): + run_migrations_offline() +else: + run_migrations_online() diff --git a/migrations/script.py.mako b/migrations/script.py.mako new file mode 100644 index 0000000..2c01563 --- /dev/null +++ b/migrations/script.py.mako @@ -0,0 +1,24 @@ +"""${message} + +Revision ID: ${up_revision} +Revises: ${down_revision | comma,n} +Create Date: ${create_date} + +""" +from alembic import op +import sqlalchemy as sa +${imports if imports else ""} + +# revision identifiers, used by Alembic. +revision = ${repr(up_revision)} +down_revision = ${repr(down_revision)} +branch_labels = ${repr(branch_labels)} +depends_on = ${repr(depends_on)} + + +def upgrade(): + ${upgrades if upgrades else "pass"} + + +def downgrade(): + ${downgrades if downgrades else "pass"} diff --git a/migrations/versions/0171b270afc1_auto.py b/migrations/versions/0171b270afc1_auto.py new file mode 100644 index 0000000..c6f44ba --- /dev/null +++ b/migrations/versions/0171b270afc1_auto.py @@ -0,0 +1,28 @@ +"""auto + +Revision ID: 0171b270afc1 +Revises: 4d9859ada63b +Create Date: 2025-06-04 06:20:47.463202 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '0171b270afc1' +down_revision = '4d9859ada63b' +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/07d152ee2ac2_auto.py b/migrations/versions/07d152ee2ac2_auto.py new file mode 100644 index 0000000..c7884dd --- /dev/null +++ b/migrations/versions/07d152ee2ac2_auto.py @@ -0,0 +1,28 @@ +"""auto + +Revision ID: 07d152ee2ac2 +Revises: 0171b270afc1 +Create Date: 2025-06-04 06:24:51.986909 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '07d152ee2ac2' +down_revision = '0171b270afc1' +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/1c7cef84b4ae_auto.py b/migrations/versions/1c7cef84b4ae_auto.py new file mode 100644 index 0000000..d9d463e --- /dev/null +++ b/migrations/versions/1c7cef84b4ae_auto.py @@ -0,0 +1,28 @@ +"""auto + +Revision ID: 1c7cef84b4ae +Revises: 26803929dc3e +Create Date: 2025-06-04 22:07:43.375613 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '1c7cef84b4ae' +down_revision = '26803929dc3e' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('plant', sa.Column('is_verified', sa.Boolean(), nullable=False)) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column('plant', 'is_verified') + # ### end Alembic commands ### diff --git a/migrations/versions/26803929dc3e_auto.py b/migrations/versions/26803929dc3e_auto.py new file mode 100644 index 0000000..d38bf09 --- /dev/null +++ b/migrations/versions/26803929dc3e_auto.py @@ -0,0 +1,28 @@ +"""auto + +Revision ID: 26803929dc3e +Revises: 07d152ee2ac2 +Create Date: 2025-06-04 06:38:27.377036 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '26803929dc3e' +down_revision = '07d152ee2ac2' +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/27a65a4e055c_auto.py b/migrations/versions/27a65a4e055c_auto.py new file mode 100644 index 0000000..3cbfdbd --- /dev/null +++ b/migrations/versions/27a65a4e055c_auto.py @@ -0,0 +1,28 @@ +"""auto + +Revision ID: 27a65a4e055c +Revises: 48d93714beaf +Create Date: 2025-06-05 04:23:44.796455 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '27a65a4e055c' +down_revision = '48d93714beaf' +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/2a0b02a42543_auto.py b/migrations/versions/2a0b02a42543_auto.py new file mode 100644 index 0000000..58b985c --- /dev/null +++ b/migrations/versions/2a0b02a42543_auto.py @@ -0,0 +1,28 @@ +"""auto + +Revision ID: 2a0b02a42543 +Revises: 93b893e47742 +Create Date: 2025-06-05 02:41:56.741133 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '2a0b02a42543' +down_revision = '93b893e47742' +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/2fa6feb17477_auto.py b/migrations/versions/2fa6feb17477_auto.py new file mode 100644 index 0000000..c28df43 --- /dev/null +++ b/migrations/versions/2fa6feb17477_auto.py @@ -0,0 +1,28 @@ +"""auto + +Revision ID: 2fa6feb17477 +Revises: 9cff183551e1 +Create Date: 2025-06-05 00:45:39.693560 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '2fa6feb17477' +down_revision = '9cff183551e1' +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/48d93714beaf_auto.py b/migrations/versions/48d93714beaf_auto.py new file mode 100644 index 0000000..52956b9 --- /dev/null +++ b/migrations/versions/48d93714beaf_auto.py @@ -0,0 +1,28 @@ +"""auto + +Revision ID: 48d93714beaf +Revises: 761d0f8be3ff +Create Date: 2025-06-05 04:20:31.030479 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '48d93714beaf' +down_revision = '761d0f8be3ff' +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/48fee8a8a3be_auto.py b/migrations/versions/48fee8a8a3be_auto.py new file mode 100644 index 0000000..238b584 --- /dev/null +++ b/migrations/versions/48fee8a8a3be_auto.py @@ -0,0 +1,28 @@ +"""auto + +Revision ID: 48fee8a8a3be +Revises: af76c66c9075 +Create Date: 2025-06-05 00:25:55.439874 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '48fee8a8a3be' +down_revision = 'af76c66c9075' +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/4d9859ada63b_auto.py b/migrations/versions/4d9859ada63b_auto.py new file mode 100644 index 0000000..53b72f6 --- /dev/null +++ b/migrations/versions/4d9859ada63b_auto.py @@ -0,0 +1,202 @@ +"""auto + +Revision ID: 4d9859ada63b +Revises: +Create Date: 2025-06-04 06:16:08.829142 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '4d9859ada63b' +down_revision = None +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.create_table('plant_common_name', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('name', sa.String(length=255), nullable=False), + sa.PrimaryKeyConstraint('id'), + sa.UniqueConstraint('name'), + sa.UniqueConstraint('name') + ) + op.create_table('tag', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('name', sa.String(length=255), nullable=False), + sa.PrimaryKeyConstraint('id'), + sa.UniqueConstraint('name'), + sa.UniqueConstraint('name') + ) + op.create_table('users', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('email', sa.String(length=120), nullable=False), + sa.Column('password_hash', sa.Text(), nullable=False), + sa.Column('role', sa.String(length=50), nullable=True), + sa.Column('is_verified', sa.Boolean(), nullable=True), + sa.Column('excluded_from_analytics', sa.Boolean(), nullable=True), + sa.Column('created_at', sa.DateTime(), nullable=True), + sa.PrimaryKeyConstraint('id'), + sa.UniqueConstraint('email'), + sa.UniqueConstraint('email') + ) + op.create_table('plant_scientific_name', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('name', sa.String(length=255), nullable=False), + sa.Column('common_id', sa.Integer(), nullable=False), + sa.ForeignKeyConstraint(['common_id'], ['plant_common_name.id'], ), + sa.PrimaryKeyConstraint('id'), + sa.UniqueConstraint('name'), + sa.UniqueConstraint('name') + ) + op.create_table('plant', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('uuid', sa.String(length=36), nullable=False), + sa.Column('custom_slug', sa.String(length=255), nullable=True), + sa.Column('owner_id', sa.Integer(), nullable=False), + sa.Column('common_id', sa.Integer(), nullable=False), + sa.Column('scientific_id', sa.Integer(), nullable=False), + sa.Column('plant_type', sa.String(length=50), nullable=False), + sa.Column('status', sa.String(length=50), nullable=False), + sa.Column('notes', sa.Text(), nullable=True), + sa.Column('created_at', sa.DateTime(), nullable=True), + sa.Column('transferred', sa.Boolean(), nullable=True), + sa.Column('graph_node_id', sa.String(length=255), nullable=True), + sa.ForeignKeyConstraint(['common_id'], ['plant_common_name.id'], ), + sa.ForeignKeyConstraint(['owner_id'], ['users.id'], ), + sa.ForeignKeyConstraint(['scientific_id'], ['plant_scientific_name.id'], ), + sa.PrimaryKeyConstraint('id'), + sa.UniqueConstraint('custom_slug'), + sa.UniqueConstraint('custom_slug'), + sa.UniqueConstraint('uuid'), + sa.UniqueConstraint('uuid') + ) + op.create_table('grow_logs', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('plant_id', sa.Integer(), nullable=False), + sa.Column('title', sa.String(length=255), nullable=False), + sa.Column('created_at', sa.DateTime(), nullable=True), + sa.ForeignKeyConstraint(['plant_id'], ['plant.id'], ), + sa.PrimaryKeyConstraint('id') + ) + op.create_table('plant_lineage', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('child_plant_id', sa.Integer(), nullable=False), + sa.Column('parent_plant_id', sa.Integer(), nullable=False), + sa.Column('type', sa.String(length=50), nullable=False), + sa.ForeignKeyConstraint(['child_plant_id'], ['plant.id'], ), + sa.ForeignKeyConstraint(['parent_plant_id'], ['plant.id'], ), + sa.PrimaryKeyConstraint('id') + ) + op.create_table('plant_ownership_log', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('plant_id', sa.Integer(), nullable=False), + sa.Column('user_id', sa.Integer(), nullable=False), + sa.Column('start_time', sa.DateTime(), nullable=False), + sa.Column('end_time', sa.DateTime(), nullable=True), + sa.Column('transfer_note', sa.Text(), nullable=True), + sa.ForeignKeyConstraint(['plant_id'], ['plant.id'], ), + sa.ForeignKeyConstraint(['user_id'], ['users.id'], ), + sa.PrimaryKeyConstraint('id') + ) + op.create_table('plant_tags', + sa.Column('plant_id', sa.Integer(), nullable=False), + sa.Column('tag_id', sa.Integer(), nullable=False), + sa.ForeignKeyConstraint(['plant_id'], ['plant.id'], ), + sa.ForeignKeyConstraint(['tag_id'], ['tag.id'], ), + sa.PrimaryKeyConstraint('plant_id', 'tag_id') + ) + op.create_table('submissions', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('user_id', sa.Integer(), nullable=False), + sa.Column('plant_id', sa.Integer(), nullable=True), + sa.Column('common_name', sa.String(length=120), nullable=False), + sa.Column('scientific_name', sa.String(length=120), nullable=True), + sa.Column('price', sa.Float(), nullable=False), + sa.Column('source', sa.String(length=120), nullable=True), + sa.Column('timestamp', sa.DateTime(), nullable=True), + sa.Column('height', sa.Float(), nullable=True), + sa.Column('width', sa.Float(), nullable=True), + sa.Column('leaf_count', sa.Integer(), nullable=True), + sa.Column('potting_mix', sa.String(length=255), nullable=True), + sa.Column('container_size', sa.String(length=120), nullable=True), + sa.Column('health_status', sa.String(length=50), nullable=True), + sa.Column('notes', sa.Text(), nullable=True), + sa.ForeignKeyConstraint(['plant_id'], ['plant.id'], ), + sa.ForeignKeyConstraint(['user_id'], ['users.id'], ), + sa.PrimaryKeyConstraint('id') + ) + op.create_table('plant_updates', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('plant_id', sa.Integer(), nullable=False), + sa.Column('growlog_id', sa.Integer(), nullable=True), + sa.Column('update_type', sa.String(length=50), nullable=False), + sa.Column('description', sa.Text(), nullable=True), + sa.Column('created_at', sa.DateTime(), nullable=True), + sa.ForeignKeyConstraint(['growlog_id'], ['grow_logs.id'], ), + sa.ForeignKeyConstraint(['plant_id'], ['plant.id'], ), + sa.PrimaryKeyConstraint('id') + ) + op.create_table('submission_images', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('submission_id', sa.Integer(), nullable=False), + sa.Column('file_path', sa.String(length=255), nullable=False), + sa.Column('is_visible', sa.Boolean(), nullable=True), + sa.ForeignKeyConstraint(['submission_id'], ['submissions.id'], ), + sa.PrimaryKeyConstraint('id') + ) + op.create_table('featured_images', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('submission_image_id', sa.Integer(), nullable=False), + sa.Column('override_text', sa.String(length=255), nullable=True), + sa.Column('is_featured', sa.Boolean(), nullable=True), + sa.ForeignKeyConstraint(['submission_image_id'], ['submission_images.id'], ), + sa.PrimaryKeyConstraint('id') + ) + op.create_table('image_hearts', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('user_id', sa.Integer(), nullable=False), + sa.Column('submission_image_id', sa.Integer(), nullable=False), + sa.Column('created_at', sa.DateTime(), nullable=True), + sa.ForeignKeyConstraint(['submission_image_id'], ['submission_images.id'], ), + sa.ForeignKeyConstraint(['user_id'], ['users.id'], ), + sa.PrimaryKeyConstraint('id') + ) + op.create_table('media', + sa.Column('id', sa.Integer(), nullable=False), + sa.Column('file_url', sa.String(length=256), nullable=False), + sa.Column('uploaded_at', sa.DateTime(), nullable=True), + sa.Column('plant_id', sa.Integer(), nullable=True), + sa.Column('growlog_id', sa.Integer(), nullable=True), + sa.Column('update_id', sa.Integer(), nullable=True), + sa.Column('caption', sa.String(length=255), nullable=True), + sa.ForeignKeyConstraint(['growlog_id'], ['grow_logs.id'], ), + sa.ForeignKeyConstraint(['plant_id'], ['plant.id'], ), + sa.ForeignKeyConstraint(['update_id'], ['plant_updates.id'], ), + sa.PrimaryKeyConstraint('id') + ) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_table('media') + op.drop_table('image_hearts') + op.drop_table('featured_images') + op.drop_table('submission_images') + op.drop_table('plant_updates') + op.drop_table('submissions') + op.drop_table('plant_tags') + op.drop_table('plant_ownership_log') + op.drop_table('plant_lineage') + op.drop_table('grow_logs') + op.drop_table('plant') + op.drop_table('plant_scientific_name') + op.drop_table('users') + op.drop_table('tag') + op.drop_table('plant_common_name') + # ### end Alembic commands ### diff --git a/migrations/versions/50d5ff358f96_auto.py b/migrations/versions/50d5ff358f96_auto.py new file mode 100644 index 0000000..9586e25 --- /dev/null +++ b/migrations/versions/50d5ff358f96_auto.py @@ -0,0 +1,28 @@ +"""auto + +Revision ID: 50d5ff358f96 +Revises: 1c7cef84b4ae +Create Date: 2025-06-04 22:14:54.902029 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '50d5ff358f96' +down_revision = '1c7cef84b4ae' +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/58022b5ab921_auto.py b/migrations/versions/58022b5ab921_auto.py new file mode 100644 index 0000000..784f2a0 --- /dev/null +++ b/migrations/versions/58022b5ab921_auto.py @@ -0,0 +1,28 @@ +"""auto + +Revision ID: 58022b5ab921 +Revises: 50d5ff358f96 +Create Date: 2025-06-04 22:32:06.203591 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '58022b5ab921' +down_revision = '50d5ff358f96' +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/761d0f8be3ff_auto.py b/migrations/versions/761d0f8be3ff_auto.py new file mode 100644 index 0000000..ad16b26 --- /dev/null +++ b/migrations/versions/761d0f8be3ff_auto.py @@ -0,0 +1,93 @@ +"""auto + +Revision ID: 761d0f8be3ff +Revises: ad9ea9d31b58 +Create Date: 2025-06-05 04:18:09.403526 + +""" +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import mysql + +# revision identifiers, used by Alembic. +revision = '761d0f8be3ff' +down_revision = 'ad9ea9d31b58' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_table('plant_lineage') + op.add_column('plant', sa.Column('updated_at', sa.DateTime(), nullable=True)) + op.drop_column('plant', 'transferred') + op.drop_column('plant', 'status') + op.drop_column('plant', 'is_verified') + op.drop_column('plant', 'graph_node_id') + op.drop_column('plant', 'notes') + op.add_column('plant_common_name', sa.Column('created_at', sa.DateTime(), nullable=True)) + op.alter_column('plant_common_name', 'name', + existing_type=mysql.VARCHAR(length=255), + type_=sa.String(length=128), + existing_nullable=False) + op.add_column('plant_ownership_log', sa.Column('date_acquired', sa.DateTime(), nullable=True)) + op.add_column('plant_ownership_log', sa.Column('transferred', sa.Boolean(), nullable=False)) + op.add_column('plant_ownership_log', sa.Column('graph_node_id', sa.String(length=255), nullable=True)) + op.add_column('plant_ownership_log', sa.Column('is_verified', sa.Boolean(), nullable=False)) + op.drop_column('plant_ownership_log', 'start_time') + op.drop_column('plant_ownership_log', 'transfer_note') + op.drop_column('plant_ownership_log', 'end_time') + op.add_column('plant_scientific_name', sa.Column('created_at', sa.DateTime(), nullable=True)) + op.alter_column('plant_scientific_name', 'name', + existing_type=mysql.VARCHAR(length=255), + type_=sa.String(length=256), + existing_nullable=False) + op.alter_column('tag', 'name', + existing_type=mysql.VARCHAR(length=255), + type_=sa.String(length=128), + existing_nullable=False) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column('tag', 'name', + existing_type=sa.String(length=128), + type_=mysql.VARCHAR(length=255), + existing_nullable=False) + op.alter_column('plant_scientific_name', 'name', + existing_type=sa.String(length=256), + type_=mysql.VARCHAR(length=255), + existing_nullable=False) + op.drop_column('plant_scientific_name', 'created_at') + op.add_column('plant_ownership_log', sa.Column('end_time', mysql.DATETIME(), nullable=True)) + op.add_column('plant_ownership_log', sa.Column('transfer_note', mysql.TEXT(), nullable=True)) + op.add_column('plant_ownership_log', sa.Column('start_time', mysql.DATETIME(), nullable=False)) + op.drop_column('plant_ownership_log', 'is_verified') + op.drop_column('plant_ownership_log', 'graph_node_id') + op.drop_column('plant_ownership_log', 'transferred') + op.drop_column('plant_ownership_log', 'date_acquired') + op.alter_column('plant_common_name', 'name', + existing_type=sa.String(length=128), + type_=mysql.VARCHAR(length=255), + existing_nullable=False) + op.drop_column('plant_common_name', 'created_at') + op.add_column('plant', sa.Column('notes', mysql.TEXT(), nullable=True)) + op.add_column('plant', sa.Column('graph_node_id', mysql.VARCHAR(length=255), nullable=True)) + op.add_column('plant', sa.Column('is_verified', mysql.TINYINT(display_width=1), autoincrement=False, nullable=False)) + op.add_column('plant', sa.Column('status', mysql.VARCHAR(length=50), nullable=False)) + op.add_column('plant', sa.Column('transferred', mysql.TINYINT(display_width=1), autoincrement=False, nullable=True)) + op.drop_column('plant', 'updated_at') + op.create_table('plant_lineage', + sa.Column('id', mysql.INTEGER(), autoincrement=True, nullable=False), + sa.Column('child_plant_id', mysql.INTEGER(), autoincrement=False, nullable=False), + sa.Column('parent_plant_id', mysql.INTEGER(), autoincrement=False, nullable=False), + sa.Column('type', mysql.VARCHAR(length=50), nullable=False), + sa.ForeignKeyConstraint(['child_plant_id'], ['plant.id'], name=op.f('plant_lineage_ibfk_1')), + sa.ForeignKeyConstraint(['parent_plant_id'], ['plant.id'], name=op.f('plant_lineage_ibfk_2')), + sa.PrimaryKeyConstraint('id'), + mysql_collate='utf8mb4_0900_ai_ci', + mysql_default_charset='utf8mb4', + mysql_engine='InnoDB' + ) + # ### end Alembic commands ### diff --git a/migrations/versions/806e94a40aeb_auto.py b/migrations/versions/806e94a40aeb_auto.py new file mode 100644 index 0000000..e210a63 --- /dev/null +++ b/migrations/versions/806e94a40aeb_auto.py @@ -0,0 +1,28 @@ +"""auto + +Revision ID: 806e94a40aeb +Revises: e1cdc5f78f5e +Create Date: 2025-06-05 01:11:25.968741 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '806e94a40aeb' +down_revision = 'e1cdc5f78f5e' +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/93b893e47742_auto.py b/migrations/versions/93b893e47742_auto.py new file mode 100644 index 0000000..85febb0 --- /dev/null +++ b/migrations/versions/93b893e47742_auto.py @@ -0,0 +1,28 @@ +"""auto + +Revision ID: 93b893e47742 +Revises: b783b3b43713 +Create Date: 2025-06-05 02:37:12.714926 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '93b893e47742' +down_revision = 'b783b3b43713' +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/9b93a2dffe81_auto.py b/migrations/versions/9b93a2dffe81_auto.py new file mode 100644 index 0000000..460b19b --- /dev/null +++ b/migrations/versions/9b93a2dffe81_auto.py @@ -0,0 +1,28 @@ +"""auto + +Revision ID: 9b93a2dffe81 +Revises: c1a4158c8226 +Create Date: 2025-06-05 01:29:51.402975 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '9b93a2dffe81' +down_revision = 'c1a4158c8226' +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/9cff183551e1_auto.py b/migrations/versions/9cff183551e1_auto.py new file mode 100644 index 0000000..18f75e2 --- /dev/null +++ b/migrations/versions/9cff183551e1_auto.py @@ -0,0 +1,28 @@ +"""auto + +Revision ID: 9cff183551e1 +Revises: 48fee8a8a3be +Create Date: 2025-06-05 00:32:07.995675 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '9cff183551e1' +down_revision = '48fee8a8a3be' +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/ad9ea9d31b58_auto.py b/migrations/versions/ad9ea9d31b58_auto.py new file mode 100644 index 0000000..70aabbe --- /dev/null +++ b/migrations/versions/ad9ea9d31b58_auto.py @@ -0,0 +1,28 @@ +"""auto + +Revision ID: ad9ea9d31b58 +Revises: 2a0b02a42543 +Create Date: 2025-06-05 03:05:30.311725 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'ad9ea9d31b58' +down_revision = '2a0b02a42543' +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/af76c66c9075_auto.py b/migrations/versions/af76c66c9075_auto.py new file mode 100644 index 0000000..8f969e5 --- /dev/null +++ b/migrations/versions/af76c66c9075_auto.py @@ -0,0 +1,28 @@ +"""auto + +Revision ID: af76c66c9075 +Revises: 58022b5ab921 +Create Date: 2025-06-04 22:44:12.056714 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'af76c66c9075' +down_revision = '58022b5ab921' +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/b783b3b43713_auto.py b/migrations/versions/b783b3b43713_auto.py new file mode 100644 index 0000000..bbb68d7 --- /dev/null +++ b/migrations/versions/b783b3b43713_auto.py @@ -0,0 +1,28 @@ +"""auto + +Revision ID: b783b3b43713 +Revises: bfc7a6bd8abc +Create Date: 2025-06-05 02:07:18.572162 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'b783b3b43713' +down_revision = 'bfc7a6bd8abc' +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/b9c03e1ae0bf_auto.py b/migrations/versions/b9c03e1ae0bf_auto.py new file mode 100644 index 0000000..ae22c11 --- /dev/null +++ b/migrations/versions/b9c03e1ae0bf_auto.py @@ -0,0 +1,28 @@ +"""auto + +Revision ID: b9c03e1ae0bf +Revises: 9b93a2dffe81 +Create Date: 2025-06-05 01:37:57.483736 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'b9c03e1ae0bf' +down_revision = '9b93a2dffe81' +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/bfc7a6bd8abc_auto.py b/migrations/versions/bfc7a6bd8abc_auto.py new file mode 100644 index 0000000..0fa3d30 --- /dev/null +++ b/migrations/versions/bfc7a6bd8abc_auto.py @@ -0,0 +1,28 @@ +"""auto + +Revision ID: bfc7a6bd8abc +Revises: cc35036a6f94 +Create Date: 2025-06-05 01:57:23.973531 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'bfc7a6bd8abc' +down_revision = 'cc35036a6f94' +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/c1a4158c8226_auto.py b/migrations/versions/c1a4158c8226_auto.py new file mode 100644 index 0000000..2dbb0d3 --- /dev/null +++ b/migrations/versions/c1a4158c8226_auto.py @@ -0,0 +1,28 @@ +"""auto + +Revision ID: c1a4158c8226 +Revises: 806e94a40aeb +Create Date: 2025-06-05 01:16:54.451574 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'c1a4158c8226' +down_revision = '806e94a40aeb' +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/cc35036a6f94_auto.py b/migrations/versions/cc35036a6f94_auto.py new file mode 100644 index 0000000..9341d7f --- /dev/null +++ b/migrations/versions/cc35036a6f94_auto.py @@ -0,0 +1,28 @@ +"""auto + +Revision ID: cc35036a6f94 +Revises: b9c03e1ae0bf +Create Date: 2025-06-05 01:45:09.251040 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'cc35036a6f94' +down_revision = 'b9c03e1ae0bf' +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/e1cdc5f78f5e_auto.py b/migrations/versions/e1cdc5f78f5e_auto.py new file mode 100644 index 0000000..55e1cd7 --- /dev/null +++ b/migrations/versions/e1cdc5f78f5e_auto.py @@ -0,0 +1,28 @@ +"""auto + +Revision ID: e1cdc5f78f5e +Revises: 2fa6feb17477 +Create Date: 2025-06-05 00:57:10.914714 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'e1cdc5f78f5e' +down_revision = '2fa6feb17477' +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/plant.csv b/plant.csv new file mode 100644 index 0000000..642ac60 --- /dev/null +++ b/plant.csv @@ -0,0 +1,61 @@ +uuid,plant_type,name,scientific_name,mother_uuid +a290790f-1a7a-44e4-8563-e009df73cfe1,plant,Monstera,Monstera deliciosa, +83ce3667-9a47-4d02-9c76-ae438b99696d,plant,Thai Constellation Monstera,Monstera deliciosa 'Thai Constellation', +2ee2e0e7-69de-4b8f-abfe-4ed973c3d760,plant,Baltic Blue,Epipremnum pinnatum 'Baltic Blue', +abd9dbf7-e487-4d2e-9753-5f96bd757d30,cutting,Yellow Flame Pothos,Epipremnum pinnatum 'Yellow Flame', +e788375e-a90c-4442-b9ba-dbb7d54e4ffa,cutting,Yellow Flame Pothos,Epipremnum pinnatum 'Yellow Flame', +9359048e-42d7-44c1-a145-c71c5f7dde99,cutting,Yellow Flame Pothos ,Epipremnum pinnatum 'Yellow Flame', +84f7c394-025a-4a7d-8ba6-809001f2e9b1,cutting,Yellow Flame Pothos ,Epipremnum pinnatum 'Yellow Flame', +55e834e5-42c5-4d1e-b672-a229cf9fb385,cutting,Yellow Flame Pothos ,Epipremnum pinnatum 'Yellow Flame', +2b0f313d-bc4b-4ae3-a1b7-7a43c33183c8,cutting,Teruno Himiko Pothos,Epipremnum aureum 'Teruno Himiko', +9e9c54e8-b4d7-483d-829b-809a5ad56965,cutting,Jessenia Pothos ,Epipremnum aureum 'Jessenia', +cfd7f26a-fbcb-4858-bb68-9057bc02ce11,cutting,Jessenia Pothos ,Epipremnum aureum 'Jessenia', +8015f878-ce4b-43a0-93a4-77d27c788f90,cutting,Lemon Top Pothos,Epipremnum aureum 'Lemon Top', +61a75de2-6f15-4881-b476-805817406068,cutting,Lemon Top Pothos ,Epipremnum aureum 'Lemon Top', +7593deb2-ee82-4609-844d-d968ceefe86e,cutting,Snow Queen Pothos,Epipremnum aureum 'Snow Queen', +d4518e5f-555b-42ca-b6ae-23ae7cdf242e,cutting,Skeleton Key Pothos ,Epipremnum pinnatum 'Skeleton Key', +a26e98c8-8d9a-454f-bb55-7f86bd3c85a1,cutting,Skeleton Key Pothos ,Epipremnum pinnatum 'Skeleton Key', +b6f2d9a7-b7a9-4ee9-bd99-32eb1086a50a,cutting,Lemon Meringue Pothos ,Epipremnum aureum 'Lemon Meringue', +604e0128-2243-4a86-8ed5-f3f0d1f42375,cutting,Lemon Meringue Pothos ,Epipremnum aureum 'Lemon Meringue', +6d7c6be6-ebf6-474a-8529-beb119f78885,cutting,Champs-Élysées Pothos,Epipremnum aureum 'Champs-Élysées', +44b3db46-3e76-4121-8684-15c6aab3c941,cutting,Champs-Élysées Pothos,Epipremnum aureum 'Champs-Élysées', +992c7664-cdb0-4272-b91e-a883e2c7583e,cutting,Champs-Élysées Pothos,Epipremnum Aureum 'Champs-Élysées', +bac3ed6a-fc57-40bd-951c-4dfbefdf97a0,cutting,Hoya Carnosa,Hoya carnosa, +63752b15-f8d6-4243-90b0-e03c91b5ab00,cutting,Aurea Variegated Pothos,Epipremnum amplissimum 'aurea', +3c75a03c-85c8-4556-99bc-f9374649ac91,cutting,Aurea Variegated Pothos,Epipremnum amplissimum 'aurea', +7338f556-2667-4bb5-8e4d-93258b3e7629,cutting,Aurea Variegated Pothos,Epipremnum amplissimum 'aurea', +65fe9d39-4901-475f-b281-288470ce8bfc,tissue_culture,Philodendron Joepii,Philodendron × joepii, +0d3eb3b4-f91f-4223-aeae-8d07e376fb0f,tissue_culture,Philodendron Joepii,Philodendron × joepii, +0054998b-69e9-4b54-939d-28af973a5072,tissue_culture,Philodendron Joepii,Philodendron × joepii, +72765979-76c9-4cd5-9f32-c1447bd442c6,tissue_culture,Philodendron Joepii,Philodendron × joepii, +41f61e96-7aa0-4266-981a-bdc07dc1d73d,tissue_culture,Philodendron Joepii,Philodendron × joepii, +114701f1-6b7e-447e-902b-ac8eb7a77b1e,tissue_culture,Anthurium Warocqueanum Queen,Anthurium warocqueanum, +2bf6cf5b-02ef-4fd7-b2aa-4116d5a82210,tissue_culture,Anthurium Warocqueanum Queen,Anthurium warocqueanum, +053da33c-0491-40d0-ad45-0f4dfd3899cd,tissue_culture,Philodendron V. White Princess,Philodendron erubescens 'White Princess', +f14a61b1-3e79-4fd5-94b4-ca65fd6dabf4,tissue_culture,Philodendron V. White Princess,Philodendron erubescens 'White Princess', +1944c316-1a69-4708-95a2-e78ee310cfcf,tissue_culture,Philodendron V. White Princess,Philodendron erubescens 'White Princess', +18b16b54-bb05-4ab8-aedf-01f5a3ca0429,tissue_culture,Philodendron V. White Princess,Philodendron erubescens 'White Princess', +02d416eb-f1ef-43fd-901e-c67b9af5d04c,tissue_culture,Philodendron V. White Princess,Philodendron erubescens 'White Princess', +b9320c61-a2df-40b4-9998-f292f814ceec,tissue_culture,Philodendron V. Pink Princess,Philodendron erubescens 'Pink Princess', +1992b27a-2b12-42cd-ae1c-a152e64b742c,tissue_culture,Philodendron V. Pink Princess,Philodendron erubescens 'Pink Princess', +e9aa3ec5-d107-4769-bfb1-180b4013c5f2,tissue_culture,Philodendron V. Pink Princess,Philodendron erubescens 'Pink Princess', +e0f4a333-ae5c-4eaf-b5fc-6275d96b37d1,tissue_culture,Philodendron V. Pink Princess,Philodendron erubescens 'Pink Princess', +cf39b897-3fcd-45db-a421-653177d45f7e,tissue_culture,Philodendron V. Pink Princess,Philodendron erubescens 'Pink Princess', +a14ea46c-49d7-440b-8e7d-25be98fad0c2,tissue_culture,Philodendron V. Red Anderson,Philodendron erubescens 'Anderson', +5510456a-27de-49f5-87ca-1ce4c9eaa1a8,tissue_culture,Philodendron Goeldii Mint,Thaumatophyllum spruceanum 'Mint' , +7ac40dec-747c-48ec-b9f3-cdde9b45cc4c,plant,Albo Monstera,Monstera deliciosa 'Albo Variegata' , +f3ab0c30-c50a-4fdc-b9d3-df84a416fe45,cutting,Albo Monstera ,Monstera deliciosa 'Albo Variegata' , +6f1cbaec-8753-4ba8-b208-db132eba20af,cutting,Albo Monstera ,Monstera deliciosa 'Albo Variegata' , +05e4d1d7-66b1-4b51-ac8e-f9f29a6ffea4,cutting,Albo Monstera ,Monstera deliciosa 'Albo Variegata' , +10c05f27-94ed-4834-849c-ba56a1c0648c,cutting,Albo Monstera ,Monstera deliciosa 'Albo Variegata' , +c7d5ebad-6a90-4310-b5b9-50a8dc9d53b7,plant,Thai Constellation Monstera,Monstera deliciosa 'Thai Constellation', +9accd1a0-dae5-4fbb-8a11-f01b4a5079d3,plant,Thai Constellation Monstera,Monstera deliciosa 'Thai Constellation', +f419f936-a662-4ad8-8504-49d187e1029d,plant,Mint Monstera,Monstera deliciosa 'Mint', +b55eb046-1551-4073-9958-7bc52090344c,plant,Albo Monstera ,Monstera deliciosa 'Albo Variegata', +ce681d56-e777-431f-aea3-68f7b9a86cc1,plant,Albo Monstera ,Monstera deliciosa 'Albo Variegata', +f0b88046-1262-40a2-981c-7ce8d1ac2cf6,plant,Albo Monstera ,Monstera deliciosa 'Albo Variegata', +71a6b08b-7ec4-4c94-a558-25aaceb4f4a6,plant,Philodendron V. Pink Princess ,Philodendron erubescens 'Pink Princess', +cd49f25c-a397-4d93-b127-ab7fe5fb681f,plant,White Monstera Monstera,Monstera deliciosa 'White Monster', +c138540f-aca7-4753-bd49-fef0dcd15afa,plant,Monstera Dubia,Monstera dubia, +8b1059c8-8dd3-487a-af19-1eb548788e87,cutting,Baltic Blue,Epipremnum pinnatum 'Baltic Blue',2ee2e0e7-69de-4b8f-abfe-4ed973c3d760 +5646befb-36d0-444c-b531-6cca73128c59,cutting,Baltic Blue ,Epipremnum pinnatum 'Baltic Blue',2ee2e0e7-69de-4b8f-abfe-4ed973c3d760 \ No newline at end of file diff --git a/plugins/cli/seed.py b/plugins/cli/seed.py index 23293e3..7126c3d 100644 --- a/plugins/cli/seed.py +++ b/plugins/cli/seed.py @@ -5,13 +5,8 @@ from datetime import datetime, timedelta from app import db from plugins.auth.models import User from plugins.plant.models import ( - Plant, PlantCommonName, PlantScientificName, PlantOwnershipLog, - PlantLineage + Plant, PlantCommonName, PlantScientificName ) -from plugins.growlog.models import PlantUpdate -from plugins.media.models import Media, ImageHeart, FeaturedImage -from plugins.submission.models import Submission, SubmissionImage - @click.command(name='preload-data') # 🔧 changed from preload_data @with_appcontext @@ -38,12 +33,6 @@ def preload_data(auto=False): db.session.commit() # COMMON & SCIENTIFIC NAMES - #monstera_common = PlantCommonName(name='Monstera') - #deliciosa_sci = PlantScientificName(name='Monstera deliciosa') - #aurea_sci = PlantScientificName(name='Monstera aurea') - #db.session.add_all([monstera_common, deliciosa_sci, aurea_sci]) - #db.session.commit() - joepii_common = PlantCommonName(name='Philodendron Joepii') queen_common = PlantCommonName(name='Anthurium Warocqueanum Queen') thai_common = PlantCommonName(name='Thai Constellation Monstera') @@ -60,78 +49,5 @@ def preload_data(auto=False): db.session.add_all([joepii_sci, queen_sci, thai_sci, generic_sci]) db.session.commit() - # PLANTS - """ parent_plant = Plant( - common_name_id=monstera_common.id, - scientific_name_id=deliciosa_sci.id, - created_by_user_id=admin.id - ) - child_plant = Plant( - common_name_id=monstera_common.id, - scientific_name_id=aurea_sci.id, - created_by_user_id=user.id, - parent_id=1 - ) - db.session.add_all([parent_plant, child_plant]) - db.session.flush() - - # LINEAGE & OWNERSHIP - db.session.add(PlantLineage(parent_plant_id=parent_plant.id, child_plant_id=child_plant.id)) - db.session.add(PlantOwnershipLog( - plant_id=child_plant.id, - user_id=user.id, - date_acquired=datetime.utcnow() - timedelta(days=20) - )) - db.session.commit() - - # UPDATE & MEDIA - update = PlantUpdate( - plant_id=child_plant.id, - update_type='Repotted', - description='Moved to a 6" pot with a new moss pole.', - ) - db.session.add(update) - db.session.flush() - - db.session.add(Media( - file_url='uploads/demo_plant_update.jpg', - update_id=update.id, - caption='Freshly repotted.' - )) - db.session.commit() - - # SUBMISSION & IMAGE - submission = Submission( - user_id=user.id, - plant_id=child_plant.id, - common_name='Monstera', - scientific_name='Monstera aurea', - price=120.00, - source='Etsy', - height=45, - width=30, - leaf_count=5, - potting_mix='2:1:1 bark:pumice:coco', - container_size='6"', - health_status='Healthy', - notes='Some minor yellowing on one leaf.' - ) - db.session.add(submission) - db.session.flush() - - image = SubmissionImage( - submission_id=submission.id, - file_path='uploads/demo_submission.jpg', - is_visible=True - ) - db.session.add(image) - db.session.flush() - - db.session.add_all([ - ImageHeart(user_id=admin.id, submission_image_id=image.id), - FeaturedImage(submission_image_id=image.id, override_text='Gorgeous coloration', is_featured=True) - ]) - db.session.commit() """ - if not auto: click.echo("🎉 Demo data seeded successfully.") diff --git a/plugins/importer/routes.py b/plugins/importer/routes.py index cb3f84f..b0b322a 100644 --- a/plugins/importer/routes.py +++ b/plugins/importer/routes.py @@ -1,16 +1,25 @@ +# plugins/importer/routes.py + import csv import io import difflib + from flask import Blueprint, request, render_template, redirect, flash, session, url_for from flask_login import login_required, current_user -from app.neo4j_utils import get_neo4j_handler -from plugins.plant.models import db, Plant, PlantCommon, PlantScientific +from flask_wtf.csrf import generate_csrf -bp = Blueprint("importer", __name__, template_folder="templates") +from app.neo4j_utils import get_neo4j_handler +from plugins.plant.models import ( + db, + Plant, PlantCommonName, PlantScientificName, PlantOwnershipLog +) + +bp = Blueprint("importer", __name__, template_folder="templates", url_prefix="/import") REQUIRED_HEADERS = {"uuid", "plant_type", "name"} -@bp.route("/import/", methods=["GET", "POST"]) + +@bp.route("/", methods=["GET", "POST"]) @login_required def upload(): if request.method == "POST": @@ -24,48 +33,58 @@ def upload(): stream = io.StringIO(decoded) reader = csv.DictReader(stream) - headers = set(reader.fieldnames) - if not REQUIRED_HEADERS.issubset(headers): - flash(f"Missing required CSV headers: {REQUIRED_HEADERS - headers}", "error") + headers = set(reader.fieldnames or []) + missing = REQUIRED_HEADERS - headers + if missing: + flash(f"Missing required CSV headers: {missing}", "error") return redirect(request.url) session["pending_rows"] = [] review_list = [] - all_common = {c.name.lower(): c for c in PlantCommon.query.all()} - all_scientific = {s.name.lower(): s for s in PlantScientific.query.all()} + # Preload existing common/scientific names + all_common = {c.name.lower(): c for c in PlantCommonName.query.all()} + all_scientific = {s.name.lower(): s for s in PlantScientificName.query.all()} for row in reader: - uuid = row.get("uuid") - name = row.get("name", "").strip() - sci_name = row.get("scientific_name", "").strip() - plant_type = row.get("plant_type", "plant") - mother_uuid = row.get("mother_uuid", "").strip() + uuid_raw = row.get("uuid", "") + uuid = uuid_raw.strip().strip('"') - if not all([uuid, name, plant_type]): + name_raw = row.get("name", "") + name = name_raw.strip() + + sci_raw = row.get("scientific_name", "") + sci_name = sci_raw.strip() + + plant_type = row.get("plant_type", "").strip() or "plant" + + mother_raw = row.get("mother_uuid", "") + mother_uuid = mother_raw.strip().strip('"') + + # If any required field is missing, skip + if not (uuid and name and plant_type): continue - name_lc = name.lower() - sci_lc = sci_name.lower() + # Try fuzzy‐matching scientific names if needed suggested_match = None - original_input = sci_name + original_sci = sci_name + name_lc = name.lower() + sci_lc = sci_name.lower() - # Fuzzy match scientific name if sci_lc and sci_lc not in all_scientific: close = difflib.get_close_matches(sci_lc, all_scientific.keys(), n=1, cutoff=0.85) if close: suggested_match = all_scientific[close[0]].name - # Infer from common name if not sci_lc and name_lc in all_common: - sci_obj = PlantScientific.query.filter_by(common_id=all_common[name_lc].id).first() + sci_obj = PlantScientificName.query.filter_by(common_id=all_common[name_lc].id).first() if sci_obj: sci_name = sci_obj.name elif not sci_lc: close_common = difflib.get_close_matches(name_lc, all_common.keys(), n=1, cutoff=0.85) if close_common: match_name = close_common[0] - sci_obj = PlantScientific.query.filter_by(common_id=all_common[match_name].id).first() + sci_obj = PlantScientificName.query.filter_by(common_id=all_common[match_name].id).first() if sci_obj: suggested_match = sci_obj.name sci_name = sci_obj.name @@ -74,17 +93,17 @@ def upload(): "uuid": uuid, "name": name, "sci_name": sci_name, - "original_sci_name": original_input, + "original_sci_name": original_sci, "plant_type": plant_type, "mother_uuid": mother_uuid, "suggested_scientific_name": suggested_match, }) - if suggested_match and suggested_match != original_input: + if suggested_match and suggested_match != original_sci: review_list.append({ "uuid": uuid, "common_name": name, - "user_input": original_input or "(blank)", + "user_input": original_sci or "(blank)", "suggested_name": suggested_match }) @@ -92,44 +111,60 @@ def upload(): return redirect(url_for("importer.review")) except Exception as e: - flash(f"Import failed: {str(e)}", "error") + flash(f"Import failed: {e}", "error") + return redirect(request.url) - return render_template("importer/upload.html") + return render_template("importer/upload.html", csrf_token=generate_csrf()) -@bp.route("/import/review", methods=["GET", "POST"]) +@bp.route("/review", methods=["GET", "POST"]) @login_required def review(): - rows = session.get("pending_rows", []) + rows = session.get("pending_rows", []) review_list = session.get("review_list", []) + if request.method == "POST": - neo = get_neo4j_handler() + neo = get_neo4j_handler() added = 0 + # ————————————————————————————————————————————— + # (1) CREATE MySQL records & MERGE every Neo4j node + # ————————————————————————————————————————————— for row in rows: - uuid = row["uuid"] - name = row["name"] - sci_name = row["sci_name"] - user_input = row["original_sci_name"] - plant_type = row["plant_type"] - mother_uuid = row["mother_uuid"] - suggested = row.get("suggested_scientific_name") + uuid_raw = row["uuid"] + uuid = uuid_raw.strip().strip('"') - common = PlantCommon.query.filter_by(name=name).first() + name_raw = row["name"] + name = name_raw.strip() + + sci_raw = row["sci_name"] + sci_name = sci_raw.strip() + + plant_type = row["plant_type"].strip() + + mother_raw = row["mother_uuid"] + mother_uuid = mother_raw.strip().strip('"') + + suggested = row.get("suggested_scientific_name") + + # ——— MySQL: PlantCommonName ——— + common = PlantCommonName.query.filter_by(name=name).first() if not common: - common = PlantCommon(name=name) + common = PlantCommonName(name=name) db.session.add(common) db.session.flush() - accepted = request.form.get(f"confirm_{uuid}") - sci_name_to_use = suggested if (suggested and accepted) else sci_name + # ——— MySQL: PlantScientificName ——— + accepted = request.form.get(f"confirm_{uuid}") + sci_to_use = suggested if (suggested and accepted) else sci_name - scientific = PlantScientific.query.filter_by(name=sci_name_to_use).first() + scientific = PlantScientificName.query.filter_by(name=sci_to_use).first() if not scientific: - scientific = PlantScientific(name=sci_name_to_use, common_id=common.id) + scientific = PlantScientificName(name=sci_to_use, common_id=common.id) db.session.add(scientific) db.session.flush() + # ——— MySQL: Plant row ——— plant = Plant.query.filter_by(uuid=uuid).first() if not plant: plant = Plant( @@ -141,18 +176,60 @@ def review(): is_verified=bool(accepted) ) db.session.add(plant) + db.session.flush() # so plant.id is available immediately added += 1 - neo.create_plant_node(uuid, name) - if mother_uuid: - neo.create_plant_node(mother_uuid, "Parent") - neo.create_lineage(uuid, mother_uuid) + # ——— MySQL: Create initial ownership log entry ——— + log = PlantOwnershipLog( + plant_id = plant.id, + user_id = current_user.id, + date_acquired = datetime.utcnow(), + transferred = False, + is_verified = bool(accepted) + ) + db.session.add(log) + # ——— Neo4j: ensure a node exists for this plant UUID ——— + neo.create_plant_node(uuid, name) + + # Commit MySQL so that all Plant/OwnershipLog rows exist db.session.commit() + + + # ————————————————————————————————————————————— + # (2) CREATE Neo4j LINEAGE relationships (child → parent). (Unchanged) + # ————————————————————————————————————————————— + for row in rows: + child_raw = row.get("uuid", "") + child_uuid = child_raw.strip().strip('"') + + mother_raw = row.get("mother_uuid", "") + mother_uuid = mother_raw.strip().strip('"') + + print( + f"[DEBUG] row → child_raw={child_raw!r}, child_uuid={child_uuid!r}; " + f"mother_raw={mother_raw!r}, mother_uuid={mother_uuid!r}" + ) + + if mother_uuid: + neo.create_plant_node(mother_uuid, name="Unknown") + neo.create_lineage(child_uuid, mother_uuid) + else: + print(f"[DEBUG] Skipping LINEAGE creation for child {child_uuid!r} (no mother_uuid)") + + # (Optional) Check two known UUIDs + neo.debug_check_node("8b1059c8-8dd3-487a-af19-1eb548788e87") + neo.debug_check_node("2ee2e0e7-69de-4d8f-abfe-4ed973c3d760") + neo.close() - flash(f"{added} plants added.", "success") + flash(f"{added} plants added (MySQL) + Neo4j nodes/relations created.", "success") + session.pop("pending_rows", None) session.pop("review_list", None) return redirect(url_for("importer.upload")) - return render_template("importer/review.html", review_list=review_list) + return render_template( + "importer/review.html", + review_list=review_list, + csrf_token=generate_csrf() + ) diff --git a/plugins/importer/templates/importer/review.html b/plugins/importer/templates/importer/review.html index 89caa6d..45eb29c 100644 --- a/plugins/importer/templates/importer/review.html +++ b/plugins/importer/templates/importer/review.html @@ -1,43 +1,38 @@ {% extends "core_ui/base.html" %} -{% block title %}Review Scientific Names{% endblock %} - +{% block title %}Review Matches{% endblock %} {% block content %}

{% endblock %} diff --git a/plugins/importer/templates/importer/upload.html b/plugins/importer/templates/importer/upload.html index 6f3e62c..3ff1139 100644 --- a/plugins/importer/templates/importer/upload.html +++ b/plugins/importer/templates/importer/upload.html @@ -1,10 +1,8 @@ {% extends "core_ui/base.html" %} {% block title %}CSV Import{% endblock %} - {% block content %}

📤 Import Plant Data

- {% with messages = get_flashed_messages(with_categories=true) %} {% if messages %} {% for category, message in messages %} @@ -15,14 +13,13 @@ {% endfor %} {% endif %} {% endwith %} -
- +
- Must include: uuid, plant_type, name
+ Required: uuid, plant_type, name
Optional: scientific_name, mother_uuid
diff --git a/plugins/ownership/routes.py b/plugins/ownership/routes.py new file mode 100644 index 0000000..87802b1 --- /dev/null +++ b/plugins/ownership/routes.py @@ -0,0 +1,62 @@ +# plugins/ownership/routes.py + +from datetime import datetime + +from flask import Blueprint, request, jsonify, abort +from flask_login import login_required, current_user + +from plugins.plant.models import db, Plant, PlantOwnershipLog +from plugins.auth.models import User # Adjust import path if User lives elsewhere + +bp = Blueprint("ownership", __name__, url_prefix="/ownership") + + +@bp.route("/transfer/", methods=["POST"]) +@login_required +def transfer(plant_uuid): + """ + Transfer a plant from the current owner to another user: + Required JSON or form data: { "new_owner_id": } + """ + data = request.get_json() or request.form + new_owner_id = data.get("new_owner_id", None) + if not new_owner_id: + return jsonify({"error": "new_owner_id is required"}), 400 + + # 1) Fetch the plant by UUID + plant = Plant.query.filter_by(uuid=plant_uuid).first() + if not plant: + return jsonify({"error": "Plant not found"}), 404 + + # 2) Only current owner (or some admin) can transfer + if plant.owner_id != current_user.id: + return jsonify({"error": "Only the current owner can transfer this plant"}), 403 + + # 3) Verify the new owner exists + new_owner = User.query.get(new_owner_id) + if not new_owner: + return jsonify({"error": "New owner user not found"}), 404 + + # 4) Create a log entry before changing owner + log = PlantOwnershipLog( + plant_id = plant.id, + user_id = new_owner.id, + date_acquired = datetime.utcnow(), + transferred = True, + # If you want to store a reference to Neo4j node, set graph_node_id here. + graph_node_id = None, + is_verified = False + ) + db.session.add(log) + + # 5) Update the Plant.owner_id + plant.owner_id = new_owner.id + db.session.add(plant) + + db.session.commit() + + return jsonify({ + "message": f"Plant '{plant.uuid}' transferred to user {new_owner.username}.", + "plant_uuid": plant.uuid, + "new_owner_id": new_owner.id + }), 200 diff --git a/plugins/plant/models.py b/plugins/plant/models.py index 21c6ffa..f0a94fa 100644 --- a/plugins/plant/models.py +++ b/plugins/plant/models.py @@ -1,96 +1,129 @@ -from flask_sqlalchemy import SQLAlchemy -import uuid as uuid_lib +# plugins/plant/models.py + from datetime import datetime +import uuid as uuid_lib + +# Import the central SQLAlchemy instance, not a new one from app import db -# Association table for tags +# If your User model lives in plugins/auth/models.py, import it here: +from plugins.auth.models import User + +# ----------------------------- +# (We no longer need PlantLineage) +# ----------------------------- + +# Association table for tags (unchanged) plant_tags = db.Table( 'plant_tags', db.metadata, db.Column('plant_id', db.Integer, db.ForeignKey('plant.id'), primary_key=True), - db.Column('tag_id', db.Integer, db.ForeignKey('tag.id'), primary_key=True), + db.Column('tag_id', db.Integer, db.ForeignKey('tag.id'), primary_key=True), extend_existing=True ) class Tag(db.Model): __tablename__ = 'tag' __table_args__ = {'extend_existing': True} - - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(255), unique=True, nullable=False) + + id = db.Column(db.Integer, primary_key=True) + name = db.Column(db.String(128), unique=True, nullable=False) + # … any other columns you had … + class PlantCommonName(db.Model): __tablename__ = 'plant_common_name' __table_args__ = {'extend_existing': True} - - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(255), unique=True, nullable=False) + + id = db.Column(db.Integer, primary_key=True) + name = db.Column(db.String(128), unique=True, nullable=False) + created_at = db.Column(db.DateTime, default=datetime.utcnow) + + scientific_names = db.relationship( + 'plugins.plant.models.PlantScientificName', + backref=db.backref('common', lazy='joined'), + lazy=True, + cascade='all, delete-orphan' + ) + class PlantScientificName(db.Model): __tablename__ = 'plant_scientific_name' __table_args__ = {'extend_existing': True} - - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(255), unique=True, nullable=False) - common_id = db.Column(db.Integer, db.ForeignKey('plant_common_name.id'), nullable=False) -class PlantLineage(db.Model): - __tablename__ = 'plant_lineage' - __table_args__ = {'extend_existing': True} - - id = db.Column(db.Integer, primary_key=True) - child_plant_id = db.Column(db.Integer, db.ForeignKey('plant.id'), nullable=False) - parent_plant_id = db.Column(db.Integer, db.ForeignKey('plant.id'), nullable=False) - type = db.Column(db.String(50), nullable=False) # cutting, seed, division + id = db.Column(db.Integer, primary_key=True) + name = db.Column(db.String(256), unique=True, nullable=False) + common_id = db.Column(db.Integer, db.ForeignKey('plant_common_name.id'), nullable=False) + created_at = db.Column(db.DateTime, default=datetime.utcnow) + + plants = db.relationship( + 'plugins.plant.models.Plant', + backref='scientific', + lazy='dynamic' + ) + class PlantOwnershipLog(db.Model): __tablename__ = 'plant_ownership_log' __table_args__ = {'extend_existing': True} - - id = db.Column(db.Integer, primary_key=True) - plant_id = db.Column(db.Integer, db.ForeignKey('plant.id'), nullable=False) - user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) - start_time = db.Column(db.DateTime, nullable=False) - end_time = db.Column(db.DateTime, nullable=True) - transfer_note = db.Column(db.Text, nullable=True) + + id = db.Column(db.Integer, primary_key=True) + plant_id = db.Column(db.Integer, db.ForeignKey('plant.id'), nullable=False) + user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) + date_acquired = db.Column(db.DateTime, default=datetime.utcnow) + transferred = db.Column(db.Boolean, default=False, nullable=False) + graph_node_id = db.Column(db.String(255), nullable=True) # optional + is_verified = db.Column(db.Boolean, default=False, nullable=False) + + user = db.relationship('plugins.auth.models.User', backref='ownership_logs', lazy=True) + class Plant(db.Model): __tablename__ = 'plant' __table_args__ = {'extend_existing': True} - id = db.Column(db.Integer, primary_key=True) - uuid = db.Column(db.String(36), default=lambda: str(uuid_lib.uuid4()), unique=True, nullable=False) - custom_slug = db.Column(db.String(255), unique=True, nullable=True) + id = db.Column(db.Integer, primary_key=True) + uuid = db.Column(db.String(36), default=lambda: str(uuid_lib.uuid4()), unique=True, nullable=False) + custom_slug = db.Column(db.String(255), unique=True, nullable=True) - owner_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) - common_id = db.Column(db.Integer, db.ForeignKey('plant_common_name.id'), nullable=False) - scientific_id = db.Column(db.Integer, db.ForeignKey('plant_scientific_name.id'), nullable=False) + owner_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) + common_id = db.Column(db.Integer, db.ForeignKey('plant_common_name.id'), nullable=False) + scientific_id = db.Column(db.Integer, db.ForeignKey('plant_scientific_name.id'), nullable=False) - plant_type = db.Column(db.String(50), nullable=False) - status = db.Column(db.String(50), nullable=False, default='active') - notes = db.Column(db.Text, nullable=True) + plant_type = db.Column(db.String(50), nullable=False) + created_at = db.Column(db.DateTime, default=datetime.utcnow) + updated_at = db.Column(db.DateTime, onupdate=datetime.utcnow) - created_at = db.Column(db.DateTime, default=datetime.utcnow) - transferred = db.Column(db.Boolean, default=False) - graph_node_id = db.Column(db.String(255), nullable=True) - - is_verified = db.Column(db.Boolean, nullable=False, default=False) + updates = db.relationship( + 'plugins.growlog.models.PlantUpdate', + backref='plant', + lazy=True, + cascade='all, delete-orphan' + ) + tags = db.relationship( + 'plugins.plant.models.Tag', + secondary=plant_tags, + backref='plants', + lazy='dynamic' + ) - # Relationships - updates = db.relationship('PlantUpdate', backref='growlog', lazy=True) - lineage = db.relationship('PlantLineage', backref='child', lazy=True, foreign_keys='PlantLineage.child_plant_id') - tags = db.relationship('Tag', secondary=plant_tags, backref='plants') - - common_name = db.relationship( - 'PlantCommonName', - backref=db.backref('plants', lazy='dynamic'), - lazy=True - ) + common_name = db.relationship( + 'plugins.plant.models.PlantCommonName', + backref=db.backref('plants', lazy='dynamic'), + lazy=True + ) scientific_name = db.relationship( - 'PlantScientificName', - backref=db.backref('plants', lazy='dynamic'), - lazy=True - ) - -PlantCommon = PlantCommonName -PlantScientific = PlantScientificName + 'plugins.plant.models.PlantScientificName', + backref=db.backref('plants', lazy='dynamic'), + lazy=True + ) + + ownership_logs = db.relationship( + 'plugins.plant.models.PlantOwnershipLog', + backref='plant', + lazy=True, + cascade='all, delete-orphan' + ) + + def __repr__(self): + return f""