feat(messages): extend user query with company data for recipient preview
This commit is contained in:
parent
a83ca05257
commit
36a7fbc5ea
@ -11,7 +11,7 @@ from flask import render_template, request, redirect, url_for, flash, jsonify
|
||||
from flask_login import login_required, current_user
|
||||
|
||||
from . import bp
|
||||
from database import SessionLocal, User, Company, PrivateMessage, UserNotification, UserBlock, Classified
|
||||
from database import SessionLocal, User, Company, UserCompanyPermissions, PrivateMessage, UserNotification, UserBlock, Classified
|
||||
from extensions import limiter
|
||||
from utils.helpers import sanitize_input
|
||||
from utils.decorators import member_required
|
||||
@ -93,12 +93,34 @@ def messages_new():
|
||||
db = SessionLocal()
|
||||
try:
|
||||
# Lista użytkowników do wyboru
|
||||
users = db.query(User).filter(
|
||||
users_with_companies = db.query(
|
||||
User,
|
||||
Company.name.label('company_name'),
|
||||
Company.slug.label('company_slug'),
|
||||
UserCompanyPermissions.position.label('position')
|
||||
).outerjoin(
|
||||
UserCompanyPermissions,
|
||||
(UserCompanyPermissions.user_id == User.id)
|
||||
).outerjoin(
|
||||
Company,
|
||||
(Company.id == UserCompanyPermissions.company_id) & (Company.status == 'active')
|
||||
).filter(
|
||||
User.is_active == True,
|
||||
User.is_verified == True,
|
||||
User.id != current_user.id
|
||||
).order_by(User.name).all()
|
||||
|
||||
# Deduplicate users (one user may have multiple company permissions)
|
||||
seen_ids = set()
|
||||
users = []
|
||||
for user, company_name, company_slug, position in users_with_companies:
|
||||
if user.id not in seen_ids:
|
||||
seen_ids.add(user.id)
|
||||
user._company_name = company_name
|
||||
user._company_slug = company_slug
|
||||
user._position = position
|
||||
users.append(user)
|
||||
|
||||
recipient = None
|
||||
if recipient_id:
|
||||
recipient = db.query(User).filter(User.id == recipient_id).first()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user