feat(messages): extend user query with company data for recipient preview

This commit is contained in:
Maciej Pienczyn 2026-03-11 17:28:45 +01:00
parent a83ca05257
commit 36a7fbc5ea

View File

@ -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()