more
This commit is contained in:
@ -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)
|
||||
|
@ -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>')
|
||||
|
2
plugins/submission/__init__.py
Normal file
2
plugins/submission/__init__.py
Normal file
@ -0,0 +1,2 @@
|
||||
def register():
|
||||
from . import routes
|
49
plugins/submission/models.py
Normal file
49
plugins/submission/models.py
Normal 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)
|
6
plugins/submission/plugin.json
Normal file
6
plugins/submission/plugin.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"name": "submission",
|
||||
"version": "1.0.0",
|
||||
"description": "Plugin to handle user-submitted plant data and images.",
|
||||
"entry_point": "register"
|
||||
}
|
10
plugins/submission/routes.py
Normal file
10
plugins/submission/routes.py
Normal 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)
|
9
plugins/submission/templates/submission/index.html
Normal file
9
plugins/submission/templates/submission/index.html
Normal 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 %}
|
Reference in New Issue
Block a user