fix a bunch is settings
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -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():
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from flask import Blueprint, jsonify, request, abort
|
||||
from flask_login import login_required, current_user
|
||||
from models import db, Room, RoomFile, TrashedFile
|
||||
from models import db, Room, RoomFile, TrashedFile, UserStarredFile
|
||||
from utils import user_has_permission, clean_path
|
||||
import os
|
||||
from datetime import datetime
|
||||
@@ -99,29 +99,34 @@ def permanently_delete_file(room_id, trash_id):
|
||||
@trash_bp.route('/<int:room_id>/trash/empty', methods=['POST'])
|
||||
@login_required
|
||||
def empty_trash(room_id):
|
||||
room = Room.query.get_or_404(room_id)
|
||||
if not user_has_permission(room, 'can_delete'):
|
||||
abort(403)
|
||||
|
||||
# Get all trashed files for this room
|
||||
trashed_files = TrashedFile.query.filter_by(room_id=room_id).all()
|
||||
room_files = RoomFile.query.filter_by(room_id=room_id, deleted=True).all()
|
||||
|
||||
# Delete physical files
|
||||
room_dir = os.path.join('/data/rooms', str(room_id))
|
||||
for file in trashed_files + room_files:
|
||||
try:
|
||||
if file.type == 'file':
|
||||
file_path = os.path.join(room_dir, file.original_path if hasattr(file, 'original_path') else file.path, file.name)
|
||||
"""Empty the trash for a specific room."""
|
||||
try:
|
||||
# Get all trashed files
|
||||
trashed_files = TrashedFile.query.filter_by(room_id=room_id).all()
|
||||
|
||||
# Delete physical files first
|
||||
for file in trashed_files:
|
||||
try:
|
||||
file_path = os.path.join(current_app.config['UPLOAD_FOLDER'], str(room_id), file.name)
|
||||
if os.path.exists(file_path):
|
||||
os.remove(file_path)
|
||||
except Exception as e:
|
||||
print(f"Error deleting physical file {file.name}: {str(e)}")
|
||||
continue
|
||||
|
||||
# Delete all trashed files from both tables
|
||||
TrashedFile.query.filter_by(room_id=room_id).delete()
|
||||
RoomFile.query.filter_by(room_id=room_id, deleted=True).delete()
|
||||
db.session.commit()
|
||||
|
||||
return jsonify({'success': True})
|
||||
except Exception as e:
|
||||
print(f"Error deleting physical file {file.name}: {str(e)}")
|
||||
continue
|
||||
|
||||
# Delete all starred file references for the trashed files
|
||||
room_files = RoomFile.query.filter_by(room_id=room_id, deleted=True).all()
|
||||
for file in room_files:
|
||||
UserStarredFile.query.filter_by(file_id=file.id).delete()
|
||||
|
||||
# Delete all trashed files from both tables
|
||||
TrashedFile.query.filter_by(room_id=room_id).delete()
|
||||
RoomFile.query.filter_by(room_id=room_id, deleted=True).delete()
|
||||
|
||||
db.session.commit()
|
||||
|
||||
return jsonify({'success': True})
|
||||
except Exception as e:
|
||||
db.session.rollback()
|
||||
print(f"Error emptying trash: {str(e)}")
|
||||
return jsonify({'success': False, 'error': str(e)}), 500
|
||||
Reference in New Issue
Block a user