more crap

This commit is contained in:
2025-05-26 22:25:39 -05:00
parent eb111dde14
commit 7bff7f0bd3
18 changed files with 265 additions and 225 deletions

View File

@ -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)
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)

View File

@ -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/<filename>')
def media_file(filename):
from flask import send_from_directory
return send_from_directory(current_app.config['UPLOAD_FOLDER'], filename)
# Add routes here as needed; do NOT define models here.