Better fill codes
This commit is contained in:
@@ -1138,70 +1138,83 @@ def init_routes(main_bp):
|
||||
@login_required
|
||||
def mails():
|
||||
if not current_user.is_admin:
|
||||
flash('Only administrators can access mail logs.', 'error')
|
||||
return redirect(url_for('main.dashboard'))
|
||||
flash('You do not have permission to access settings.', 'error')
|
||||
return redirect(url_for('main.index'))
|
||||
|
||||
# Get filter parameters
|
||||
status = request.args.get('status')
|
||||
status = request.args.get('status', '')
|
||||
date_range = request.args.get('date_range', '7d')
|
||||
user_id = request.args.get('user_id')
|
||||
user_id = request.args.get('user_id', '')
|
||||
template_id = request.args.get('template_id', '')
|
||||
page = request.args.get('page', 1, type=int)
|
||||
per_page = 10
|
||||
|
||||
# Calculate date range
|
||||
end_date = datetime.utcnow()
|
||||
if date_range == '24h':
|
||||
start_date = end_date - timedelta(days=1)
|
||||
elif date_range == '7d':
|
||||
start_date = end_date - timedelta(days=7)
|
||||
elif date_range == '30d':
|
||||
start_date = end_date - timedelta(days=30)
|
||||
else:
|
||||
start_date = None
|
||||
|
||||
# Build query
|
||||
query = Mail.query
|
||||
|
||||
# Apply filters
|
||||
if status:
|
||||
query = query.filter_by(status=status)
|
||||
if start_date:
|
||||
query = query.filter(Mail.created_at >= start_date)
|
||||
if user_id:
|
||||
query = query.filter(Mail.recipient == User.query.get(user_id).email)
|
||||
query = query.filter_by(recipient=user_id)
|
||||
if template_id:
|
||||
query = query.filter_by(template_id=template_id)
|
||||
if date_range:
|
||||
if date_range == '24h':
|
||||
cutoff = datetime.utcnow() - timedelta(hours=24)
|
||||
elif date_range == '7d':
|
||||
cutoff = datetime.utcnow() - timedelta(days=7)
|
||||
elif date_range == '30d':
|
||||
cutoff = datetime.utcnow() - timedelta(days=30)
|
||||
else:
|
||||
cutoff = None
|
||||
if cutoff:
|
||||
query = query.filter(Mail.created_at >= cutoff)
|
||||
|
||||
# Get total count for pagination
|
||||
total_mails = query.count()
|
||||
total_pages = (total_mails + per_page - 1) // per_page
|
||||
|
||||
# Get paginated mails
|
||||
# Get paginated results
|
||||
mails = query.order_by(Mail.created_at.desc()).paginate(page=page, per_page=per_page)
|
||||
total_pages = mails.pages
|
||||
current_page = mails.page
|
||||
|
||||
# Get all users for filter dropdown
|
||||
# Get all users for the filter dropdown
|
||||
users = User.query.order_by(User.username).all()
|
||||
|
||||
# Get all email templates
|
||||
email_templates = EmailTemplate.query.filter_by(is_active=True).all()
|
||||
|
||||
# Check if this is an AJAX request
|
||||
if request.headers.get('X-Requested-With') == 'XMLHttpRequest':
|
||||
return render_template('settings/tabs/mails.html',
|
||||
mails=mails.items,
|
||||
mails=mails,
|
||||
total_pages=total_pages,
|
||||
current_page=page,
|
||||
status=status,
|
||||
date_range=date_range,
|
||||
user_id=user_id,
|
||||
template_id=template_id,
|
||||
users=users,
|
||||
email_templates=email_templates,
|
||||
csrf_token=session.get('csrf_token'))
|
||||
|
||||
# For full page requests, render the full settings page
|
||||
site_settings = SiteSettings.get_settings()
|
||||
company_form = CompanySettingsForm()
|
||||
|
||||
return render_template('settings/settings.html',
|
||||
primary_color=site_settings.primary_color,
|
||||
secondary_color=site_settings.secondary_color,
|
||||
active_tab='mails',
|
||||
site_settings=site_settings,
|
||||
mails=mails.items,
|
||||
mails=mails,
|
||||
total_pages=total_pages,
|
||||
current_page=page,
|
||||
status=status,
|
||||
date_range=date_range,
|
||||
user_id=user_id,
|
||||
template_id=template_id,
|
||||
users=users,
|
||||
email_templates=email_templates,
|
||||
form=company_form,
|
||||
csrf_token=session.get('csrf_token'))
|
||||
|
||||
@main_bp.route('/settings/mails/<int:mail_id>')
|
||||
|
||||
Reference in New Issue
Block a user