Advertisement
kwabenasapong

Untitled

Mar 2nd, 2023
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.26 KB | None | 0 0
  1. #!/usr/bin/env python3
  2. """Image Class for handling image data and
  3. storing in folders on the server."""
  4.  
  5. import os
  6. import uuid
  7. from datetime import datetime
  8. from werkzeug.utils import secure_filename
  9. from flask import current_app
  10. from app import db
  11. from app.models import User
  12. from models.base_model import BaseModel, Base
  13.  
  14.  
  15. class Image(db.Model):
  16.     '''Image class for handling image data and
  17.    storing in folders on the server.'''
  18.  
  19.     '''Create empty folder on server for images.'''
  20.     if not os.path.exists('app/static/images'):
  21.         os.makedirs('app/static/images')
  22.    
  23.     '''Create a table for image data.'''
  24.     __tablename__ = 'images'
  25.     id = db.Column(db.Integer, primary_key=True)
  26.     name = db.Column(db.String(255), nullable=False)
  27.     mimetype = db.Column(db.String(64), nullable=False)
  28.     user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
  29.     created_at = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
  30.     updated_at = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
  31.     deleted_at = db.Column(db.DateTime, nullable=True)
  32.  
  33.     '''Create a relationship between image and user.'''
  34.     user = db.relationship('User', back_populates='images')
  35.  
  36.     '''Initialize image data
  37.    inherit from BaseModel all methods and attributes'''
  38.     def __init__(self, **kwargs):
  39.         '''Initialize image data.'''
  40.         super().__init__(**kwargs)
  41.         self.name = kwargs.get('name')
  42.         self.mimetype = kwargs.get('mimetype')
  43.         self.user_id = kwargs.get('user_id')
  44.    
  45.     def __repr__(self):
  46.         return f'{self.name}'
  47.    
  48.     '''Method to Upload image to server.'''
  49.     def upload(self, image):
  50.         '''Create a unique filename for image.'''
  51.         filename = secure_filename(image.filename)
  52.         filename, file_extension = os.path.splitext(filename)
  53.         filename = str(uuid.uuid4()) + file_extension
  54.         '''Save image to server.'''
  55.         image.save(os.path.join(current_app.root_path, 'static/images', filename))
  56.         return filename
  57.    
  58.     '''Method to delete image from server.'''
  59.     def delete(self, filename):
  60.         '''Delete image from server.'''
  61.         os.remove(os.path.join(current_app.root_path, 'static/images', filename))
  62.  
  63.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement