fix a bunch is settings

This commit is contained in:
2025-05-30 20:32:40 +02:00
parent 43f29f9a46
commit c09a5c758e
10 changed files with 172 additions and 148 deletions

View File

@@ -9,6 +9,7 @@ from datetime import datetime, timedelta
import logging
import sys
import time
from forms import CompanySettingsForm
# Set up logging to show in console
logging.basicConfig(
@@ -407,54 +408,61 @@ def init_routes(main_bp):
flash('Only administrators can access settings.', 'error')
return redirect(url_for('main.dashboard'))
site_settings = SiteSettings.get_settings()
# Get active tab from URL or default to colors
active_tab = request.args.get('tab', 'colors')
# Get site settings
site_settings = SiteSettings.get_settings()
# Get events data if events tab is active
events = None
total_pages = 1
total_pages = 0
current_page = 1
users = []
if active_tab == 'events':
# Get filter parameters
event_type = request.args.get('event_type')
event_type = request.args.get('event_type', '')
date_range = request.args.get('date_range', '7d')
user_id = request.args.get('user_id')
user_id = request.args.get('user_id', '')
page = request.args.get('page', 1, type=int)
per_page = 50
# 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
per_page = 10
# Build query
query = Event.query
# Apply filters
if event_type:
query = query.filter_by(event_type=event_type)
if start_date:
query = query.filter(Event.timestamp >= start_date)
query = query.filter(Event.event_type == event_type)
if user_id:
query = query.filter_by(user_id=user_id)
# Get total count for pagination
total_events = query.count()
total_pages = (total_events + per_page - 1) // per_page
query = query.filter(Event.user_id == user_id)
if date_range:
cutoff_date = datetime.utcnow() - timedelta(days=int(date_range[:-1]))
query = query.filter(Event.timestamp >= cutoff_date)
# Get paginated events
events = query.order_by(Event.timestamp.desc()).paginate(page=page, per_page=per_page)
total_pages = events.pages
current_page = events.page
# Get all users for filter dropdown
users = User.query.order_by(User.username).all()
# Create form for company settings
company_form = CompanySettingsForm()
if request.method == 'GET':
company_form.company_name.data = site_settings.company_name
company_form.company_website.data = site_settings.company_website
company_form.company_email.data = site_settings.company_email
company_form.company_phone.data = site_settings.company_phone
company_form.company_address.data = site_settings.company_address
company_form.company_city.data = site_settings.company_city
company_form.company_state.data = site_settings.company_state
company_form.company_zip.data = site_settings.company_zip
company_form.company_country.data = site_settings.company_country
company_form.company_description.data = site_settings.company_description
company_form.company_industry.data = site_settings.company_industry
return render_template('settings/settings.html',
primary_color=site_settings.primary_color,
secondary_color=site_settings.secondary_color,
@@ -464,7 +472,7 @@ def init_routes(main_bp):
total_pages=total_pages,
current_page=current_page,
users=users,
csrf_token=session.get('csrf_token'))
form=company_form)
@main_bp.route('/settings/colors', methods=['POST'])
@login_required
@@ -544,12 +552,17 @@ def init_routes(main_bp):
flash('Only administrators can update settings.', 'error')
return redirect(url_for('main.dashboard'))
form = CompanySettingsForm()
if not form.validate():
flash('Please check the form for errors.', 'error')
return redirect(url_for('main.settings'))
site_settings = SiteSettings.get_settings()
# Handle logo upload
if 'company_logo' in request.files:
logo_file = request.files['company_logo']
if logo_file and logo_file.filename:
if form.company_logo.data:
logo_file = form.company_logo.data
if logo_file.filename:
# Delete old logo if it exists
if site_settings.company_logo:
old_logo_path = os.path.join('static', 'uploads', 'company_logos', site_settings.company_logo)
@@ -565,17 +578,17 @@ def init_routes(main_bp):
site_settings.company_logo = filename
# Update all company fields
site_settings.company_name = request.form.get('company_name')
site_settings.company_website = request.form.get('company_website')
site_settings.company_email = request.form.get('company_email')
site_settings.company_phone = request.form.get('company_phone')
site_settings.company_address = request.form.get('company_address')
site_settings.company_city = request.form.get('company_city')
site_settings.company_state = request.form.get('company_state')
site_settings.company_zip = request.form.get('company_zip')
site_settings.company_country = request.form.get('company_country')
site_settings.company_description = request.form.get('company_description')
site_settings.company_industry = request.form.get('company_industry')
site_settings.company_name = form.company_name.data
site_settings.company_website = form.company_website.data
site_settings.company_email = form.company_email.data
site_settings.company_phone = form.company_phone.data
site_settings.company_address = form.company_address.data
site_settings.company_city = form.company_city.data
site_settings.company_state = form.company_state.data
site_settings.company_zip = form.company_zip.data
site_settings.company_country = form.company_country.data
site_settings.company_description = form.company_description.data
site_settings.company_industry = form.company_industry.data
try:
db.session.commit()
@@ -599,7 +612,7 @@ def init_routes(main_bp):
'company_country': site_settings.company_country,
'company_description': site_settings.company_description,
'company_industry': site_settings.company_industry,
'logo_updated': bool(request.files.get('company_logo'))
'logo_updated': bool(form.company_logo.data)
}
}
)
@@ -607,10 +620,11 @@ def init_routes(main_bp):
flash('Company settings updated successfully!', 'success')
except Exception as e:
logger.error(f"Error updating company settings: {str(e)}")
db.session.rollback()
flash('An error occurred while updating company settings.', 'error')
return redirect(url_for('main.settings', tab='general'))
return redirect(url_for('main.settings'))
@main_bp.route('/dynamic-colors.css')
def dynamic_colors():