48 lines
1.4 KiB
Python
48 lines
1.4 KiB
Python
import os
|
|
from flask import current_app
|
|
from flask_marshmallow import Marshmallow
|
|
from marshmallow import fields
|
|
from sqlalchemy import desc
|
|
from applications.models import db
|
|
from applications.models.admin import Photo
|
|
from applications.service.upload import photos
|
|
ma = Marshmallow()
|
|
|
|
|
|
class PhotoSchema(ma.Schema):
|
|
id = fields.Integer()
|
|
name = fields.Str()
|
|
href = fields.Str()
|
|
mime = fields.Str()
|
|
size = fields.Str()
|
|
ext = fields.Str()
|
|
create_time = fields.DateTime()
|
|
|
|
|
|
def get_photo(page, limit):
|
|
photo = Photo.query.order_by(desc(Photo.create_time)).paginate(page=page, per_page=limit, error_out=False)
|
|
count = Photo.query.count()
|
|
role_schema = PhotoSchema(many=True)
|
|
output = role_schema.dump(photo.items)
|
|
return output, count
|
|
|
|
|
|
def upload_one(photo,mime):
|
|
filename = photos.save(photo)
|
|
file_url = photos.url(filename)
|
|
|
|
upload_url = current_app.config.get("UPLOADED_PHOTOS_DEST")
|
|
size = os.path.getsize(upload_url + '/' + filename)
|
|
photo = Photo(name=filename, href=file_url, mime=mime, size=size)
|
|
db.session.add(photo)
|
|
db.session.commit()
|
|
return upload_url
|
|
|
|
def delete_photo_by_id(id):
|
|
photo_name = Photo.query.filter_by(id=id).first().name
|
|
photo = Photo.query.filter_by(id=id).delete()
|
|
db.session.commit()
|
|
upload_url = current_app.config.get("UPLOADED_PHOTOS_DEST")
|
|
os.remove(upload_url + '/' + photo_name)
|
|
return photo
|