Revert "Added events system"

This reverts commit f00d569db3.
This commit is contained in:
2025-05-29 14:45:52 +02:00
parent f00d569db3
commit 6d959ac253
24 changed files with 114 additions and 1186 deletions

View File

@@ -1,8 +1,7 @@
from flask import render_template, Blueprint, redirect, url_for, request, flash, Response, jsonify
from flask import render_template, Blueprint, redirect, url_for, request, flash, Response
from flask_login import current_user, login_required
from models import User, db, Room, RoomFile, RoomMemberPermission, SiteSettings, Event, EventType
from models import User, db, Room, RoomFile, RoomMemberPermission, SiteSettings
from routes.auth import require_password_change
from utils.event_logger import log_event
import os
from werkzeug.utils import secure_filename
from sqlalchemy import func, case, literal_column, text
@@ -280,14 +279,6 @@ def init_routes(main_bp):
os.remove(old_picture_path)
current_user.profile_picture = None
db.session.commit()
# Log profile picture removal
log_event(
event_type=EventType.USER_UPDATE,
user_id=current_user.id,
details={'action': 'remove_profile_picture'}
)
flash('Profile picture removed successfully!', 'success')
return redirect(url_for('main.profile'))
@@ -298,10 +289,6 @@ def init_routes(main_bp):
if existing_user:
flash('A user with this email already exists.', 'error')
return render_template('profile/profile.html')
# Track changes for event logging
changes = {}
# Handle profile picture upload
file = request.files.get('profile_picture')
if file and file.filename:
@@ -309,31 +296,14 @@ def init_routes(main_bp):
file_path = os.path.join(UPLOAD_FOLDER, filename)
file.save(file_path)
current_user.profile_picture = filename
changes['profile_picture'] = True
# Update user information
if current_user.username != request.form.get('first_name'):
current_user.username = request.form.get('first_name')
changes['username'] = True
if current_user.last_name != request.form.get('last_name'):
current_user.last_name = request.form.get('last_name')
changes['last_name'] = True
if current_user.email != new_email:
current_user.email = new_email
changes['email'] = True
if current_user.phone != request.form.get('phone'):
current_user.phone = request.form.get('phone')
changes['phone'] = True
if current_user.company != request.form.get('company'):
current_user.company = request.form.get('company')
changes['company'] = True
if current_user.position != request.form.get('position'):
current_user.position = request.form.get('position')
changes['position'] = True
if current_user.notes != request.form.get('notes'):
current_user.notes = request.form.get('notes')
changes['notes'] = True
current_user.username = request.form.get('first_name')
current_user.last_name = request.form.get('last_name')
current_user.email = new_email
current_user.phone = request.form.get('phone')
current_user.company = request.form.get('company')
current_user.position = request.form.get('position')
current_user.notes = request.form.get('notes')
# Handle password change if provided
new_password = request.form.get('new_password')
confirm_password = request.form.get('confirm_password')
@@ -342,20 +312,9 @@ def init_routes(main_bp):
flash('Passwords do not match.', 'error')
return render_template('profile/profile.html')
current_user.set_password(new_password)
changes['password'] = True
flash('Password updated successfully.', 'success')
try:
db.session.commit()
# Log profile update if any changes were made
if changes:
log_event(
event_type=EventType.USER_UPDATE,
user_id=current_user.id,
details={'changes': changes}
)
flash('Profile updated successfully!', 'success')
except Exception as e:
db.session.rollback()
@@ -396,18 +355,11 @@ def init_routes(main_bp):
site_settings = SiteSettings.get_settings()
active_tab = request.args.get('tab', 'colors')
# Get events for the events tab
events = []
if active_tab == 'events':
events = Event.query.order_by(Event.timestamp.desc()).limit(50).all()
return render_template('settings/settings.html',
primary_color=site_settings.primary_color,
secondary_color=site_settings.secondary_color,
active_tab=active_tab,
site_settings=site_settings,
events=events)
site_settings=site_settings)
@main_bp.route('/settings/colors', methods=['POST'])
@login_required
@@ -578,105 +530,4 @@ def init_routes(main_bp):
logger.info(f"[Dynamic Colors] Generated CSS with primary color: {primary_color}")
logger.info(f"[Dynamic Colors] Cache version: {site_settings.updated_at.timestamp()}")
return Response(css, mimetype='text/css')
@main_bp.route('/api/events')
@login_required
def get_events():
if not current_user.is_admin:
return jsonify({'success': False, 'error': 'Unauthorized'}), 403
# Get filter parameters
page = request.args.get('page', 1, type=int)
event_type = request.args.get('eventType')
date_range = request.args.get('dateRange', '24h')
user_id = request.args.get('userId')
# Build query
query = Event.query
# Apply filters
if event_type:
query = query.filter_by(event_type=event_type)
if user_id:
query = query.filter_by(user_id=user_id)
# Apply date range filter
if date_range != 'all':
now = datetime.utcnow()
if date_range == '24h':
start_date = now - timedelta(days=1)
elif date_range == '7d':
start_date = now - timedelta(days=7)
elif date_range == '30d':
start_date = now - timedelta(days=30)
query = query.filter(Event.timestamp >= start_date)
# Get total count for pagination
total_count = query.count()
per_page = 50
total_pages = (total_count + per_page - 1) // per_page
# Get paginated results
events = query.order_by(Event.timestamp.desc())\
.offset((page - 1) * per_page)\
.limit(per_page)\
.all()
return jsonify({
'success': True,
'events': [{
'id': event.id,
'event_type': event.event_type,
'timestamp': event.timestamp.isoformat(),
'user': {
'id': event.user.id,
'username': event.user.username,
'last_name': event.user.last_name or ''
},
'ip_address': event.ip_address,
'details': event.details
} for event in events],
'total_pages': total_pages
})
@main_bp.route('/api/events/<int:event_id>')
@login_required
def get_event_details(event_id):
if not current_user.is_admin:
return jsonify({'success': False, 'error': 'Unauthorized'}), 403
event = Event.query.get_or_404(event_id)
return jsonify({
'success': True,
'event': {
'id': event.id,
'event_type': event.event_type,
'timestamp': event.timestamp.isoformat(),
'user': {
'id': event.user.id,
'username': event.user.username
},
'ip_address': event.ip_address,
'user_agent': event.user_agent,
'details': event.details
}
})
@main_bp.route('/api/users')
@login_required
def get_users():
if not current_user.is_admin:
return jsonify({'success': False, 'error': 'Unauthorized'}), 403
users = User.query.order_by(User.username).all()
return jsonify({
'success': True,
'users': [{
'id': user.id,
'username': user.username,
'last_name': user.last_name or ''
} for user in users]
})
return Response(css, mimetype='text/css')