This commit is contained in:
2025-05-26 16:30:40 -05:00
parent 6de9729329
commit eb111dde14
8 changed files with 90 additions and 22 deletions

BIN
files.zip Normal file

Binary file not shown.

View File

@ -1,15 +1,6 @@
from datetime import datetime
from app import db
class Plant(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(128), nullable=False)
type = db.Column(db.String(64))
notes = db.Column(db.Text)
is_active = db.Column(db.Boolean, default=True)
created_at = db.Column(db.DateTime, default=datetime.utcnow)
updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
class Submission(db.Model):
__tablename__ = 'submission'
@ -44,18 +35,6 @@ class SubmissionImage(db.Model):
file_path = db.Column(db.String(255), nullable=False)
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 Plant(db.Model):
__tablename__ = 'plants'
id = db.Column(db.Integer, primary_key=True)
@ -72,6 +51,19 @@ class Plant(db.Model):
foreign_keys='PlantLineage.child_plant_id')
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)

View File

@ -7,7 +7,7 @@ bp = Blueprint('plant', __name__, template_folder='templates')
@bp.route('/plants')
def index():
plants = Plant.query.order_by(Plant.created_at.desc()).all()
plants = Plant.query.order_by(Plant.date_added.desc()).all()
return render_template('plant/index.html', plants=plants)
@bp.route('/plants/<int:plant_id>')

View File

@ -0,0 +1,2 @@
def register():
from . import routes

View File

@ -0,0 +1,49 @@
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)
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)
images = db.relationship('SubmissionImage', backref='submission', lazy=True)
class SubmissionImage(db.Model):
__tablename__ = 'submission_images'
id = db.Column(db.Integer, primary_key=True)
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)

View File

@ -0,0 +1,6 @@
{
"name": "submission",
"version": "1.0.0",
"description": "Plugin to handle user-submitted plant data and images.",
"entry_point": "register"
}

View File

@ -0,0 +1,10 @@
from flask import Blueprint, render_template
from .models import Submission
from app import db
bp = Blueprint('submission', __name__, url_prefix='/submission')
@bp.route('/')
def index():
submissions = Submission.query.order_by(Submission.timestamp.desc()).all()
return render_template('submission/index.html', submissions=submissions)

View File

@ -0,0 +1,9 @@
{% extends "core_ui/base.html" %}
{% block content %}
<h2>Submissions</h2>
<ul>
{% for s in submissions %}
<li>{{ s.common_name }} ({{ s.scientific_name or 'N/A' }}) - ${{ s.price }}</li>
{% endfor %}
</ul>
{% endblock %}