From 96c634897bdcdab7e5794610b7030173afe68b63 Mon Sep 17 00:00:00 2001 From: Lilfade Date: Fri, 6 Jun 2025 22:02:44 -0500 Subject: [PATCH] lots of things --- docker-compose.yml | 3 +- migrations/versions/39f714eda2bf_auto.py | 28 +++ migrations/versions/408c432b5835_auto.py | 28 +++ migrations/versions/447ff559592b_auto.py | 36 ++++ migrations/versions/6420e024f896_auto.py | 28 +++ migrations/versions/64c1927562cc_auto.py | 44 ++++ migrations/versions/6539ef5f5419_auto.py | 28 +++ migrations/versions/6cb1c3054071_auto.py | 28 +++ migrations/versions/77087ff2442e_auto.py | 38 ++++ migrations/versions/7d232205181b_auto.py | 28 +++ migrations/versions/e34cff15a95e_auto.py | 70 +++++++ migrations/versions/f4987441cc85_auto.py | 28 +++ migrations/versions/fad6fe2b5e43_auto.py | 32 +++ migrations/versions/fb0243eaa7c3_auto.py | 38 ++++ .../templates/core_ui/_media_macros.html | 40 +++- plugins/growlog/models.py | 3 +- plugins/media/forms.py | 14 -- plugins/media/models.py | 36 ++-- plugins/media/routes.py | 99 ++++----- plugins/media/templates/media/upload.html | 12 -- plugins/media/utils.py | 25 +++ plugins/submission/forms.py | 50 +++++ plugins/submission/models.py | 41 +++- plugins/submission/routes.py | 192 ++++++++++++------ .../templates/submission/index.html | 9 - .../submission/templates/submission/list.html | 55 +++++ .../submission/templates/submission/new.html | 166 +++++++++++++++ .../submission/templates/submission/view.html | 101 +++++++++ requirements.txt | 2 +- .../06/5c86afeae316454b8f8ca73f8f3b9825.jpeg | Bin 0 -> 135792 bytes 30 files changed, 1120 insertions(+), 182 deletions(-) create mode 100644 migrations/versions/39f714eda2bf_auto.py create mode 100644 migrations/versions/408c432b5835_auto.py create mode 100644 migrations/versions/447ff559592b_auto.py create mode 100644 migrations/versions/6420e024f896_auto.py create mode 100644 migrations/versions/64c1927562cc_auto.py create mode 100644 migrations/versions/6539ef5f5419_auto.py create mode 100644 migrations/versions/6cb1c3054071_auto.py create mode 100644 migrations/versions/77087ff2442e_auto.py create mode 100644 migrations/versions/7d232205181b_auto.py create mode 100644 migrations/versions/e34cff15a95e_auto.py create mode 100644 migrations/versions/f4987441cc85_auto.py create mode 100644 migrations/versions/fad6fe2b5e43_auto.py create mode 100644 migrations/versions/fb0243eaa7c3_auto.py delete mode 100644 plugins/media/forms.py delete mode 100644 plugins/media/templates/media/upload.html create mode 100644 plugins/media/utils.py create mode 100644 plugins/submission/forms.py delete mode 100644 plugins/submission/templates/submission/index.html create mode 100644 plugins/submission/templates/submission/list.html create mode 100644 plugins/submission/templates/submission/new.html create mode 100644 plugins/submission/templates/submission/view.html create mode 100644 static/uploads/2025/06/06/5c86afeae316454b8f8ca73f8f3b9825.jpeg diff --git a/docker-compose.yml b/docker-compose.yml index b971469..79081c1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,6 +5,7 @@ services: - "5000:5000" volumes: - .:/app + - ./static/uploads:/app/static/uploads environment: - FLASK_APP=app - FLASK_ENV=development @@ -24,7 +25,6 @@ services: retries: 3 start_period: 30s - db: image: mysql:8 restart: unless-stopped @@ -43,7 +43,6 @@ services: timeout: 5s retries: 5 - adminer: image: adminer restart: always diff --git a/migrations/versions/39f714eda2bf_auto.py b/migrations/versions/39f714eda2bf_auto.py new file mode 100644 index 0000000..50a28b1 --- /dev/null +++ b/migrations/versions/39f714eda2bf_auto.py @@ -0,0 +1,28 @@ +"""auto + +Revision ID: 39f714eda2bf +Revises: 6420e024f896 +Create Date: 2025-06-06 09:50:29.954004 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '39f714eda2bf' +down_revision = '6420e024f896' +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/408c432b5835_auto.py b/migrations/versions/408c432b5835_auto.py new file mode 100644 index 0000000..03d9250 --- /dev/null +++ b/migrations/versions/408c432b5835_auto.py @@ -0,0 +1,28 @@ +"""auto + +Revision ID: 408c432b5835 +Revises: 77087ff2442e +Create Date: 2025-06-06 08:34:26.804782 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '408c432b5835' +down_revision = '77087ff2442e' +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/447ff559592b_auto.py b/migrations/versions/447ff559592b_auto.py new file mode 100644 index 0000000..f8416e2 --- /dev/null +++ b/migrations/versions/447ff559592b_auto.py @@ -0,0 +1,36 @@ +"""auto + +Revision ID: 447ff559592b +Revises: 408c432b5835 +Create Date: 2025-06-06 08:47:25.908940 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '447ff559592b' +down_revision = '408c432b5835' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('submissions', sa.Column('vendor_name', sa.String(length=255), nullable=True)) + op.add_column('submissions', sa.Column('rating', sa.Integer(), nullable=True)) + op.add_column('submissions', sa.Column('old_vendor', sa.String(length=255), nullable=True)) + op.add_column('submissions', sa.Column('new_vendor', sa.String(length=255), nullable=True)) + op.add_column('submissions', sa.Column('alias_reason', sa.Text(), nullable=True)) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column('submissions', 'alias_reason') + op.drop_column('submissions', 'new_vendor') + op.drop_column('submissions', 'old_vendor') + op.drop_column('submissions', 'rating') + op.drop_column('submissions', 'vendor_name') + # ### end Alembic commands ### diff --git a/migrations/versions/6420e024f896_auto.py b/migrations/versions/6420e024f896_auto.py new file mode 100644 index 0000000..707bf9d --- /dev/null +++ b/migrations/versions/6420e024f896_auto.py @@ -0,0 +1,28 @@ +"""auto + +Revision ID: 6420e024f896 +Revises: 7d232205181b +Create Date: 2025-06-06 09:40:37.498453 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '6420e024f896' +down_revision = '7d232205181b' +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/64c1927562cc_auto.py b/migrations/versions/64c1927562cc_auto.py new file mode 100644 index 0000000..398f009 --- /dev/null +++ b/migrations/versions/64c1927562cc_auto.py @@ -0,0 +1,44 @@ +"""auto + +Revision ID: 64c1927562cc +Revises: fb0243eaa7c3 +Create Date: 2025-06-06 07:54:00.147383 + +""" +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import mysql + +# revision identifiers, used by Alembic. +revision = '64c1927562cc' +down_revision = 'fb0243eaa7c3' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('media', sa.Column('plant_id', sa.Integer(), nullable=True)) + op.add_column('media', sa.Column('update_id', sa.Integer(), nullable=True)) + op.drop_constraint(op.f('media_ibfk_2'), 'media', type_='foreignkey') + op.drop_constraint(op.f('media_ibfk_3'), 'media', type_='foreignkey') + op.create_foreign_key(None, 'media', 'plant', ['plant_id'], ['id']) + op.create_foreign_key(None, 'media', 'plant_updates', ['update_id'], ['id']) + op.drop_column('media', 'uploader_id') + op.drop_column('media', 'submission_id') + op.drop_column('media', 'caption') + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('media', sa.Column('caption', mysql.VARCHAR(length=255), nullable=True)) + op.add_column('media', sa.Column('submission_id', mysql.INTEGER(), autoincrement=False, nullable=True)) + op.add_column('media', sa.Column('uploader_id', mysql.INTEGER(), autoincrement=False, nullable=False)) + op.drop_constraint(None, 'media', type_='foreignkey') + op.drop_constraint(None, 'media', type_='foreignkey') + op.create_foreign_key(op.f('media_ibfk_3'), 'media', 'submissions', ['submission_id'], ['id']) + op.create_foreign_key(op.f('media_ibfk_2'), 'media', 'users', ['uploader_id'], ['id']) + op.drop_column('media', 'update_id') + op.drop_column('media', 'plant_id') + # ### end Alembic commands ### diff --git a/migrations/versions/6539ef5f5419_auto.py b/migrations/versions/6539ef5f5419_auto.py new file mode 100644 index 0000000..c57539f --- /dev/null +++ b/migrations/versions/6539ef5f5419_auto.py @@ -0,0 +1,28 @@ +"""auto + +Revision ID: 6539ef5f5419 +Revises: 39f714eda2bf +Create Date: 2025-06-06 10:03:52.256341 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '6539ef5f5419' +down_revision = '39f714eda2bf' +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/6cb1c3054071_auto.py b/migrations/versions/6cb1c3054071_auto.py new file mode 100644 index 0000000..b3fc892 --- /dev/null +++ b/migrations/versions/6cb1c3054071_auto.py @@ -0,0 +1,28 @@ +"""auto + +Revision ID: 6cb1c3054071 +Revises: f4987441cc85 +Create Date: 2025-06-06 09:09:55.403015 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '6cb1c3054071' +down_revision = 'f4987441cc85' +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/77087ff2442e_auto.py b/migrations/versions/77087ff2442e_auto.py new file mode 100644 index 0000000..15b5028 --- /dev/null +++ b/migrations/versions/77087ff2442e_auto.py @@ -0,0 +1,38 @@ +"""auto + +Revision ID: 77087ff2442e +Revises: 64c1927562cc +Create Date: 2025-06-06 08:10:58.028201 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '77087ff2442e' +down_revision = '64c1927562cc' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('media', sa.Column('uploader_id', sa.Integer(), nullable=False)) + op.add_column('media', sa.Column('caption', sa.String(length=255), nullable=True)) + op.create_foreign_key(None, 'media', 'users', ['uploader_id'], ['id']) + op.add_column('submissions', sa.Column('submission_type', sa.String(length=50), nullable=False)) + op.add_column('submissions', sa.Column('price', sa.Float(), nullable=True)) + op.add_column('submissions', sa.Column('source', sa.String(length=255), nullable=True)) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column('submissions', 'source') + op.drop_column('submissions', 'price') + op.drop_column('submissions', 'submission_type') + op.drop_constraint(None, 'media', type_='foreignkey') + op.drop_column('media', 'caption') + op.drop_column('media', 'uploader_id') + # ### end Alembic commands ### diff --git a/migrations/versions/7d232205181b_auto.py b/migrations/versions/7d232205181b_auto.py new file mode 100644 index 0000000..28a3a0a --- /dev/null +++ b/migrations/versions/7d232205181b_auto.py @@ -0,0 +1,28 @@ +"""auto + +Revision ID: 7d232205181b +Revises: fad6fe2b5e43 +Create Date: 2025-06-06 09:38:39.786953 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '7d232205181b' +down_revision = 'fad6fe2b5e43' +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/e34cff15a95e_auto.py b/migrations/versions/e34cff15a95e_auto.py new file mode 100644 index 0000000..b329fdf --- /dev/null +++ b/migrations/versions/e34cff15a95e_auto.py @@ -0,0 +1,70 @@ +"""auto + +Revision ID: e34cff15a95e +Revises: 5c85ebc9451b +Create Date: 2025-06-06 07:34:33.699976 + +""" +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import mysql + +# revision identifiers, used by Alembic. +revision = 'e34cff15a95e' +down_revision = '5c85ebc9451b' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('featured_images', sa.Column('media_id', sa.Integer(), nullable=False)) + op.drop_constraint(op.f('featured_images_ibfk_1'), 'featured_images', type_='foreignkey') + op.create_foreign_key(None, 'featured_images', 'media', ['media_id'], ['id']) + op.drop_column('featured_images', 'submission_image_id') + op.add_column('image_hearts', sa.Column('media_id', sa.Integer(), nullable=False)) + op.drop_constraint(op.f('image_hearts_ibfk_1'), 'image_hearts', type_='foreignkey') + op.create_foreign_key(None, 'image_hearts', 'media', ['media_id'], ['id']) + op.drop_column('image_hearts', 'submission_image_id') + op.add_column('media', sa.Column('uploader_id', sa.Integer(), nullable=False)) + op.add_column('media', sa.Column('submission_id', sa.Integer(), nullable=True)) + op.drop_constraint(op.f('media_ibfk_2'), 'media', type_='foreignkey') + op.drop_constraint(op.f('media_ibfk_3'), 'media', type_='foreignkey') + op.create_foreign_key(None, 'media', 'users', ['uploader_id'], ['id']) + op.create_foreign_key(None, 'media', 'submissions', ['submission_id'], ['id']) + op.drop_column('media', 'update_id') + op.drop_column('media', 'plant_id') + op.add_column('submissions', sa.Column('submission_type', sa.String(length=50), nullable=False)) + op.add_column('submissions', sa.Column('price', sa.Float(), nullable=True)) + op.add_column('submissions', sa.Column('source', sa.String(length=255), nullable=True)) + op.alter_column('submissions', 'plant_name', + existing_type=mysql.VARCHAR(length=100), + nullable=True) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column('submissions', 'plant_name', + existing_type=mysql.VARCHAR(length=100), + nullable=False) + op.drop_column('submissions', 'source') + op.drop_column('submissions', 'price') + op.drop_column('submissions', 'submission_type') + op.add_column('media', sa.Column('plant_id', mysql.INTEGER(), autoincrement=False, nullable=True)) + op.add_column('media', sa.Column('update_id', mysql.INTEGER(), autoincrement=False, nullable=True)) + op.drop_constraint(None, 'media', type_='foreignkey') + op.drop_constraint(None, 'media', type_='foreignkey') + op.create_foreign_key(op.f('media_ibfk_3'), 'media', 'plant_updates', ['update_id'], ['id']) + op.create_foreign_key(op.f('media_ibfk_2'), 'media', 'plant', ['plant_id'], ['id']) + op.drop_column('media', 'submission_id') + op.drop_column('media', 'uploader_id') + op.add_column('image_hearts', sa.Column('submission_image_id', mysql.INTEGER(), autoincrement=False, nullable=False)) + op.drop_constraint(None, 'image_hearts', type_='foreignkey') + op.create_foreign_key(op.f('image_hearts_ibfk_1'), 'image_hearts', 'submission_images', ['submission_image_id'], ['id']) + op.drop_column('image_hearts', 'media_id') + op.add_column('featured_images', sa.Column('submission_image_id', mysql.INTEGER(), autoincrement=False, nullable=False)) + op.drop_constraint(None, 'featured_images', type_='foreignkey') + op.create_foreign_key(op.f('featured_images_ibfk_1'), 'featured_images', 'submission_images', ['submission_image_id'], ['id']) + op.drop_column('featured_images', 'media_id') + # ### end Alembic commands ### diff --git a/migrations/versions/f4987441cc85_auto.py b/migrations/versions/f4987441cc85_auto.py new file mode 100644 index 0000000..b82159c --- /dev/null +++ b/migrations/versions/f4987441cc85_auto.py @@ -0,0 +1,28 @@ +"""auto + +Revision ID: f4987441cc85 +Revises: 447ff559592b +Create Date: 2025-06-06 08:59:55.024371 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'f4987441cc85' +down_revision = '447ff559592b' +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/fad6fe2b5e43_auto.py b/migrations/versions/fad6fe2b5e43_auto.py new file mode 100644 index 0000000..01bac4d --- /dev/null +++ b/migrations/versions/fad6fe2b5e43_auto.py @@ -0,0 +1,32 @@ +"""auto + +Revision ID: fad6fe2b5e43 +Revises: 6cb1c3054071 +Create Date: 2025-06-06 09:24:38.663461 + +""" +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import mysql + +# revision identifiers, used by Alembic. +revision = 'fad6fe2b5e43' +down_revision = '6cb1c3054071' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column('submissions', 'plant_name', + existing_type=mysql.VARCHAR(length=100), + nullable=True) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column('submissions', 'plant_name', + existing_type=mysql.VARCHAR(length=100), + nullable=False) + # ### end Alembic commands ### diff --git a/migrations/versions/fb0243eaa7c3_auto.py b/migrations/versions/fb0243eaa7c3_auto.py new file mode 100644 index 0000000..5afee5a --- /dev/null +++ b/migrations/versions/fb0243eaa7c3_auto.py @@ -0,0 +1,38 @@ +"""auto + +Revision ID: fb0243eaa7c3 +Revises: e34cff15a95e +Create Date: 2025-06-06 07:43:42.387700 + +""" +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import mysql + +# revision identifiers, used by Alembic. +revision = 'fb0243eaa7c3' +down_revision = 'e34cff15a95e' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column('submissions', 'plant_name', + existing_type=mysql.VARCHAR(length=100), + nullable=False) + op.drop_column('submissions', 'price') + op.drop_column('submissions', 'source') + op.drop_column('submissions', 'submission_type') + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('submissions', sa.Column('submission_type', mysql.VARCHAR(length=50), nullable=False)) + op.add_column('submissions', sa.Column('source', mysql.VARCHAR(length=255), nullable=True)) + op.add_column('submissions', sa.Column('price', mysql.FLOAT(), nullable=True)) + op.alter_column('submissions', 'plant_name', + existing_type=mysql.VARCHAR(length=100), + nullable=True) + # ### end Alembic commands ### diff --git a/plugins/core_ui/templates/core_ui/_media_macros.html b/plugins/core_ui/templates/core_ui/_media_macros.html index 774d214..051e6eb 100644 --- a/plugins/core_ui/templates/core_ui/_media_macros.html +++ b/plugins/core_ui/templates/core_ui/_media_macros.html @@ -1,14 +1,34 @@ -{% macro render_media_list(media_list, thumb_width=150) -%} +{% macro render_media_list(media_list, thumb_width=150, current_user=None) -%} {% if media_list %} - + {% endif %} -{%- endmacro %} \ No newline at end of file +{%- endmacro %} diff --git a/plugins/growlog/models.py b/plugins/growlog/models.py index d5ee187..6faebd0 100644 --- a/plugins/growlog/models.py +++ b/plugins/growlog/models.py @@ -25,5 +25,6 @@ class PlantUpdate(db.Model): 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) + # Link to Media.update_id (must match the FK defined there) + media_items = db.relationship('Media', back_populates='update', lazy=True) diff --git a/plugins/media/forms.py b/plugins/media/forms.py deleted file mode 100644 index 08c5d5f..0000000 --- a/plugins/media/forms.py +++ /dev/null @@ -1,14 +0,0 @@ -from flask_wtf import FlaskForm -from wtforms import StringField, SelectField, SubmitField, IntegerField -from flask_wtf.file import FileField, FileAllowed, FileRequired -from wtforms.validators import DataRequired - -class MediaUploadForm(FlaskForm): - image = FileField('Image', validators=[ - FileRequired(), - FileAllowed(['jpg', 'jpeg', 'png', 'gif'], 'Images only!') - ]) - caption = StringField('Caption') - plant_id = IntegerField('Plant ID') - growlog_id = IntegerField('GrowLog ID') - submit = SubmitField('Upload') \ No newline at end of file diff --git a/plugins/media/models.py b/plugins/media/models.py index 8662ba4..bbe5b93 100644 --- a/plugins/media/models.py +++ b/plugins/media/models.py @@ -1,40 +1,42 @@ +# plugins/media/models.py + from app import db from datetime import datetime -from plugins.plant.models import Plant class Media(db.Model): - __tablename__ = 'media' - __table_args__ = {'extend_existing': True} + __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('plant.id'), nullable=True) - growlog_id = db.Column(db.Integer, db.ForeignKey('grow_logs.id'), nullable=True) - update_id = db.Column(db.Integer, db.ForeignKey('plant_updates.id'), nullable=True) - + uploader_id = db.Column(db.Integer, db.ForeignKey("users.id"), nullable=False) caption = db.Column(db.String(255), nullable=True) - # Relationship to PlantUpdate - update = db.relationship('PlantUpdate', back_populates='media_items', lazy=True) + plant_id = db.Column(db.Integer, db.ForeignKey("plant.id"), nullable=True) + growlog_id = db.Column(db.Integer, db.ForeignKey("grow_logs.id"), nullable=True) + update_id = db.Column(db.Integer, db.ForeignKey("plant_updates.id"), nullable=True) + update = db.relationship("PlantUpdate", back_populates="media_items") class ImageHeart(db.Model): - __tablename__ = 'image_hearts' - __table_args__ = {'extend_existing': True} + __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) + user_id = db.Column(db.Integer, db.ForeignKey("users.id"), nullable=False) + media_id = db.Column(db.Integer, db.ForeignKey("media.id"), nullable=False) created_at = db.Column(db.DateTime, default=datetime.utcnow) + media = db.relationship("Media", backref="hearts") class FeaturedImage(db.Model): - __tablename__ = 'featured_images' - __table_args__ = {'extend_existing': True} + __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) + media_id = db.Column(db.Integer, db.ForeignKey("media.id"), nullable=False) override_text = db.Column(db.String(255), nullable=True) is_featured = db.Column(db.Boolean, default=True) + + media = db.relationship("Media", backref="featured_entries") diff --git a/plugins/media/routes.py b/plugins/media/routes.py index 6f9a40b..02e95ff 100644 --- a/plugins/media/routes.py +++ b/plugins/media/routes.py @@ -1,77 +1,84 @@ -from flask import Blueprint, render_template, request, redirect, url_for, flash, jsonify, send_from_directory, current_app +# plugins/media/routes.py + +from flask import ( + Blueprint, + redirect, + url_for, + request, + flash, + send_from_directory, + current_app, + jsonify +) from flask_login import current_user, login_required -from werkzeug.utils import secure_filename import os from app import db from .models import Media, ImageHeart, FeaturedImage -from plugins.plant.models import Plant bp = Blueprint("media", __name__, template_folder="templates") -UPLOAD_FOLDER = "static/uploads" +# We store only "YYYY/MM/DD/.ext" in Media.file_url. +# All files live under "/app/static/uploads/YYYY/MM/DD/.ext" in the container. +BASE_UPLOAD_FOLDER = "static/uploads" ALLOWED_EXTENSIONS = {"png", "jpg", "jpeg", "gif"} def allowed_file(filename): - return "." in filename and filename.rsplit(".", 1)[1].lower() in ALLOWED_EXTENSIONS + return ( + "." in filename + and filename.rsplit(".", 1)[1].lower() in ALLOWED_EXTENSIONS + ) -@bp.route("/media/upload", methods=["GET", "POST"]) -@login_required -def upload_media(): - if request.method == "POST": - file = request.files.get("image") - caption = request.form.get("caption") - plant_id = request.form.get("plant_id") +@bp.route("/media/", methods=["GET"]) +def media_index(): + """ + /media/ is not used stand‐alone—redirect back to homepage. + """ + return redirect(url_for("core_ui.home")) - if file and allowed_file(file.filename): - filename = secure_filename(file.filename) - save_path = os.path.join(current_app.root_path, UPLOAD_FOLDER) - os.makedirs(save_path, exist_ok=True) - file.save(os.path.join(save_path, filename)) - - media = Media(file_url=f"{UPLOAD_FOLDER}/{filename}", caption=caption, plant_id=plant_id) - db.session.add(media) - db.session.commit() - - flash("Image uploaded successfully.", "success") - return redirect(url_for("media.upload_media")) - else: - flash("Invalid file or no file uploaded.", "danger") - - return render_template("media/upload.html") - -@bp.route("/media/files/") +@bp.route("/media/files/", methods=["GET"]) def media_file(filename): - return send_from_directory(os.path.join(current_app.root_path, "static/uploads"), filename) + """ + Serve files from "/app/static/uploads/". + Example: GET /media/files/2025/06/07/abcdef1234abcd.jpg + """ + # Use os.getcwd() to guarantee "/app/static/uploads" (not "/app/app/static/uploads") + full_dir = os.path.join(os.getcwd(), BASE_UPLOAD_FOLDER) + return send_from_directory(full_dir, filename) -@bp.route("/media/heart/", methods=["POST"]) +@bp.route("/media/heart/", methods=["POST"]) @login_required -def toggle_heart(image_id): - existing = ImageHeart.query.filter_by(user_id=current_user.id, submission_image_id=image_id).first() +def toggle_heart(media_id): + """ + Add/remove a "heart" from an image. + """ + existing = ImageHeart.query.filter_by( + user_id=current_user.id, media_id=media_id + ).first() + if existing: db.session.delete(existing) db.session.commit() return jsonify({"status": "unhearted"}) else: - heart = ImageHeart(user_id=current_user.id, submission_image_id=image_id) + heart = ImageHeart(user_id=current_user.id, media_id=media_id) db.session.add(heart) db.session.commit() return jsonify({"status": "hearted"}) -@bp.route("/media/feature/", methods=["POST"]) +@bp.route("/media/feature/", methods=["POST"]) @login_required -def set_featured_image(image_id): - image = Media.query.get_or_404(image_id) - plant = image.plant - if not plant: - flash("This image is not linked to a plant.", "danger") - return redirect(request.referrer or url_for("core_ui.home")) - - if current_user.id != plant.owner_id and current_user.role != "admin": +def set_featured_image(media_id): + """ + Toggle featured status on a media item. Only the uploader or an admin may do so. + """ + media = Media.query.get_or_404(media_id) + if (current_user.id != media.uploader_id) and (current_user.role != "admin"): flash("Not authorized to set featured image.", "danger") return redirect(request.referrer or url_for("core_ui.home")) - FeaturedImage.query.filter_by(submission_image_id=image_id).delete() - featured = FeaturedImage(submission_image_id=image_id, is_featured=True) + # Remove any existing featured entries for this media + FeaturedImage.query.filter_by(media_id=media_id).delete() + featured = FeaturedImage(media_id=media_id, is_featured=True) db.session.add(featured) db.session.commit() flash("Image set as featured.", "success") diff --git a/plugins/media/templates/media/upload.html b/plugins/media/templates/media/upload.html deleted file mode 100644 index 39e56a7..0000000 --- a/plugins/media/templates/media/upload.html +++ /dev/null @@ -1,12 +0,0 @@ -{% extends 'core_ui/base.html' %} -{% block content %} -

Upload Media

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

{{ form.image.label }}
{{ form.image() }}

-

{{ form.caption.label }}
{{ form.caption(size=40) }}

-

{{ form.plant_id.label }}
{{ form.plant_id() }}

-

{{ form.growlog_id.label }}
{{ form.growlog_id() }}

-

{{ form.submit() }}

-
-{% endblock %} \ No newline at end of file diff --git a/plugins/media/utils.py b/plugins/media/utils.py new file mode 100644 index 0000000..4611e34 --- /dev/null +++ b/plugins/media/utils.py @@ -0,0 +1,25 @@ +# plugins/media/utils.py + +import os +import uuid +from PIL import Image + +def generate_random_filename(original_filename): + """ + Returns a random filename preserving the original extension. + e.g. “abcd1234efgh.jpg” for “myphoto.jpg”. + """ + ext = os.path.splitext(original_filename)[1].lower() # includes dot, e.g. ".jpg" + random_name = uuid.uuid4().hex # 32‐char hex string + return f"{random_name}{ext}" + +def strip_metadata_and_save(source_file, destination_path): + """ + Opens an image with Pillow, strips EXIF (metadata), and saves it cleanly. + Supports common formats (JPEG, PNG). + """ + with Image.open(source_file) as img: + data = list(img.getdata()) + clean_image = Image.new(img.mode, img.size) + clean_image.putdata(data) + clean_image.save(destination_path) diff --git a/plugins/submission/forms.py b/plugins/submission/forms.py new file mode 100644 index 0000000..42bbf6d --- /dev/null +++ b/plugins/submission/forms.py @@ -0,0 +1,50 @@ +# plugins/submission/forms.py + +from flask_wtf import FlaskForm +from wtforms import ( + StringField, + FloatField, + SelectField, + IntegerField, + TextAreaField, + MultipleFileField, + SubmitField +) +from wtforms.validators import Optional, NumberRange, Length, DataRequired + +class SubmissionForm(FlaskForm): + submission_type = SelectField( + "Submission Type", + choices=[ + ("market_price", "Market Price"), + ("name_correction", "Name Correction"), + ("new_plant", "New Plant Suggestion"), + ("mutation", "Mutation Discovery"), + ("vendor_rating", "Vendor Rating/Review"), + ("vendor_alias", "Vendor Alias Submission"), + ], + validators=[DataRequired()] + ) + + # Make plant_name Optional; route logic enforces when necessary + plant_name = StringField("Common Name", validators=[Optional(), Length(max=100)]) + scientific_name = StringField("Scientific Name", validators=[Optional(), Length(max=120)]) + notes = TextAreaField("Notes", validators=[Optional()]) + + # Market Price fields + price = FloatField("Price", validators=[Optional()]) + source = StringField("Source/Vendor (e.g. Etsy, eBay)", validators=[Optional(), Length(max=255)]) + + # Vendor Rating / Review fields + vendor_name = StringField("Vendor Name", validators=[Optional(), Length(max=255)]) + rating = IntegerField("Rating (1–5)", validators=[Optional(), NumberRange(min=1, max=5)]) + + # Vendor Alias Submission fields + old_vendor = StringField("Existing Vendor Name", validators=[Optional(), Length(max=255)]) + new_vendor = StringField("New Vendor Name (Alias)", validators=[Optional(), Length(max=255)]) + alias_reason = TextAreaField("Reason for Alias", validators=[Optional()]) + + # Images (max 10) + images = MultipleFileField("Upload Images (max 10)", validators=[Optional()]) + + submit = SubmitField("Submit") diff --git a/plugins/submission/models.py b/plugins/submission/models.py index 4f54289..0beea2a 100644 --- a/plugins/submission/models.py +++ b/plugins/submission/models.py @@ -1,7 +1,7 @@ +# plugins/submission/models.py + from datetime import datetime from app import db -from plugins.plant.models import Plant -from plugins.auth.models import User class Submission(db.Model): __tablename__ = "submissions" @@ -10,21 +10,48 @@ class Submission(db.Model): id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey("users.id"), nullable=False) submitted_at = db.Column(db.DateTime, default=datetime.utcnow) - plant_name = db.Column(db.String(100), nullable=False) + + # Core fields + plant_name = db.Column(db.String(100), nullable=True) # now nullable scientific_name = db.Column(db.String(120), nullable=True) notes = db.Column(db.Text, nullable=True) + + submission_type = db.Column(db.String(50), nullable=False) + + # Market price fields + price = db.Column(db.Float, nullable=True) + source = db.Column(db.String(255), nullable=True) + + # Vendor fields + vendor_name = db.Column(db.String(255), nullable=True) + rating = db.Column(db.Integer, nullable=True) + + # Alias fields + old_vendor = db.Column(db.String(255), nullable=True) + new_vendor = db.Column(db.String(255), nullable=True) + alias_reason = db.Column(db.Text, nullable=True) + approved = db.Column(db.Boolean, default=None) approved_at = db.Column(db.DateTime, nullable=True) reviewed_by = db.Column(db.Integer, db.ForeignKey("users.id"), nullable=True) - # Explicit bidirectional relationships - submitter = db.relationship("User", foreign_keys=[user_id], back_populates="submitted_submissions") - reviewer = db.relationship("User", foreign_keys=[reviewed_by], back_populates="reviewed_submissions") + # Relationships + submitter = db.relationship( + "User", + foreign_keys=[user_id], + back_populates="submitted_submissions", + lazy=True + ) + reviewer = db.relationship( + "User", + foreign_keys=[reviewed_by], + back_populates="reviewed_submissions", + lazy=True + ) images = db.relationship("SubmissionImage", backref="submission", lazy=True) - class SubmissionImage(db.Model): __tablename__ = "submission_images" __table_args__ = {"extend_existing": True} diff --git a/plugins/submission/routes.py b/plugins/submission/routes.py index 566a629..3b1dca8 100644 --- a/plugins/submission/routes.py +++ b/plugins/submission/routes.py @@ -1,78 +1,144 @@ -from flask import Blueprint, render_template, request, redirect, url_for, flash, jsonify, send_from_directory, current_app -from flask_login import current_user, login_required -from werkzeug.utils import secure_filename -import os +# plugins/submission/routes.py + +from flask import ( + Blueprint, + render_template, + request, + redirect, + url_for, + flash, + jsonify +) +from flask_login import login_required, current_user from app import db -from .models import SubmissionImage, ImageHeart, FeaturedImage -from plugins.plant.models import Plant +from .models import Submission, SubmissionImage +from .forms import SubmissionForm +from datetime import datetime +import os +from werkzeug.utils import secure_filename +from plugins.media.utils import generate_random_filename, strip_metadata_and_save -bp = Blueprint("submission", __name__, template_folder="templates") +bp = Blueprint("submission", __name__, template_folder="templates", url_prefix="/submission") -UPLOAD_FOLDER = "static/uploads" +# We store only "YYYY/MM/DD/.ext" in SubmissionImage.file_url. +# All files live under "/app/static/uploads/YYYY/MM/DD/.ext" in the container. +BASE_UPLOAD_FOLDER = "static/uploads" ALLOWED_EXTENSIONS = {"png", "jpg", "jpeg", "gif"} def allowed_file(filename): - return "." in filename and filename.rsplit(".", 1)[1].lower() in ALLOWED_EXTENSIONS + return ( + "." in filename + and filename.rsplit(".", 1)[1].lower() in ALLOWED_EXTENSIONS + ) -@bp.route("/submissions/upload", methods=["GET", "POST"]) +@bp.route("/", methods=["GET"]) @login_required -def upload_submissions(): - if request.method == "POST": - file = request.files.get("image") - caption = request.form.get("caption") - plant_id = request.form.get("plant_id") +def submission_index(): + return redirect(url_for("submission.new_submission")) - if file and allowed_file(file.filename): - filename = secure_filename(file.filename) - save_path = os.path.join(current_app.root_path, UPLOAD_FOLDER) - os.makedirs(save_path, exist_ok=True) - file.save(os.path.join(save_path, filename)) - - submissions = SubmissionImage(file_url=f"{UPLOAD_FOLDER}/{filename}", caption=caption, plant_id=plant_id) - db.session.add(submissions) - db.session.commit() - - flash("Image uploaded successfully.", "success") - return redirect(url_for("submissions.upload_submissions")) - else: - flash("Invalid file or no file uploaded.", "danger") - - return render_template("submissions/upload.html") - -@bp.route("/submissions/files/") -def submissions_file(filename): - return send_from_directory(os.path.join(current_app.root_path, "static/uploads"), filename) - -@bp.route("/submissions/heart/", methods=["POST"]) +@bp.route("/new", methods=["GET", "POST"]) +@bp.route("/new/", methods=["GET", "POST"]) @login_required -def toggle_heart(image_id): - existing = ImageHeart.query.filter_by(user_id=current_user.id, submission_image_id=image_id).first() - if existing: - db.session.delete(existing) +def new_submission(): + form = SubmissionForm() + if form.validate_on_submit(): + plant_types = {"market_price", "name_correction", "new_plant", "mutation"} + t = form.submission_type.data + + # Only require plant_name if the type is plant‐related + if t in plant_types and not form.plant_name.data.strip(): + flash("Common Name is required for this submission type.", "danger") + return render_template("submission/new.html", form=form) + + submission = Submission( + user_id=current_user.id, + submitted_at=datetime.utcnow(), + submission_type=t, + plant_name=form.plant_name.data, + scientific_name=form.scientific_name.data, + notes=form.notes.data, + price=form.price.data if form.price.data else None, + source=form.source.data, + vendor_name=form.vendor_name.data, + rating=form.rating.data, + old_vendor=form.old_vendor.data, + new_vendor=form.new_vendor.data, + alias_reason=form.alias_reason.data, + approved=None + ) + db.session.add(submission) + db.session.flush() + + # date subfolder: "YYYY/MM/DD" + today = datetime.utcnow().strftime("%Y/%m/%d") + + # Write into "/app/static/uploads/YYYY/MM/DD", not "/app/app/static/uploads..." + save_dir = os.path.join(os.getcwd(), BASE_UPLOAD_FOLDER, today) + os.makedirs(save_dir, exist_ok=True) + + files = request.files.getlist("images") + for f in files: + if f and allowed_file(f.filename): + orig_name = secure_filename(f.filename) + rand_name = generate_random_filename(orig_name) + + # Temporarily save under "/app/temp_.ext" + temp_path = os.path.join(os.getcwd(), "temp_" + rand_name) + f.save(temp_path) + + final_path = os.path.join(save_dir, rand_name) + strip_metadata_and_save(temp_path, final_path) + os.remove(temp_path) + + # Store only "YYYY/MM/DD/.ext" + rel_url = f"{today}/{rand_name}" + + img = SubmissionImage( + submission_id=submission.id, + file_url=rel_url, + uploaded_at=datetime.utcnow() + ) + db.session.add(img) + db.session.commit() - return jsonify({"status": "unhearted"}) - else: - heart = ImageHeart(user_id=current_user.id, submission_image_id=image_id) - db.session.add(heart) - db.session.commit() - return jsonify({"status": "hearted"}) + flash("Submission received. Thank you!", "success") + return redirect(url_for("submission.new_submission")) -@bp.route("/submissions/feature/", methods=["POST"]) + return render_template("submission/new.html", form=form) + +@bp.route("/list", methods=["GET"]) +@bp.route("/list/", methods=["GET"]) @login_required -def set_featured_image(image_id): - image = SubmissionImage.query.get_or_404(image_id) - plant = image.plant - if not plant: - flash("This image is not linked to a plant.", "danger") - return redirect(request.referrer or url_for("core_ui.home")) +def list_submissions(): + selected_type = request.args.get("type", None) + query = Submission.query.filter_by(user_id=current_user.id) + if selected_type: + query = query.filter_by(submission_type=selected_type) + subs = query.order_by(Submission.submitted_at.desc()).all() - if current_user.id != plant.owner_id and current_user.role != "admin": - flash("Not authorized to set featured image.", "danger") - return redirect(request.referrer or url_for("core_ui.home")) + all_types = [ + ("", "All"), + ("market_price", "Market Price"), + ("name_correction", "Name Correction"), + ("new_plant", "New Plant Suggestion"), + ("mutation", "Mutation Discovery"), + ("vendor_rating", "Vendor Rating/Review"), + ("vendor_alias", "Vendor Alias Submission"), + ] + return render_template( + "submission/list.html", + submissions=subs, + selected_type=selected_type, + all_types=all_types + ) - FeaturedImage.query.filter_by(submission_image_id=image_id).delete() - featured = FeaturedImage(submission_image_id=image_id, is_featured=True) - db.session.add(featured) - db.session.commit() - flash("Image set as featured.", "success") - return redirect(request.referrer or url_for("core_ui.home")) \ No newline at end of file +@bp.route("/view/", methods=["GET"]) +@bp.route("/view//", methods=["GET"]) +@login_required +def view_submission(submission_id): + sub = Submission.query.get_or_404(submission_id) + if sub.user_id != current_user.id and current_user.role != "admin": + flash("Not authorized to view this submission.", "danger") + return redirect(url_for("submission.list_submissions")) + images = SubmissionImage.query.filter_by(submission_id=sub.id).all() + return render_template("submission/view.html", submission=sub, images=images) diff --git a/plugins/submission/templates/submission/index.html b/plugins/submission/templates/submission/index.html deleted file mode 100644 index 15c2563..0000000 --- a/plugins/submission/templates/submission/index.html +++ /dev/null @@ -1,9 +0,0 @@ -{% extends "core_ui/base.html" %} -{% block content %} -

Submissions

-
    - {% for s in submissions %} -
  • {{ s.common_name }} ({{ s.scientific_name or 'N/A' }}) - ${{ s.price }}
  • - {% endfor %} -
-{% endblock %} diff --git a/plugins/submission/templates/submission/list.html b/plugins/submission/templates/submission/list.html new file mode 100644 index 0000000..41d83e1 --- /dev/null +++ b/plugins/submission/templates/submission/list.html @@ -0,0 +1,55 @@ +{% extends 'core_ui/base.html' %} +{% block content %} +
+

Your Submissions

+ + +
+
+ +
+
+ +
+
+ +
+
+ + {% if submissions %} +
    + {% for sub in submissions %} +
  • +
    + {{ sub.submission_type.replace('_', ' ').title() }} + — {{ sub.plant_name or '--' }} + {% if sub.submission_type == 'market_price' and sub.price is not none %} + · ${{ '%.2f' % sub.price }} + {% elif sub.submission_type == 'vendor_rating' and sub.vendor_name %} + · Rated “{{ sub.vendor_name }}” ({{ sub.rating }}/5) + {% elif sub.submission_type == 'vendor_alias' and sub.old_vendor %} + · Alias: “{{ sub.old_vendor }}” → “{{ sub.new_vendor }}” + {% endif %} +
    + Submitted {{ sub.submitted_at.strftime('%Y-%m-%d %H:%M') }} +
    + View +
  • + {% endfor %} +
+ {% else %} +

You have no submissions that match this filter.

+ {% endif %} + + +
+{% endblock %} diff --git a/plugins/submission/templates/submission/new.html b/plugins/submission/templates/submission/new.html new file mode 100644 index 0000000..9c2cbb8 --- /dev/null +++ b/plugins/submission/templates/submission/new.html @@ -0,0 +1,166 @@ +{% extends 'core_ui/base.html' %} +{% block content %} +
+

New Submission

+
+ {{ form.hidden_tag() }} + + +
+ {{ form.submission_type.label(class="form-label") }} + {{ form.submission_type(class="form-select", id="submission_type") }} +
+ + +
+ {{ form.plant_name.label(class="form-label") }} + {{ form.plant_name(class="form-control") }} +
Common name of the plant (required for plant‐related submissions).
+
+ +
+ {{ form.scientific_name.label(class="form-label") }} + {{ form.scientific_name(class="form-control") }} +
Scientific name (optional for plant‐related submissions).
+
+ + +
+ {{ form.price.label(class="form-label") }} + {{ form.price(class="form-control") }} +
Only for “Market Price” submissions.
+
+
+ {{ form.source.label(class="form-label") }} + {{ form.source(class="form-control") }} +
Source/vendor (for market price).
+
+ + + + +
+

+ For new plant suggestions, simply fill in common/scientific name and optional notes/images. +

+
+ + +
+

+ For mutation discovery, fill in plant details and upload mutation images. +

+
+ + +
+ {{ form.vendor_name.label(class="form-label") }} + {{ form.vendor_name(class="form-control") }} +
Vendor name to rate/review (e.g., “Etsy Seller X”).
+
+
+ {{ form.rating.label(class="form-label") }} + {{ form.rating(class="form-select") }} +
1 = Poor, 5 = Excellent.
+
+ + +
+ {{ form.old_vendor.label(class="form-label") }} + {{ form.old_vendor(class="form-control") }} +
Existing vendor name (to alias).
+
+
+ {{ form.new_vendor.label(class="form-label") }} + {{ form.new_vendor(class="form-control") }} +
New alias name for vendor.
+
+
+ {{ form.alias_reason.label(class="form-label") }} + {{ form.alias_reason(class="form-control", rows=3) }} +
Why this alias is needed (e.g., vendor changed name).
+
+ + +
+ {{ form.notes.label(class="form-label") }} + {{ form.notes(class="form-control", rows=3) }} +
Additional notes or context.
+
+
+ {{ form.images.label(class="form-label") }} + {{ form.images(class="form-control", multiple=True) }} +
Upload up to 10 images relevant to your submission.
+
+ + +
+
+ + +{% endblock %} diff --git a/plugins/submission/templates/submission/view.html b/plugins/submission/templates/submission/view.html new file mode 100644 index 0000000..395dec3 --- /dev/null +++ b/plugins/submission/templates/submission/view.html @@ -0,0 +1,101 @@ +{% extends 'core_ui/base.html' %} +{% block content %} +
+

Submission Details

+
+
Type:
+
+ {{ submission.submission_type.replace('_', ' ').title() }} +
+ +
Common Name:
+
+ {% if submission.plant_name %} + {{ submission.plant_name }} + {% else %} + — + {% endif %} +
+ +
Scientific Name:
+
+ {% if submission.scientific_name %} + {{ submission.scientific_name }} + {% else %} + — + {% endif %} +
+ + {% if submission.submission_type == 'market_price' %} +
Price:
+
${{ '%.2f' % submission.price }}
+
Source:
+
{{ submission.source or '—' }}
+ {% endif %} + + {% if submission.submission_type == 'vendor_rating' %} +
Vendor Name:
+
{{ submission.vendor_name }}
+
Rating:
+
{{ submission.rating }} / 5
+ {% endif %} + + {% if submission.submission_type == 'vendor_alias' %} +
Old Vendor:
+
{{ submission.old_vendor }}
+
New Vendor Alias:
+
{{ submission.new_vendor }}
+
Alias Reason:
+
{{ submission.alias_reason or '—' }}
+ {% endif %} + +
Notes:
+
{{ submission.notes or '—' }}
+ +
Submitted At:
+
+ {{ submission.submitted_at.strftime('%Y-%m-%d %H:%M') }} +
+ +
Status:
+
+ {% if submission.approved is none %} + Pending + {% elif submission.approved %} + Approved + {% else %} + Rejected + {% endif %} +
+
+ +

Images

+
+ {% if images %} + {% for img in images %} + {# img.file_url == "YYYY/MM/DD/.ext" #} +
+
+ + Submission Image + +
+

+ {{ img.uploaded_at.strftime('%Y-%m-%d') }} +

+
+
+
+ {% endfor %} + {% else %} +

No images uploaded.

+ {% endif %} +
+ + +
+{% endblock %} diff --git a/requirements.txt b/requirements.txt index 8cf5ae6..9ac49e1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,5 +8,5 @@ Werkzeug>=2.3.0 pymysql python-dotenv cryptography - +Pillow neo4j>=5.18.0 diff --git a/static/uploads/2025/06/06/5c86afeae316454b8f8ca73f8f3b9825.jpeg b/static/uploads/2025/06/06/5c86afeae316454b8f8ca73f8f3b9825.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..e2b703becd782501e616804171e8efb2b5b4ad4e GIT binary patch literal 135792 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

s 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%0AV!)Nr(HEpW?01zlZ`Y?R5?@0 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]`* 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