Office back fix

This commit is contained in:
CHIEFSOFT\ameye
2026-01-01 15:10:13 -05:00
parent 42f9d7fb24
commit 565fb8a35d
3 changed files with 107 additions and 2 deletions
+17 -1
View File
@@ -149,7 +149,7 @@ def upload_file():
if file and allowed_file(file.filename): if file and allowed_file(file.filename):
logger.info(f'POST CALLED 5 {file.filename}') logger.info(f'POST CALLED 5 {file.filename}')
response = FileUploadService.process_file_upload("WEB_MEDIA", file ,member_uid ) response = FileUploadService.process_file_upload("WEB_MEDIA", file, member_uid)
# save_path=UPLOAD_FOLDER + "/" + "F000000000001" # save_path=UPLOAD_FOLDER + "/" + "F000000000001"
# filename = secure_filename(file.filename) # filename = secure_filename(file.filename)
@@ -234,6 +234,7 @@ def merms_account_payments():
response = AccountService.process_payments_data(data) response = AccountService.process_payments_data(data)
return response return response
@api.route("/panel/account/media-files", methods=["POST"]) @api.route("/panel/account/media-files", methods=["POST"])
def get_websitefiles(): def get_websitefiles():
data = request.get_json() data = request.get_json()
@@ -241,6 +242,7 @@ def get_websitefiles():
response = FileUploadService.member_webfiles(data) response = FileUploadService.member_webfiles(data)
return response return response
@api.route("/panel/account/products/url", methods=["POST"]) @api.route("/panel/account/products/url", methods=["POST"])
def myproduct_url(): def myproduct_url():
data = request.get_json() data = request.get_json()
@@ -611,6 +613,20 @@ def get_subscription_billings_office():
return jsonify(result) return jsonify(result)
@api.route('/office/file-uploads', methods=['GET'])
# @token_required
def get_file_uploads_office():
# Call the dashboard service
filters = {
'product_id': request.args.get('product_id'),
'member_id': request.args.get('member_id'),
'page': request.args.get('page', 1),
'limit': request.args.get('limit', 20)
}
result = OfficeDashboardService.get_file_upload_data(filters)
return jsonify(result)
@api.route('/office/transaction', methods=['GET']) @api.route('/office/transaction', methods=['GET'])
def get_subscription_transaction_office(): def get_subscription_transaction_office():
# Call the dashboard service # Call the dashboard service
+66 -1
View File
@@ -1,13 +1,15 @@
from urllib import request from urllib import request
from flask import jsonify from flask import jsonify
from app.config import settings
from app.utils.logger import logger from app.utils.logger import logger
from app.api.services.base_service import BaseService from app.api.services.base_service import BaseService
from sqlalchemy import func, desc from sqlalchemy import func, desc
from datetime import datetime, timedelta, timezone from datetime import datetime, timedelta, timezone
from app.extensions import db from app.extensions import db
from app.models import MembersProducts, Products, Payments, Members, CustomTemplates, ProductsTemplates, MembersProfile, \ from app.models import MembersProducts, Products, Payments, Members, CustomTemplates, ProductsTemplates, MembersProfile, \
ProductsDetails ProductsDetails, MembersWebfiles
class OfficeDashboardService(BaseService): class OfficeDashboardService(BaseService):
@@ -518,3 +520,66 @@ class OfficeDashboardService(BaseService):
except Exception as e: except Exception as e:
logger.error(f"An error occurred while getting dashboard data: {str(e)}", exc_info=True) logger.error(f"An error occurred while getting dashboard data: {str(e)}", exc_info=True)
return jsonify({"message": "Internal Server Error"}), 500 return jsonify({"message": "Internal Server Error"}), 500
@staticmethod
def get_file_upload_data(filters):
try:
if filters is None:
filters = {}
# Extract filters
file_group = filters.get('file_group')
member_id = filters.get('member_id')
# Extract pagination parameters
page = int(filters.get('page', 1))
limit = int(filters.get('limit', 20))
# Ensure page and limit are valid
if page < 1:
page = 1
if limit < 1 or limit > 100:
limit = 20
fileListData, total_count = MembersWebfiles.get_all_webfiles(file_group, file_group, page, limit)
# Convert loans to dictionary format
member_sub_data = []
if fileListData:
for subs in fileListData:
member_sub_data.append({
'id': subs.id,
'file_uid': subs.uid,
'member_id': subs.member_id,
'member_uid': subs.member_uid,
'file_group': subs.file_group,
'filename': subs.filename,
'save_filename': subs.save_filename,
'file_type': subs.file_type,
'status': subs.status,
'file_size': subs.file_size,
'added': subs.added.isoformat() if subs.added else None,
'updated': subs.updated.isoformat() if subs.updated else None
})
# Calculate total pages
total_pages = (total_count + limit - 1) // limit
response_data = {
'file_list': member_sub_data,
'media_server': settings.MEDIA_SERVER,
'count': len(member_sub_data),
'pagination': {
'total_count': total_count,
'total_pages': total_pages,
'current_page': page,
'limit': limit,
'has_next': page < total_pages,
'has_prev': page > 1
}
}
return response_data
except Exception as e:
logger.error(f"An error occurred while getting dashboard data: {str(e)}", exc_info=True)
return jsonify({"message": "Internal Server Error"}), 500
+24
View File
@@ -76,6 +76,30 @@ class MembersWebfiles(db.Model):
return None return None
return member_webfile return member_webfile
@classmethod
def get_all_webfiles(cls, file_group=None, member_id=None, page=1, limit=20):
query = cls.query
logger.info(f"Get all payments back")
if member_id:
query = query.filter(cls.member_id == member_id)
if file_group:
query = query.filter(cls.file_group == file_group)
# Order by created_at descending (newest first)
query = query.order_by(cls.added.desc())
# Get total count before pagination
total_count = query.count()
# Apply pagination
offset = (page - 1) * limit
query = query.limit(limit).offset(offset)
return query.all(), total_count
def to_dict(self): def to_dict(self):
""" """
Convert the Loan object to a dictionary format for JSON serialization. Convert the Loan object to a dictionary format for JSON serialization.