from app import db from hashlib import sha256 import os class Attachment(db.Model): __tablename__ = 'attachment' id = db.Column(db.Integer, primary_key=True) # Original name of the file name = db.Column(db.Unicode(64)) # Hash of the value hashed = db.Column(db.Unicode(64)) # The comment linked with comment_id = db.Column(db.Integer, db.ForeignKey('comment.id'), nullable=False) comment = db.relationship('Comment', backref=backref('attachments', lazy='dynamic')) # The size of the file size = db.Column(db.Integer) def __init__(self, file, comment): self.name = file.filename self.size = os.stat(file).st_size self.hashed = self.hash_file(file) self.comment = comment def hash_file(file): with open(file,"rb") as f: bytes = f.read() # read entire file as bytes hashed = sha256(bytes).hexdigest() return hashed