Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- """Image Class for handling image data and
- storing in folders on the server."""
- import os
- import uuid
- from datetime import datetime
- from werkzeug.utils import secure_filename
- from flask import current_app
- from app import db
- from app.models import User
- from models.base_model import BaseModel, Base
- class Image(db.Model):
- '''Image class for handling image data and
- storing in folders on the server.'''
- '''Create empty folder on server for images.'''
- if not os.path.exists('app/static/images'):
- os.makedirs('app/static/images')
- '''Create a table for image data.'''
- __tablename__ = 'images'
- id = db.Column(db.Integer, primary_key=True)
- name = db.Column(db.String(255), nullable=False)
- mimetype = db.Column(db.String(64), nullable=False)
- user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
- created_at = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
- updated_at = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
- deleted_at = db.Column(db.DateTime, nullable=True)
- '''Create a relationship between image and user.'''
- user = db.relationship('User', back_populates='images')
- '''Initialize image data
- inherit from BaseModel all methods and attributes'''
- def __init__(self, **kwargs):
- '''Initialize image data.'''
- super().__init__(**kwargs)
- self.name = kwargs.get('name')
- self.mimetype = kwargs.get('mimetype')
- self.user_id = kwargs.get('user_id')
- def __repr__(self):
- return f'{self.name}'
- '''Method to Upload image to server.'''
- def upload(self, image):
- '''Create a unique filename for image.'''
- filename = secure_filename(image.filename)
- filename, file_extension = os.path.splitext(filename)
- filename = str(uuid.uuid4()) + file_extension
- '''Save image to server.'''
- image.save(os.path.join(current_app.root_path, 'static/images', filename))
- return filename
- '''Method to delete image from server.'''
- def delete(self, filename):
- '''Delete image from server.'''
- os.remove(os.path.join(current_app.root_path, 'static/images', filename))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement