Files
TimeTracker/docs/implementation-notes/COMMENT_ATTACHMENTS_IMPLEMENTATION.md
T
Dries Peeters d1c3471ba4 docs: Add comprehensive implementation documentation
- Add ENHANCEMENT_PLAN_IMPLEMENTATION_STATUS.md
- Add ENHANCEMENT_PLAN_PROGRESS_SUMMARY.md
- Add COMMENT_ATTACHMENTS_IMPLEMENTATION.md
- Add COMMENT_ATTACHMENTS_OPTIMIZATION.md
- Add FINAL_IMPLEMENTATION_SUMMARY.md

Documentation covers all enhancements, implementation status,
remaining work, and optimization recommendations.
2026-01-04 06:23:55 +01:00

3.8 KiB

Comment Attachments Implementation

Date: 2025-01-27
Status: Foundation Complete, Needs Template Integration


Completed

1. CommentAttachment Model

  • Created app/models/comment_attachment.py
  • Follows same pattern as ProjectAttachment and ClientAttachment
  • Includes file properties (size, type, extension detection)
  • Download URL property
  • to_dict() method for API responses

2. Database Migration

  • Created migration 100_add_comment_attachments.py
  • Adds comment_attachments table with proper indexes
  • Foreign key to comments with CASCADE delete
  • Foreign key to users for uploader

3. Routes

  • Upload route: /comments/<comment_id>/attachments/upload
  • Download route: /comments/attachments/<attachment_id>/download
  • Delete route: /comments/attachments/<attachment_id>/delete
  • Permission checks (user must be able to edit comment)
  • File validation (type, size)
  • Error handling

4. Model Registration

  • Added CommentAttachment to app/models/__init__.py
  • Added to all export list

Remaining Work

1. Template Integration

Files to Update:

  • app/templates/comments/_comment.html - Display attachments
  • app/templates/comments/_comments_section.html - File upload in comment form

Required Changes:

  • Add file input to comment form
  • Display attachments below comment content
  • Show attachment icons/thumbnails
  • Add download links
  • Add delete buttons (if user can edit)

2. Comment Service Enhancement

File: app/services/comment_service.py (if exists) or add to routes

  • Handle file uploads in comment creation
  • Include attachments in comment responses

3. API Enhancement

File: app/routes/api_v1.py or app/routes/comments.py

  • Add attachments to comment API responses
  • API endpoint for uploading attachments

📝 Implementation Details

File Upload Configuration

  • Upload Folder: uploads/comment_attachments
  • Max File Size: 10 MB
  • Allowed Extensions: png, jpg, jpeg, gif, pdf, doc, docx, txt, xls, xlsx, zip, rar

Database Schema

CREATE TABLE comment_attachments (
    id INTEGER PRIMARY KEY,
    comment_id INTEGER NOT NULL,
    filename VARCHAR(255) NOT NULL,
    original_filename VARCHAR(255) NOT NULL,
    file_path VARCHAR(500) NOT NULL,
    file_size INTEGER NOT NULL,
    mime_type VARCHAR(100),
    uploaded_by INTEGER NOT NULL,
    uploaded_at DATETIME NOT NULL,
    FOREIGN KEY (comment_id) REFERENCES comments(id) ON DELETE CASCADE,
    FOREIGN KEY (uploaded_by) REFERENCES users(id)
);

Routes Added

  • POST /comments/<comment_id>/attachments/upload - Upload file
  • GET /comments/attachments/<attachment_id>/download - Download file
  • POST /comments/attachments/<attachment_id>/delete - Delete file

🔄 Next Steps

  1. Run Migration:

    flask db upgrade
    
  2. Update Comment Templates:

    • Add file upload to comment form
    • Display attachments in comment view
    • Add download/delete UI
  3. Test:

    • Upload files to comments
    • Download attachments
    • Delete attachments
    • Verify permissions
  4. Optional Enhancements:

    • Image previews for image attachments
    • File type icons
    • Drag-and-drop upload
    • Multiple file upload
    • Attachment thumbnails

📁 Files Created

  • app/models/comment_attachment.py - CommentAttachment model
  • migrations/versions/100_add_comment_attachments.py - Database migration
  • app/routes/comments.py - Added attachment routes (modified)

📁 Files to Modify (Next Steps)

  • app/templates/comments/_comment.html - Display attachments
  • app/templates/comments/_comments_section.html - Add file upload
  • app/models/comment.py - Enhanced to_dict() to include attachments (done)

Status: Foundation complete. Template integration needed for full functionality.