Ffile ttpew

This commit is contained in:
CHIEFSOFT\ameye
2025-12-29 19:29:43 -05:00
parent abfef493f7
commit 1051dd44ad
4 changed files with 109 additions and 3 deletions
+19 -3
View File
@@ -3,11 +3,12 @@ from flask import jsonify
from app.api.enums import KafkaMessage
from app.api.services import MyProductsService
from app.config import settings
from app.models import Members
from app.models import Members, MembersWebfiles
from app.utils.logger import logger
from app.api.services.base_service import BaseService
from sqlalchemy import func, desc
from app.extensions import db
from app.api.types.data_types import MemberFileData
import os
from werkzeug.utils import secure_filename
import time
@@ -31,9 +32,10 @@ class FileUploadService(BaseService):
# Who is this
member_data = Members.get_member_by_uid(member_uid)
if not member_data:
return []
return jsonify({"message": "User not found"}), 500
final_folder = f"W{member_data.id:010d}"
member_id=member_data.id
final_folder = f"W{member_id:010d}"
save_path = FileUploadService.UPLOAD_FOLDER + "/WEBSITE"
if not os.path.isdir(save_path):
@@ -52,6 +54,16 @@ class FileUploadService(BaseService):
logger.info(f'POST CALLED 6 {final_save_path}')
file.save(final_save_path)
save_file_props = MemberFileData()
save_file_props.member_uid = member_uid
save_file_props.filename = filename
save_file_props.save_filename = save_filename
save_file_props.file_group="WEBSITE"
save_file_props.member_id = member_id
save_file_props.file_size = 0
save_file_props.file_size = filename.rsplit('.', 1)[1].lower()
save_result = MembersWebfiles.create_file_profile(save_file_props)
response_data = {
"file_uid": file_uid,
@@ -62,3 +74,7 @@ class FileUploadService(BaseService):
except Exception as e:
logger.error(f"An error occurred while uploading file: {str(e)}", exc_info=True)
return jsonify({"message": "Internal Server Error"}), 500
def allowed_file(filename):
return '.' in filename and \
filename.rsplit('.', 1)[1].lower() in FileUploadService.ALLOWED_EXTENSIONS
+8
View File
@@ -0,0 +1,8 @@
class MemberFileData:
member_id: int
member_uid: str
file_group: str
filename: str
save_filename: str
file_type: str
file_size: str
+1
View File
@@ -21,6 +21,7 @@ from .office_users import OfficeUsers
from .custom_templates import CustomTemplates
from .products_colorstyle import ProductsColorStyle
from .country import Country
from .members_webfiles import MembersWebfiles
__all__ = ['Members', 'Account', 'Products',
'MembersProducts', 'MembersActions', 'MembersPending', 'ProductsDetails',
+81
View File
@@ -0,0 +1,81 @@
from datetime import datetime, timezone, timedelta
from itertools import product
from app.extensions import db
from sqlalchemy.exc import IntegrityError
from sqlalchemy.orm import relationship
from dateutil.relativedelta import relativedelta
from datetime import timedelta
import logging
from sqlalchemy import and_, or_, not_
from sqlalchemy.sql import func
from app.api.types.data_types import MemberFileData
import uuid
logger = logging.getLogger(__name__)
class MembersWebfiles(db.Model):
__tablename__ = 'members_webfiles'
id = db.Column(
db.Integer,
primary_key=True,
autoincrement=True,
)
uid = db.Column(db.String(150), nullable=False)
member_id = db.Column(db.Integer, nullable=False)
member_uid = db.Column(db.String(100), nullable=False)
file_group = db.Column(db.String(25), nullable=False)
filename = db.Column(db.String(100), nullable=False)
save_filename = db.Column(db.String(100), nullable=False)
file_type = db.Column(db.String(50), nullable=False)
status = db.Column(db.Integer, nullable=True, default=1)
file_size = db.Column(db.Integer, nullable=True, default=0)
added = db.Column(db.DateTime(timezone=True), server_default=func.now())
updated = db.Column(db.DateTime(timezone=True), server_default=func.now(), onupdate=func.now())
@classmethod
def create_file_profile(cls, file_data: MemberFileData):
logger.info(f" Data for File Data {file_data} ")
file_save_data = cls(
uid=str(uuid.uuid4()),
member_id=file_data.member_id,
member_uid=file_data.member_uid,
file_group=file_data.file_group,
filename=file_data.filename,
save_filename=file_data.save_filename,
file_type=file_data.file_type,
file_size=file_data.file_size,
added=datetime.now(timezone.utc),
updated=datetime.now(timezone.utc)
)
try:
logger.info(f" About to Insert Members File Data {file_data.member_id} ")
db.session.add(file_save_data)
db.session.flush()
except IntegrityError as err:
logger.error(f" Error inserting file_save_data data {err} -- ")
raise ValueError(f"Database integrity error: {err}")
return file_save_data
def to_dict(self):
"""
Convert the Loan object to a dictionary format for JSON serialization.
"""
return {
'id': self.id,
'uid': self.uid,
'member_id': self.member_id,
'member_uid': self.member_uid,
'file_group': self.file_group,
'filename': self.filename,
'save_filename': self.save_filename,
'file_type': self.file_type,
'status': self.status,
'file_size': self.file_size,
'added': self.added,
'updated': self.updated
}
def __repr__(self):
return f'<MembersWebfiles {self.id}>'