From 7bff7f0bd315d17ded63fbda8dd86cca7d49fda6 Mon Sep 17 00:00:00 2001 From: Bryson Date: Mon, 26 May 2025 22:25:39 -0500 Subject: [PATCH] more crap --- .env.example | 3 +- Dockerfile | 13 ++-- Makefile | 2 +- app/__init__.py | 21 ++++- app/config.py | 3 +- docker-compose.yml | 13 +--- entrypoint.sh | 21 +++++ files.zip | Bin 83483 -> 82391 bytes plugins/cli/__init__.py | 14 ++-- plugins/cli/seed.py | 137 +++++++++++++++++++++++++++------ plugins/growlog/models.py | 26 +++++-- plugins/media/models.py | 30 +++++++- plugins/media/routes.py | 43 +---------- plugins/plant/models.py | 117 ++++++---------------------- plugins/search/models.py | 14 ++-- plugins/submission/__init__.py | 7 +- plugins/submission/models.py | 23 ++---- plugins/submission/plugin.json | 3 +- 18 files changed, 265 insertions(+), 225 deletions(-) create mode 100644 entrypoint.sh diff --git a/.env.example b/.env.example index d8c9ff0..aef1722 100644 --- a/.env.example +++ b/.env.example @@ -1,8 +1,7 @@ # Environment toggles USE_REMOTE_MYSQL=0 -ENABLE_DB_PRELOAD=0 ENABLE_DB_SEEDING=1 -SEED_EXTRA_DATA=false +DOCKER_ENV=development UPLOAD_FOLDER=app/static/uploads SECRET_KEY=supersecretplantappkey diff --git a/Dockerfile b/Dockerfile index d6963e7..e070a62 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,15 +4,14 @@ WORKDIR /app COPY . . # Required for mysqlclient + netcat wait -RUN apt-get update && apt-get install -y \ - gcc \ - default-libmysqlclient-dev \ - pkg-config \ - netcat-openbsd \ - curl \ - && rm -rf /var/lib/apt/lists/* +RUN apt-get update && apt-get install -y gcc default-libmysqlclient-dev pkg-config netcat-openbsd curl && rm -rf /var/lib/apt/lists/* RUN pip install --upgrade pip RUN pip install -r requirements.txt +# Add entrypoint script +COPY entrypoint.sh /entrypoint.sh +RUN chmod +x /entrypoint.sh + +ENTRYPOINT ["/entrypoint.sh"] CMD ["flask", "run", "--host=0.0.0.0"] diff --git a/Makefile b/Makefile index e69915f..7c081d2 100644 --- a/Makefile +++ b/Makefile @@ -55,7 +55,7 @@ status: @docker ps --filter "name=$(PROJECT_NAME)-" --format "table {{.Names}}\t{{.Status}}" seed: - @docker exec -it $$(docker ps -qf "name=$(PROJECT_NAME)-web") flask seed-admin + @docker exec -it $$(docker ps -qf "name=$(PROJECT_NAME)-web") flask preload-data shell: @docker exec -it $$(docker ps -qf "name=$(PROJECT_NAME)-web") bash diff --git a/app/__init__.py b/app/__init__.py index 957489b..b60ed56 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -1,19 +1,27 @@ import os +import json import importlib.util import importlib from flask import Flask from flask_sqlalchemy import SQLAlchemy from flask_migrate import Migrate from flask_login import LoginManager +from flask_wtf.csrf import CSRFProtect +from dotenv import load_dotenv + +# Load environment variables from .env +load_dotenv() db = SQLAlchemy() migrate = Migrate() login_manager = LoginManager() +csrf = CSRFProtect() def create_app(): app = Flask(__name__) app.config.from_object('app.config.Config') + csrf.init_app(app) # Initialize core extensions db.init_app(app) @@ -28,7 +36,6 @@ def create_app(): # Plugin auto-loader plugin_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 'plugins')) for plugin in os.listdir(plugin_path): - # Skip folders that end with `.noload` if plugin.endswith('.noload'): print(f"[⏭] Skipping plugin '{plugin}' (marked as .noload)") continue @@ -49,13 +56,23 @@ def create_app(): except Exception as e: print(f"[⚠️] Failed to load routes from plugin '{plugin}': {e}") - # Register CLI commands + # Register CLI commands and plugin entry points init_file = os.path.join(plugin_dir, '__init__.py') 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) + + plugin_json = os.path.join(plugin_dir, 'plugin.json') + if os.path.isfile(plugin_json): + try: + meta = json.load(open(plugin_json, 'r')) + entry = meta.get('entry_point') + if entry and hasattr(cli_module, entry): + getattr(cli_module, entry)(app) + except Exception as e: + print(f"[⚠️] Failed to run entry_point '{entry}' for plugin '{plugin}': {e}") except Exception as e: print(f"[⚠️] Failed to load CLI from plugin '{plugin}': {e}") diff --git a/app/config.py b/app/config.py index 76e357f..4a37c40 100644 --- a/app/config.py +++ b/app/config.py @@ -22,6 +22,5 @@ class Config: SQLALCHEMY_TRACK_MODIFICATIONS = False # Optional toggles - ENABLE_DB_PRELOAD = os.environ.get('ENABLE_DB_PRELOAD', '0') == '1' ENABLE_DB_SEEDING = os.environ.get('ENABLE_DB_SEEDING', '0') == '1' - SEED_EXTRA_DATA = os.environ.get('SEED_EXTRA_DATA', 'false').lower() == 'true' + DOCKER_ENV = os.environ.get('FLASK_ENV', 'production') diff --git a/docker-compose.yml b/docker-compose.yml index 8c79e5d..055d183 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -9,7 +9,6 @@ services: - FLASK_APP=app - FLASK_ENV=development - USE_REMOTE_MYSQL=${USE_REMOTE_MYSQL} - - ENABLE_DB_PRELOAD=${ENABLE_DB_PRELOAD} - ENABLE_DB_SEEDING=${ENABLE_DB_SEEDING} - MYSQL_DATABASE=${MYSQL_DATABASE} - MYSQL_USER=${MYSQL_USER} @@ -46,16 +45,10 @@ services: echo '[✔] Running DB migrations...' flask db upgrade - - if [ "$$ENABLE_DB_PRELOAD" = "1" ]; then - echo '[📥] Preloading data...'; flask preload-data; - else - echo '[⚠️] Skipping preload...'; - fi - if [ \"$$ENABLE_DB_SEEDING\" = \"1\" ]; then - echo '[🌱] Seeding admin user...' - flask seed-admin + if [ \"$ENABLE_DB_SEEDING\" = \"1\" ]; then + echo '[🌱] Seeding Data...' + flask preload-data else echo '[⚠️] DB seeding skipped by config.' fi diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 0000000..39f6adb --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,21 @@ +#!/bin/bash +set -e + +# Initialize migrations folder if needed +if [ ! -d migrations ]; then + echo "[✔] Initializing migrations directory" + flask db init +fi + +echo "[✔] Running migrations" +flask db migrate -m "auto" +flask db upgrade + +# Seed database if enabled +if [ "$ENABLE_DB_SEEDING" = "true" ]; then + echo "[🌱] Seeding Data" + flask preload-data +fi + +# Start the main process +exec "$@" diff --git a/files.zip b/files.zip index 8ad0dd8bfacf47f1ebfef52e01eab5a4a6ce4288..cbb41a9100f99dfe4cce1c33ca333456744675f8 100644 GIT binary patch literal 82391 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 JIoMW5{XeWkColj2 literal 83483 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 diff --git a/plugins/cli/__init__.py b/plugins/cli/__init__.py index 909dddd..a2c22d8 100644 --- a/plugins/cli/__init__.py +++ b/plugins/cli/__init__.py @@ -1,10 +1,6 @@ -from .seed import preload_data, seed_admin +import click +from flask import Flask -cli_commands = [ - preload_data, - seed_admin -] - -def register_cli(app): - for command in cli_commands: - app.cli.add_command(command) +def register_cli(app: Flask): + from .seed import preload_data_cli + app.cli.add_command(preload_data_cli) diff --git a/plugins/cli/seed.py b/plugins/cli/seed.py index 5a2989c..a0f17df 100644 --- a/plugins/cli/seed.py +++ b/plugins/cli/seed.py @@ -1,32 +1,121 @@ import click from flask.cli import with_appcontext -from plugins.plant.models import Plant -from plugins.auth.models import User +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 +) +from plugins.growlog.models import PlantUpdate +from plugins.media.models import Media, ImageHeart, FeaturedImage +from plugins.submission.models import Submission, SubmissionImage -@click.command('preload-data') +@click.command(name='preload-data') # 🔧 changed from preload_data @with_appcontext -def preload_data(): - click.echo("Preloading data...") - if not Plant.query.first(): - plant = Plant(name="Default Plant") - db.session.add(plant) - db.session.commit() - click.echo("Default plant added.") - else: - click.echo("Plant data already exists.") +def preload_data_cli(): + preload_data(auto=False) +def preload_data(auto=False): + if User.query.filter_by(email='admin@example.com').first(): + if not auto: + click.echo("⚠️ Demo data already exists, skipping.") + return -@click.command('seed-admin') -@with_appcontext -def seed_admin(): - click.echo("Seeding admin user...") - if not User.query.filter_by(email='admin@example.com').first(): - user = User(email='admin@example.com', role='admin', is_verified=True) - user.set_password('password') # Make sure this method exists in your model - db.session.add(user) - db.session.commit() - click.echo("✅ Admin user created.") - else: - click.echo("ℹ️ Admin user already exists.") + if not auto: + click.echo("🌱 Seeding demo data...") + + # USERS + admin = User(email='admin@example.com', role='admin', is_verified=True) + admin.set_password('password123') + + user = User(email='user@example.com', role='user', is_verified=True) + user.set_password('password123') + + db.session.add_all([admin, user]) + 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() + + # 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/growlog/models.py b/plugins/growlog/models.py index fc0f8fd..b9b02b2 100644 --- a/plugins/growlog/models.py +++ b/plugins/growlog/models.py @@ -1,15 +1,27 @@ -from app import db from datetime import datetime +from app import db + class GrowLog(db.Model): __tablename__ = 'grow_logs' + id = db.Column(db.Integer, primary_key=True) plant_id = db.Column(db.Integer, db.ForeignKey('plants.id'), nullable=False) - timestamp = db.Column(db.DateTime, default=datetime.utcnow) - event_type = db.Column(db.String(64), nullable=False) - note = db.Column(db.Text) + title = db.Column(db.String(255), nullable=False) + created_at = db.Column(db.DateTime, default=datetime.utcnow) - media = db.relationship("Media", backref="growlog", lazy=True) + updates = db.relationship('PlantUpdate', backref='grow_log', lazy=True) + + +class PlantUpdate(db.Model): + __tablename__ = 'plant_updates' + __table_args__ = {'extend_existing': True} + + id = db.Column(db.Integer, primary_key=True) + plant_id = db.Column(db.Integer, db.ForeignKey('plants.id'), nullable=False) + growlog_id = db.Column(db.Integer, db.ForeignKey('grow_logs.id'), nullable=True) + update_type = db.Column(db.String(50), nullable=False) + description = db.Column(db.Text, nullable=True) + created_at = db.Column(db.DateTime, default=datetime.utcnow) + media_items = db.relationship('Media', back_populates='update', lazy=True) - def __repr__(self): - return f"" \ No newline at end of file diff --git a/plugins/media/models.py b/plugins/media/models.py index 3fbbc0b..fe4d3bf 100644 --- a/plugins/media/models.py +++ b/plugins/media/models.py @@ -1,12 +1,40 @@ from app import db from datetime import datetime + class Media(db.Model): __tablename__ = 'media' + __table_args__ = {'extend_existing': True} + id = db.Column(db.Integer, primary_key=True) file_url = db.Column(db.String(256), nullable=False) uploaded_at = db.Column(db.DateTime, default=datetime.utcnow) plant_id = db.Column(db.Integer, db.ForeignKey('plants.id'), nullable=True) growlog_id = db.Column(db.Integer, db.ForeignKey('grow_logs.id'), nullable=True) - caption = db.Column(db.String(255), nullable=True) \ No newline at end of file + update_id = db.Column(db.Integer, db.ForeignKey('plant_updates.id'), nullable=True) + + caption = db.Column(db.String(255), nullable=True) + + # Relationship to PlantUpdate + update = db.relationship('PlantUpdate', back_populates='media_items', lazy=True) + + +class ImageHeart(db.Model): + __tablename__ = 'image_hearts' + __table_args__ = {'extend_existing': True} + + id = db.Column(db.Integer, primary_key=True) + user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) + submission_image_id = db.Column(db.Integer, db.ForeignKey('submission_images.id'), nullable=False) + created_at = db.Column(db.DateTime, default=datetime.utcnow) + + +class FeaturedImage(db.Model): + __tablename__ = 'featured_images' + __table_args__ = {'extend_existing': True} + + id = db.Column(db.Integer, primary_key=True) + submission_image_id = db.Column(db.Integer, db.ForeignKey('submission_images.id'), nullable=False) + override_text = db.Column(db.String(255), nullable=True) + is_featured = db.Column(db.Boolean, default=True) diff --git a/plugins/media/routes.py b/plugins/media/routes.py index 2e964a3..dd684f4 100644 --- a/plugins/media/routes.py +++ b/plugins/media/routes.py @@ -1,42 +1,5 @@ -import os -import uuid -from flask import Blueprint, render_template, redirect, url_for, request, current_app, flash -from flask_login import login_required -from werkzeug.utils import secure_filename -from app import db -from .models import Media -from .forms import MediaUploadForm +from flask import Blueprint -bp = Blueprint('media', __name__, template_folder='templates') +media_bp = Blueprint('media', __name__) -@bp.route('/media/upload', methods=['GET', 'POST']) -@login_required -def upload_media(): - form = MediaUploadForm() - if form.validate_on_submit(): - file = form.image.data - filename = f"{uuid.uuid4().hex}_{secure_filename(file.filename)}" - upload_path = os.path.join(current_app.config['UPLOAD_FOLDER'], filename) - file.save(upload_path) - media = Media( - file_url=filename, - caption=form.caption.data, - plant_id=form.plant_id.data or None, - growlog_id=form.growlog_id.data or None - ) - db.session.add(media) - db.session.commit() - flash("Image uploaded successfully.", "success") - return redirect(url_for('media.upload_media')) - return render_template('media/upload.html', form=form) - -@bp.route('/media') -@login_required -def list_media(): - images = Media.query.order_by(Media.uploaded_at.desc()).all() - return render_template('media/list.html', images=images) - -@bp.route('/media/files/') -def media_file(filename): - from flask import send_from_directory - return send_from_directory(current_app.config['UPLOAD_FOLDER'], filename) \ No newline at end of file +# Add routes here as needed; do NOT define models here. diff --git a/plugins/plant/models.py b/plugins/plant/models.py index 7f2e3ae..8b014b4 100644 --- a/plugins/plant/models.py +++ b/plugins/plant/models.py @@ -1,39 +1,31 @@ from datetime import datetime from app import db +from plugins.search.models import Tag, plant_tags +from plugins.growlog.models import PlantUpdate - -class Submission(db.Model): - __tablename__ = 'submission' - +class PlantCommonName(db.Model): + __tablename__ = 'plants_common' id = db.Column(db.Integer, primary_key=True) - user_id = db.Column( - db.Integer, - db.ForeignKey('users.id', name='fk_submission_user_id'), - nullable=False - ) - common_name = db.Column(db.String(120), nullable=False) - scientific_name = db.Column(db.String(120)) - price = db.Column(db.Float, nullable=False) - source = db.Column(db.String(120)) - timestamp = db.Column(db.DateTime, default=datetime.utcnow) - height = db.Column(db.Float) - width = db.Column(db.Float) - leaf_count = db.Column(db.Integer) - potting_mix = db.Column(db.String(255)) - container_size = db.Column(db.String(120)) - health_status = db.Column(db.String(50)) - notes = db.Column(db.Text) - plant_id = db.Column(db.Integer) - images = db.relationship('SubmissionImage', backref='submission', lazy=True) - - -class SubmissionImage(db.Model): - __tablename__ = 'submission_images' + name = db.Column(db.String(120), unique=True, nullable=False) +class PlantScientificName(db.Model): + __tablename__ = 'plants_scientific' id = db.Column(db.Integer, primary_key=True) - submission_id = db.Column(db.Integer, db.ForeignKey('submission.id'), nullable=False) - file_path = db.Column(db.String(255), nullable=False) + name = db.Column(db.String(255), unique=True, nullable=False) +class PlantLineage(db.Model): + __tablename__ = 'plant_lineage' + id = db.Column(db.Integer, primary_key=True) + parent_plant_id = db.Column(db.Integer, db.ForeignKey('plants.id'), nullable=False) + child_plant_id = db.Column(db.Integer, db.ForeignKey('plants.id'), nullable=False) + +class PlantOwnershipLog(db.Model): + __tablename__ = 'plant_ownership_log' + id = db.Column(db.Integer, primary_key=True) + plant_id = db.Column(db.Integer, db.ForeignKey('plants.id'), nullable=False) + user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) + date_acquired = db.Column(db.DateTime, default=datetime.utcnow) + date_relinquished = db.Column(db.DateTime, nullable=True) class Plant(db.Model): __tablename__ = 'plants' @@ -46,68 +38,7 @@ class Plant(db.Model): created_by_user_id = db.Column(db.Integer, db.ForeignKey('users.id')) # Relationships - updates = db.relationship('PlantUpdate', backref='plant', lazy=True) - lineage = db.relationship('PlantLineage', backref='child', lazy=True, - foreign_keys='PlantLineage.child_plant_id') + 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') - - -class PlantCommonName(db.Model): - __tablename__ = 'plants_common' - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(120), unique=True, nullable=False) - - -class PlantScientificName(db.Model): - __tablename__ = 'plants_scientific' - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(255), unique=True, nullable=False) - - -class PlantLineage(db.Model): - __tablename__ = 'plant_lineage' - id = db.Column(db.Integer, primary_key=True) - parent_plant_id = db.Column(db.Integer, db.ForeignKey('plants.id'), nullable=False) - child_plant_id = db.Column(db.Integer, db.ForeignKey('plants.id'), nullable=False) - - -class PlantOwnershipLog(db.Model): - __tablename__ = 'plant_ownership_log' - id = db.Column(db.Integer, primary_key=True) - plant_id = db.Column(db.Integer, db.ForeignKey('plants.id'), nullable=False) - user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) - date_acquired = db.Column(db.DateTime, default=datetime.utcnow) - date_relinquished = db.Column(db.DateTime, nullable=True) - - -class PlantUpdate(db.Model): - __tablename__ = 'plant_updates' - id = db.Column(db.Integer, primary_key=True) - plant_id = db.Column(db.Integer, db.ForeignKey('plants.id'), nullable=False) - update_type = db.Column(db.String(100)) - description = db.Column(db.Text) - created_at = db.Column(db.DateTime, default=datetime.utcnow) - images = db.relationship('UpdateImage', backref='update', lazy=True) - - -class UpdateImage(db.Model): - __tablename__ = 'update_images' - id = db.Column(db.Integer, primary_key=True) - update_id = db.Column(db.Integer, db.ForeignKey('plant_updates.id'), nullable=False) - file_path = db.Column(db.String(255), nullable=False) - - -class ImageHeart(db.Model): - __tablename__ = 'image_hearts' - id = db.Column(db.Integer, primary_key=True) - user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) - submission_image_id = db.Column(db.Integer, db.ForeignKey('submission_images.id'), nullable=False) - created_at = db.Column(db.DateTime, default=datetime.utcnow) - - -class FeaturedImage(db.Model): - __tablename__ = 'featured_images' - id = db.Column(db.Integer, primary_key=True) - submission_image_id = db.Column(db.Integer, db.ForeignKey('submission_images.id'), nullable=False) - override_text = db.Column(db.String(255), nullable=True) - is_featured = db.Column(db.Boolean, default=True) diff --git a/plugins/search/models.py b/plugins/search/models.py index 1c9dbf1..7b18cbc 100644 --- a/plugins/search/models.py +++ b/plugins/search/models.py @@ -1,8 +1,12 @@ from app import db -class Tag(db.Model): - id = db.Column(db.Integer, primary_key=True) - name = db.Column(db.String(64), unique=True, nullable=False) +plant_tags = db.Table( + 'plant_tags', + db.Column('plant_id', db.Integer, db.ForeignKey('plants.id'), primary_key=True), + db.Column('tag_id', db.Integer, db.ForeignKey('tags.id'), primary_key=True) +) - def __repr__(self): - return f"" \ No newline at end of file +class Tag(db.Model): + __tablename__ = 'tags' + id = db.Column(db.Integer, primary_key=True) + name = db.Column(db.String(100), unique=True, nullable=False) diff --git a/plugins/submission/__init__.py b/plugins/submission/__init__.py index 0520727..587ff85 100644 --- a/plugins/submission/__init__.py +++ b/plugins/submission/__init__.py @@ -1,2 +1,5 @@ -def register(): - from . import routes +def register(app): + """Register submission routes & blueprint.""" + from .routes import bp as submissions_bp + app.register_blueprint(submissions_bp) + diff --git a/plugins/submission/models.py b/plugins/submission/models.py index 565eeaf..1f5ca13 100644 --- a/plugins/submission/models.py +++ b/plugins/submission/models.py @@ -1,17 +1,20 @@ from datetime import datetime from app import db + class Submission(db.Model): __tablename__ = 'submissions' id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) plant_id = db.Column(db.Integer, db.ForeignKey('plants.id'), nullable=True) + common_name = db.Column(db.String(120), nullable=False) scientific_name = db.Column(db.String(120)) price = db.Column(db.Float, nullable=False) source = db.Column(db.String(120)) timestamp = db.Column(db.DateTime, default=datetime.utcnow) + height = db.Column(db.Float) width = db.Column(db.Float) leaf_count = db.Column(db.Integer) @@ -19,6 +22,8 @@ class Submission(db.Model): container_size = db.Column(db.String(120)) health_status = db.Column(db.String(50)) notes = db.Column(db.Text) + + # Image references via SubmissionImage table images = db.relationship('SubmissionImage', backref='submission', lazy=True) @@ -29,21 +34,3 @@ class SubmissionImage(db.Model): submission_id = db.Column(db.Integer, db.ForeignKey('submissions.id'), nullable=False) file_path = db.Column(db.String(255), nullable=False) is_visible = db.Column(db.Boolean, default=True) - - -class ImageHeart(db.Model): - __tablename__ = 'image_hearts' - - id = db.Column(db.Integer, primary_key=True) - user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) - submission_image_id = db.Column(db.Integer, db.ForeignKey('submission_images.id'), nullable=False) - created_at = db.Column(db.DateTime, default=datetime.utcnow) - - -class FeaturedImage(db.Model): - __tablename__ = 'featured_images' - - id = db.Column(db.Integer, primary_key=True) - submission_image_id = db.Column(db.Integer, db.ForeignKey('submission_images.id'), nullable=False) - override_text = db.Column(db.String(255), nullable=True) - is_featured = db.Column(db.Boolean, default=True) diff --git a/plugins/submission/plugin.json b/plugins/submission/plugin.json index 77340b8..913d900 100644 --- a/plugins/submission/plugin.json +++ b/plugins/submission/plugin.json @@ -1,6 +1,5 @@ { "name": "submission", "version": "1.0.0", - "description": "Plugin to handle user-submitted plant data and images.", - "entry_point": "register" + "description": "Plugin to handle user-submitted plant data and images." }